// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.

// Package ssm provides a client for Amazon Simple Systems Manager (SSM).
package ssm

import (
	"fmt"
	"time"

	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/awsutil"
	"github.com/aws/aws-sdk-go/aws/request"
)

const opAddTagsToResource = "AddTagsToResource"

// AddTagsToResourceRequest generates a "aws/request.Request" representing the
// client's request for the AddTagsToResource operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See AddTagsToResource for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the AddTagsToResource method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the AddTagsToResourceRequest method.
//    req, resp := client.AddTagsToResourceRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/AddTagsToResource
func (c *SSM) AddTagsToResourceRequest(input *AddTagsToResourceInput) (req *request.Request, output *AddTagsToResourceOutput) {
	op := &request.Operation{
		Name:       opAddTagsToResource,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &AddTagsToResourceInput{}
	}

	output = &AddTagsToResourceOutput{}
	req = c.newRequest(op, input, output)
	return
}

// AddTagsToResource API operation for Amazon Simple Systems Manager (SSM).
//
// Adds or overwrites one or more tags for the specified resource. Tags are
// metadata that you assign to your managed instances. Tags enable you to categorize
// your managed instances 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. Each resource can have a maximum
// of 10 tags.
//
// 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 Amazon EC2 and
// are interpreted strictly as a string of characters.
//
// For more information about tags, see Tagging Your Amazon EC2 Resources (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)
// in the Amazon EC2 User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation AddTagsToResource for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInvalidResourceType "InvalidResourceType"
//   The resource type is not valid. If you are attempting to tag an instance,
//   the instance must be a registered, managed instance.
//
//   * ErrCodeInvalidResourceId "InvalidResourceId"
//   The resource ID is not valid. Verify that you entered the correct ID and
//   try again.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeTooManyTagsError "TooManyTagsError"
//   The Targets parameter includes too many tags. Remove one or more tags and
//   try the command again.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/AddTagsToResource
func (c *SSM) AddTagsToResource(input *AddTagsToResourceInput) (*AddTagsToResourceOutput, error) {
	req, out := c.AddTagsToResourceRequest(input)
	return out, req.Send()
}

// AddTagsToResourceWithContext is the same as AddTagsToResource with the addition of
// the ability to pass a context and additional request options.
//
// See AddTagsToResource for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) AddTagsToResourceWithContext(ctx aws.Context, input *AddTagsToResourceInput, opts ...request.Option) (*AddTagsToResourceOutput, error) {
	req, out := c.AddTagsToResourceRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCancelCommand = "CancelCommand"

// CancelCommandRequest generates a "aws/request.Request" representing the
// client's request for the CancelCommand operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See CancelCommand for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the CancelCommand method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the CancelCommandRequest method.
//    req, resp := client.CancelCommandRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CancelCommand
func (c *SSM) CancelCommandRequest(input *CancelCommandInput) (req *request.Request, output *CancelCommandOutput) {
	op := &request.Operation{
		Name:       opCancelCommand,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CancelCommandInput{}
	}

	output = &CancelCommandOutput{}
	req = c.newRequest(op, input, output)
	return
}

// CancelCommand API operation for Amazon Simple Systems Manager (SSM).
//
// 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.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation CancelCommand for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidCommandId "InvalidCommandId"
//
//   * ErrCodeInvalidInstanceId "InvalidInstanceId"
//   The following problems can cause this exception:
//
//   You do not have permission to access the instance.
//
//   The SSM agent is not running. On managed instances and Linux instances, verify
//   that the SSM agent is running. On EC2 Windows instances, verify that the
//   EC2Config service is running.
//
//   The SSM agent or EC2Config service is not registered to the SSM endpoint.
//   Try reinstalling the SSM agent or EC2Config service.
//
//   The instance is not in valid state. Valid states are: Running, Pending, Stopped,
//   Stopping. Invalid states are: Shutting-down and Terminated.
//
//   * ErrCodeDuplicateInstanceId "DuplicateInstanceId"
//   You cannot specify an instance ID in more than one association.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CancelCommand
func (c *SSM) CancelCommand(input *CancelCommandInput) (*CancelCommandOutput, error) {
	req, out := c.CancelCommandRequest(input)
	return out, req.Send()
}

// CancelCommandWithContext is the same as CancelCommand with the addition of
// the ability to pass a context and additional request options.
//
// See CancelCommand for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) CancelCommandWithContext(ctx aws.Context, input *CancelCommandInput, opts ...request.Option) (*CancelCommandOutput, error) {
	req, out := c.CancelCommandRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateActivation = "CreateActivation"

// CreateActivationRequest generates a "aws/request.Request" representing the
// client's request for the CreateActivation operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See CreateActivation for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the CreateActivation method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the CreateActivationRequest method.
//    req, resp := client.CreateActivationRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateActivation
func (c *SSM) CreateActivationRequest(input *CreateActivationInput) (req *request.Request, output *CreateActivationOutput) {
	op := &request.Operation{
		Name:       opCreateActivation,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateActivationInput{}
	}

	output = &CreateActivationOutput{}
	req = c.newRequest(op, input, output)
	return
}

// CreateActivation API operation for Amazon Simple Systems Manager (SSM).
//
// Registers your on-premises server or virtual machine with Amazon EC2 so that
// you can manage these resources using Run Command. An on-premises server or
// virtual machine that has been registered with EC2 is called a managed instance.
// For more information about activations, see Setting Up Managed Instances
// (Linux) (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/managed-instances.html)
// or Setting Up Managed Instances (Windows) (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/managed-instances.html)
// in the Amazon EC2 User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation CreateActivation for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateActivation
func (c *SSM) CreateActivation(input *CreateActivationInput) (*CreateActivationOutput, error) {
	req, out := c.CreateActivationRequest(input)
	return out, req.Send()
}

// CreateActivationWithContext is the same as CreateActivation with the addition of
// the ability to pass a context and additional request options.
//
// See CreateActivation for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) CreateActivationWithContext(ctx aws.Context, input *CreateActivationInput, opts ...request.Option) (*CreateActivationOutput, error) {
	req, out := c.CreateActivationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateAssociation = "CreateAssociation"

// CreateAssociationRequest generates a "aws/request.Request" representing the
// client's request for the CreateAssociation operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See CreateAssociation for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the CreateAssociation method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the CreateAssociationRequest method.
//    req, resp := client.CreateAssociationRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateAssociation
func (c *SSM) CreateAssociationRequest(input *CreateAssociationInput) (req *request.Request, output *CreateAssociationOutput) {
	op := &request.Operation{
		Name:       opCreateAssociation,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateAssociationInput{}
	}

	output = &CreateAssociationOutput{}
	req = c.newRequest(op, input, output)
	return
}

// CreateAssociation API operation for Amazon Simple Systems Manager (SSM).
//
// Associates the specified SSM document with the specified instances or targets.
//
// When you associate an SSM document with one or more instances using instance
// IDs or tags, the SSM agent running on the instance processes the document
// and configures the instance as specified.
//
// If you associate a document with an instance that already has an associated
// document, the system throws the AssociationAlreadyExists exception.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation CreateAssociation for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeAssociationAlreadyExists "AssociationAlreadyExists"
//   The specified association already exists.
//
//   * ErrCodeAssociationLimitExceeded "AssociationLimitExceeded"
//   You can have at most 2,000 active associations.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidDocument "InvalidDocument"
//   The specified document does not exist.
//
//   * ErrCodeInvalidDocumentVersion "InvalidDocumentVersion"
//   The document version is not valid or does not exist.
//
//   * ErrCodeInvalidInstanceId "InvalidInstanceId"
//   The following problems can cause this exception:
//
//   You do not have permission to access the instance.
//
//   The SSM agent is not running. On managed instances and Linux instances, verify
//   that the SSM agent is running. On EC2 Windows instances, verify that the
//   EC2Config service is running.
//
//   The SSM agent or EC2Config service is not registered to the SSM endpoint.
//   Try reinstalling the SSM agent or EC2Config service.
//
//   The instance is not in valid state. Valid states are: Running, Pending, Stopped,
//   Stopping. Invalid states are: Shutting-down and Terminated.
//
//   * ErrCodeUnsupportedPlatformType "UnsupportedPlatformType"
//   The document does not support the platform type of the given instance ID(s).
//   For example, you sent an SSM document for a Windows instance to a Linux instance.
//
//   * ErrCodeInvalidOutputLocation "InvalidOutputLocation"
//   The output location is not valid or does not exist.
//
//   * ErrCodeInvalidParameters "InvalidParameters"
//   You must specify values for all required parameters in the SSM document.
//   You can only supply values to parameters defined in the SSM document.
//
//   * ErrCodeInvalidTarget "InvalidTarget"
//   The target is not valid or does not exist. It might not be configured for
//   EC2 Systems Manager or you might not have permission to perform the operation.
//
//   * ErrCodeInvalidSchedule "InvalidSchedule"
//   The schedule is invalid. Verify your cron or rate expression and try again.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateAssociation
func (c *SSM) CreateAssociation(input *CreateAssociationInput) (*CreateAssociationOutput, error) {
	req, out := c.CreateAssociationRequest(input)
	return out, req.Send()
}

// CreateAssociationWithContext is the same as CreateAssociation with the addition of
// the ability to pass a context and additional request options.
//
// See CreateAssociation for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) CreateAssociationWithContext(ctx aws.Context, input *CreateAssociationInput, opts ...request.Option) (*CreateAssociationOutput, error) {
	req, out := c.CreateAssociationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateAssociationBatch = "CreateAssociationBatch"

// CreateAssociationBatchRequest generates a "aws/request.Request" representing the
// client's request for the CreateAssociationBatch operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See CreateAssociationBatch for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the CreateAssociationBatch method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the CreateAssociationBatchRequest method.
//    req, resp := client.CreateAssociationBatchRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateAssociationBatch
func (c *SSM) CreateAssociationBatchRequest(input *CreateAssociationBatchInput) (req *request.Request, output *CreateAssociationBatchOutput) {
	op := &request.Operation{
		Name:       opCreateAssociationBatch,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateAssociationBatchInput{}
	}

	output = &CreateAssociationBatchOutput{}
	req = c.newRequest(op, input, output)
	return
}

// CreateAssociationBatch API operation for Amazon Simple Systems Manager (SSM).
//
// Associates the specified SSM document with the specified instances or targets.
//
// When you associate an SSM document with one or more instances using instance
// IDs or tags, the SSM agent running on the instance processes the document
// and configures the instance as specified.
//
// If you associate a document with an instance that already has an associated
// document, the system throws the AssociationAlreadyExists exception.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation CreateAssociationBatch for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidDocument "InvalidDocument"
//   The specified document does not exist.
//
//   * ErrCodeInvalidDocumentVersion "InvalidDocumentVersion"
//   The document version is not valid or does not exist.
//
//   * ErrCodeInvalidInstanceId "InvalidInstanceId"
//   The following problems can cause this exception:
//
//   You do not have permission to access the instance.
//
//   The SSM agent is not running. On managed instances and Linux instances, verify
//   that the SSM agent is running. On EC2 Windows instances, verify that the
//   EC2Config service is running.
//
//   The SSM agent or EC2Config service is not registered to the SSM endpoint.
//   Try reinstalling the SSM agent or EC2Config service.
//
//   The instance is not in valid state. Valid states are: Running, Pending, Stopped,
//   Stopping. Invalid states are: Shutting-down and Terminated.
//
//   * ErrCodeInvalidParameters "InvalidParameters"
//   You must specify values for all required parameters in the SSM document.
//   You can only supply values to parameters defined in the SSM document.
//
//   * ErrCodeDuplicateInstanceId "DuplicateInstanceId"
//   You cannot specify an instance ID in more than one association.
//
//   * ErrCodeAssociationLimitExceeded "AssociationLimitExceeded"
//   You can have at most 2,000 active associations.
//
//   * ErrCodeUnsupportedPlatformType "UnsupportedPlatformType"
//   The document does not support the platform type of the given instance ID(s).
//   For example, you sent an SSM document for a Windows instance to a Linux instance.
//
//   * ErrCodeInvalidOutputLocation "InvalidOutputLocation"
//   The output location is not valid or does not exist.
//
//   * ErrCodeInvalidTarget "InvalidTarget"
//   The target is not valid or does not exist. It might not be configured for
//   EC2 Systems Manager or you might not have permission to perform the operation.
//
//   * ErrCodeInvalidSchedule "InvalidSchedule"
//   The schedule is invalid. Verify your cron or rate expression and try again.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateAssociationBatch
func (c *SSM) CreateAssociationBatch(input *CreateAssociationBatchInput) (*CreateAssociationBatchOutput, error) {
	req, out := c.CreateAssociationBatchRequest(input)
	return out, req.Send()
}

// CreateAssociationBatchWithContext is the same as CreateAssociationBatch with the addition of
// the ability to pass a context and additional request options.
//
// See CreateAssociationBatch for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) CreateAssociationBatchWithContext(ctx aws.Context, input *CreateAssociationBatchInput, opts ...request.Option) (*CreateAssociationBatchOutput, error) {
	req, out := c.CreateAssociationBatchRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateDocument = "CreateDocument"

// CreateDocumentRequest generates a "aws/request.Request" representing the
// client's request for the CreateDocument operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See CreateDocument for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the CreateDocument method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the CreateDocumentRequest method.
//    req, resp := client.CreateDocumentRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateDocument
func (c *SSM) CreateDocumentRequest(input *CreateDocumentInput) (req *request.Request, output *CreateDocumentOutput) {
	op := &request.Operation{
		Name:       opCreateDocument,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateDocumentInput{}
	}

	output = &CreateDocumentOutput{}
	req = c.newRequest(op, input, output)
	return
}

// CreateDocument API operation for Amazon Simple Systems Manager (SSM).
//
// Creates an SSM document.
//
// After you create an SSM document, you can use CreateAssociation to associate
// it with one or more running instances.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation CreateDocument for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeDocumentAlreadyExists "DocumentAlreadyExists"
//   The specified SSM document already exists.
//
//   * ErrCodeMaxDocumentSizeExceeded "MaxDocumentSizeExceeded"
//   The size limit of an SSM document is 64 KB.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidDocumentContent "InvalidDocumentContent"
//   The content for the SSM document is not valid.
//
//   * ErrCodeDocumentLimitExceeded "DocumentLimitExceeded"
//   You can have at most 200 active SSM documents.
//
//   * ErrCodeInvalidDocumentSchemaVersion "InvalidDocumentSchemaVersion"
//   The version of the document schema is not supported.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateDocument
func (c *SSM) CreateDocument(input *CreateDocumentInput) (*CreateDocumentOutput, error) {
	req, out := c.CreateDocumentRequest(input)
	return out, req.Send()
}

// CreateDocumentWithContext is the same as CreateDocument with the addition of
// the ability to pass a context and additional request options.
//
// See CreateDocument for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) CreateDocumentWithContext(ctx aws.Context, input *CreateDocumentInput, opts ...request.Option) (*CreateDocumentOutput, error) {
	req, out := c.CreateDocumentRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateMaintenanceWindow = "CreateMaintenanceWindow"

// CreateMaintenanceWindowRequest generates a "aws/request.Request" representing the
// client's request for the CreateMaintenanceWindow operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See CreateMaintenanceWindow for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the CreateMaintenanceWindow method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the CreateMaintenanceWindowRequest method.
//    req, resp := client.CreateMaintenanceWindowRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateMaintenanceWindow
func (c *SSM) CreateMaintenanceWindowRequest(input *CreateMaintenanceWindowInput) (req *request.Request, output *CreateMaintenanceWindowOutput) {
	op := &request.Operation{
		Name:       opCreateMaintenanceWindow,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateMaintenanceWindowInput{}
	}

	output = &CreateMaintenanceWindowOutput{}
	req = c.newRequest(op, input, output)
	return
}

// CreateMaintenanceWindow API operation for Amazon Simple Systems Manager (SSM).
//
// Creates a new Maintenance Window.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation CreateMaintenanceWindow for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeIdempotentParameterMismatch "IdempotentParameterMismatch"
//   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.
//
//   * ErrCodeResourceLimitExceededException "ResourceLimitExceededException"
//   Error returned when the caller has exceeded the default resource limits (e.g.
//   too many Maintenance Windows have been created).
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateMaintenanceWindow
func (c *SSM) CreateMaintenanceWindow(input *CreateMaintenanceWindowInput) (*CreateMaintenanceWindowOutput, error) {
	req, out := c.CreateMaintenanceWindowRequest(input)
	return out, req.Send()
}

// CreateMaintenanceWindowWithContext is the same as CreateMaintenanceWindow with the addition of
// the ability to pass a context and additional request options.
//
// See CreateMaintenanceWindow for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) CreateMaintenanceWindowWithContext(ctx aws.Context, input *CreateMaintenanceWindowInput, opts ...request.Option) (*CreateMaintenanceWindowOutput, error) {
	req, out := c.CreateMaintenanceWindowRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreatePatchBaseline = "CreatePatchBaseline"

// CreatePatchBaselineRequest generates a "aws/request.Request" representing the
// client's request for the CreatePatchBaseline operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See CreatePatchBaseline for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the CreatePatchBaseline method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the CreatePatchBaselineRequest method.
//    req, resp := client.CreatePatchBaselineRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreatePatchBaseline
func (c *SSM) CreatePatchBaselineRequest(input *CreatePatchBaselineInput) (req *request.Request, output *CreatePatchBaselineOutput) {
	op := &request.Operation{
		Name:       opCreatePatchBaseline,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreatePatchBaselineInput{}
	}

	output = &CreatePatchBaselineOutput{}
	req = c.newRequest(op, input, output)
	return
}

// CreatePatchBaseline API operation for Amazon Simple Systems Manager (SSM).
//
// Creates a patch baseline.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation CreatePatchBaseline for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeIdempotentParameterMismatch "IdempotentParameterMismatch"
//   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.
//
//   * ErrCodeResourceLimitExceededException "ResourceLimitExceededException"
//   Error returned when the caller has exceeded the default resource limits (e.g.
//   too many Maintenance Windows have been created).
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreatePatchBaseline
func (c *SSM) CreatePatchBaseline(input *CreatePatchBaselineInput) (*CreatePatchBaselineOutput, error) {
	req, out := c.CreatePatchBaselineRequest(input)
	return out, req.Send()
}

// CreatePatchBaselineWithContext is the same as CreatePatchBaseline with the addition of
// the ability to pass a context and additional request options.
//
// See CreatePatchBaseline for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) CreatePatchBaselineWithContext(ctx aws.Context, input *CreatePatchBaselineInput, opts ...request.Option) (*CreatePatchBaselineOutput, error) {
	req, out := c.CreatePatchBaselineRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteActivation = "DeleteActivation"

// DeleteActivationRequest generates a "aws/request.Request" representing the
// client's request for the DeleteActivation operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DeleteActivation for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DeleteActivation method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DeleteActivationRequest method.
//    req, resp := client.DeleteActivationRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteActivation
func (c *SSM) DeleteActivationRequest(input *DeleteActivationInput) (req *request.Request, output *DeleteActivationOutput) {
	op := &request.Operation{
		Name:       opDeleteActivation,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteActivationInput{}
	}

	output = &DeleteActivationOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DeleteActivation API operation for Amazon Simple Systems Manager (SSM).
//
// 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.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DeleteActivation for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInvalidActivationId "InvalidActivationId"
//   The activation ID is not valid. Verify the you entered the correct ActivationId
//   or ActivationCode and try again.
//
//   * ErrCodeInvalidActivation "InvalidActivation"
//   The activation is not valid. The activation might have been deleted, or the
//   ActivationId and the ActivationCode do not match.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteActivation
func (c *SSM) DeleteActivation(input *DeleteActivationInput) (*DeleteActivationOutput, error) {
	req, out := c.DeleteActivationRequest(input)
	return out, req.Send()
}

// DeleteActivationWithContext is the same as DeleteActivation with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteActivation for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DeleteActivationWithContext(ctx aws.Context, input *DeleteActivationInput, opts ...request.Option) (*DeleteActivationOutput, error) {
	req, out := c.DeleteActivationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteAssociation = "DeleteAssociation"

// DeleteAssociationRequest generates a "aws/request.Request" representing the
// client's request for the DeleteAssociation operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DeleteAssociation for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DeleteAssociation method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DeleteAssociationRequest method.
//    req, resp := client.DeleteAssociationRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteAssociation
func (c *SSM) DeleteAssociationRequest(input *DeleteAssociationInput) (req *request.Request, output *DeleteAssociationOutput) {
	op := &request.Operation{
		Name:       opDeleteAssociation,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteAssociationInput{}
	}

	output = &DeleteAssociationOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DeleteAssociation API operation for Amazon Simple Systems Manager (SSM).
//
// Disassociates the specified SSM document from the specified instance.
//
// When you disassociate an SSM 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.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DeleteAssociation for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeAssociationDoesNotExist "AssociationDoesNotExist"
//   The specified association does not exist.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidDocument "InvalidDocument"
//   The specified document does not exist.
//
//   * ErrCodeInvalidInstanceId "InvalidInstanceId"
//   The following problems can cause this exception:
//
//   You do not have permission to access the instance.
//
//   The SSM agent is not running. On managed instances and Linux instances, verify
//   that the SSM agent is running. On EC2 Windows instances, verify that the
//   EC2Config service is running.
//
//   The SSM agent or EC2Config service is not registered to the SSM endpoint.
//   Try reinstalling the SSM agent or EC2Config service.
//
//   The instance is not in valid state. Valid states are: Running, Pending, Stopped,
//   Stopping. Invalid states are: Shutting-down and Terminated.
//
//   * ErrCodeTooManyUpdates "TooManyUpdates"
//   There are concurrent updates for a resource that supports one update at a
//   time.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteAssociation
func (c *SSM) DeleteAssociation(input *DeleteAssociationInput) (*DeleteAssociationOutput, error) {
	req, out := c.DeleteAssociationRequest(input)
	return out, req.Send()
}

// DeleteAssociationWithContext is the same as DeleteAssociation with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteAssociation for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DeleteAssociationWithContext(ctx aws.Context, input *DeleteAssociationInput, opts ...request.Option) (*DeleteAssociationOutput, error) {
	req, out := c.DeleteAssociationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteDocument = "DeleteDocument"

// DeleteDocumentRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDocument operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DeleteDocument for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DeleteDocument method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DeleteDocumentRequest method.
//    req, resp := client.DeleteDocumentRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteDocument
func (c *SSM) DeleteDocumentRequest(input *DeleteDocumentInput) (req *request.Request, output *DeleteDocumentOutput) {
	op := &request.Operation{
		Name:       opDeleteDocument,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteDocumentInput{}
	}

	output = &DeleteDocumentOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DeleteDocument API operation for Amazon Simple Systems Manager (SSM).
//
// Deletes the SSM document and all instance associations to the document.
//
// Before you delete the SSM document, we recommend that you use DeleteAssociation
// to disassociate all instances that are associated with the document.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DeleteDocument for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidDocument "InvalidDocument"
//   The specified document does not exist.
//
//   * ErrCodeInvalidDocumentOperation "InvalidDocumentOperation"
//   You attempted to delete a document while it is still shared. You must stop
//   sharing the document before you can delete it.
//
//   * ErrCodeAssociatedInstances "AssociatedInstances"
//   You must disassociate an SSM document from all instances before you can delete
//   it.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteDocument
func (c *SSM) DeleteDocument(input *DeleteDocumentInput) (*DeleteDocumentOutput, error) {
	req, out := c.DeleteDocumentRequest(input)
	return out, req.Send()
}

// DeleteDocumentWithContext is the same as DeleteDocument with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteDocument for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DeleteDocumentWithContext(ctx aws.Context, input *DeleteDocumentInput, opts ...request.Option) (*DeleteDocumentOutput, error) {
	req, out := c.DeleteDocumentRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteMaintenanceWindow = "DeleteMaintenanceWindow"

// DeleteMaintenanceWindowRequest generates a "aws/request.Request" representing the
// client's request for the DeleteMaintenanceWindow operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DeleteMaintenanceWindow for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DeleteMaintenanceWindow method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DeleteMaintenanceWindowRequest method.
//    req, resp := client.DeleteMaintenanceWindowRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteMaintenanceWindow
func (c *SSM) DeleteMaintenanceWindowRequest(input *DeleteMaintenanceWindowInput) (req *request.Request, output *DeleteMaintenanceWindowOutput) {
	op := &request.Operation{
		Name:       opDeleteMaintenanceWindow,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteMaintenanceWindowInput{}
	}

	output = &DeleteMaintenanceWindowOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DeleteMaintenanceWindow API operation for Amazon Simple Systems Manager (SSM).
//
// Deletes a Maintenance Window.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DeleteMaintenanceWindow for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteMaintenanceWindow
func (c *SSM) DeleteMaintenanceWindow(input *DeleteMaintenanceWindowInput) (*DeleteMaintenanceWindowOutput, error) {
	req, out := c.DeleteMaintenanceWindowRequest(input)
	return out, req.Send()
}

// DeleteMaintenanceWindowWithContext is the same as DeleteMaintenanceWindow with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteMaintenanceWindow for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DeleteMaintenanceWindowWithContext(ctx aws.Context, input *DeleteMaintenanceWindowInput, opts ...request.Option) (*DeleteMaintenanceWindowOutput, error) {
	req, out := c.DeleteMaintenanceWindowRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteParameter = "DeleteParameter"

// DeleteParameterRequest generates a "aws/request.Request" representing the
// client's request for the DeleteParameter operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DeleteParameter for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DeleteParameter method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DeleteParameterRequest method.
//    req, resp := client.DeleteParameterRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteParameter
func (c *SSM) DeleteParameterRequest(input *DeleteParameterInput) (req *request.Request, output *DeleteParameterOutput) {
	op := &request.Operation{
		Name:       opDeleteParameter,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteParameterInput{}
	}

	output = &DeleteParameterOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DeleteParameter API operation for Amazon Simple Systems Manager (SSM).
//
// Delete a parameter from the system.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DeleteParameter for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeParameterNotFound "ParameterNotFound"
//   The parameter could not be found. Verify the name and try again.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteParameter
func (c *SSM) DeleteParameter(input *DeleteParameterInput) (*DeleteParameterOutput, error) {
	req, out := c.DeleteParameterRequest(input)
	return out, req.Send()
}

// DeleteParameterWithContext is the same as DeleteParameter with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteParameter for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DeleteParameterWithContext(ctx aws.Context, input *DeleteParameterInput, opts ...request.Option) (*DeleteParameterOutput, error) {
	req, out := c.DeleteParameterRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeletePatchBaseline = "DeletePatchBaseline"

// DeletePatchBaselineRequest generates a "aws/request.Request" representing the
// client's request for the DeletePatchBaseline operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DeletePatchBaseline for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DeletePatchBaseline method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DeletePatchBaselineRequest method.
//    req, resp := client.DeletePatchBaselineRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeletePatchBaseline
func (c *SSM) DeletePatchBaselineRequest(input *DeletePatchBaselineInput) (req *request.Request, output *DeletePatchBaselineOutput) {
	op := &request.Operation{
		Name:       opDeletePatchBaseline,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeletePatchBaselineInput{}
	}

	output = &DeletePatchBaselineOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DeletePatchBaseline API operation for Amazon Simple Systems Manager (SSM).
//
// Deletes a patch baseline.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DeletePatchBaseline for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeResourceInUseException "ResourceInUseException"
//   Error returned if an attempt is made to delete a patch baseline that is registered
//   for a patch group.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeletePatchBaseline
func (c *SSM) DeletePatchBaseline(input *DeletePatchBaselineInput) (*DeletePatchBaselineOutput, error) {
	req, out := c.DeletePatchBaselineRequest(input)
	return out, req.Send()
}

// DeletePatchBaselineWithContext is the same as DeletePatchBaseline with the addition of
// the ability to pass a context and additional request options.
//
// See DeletePatchBaseline for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DeletePatchBaselineWithContext(ctx aws.Context, input *DeletePatchBaselineInput, opts ...request.Option) (*DeletePatchBaselineOutput, error) {
	req, out := c.DeletePatchBaselineRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeregisterManagedInstance = "DeregisterManagedInstance"

// DeregisterManagedInstanceRequest generates a "aws/request.Request" representing the
// client's request for the DeregisterManagedInstance operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DeregisterManagedInstance for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DeregisterManagedInstance method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DeregisterManagedInstanceRequest method.
//    req, resp := client.DeregisterManagedInstanceRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeregisterManagedInstance
func (c *SSM) DeregisterManagedInstanceRequest(input *DeregisterManagedInstanceInput) (req *request.Request, output *DeregisterManagedInstanceOutput) {
	op := &request.Operation{
		Name:       opDeregisterManagedInstance,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeregisterManagedInstanceInput{}
	}

	output = &DeregisterManagedInstanceOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DeregisterManagedInstance API operation for Amazon Simple Systems Manager (SSM).
//
// 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 the SSM agent first.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DeregisterManagedInstance for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInvalidInstanceId "InvalidInstanceId"
//   The following problems can cause this exception:
//
//   You do not have permission to access the instance.
//
//   The SSM agent is not running. On managed instances and Linux instances, verify
//   that the SSM agent is running. On EC2 Windows instances, verify that the
//   EC2Config service is running.
//
//   The SSM agent or EC2Config service is not registered to the SSM endpoint.
//   Try reinstalling the SSM agent or EC2Config service.
//
//   The instance is not in valid state. Valid states are: Running, Pending, Stopped,
//   Stopping. Invalid states are: Shutting-down and Terminated.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeregisterManagedInstance
func (c *SSM) DeregisterManagedInstance(input *DeregisterManagedInstanceInput) (*DeregisterManagedInstanceOutput, error) {
	req, out := c.DeregisterManagedInstanceRequest(input)
	return out, req.Send()
}

// DeregisterManagedInstanceWithContext is the same as DeregisterManagedInstance with the addition of
// the ability to pass a context and additional request options.
//
// See DeregisterManagedInstance for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DeregisterManagedInstanceWithContext(ctx aws.Context, input *DeregisterManagedInstanceInput, opts ...request.Option) (*DeregisterManagedInstanceOutput, error) {
	req, out := c.DeregisterManagedInstanceRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeregisterPatchBaselineForPatchGroup = "DeregisterPatchBaselineForPatchGroup"

// DeregisterPatchBaselineForPatchGroupRequest generates a "aws/request.Request" representing the
// client's request for the DeregisterPatchBaselineForPatchGroup operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DeregisterPatchBaselineForPatchGroup for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DeregisterPatchBaselineForPatchGroup method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DeregisterPatchBaselineForPatchGroupRequest method.
//    req, resp := client.DeregisterPatchBaselineForPatchGroupRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeregisterPatchBaselineForPatchGroup
func (c *SSM) DeregisterPatchBaselineForPatchGroupRequest(input *DeregisterPatchBaselineForPatchGroupInput) (req *request.Request, output *DeregisterPatchBaselineForPatchGroupOutput) {
	op := &request.Operation{
		Name:       opDeregisterPatchBaselineForPatchGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeregisterPatchBaselineForPatchGroupInput{}
	}

	output = &DeregisterPatchBaselineForPatchGroupOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DeregisterPatchBaselineForPatchGroup API operation for Amazon Simple Systems Manager (SSM).
//
// Removes a patch group from a patch baseline.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DeregisterPatchBaselineForPatchGroup for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInvalidResourceId "InvalidResourceId"
//   The resource ID is not valid. Verify that you entered the correct ID and
//   try again.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeregisterPatchBaselineForPatchGroup
func (c *SSM) DeregisterPatchBaselineForPatchGroup(input *DeregisterPatchBaselineForPatchGroupInput) (*DeregisterPatchBaselineForPatchGroupOutput, error) {
	req, out := c.DeregisterPatchBaselineForPatchGroupRequest(input)
	return out, req.Send()
}

// DeregisterPatchBaselineForPatchGroupWithContext is the same as DeregisterPatchBaselineForPatchGroup with the addition of
// the ability to pass a context and additional request options.
//
// See DeregisterPatchBaselineForPatchGroup for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DeregisterPatchBaselineForPatchGroupWithContext(ctx aws.Context, input *DeregisterPatchBaselineForPatchGroupInput, opts ...request.Option) (*DeregisterPatchBaselineForPatchGroupOutput, error) {
	req, out := c.DeregisterPatchBaselineForPatchGroupRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeregisterTargetFromMaintenanceWindow = "DeregisterTargetFromMaintenanceWindow"

// DeregisterTargetFromMaintenanceWindowRequest generates a "aws/request.Request" representing the
// client's request for the DeregisterTargetFromMaintenanceWindow operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DeregisterTargetFromMaintenanceWindow for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DeregisterTargetFromMaintenanceWindow method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DeregisterTargetFromMaintenanceWindowRequest method.
//    req, resp := client.DeregisterTargetFromMaintenanceWindowRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeregisterTargetFromMaintenanceWindow
func (c *SSM) DeregisterTargetFromMaintenanceWindowRequest(input *DeregisterTargetFromMaintenanceWindowInput) (req *request.Request, output *DeregisterTargetFromMaintenanceWindowOutput) {
	op := &request.Operation{
		Name:       opDeregisterTargetFromMaintenanceWindow,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeregisterTargetFromMaintenanceWindowInput{}
	}

	output = &DeregisterTargetFromMaintenanceWindowOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DeregisterTargetFromMaintenanceWindow API operation for Amazon Simple Systems Manager (SSM).
//
// Removes a target from a Maintenance Window.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DeregisterTargetFromMaintenanceWindow for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeDoesNotExistException "DoesNotExistException"
//   Error returned when the ID specified for a resource (e.g. a Maintenance Window)
//   doesn’t exist.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeregisterTargetFromMaintenanceWindow
func (c *SSM) DeregisterTargetFromMaintenanceWindow(input *DeregisterTargetFromMaintenanceWindowInput) (*DeregisterTargetFromMaintenanceWindowOutput, error) {
	req, out := c.DeregisterTargetFromMaintenanceWindowRequest(input)
	return out, req.Send()
}

// DeregisterTargetFromMaintenanceWindowWithContext is the same as DeregisterTargetFromMaintenanceWindow with the addition of
// the ability to pass a context and additional request options.
//
// See DeregisterTargetFromMaintenanceWindow for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DeregisterTargetFromMaintenanceWindowWithContext(ctx aws.Context, input *DeregisterTargetFromMaintenanceWindowInput, opts ...request.Option) (*DeregisterTargetFromMaintenanceWindowOutput, error) {
	req, out := c.DeregisterTargetFromMaintenanceWindowRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeregisterTaskFromMaintenanceWindow = "DeregisterTaskFromMaintenanceWindow"

// DeregisterTaskFromMaintenanceWindowRequest generates a "aws/request.Request" representing the
// client's request for the DeregisterTaskFromMaintenanceWindow operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DeregisterTaskFromMaintenanceWindow for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DeregisterTaskFromMaintenanceWindow method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DeregisterTaskFromMaintenanceWindowRequest method.
//    req, resp := client.DeregisterTaskFromMaintenanceWindowRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeregisterTaskFromMaintenanceWindow
func (c *SSM) DeregisterTaskFromMaintenanceWindowRequest(input *DeregisterTaskFromMaintenanceWindowInput) (req *request.Request, output *DeregisterTaskFromMaintenanceWindowOutput) {
	op := &request.Operation{
		Name:       opDeregisterTaskFromMaintenanceWindow,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeregisterTaskFromMaintenanceWindowInput{}
	}

	output = &DeregisterTaskFromMaintenanceWindowOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DeregisterTaskFromMaintenanceWindow API operation for Amazon Simple Systems Manager (SSM).
//
// Removes a task from a Maintenance Window.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DeregisterTaskFromMaintenanceWindow for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeDoesNotExistException "DoesNotExistException"
//   Error returned when the ID specified for a resource (e.g. a Maintenance Window)
//   doesn’t exist.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeregisterTaskFromMaintenanceWindow
func (c *SSM) DeregisterTaskFromMaintenanceWindow(input *DeregisterTaskFromMaintenanceWindowInput) (*DeregisterTaskFromMaintenanceWindowOutput, error) {
	req, out := c.DeregisterTaskFromMaintenanceWindowRequest(input)
	return out, req.Send()
}

// DeregisterTaskFromMaintenanceWindowWithContext is the same as DeregisterTaskFromMaintenanceWindow with the addition of
// the ability to pass a context and additional request options.
//
// See DeregisterTaskFromMaintenanceWindow for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DeregisterTaskFromMaintenanceWindowWithContext(ctx aws.Context, input *DeregisterTaskFromMaintenanceWindowInput, opts ...request.Option) (*DeregisterTaskFromMaintenanceWindowOutput, error) {
	req, out := c.DeregisterTaskFromMaintenanceWindowRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeActivations = "DescribeActivations"

// DescribeActivationsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeActivations operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeActivations for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeActivations method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeActivationsRequest method.
//    req, resp := client.DescribeActivationsRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeActivations
func (c *SSM) DescribeActivationsRequest(input *DescribeActivationsInput) (req *request.Request, output *DescribeActivationsOutput) {
	op := &request.Operation{
		Name:       opDescribeActivations,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeActivationsInput{}
	}

	output = &DescribeActivationsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeActivations API operation for Amazon Simple Systems Manager (SSM).
//
// Details about the activation, including: the date and time the activation
// was created, the expiration date, the IAM role assigned to the instances
// in the activation, and the number of instances activated by this registration.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DescribeActivations for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInvalidFilter "InvalidFilter"
//   The filter name is not valid. Verify the you entered the correct name and
//   try again.
//
//   * ErrCodeInvalidNextToken "InvalidNextToken"
//   The specified token is not valid.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeActivations
func (c *SSM) DescribeActivations(input *DescribeActivationsInput) (*DescribeActivationsOutput, error) {
	req, out := c.DescribeActivationsRequest(input)
	return out, req.Send()
}

// DescribeActivationsWithContext is the same as DescribeActivations with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeActivations for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribeActivationsWithContext(ctx aws.Context, input *DescribeActivationsInput, opts ...request.Option) (*DescribeActivationsOutput, error) {
	req, out := c.DescribeActivationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// DescribeActivationsPages iterates over the pages of a DescribeActivations operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeActivations method for more information on how to use this operation.
//
// Note: This operation can generate multiple requests to a service.
//
//    // Example iterating over at most 3 pages of a DescribeActivations operation.
//    pageNum := 0
//    err := client.DescribeActivationsPages(params,
//        func(page *DescribeActivationsOutput, lastPage bool) bool {
//            pageNum++
//            fmt.Println(page)
//            return pageNum <= 3
//        })
//
func (c *SSM) DescribeActivationsPages(input *DescribeActivationsInput, fn func(*DescribeActivationsOutput, bool) bool) error {
	return c.DescribeActivationsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeActivationsPagesWithContext same as DescribeActivationsPages except
// it takes a Context and allows setting request options on the pages.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribeActivationsPagesWithContext(ctx aws.Context, input *DescribeActivationsInput, fn func(*DescribeActivationsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			inCpy := *input
			req, _ := c.DescribeActivationsRequest(&inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	cont := true
	for p.Next() && cont {
		cont = fn(p.Page().(*DescribeActivationsOutput), !p.HasNextPage())
	}
	return p.Err()
}

const opDescribeAssociation = "DescribeAssociation"

// DescribeAssociationRequest generates a "aws/request.Request" representing the
// client's request for the DescribeAssociation operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeAssociation for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeAssociation method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeAssociationRequest method.
//    req, resp := client.DescribeAssociationRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeAssociation
func (c *SSM) DescribeAssociationRequest(input *DescribeAssociationInput) (req *request.Request, output *DescribeAssociationOutput) {
	op := &request.Operation{
		Name:       opDescribeAssociation,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeAssociationInput{}
	}

	output = &DescribeAssociationOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeAssociation API operation for Amazon Simple Systems Manager (SSM).
//
// Describes the associations for the specified SSM document or instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DescribeAssociation for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeAssociationDoesNotExist "AssociationDoesNotExist"
//   The specified association does not exist.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidDocument "InvalidDocument"
//   The specified document does not exist.
//
//   * ErrCodeInvalidInstanceId "InvalidInstanceId"
//   The following problems can cause this exception:
//
//   You do not have permission to access the instance.
//
//   The SSM agent is not running. On managed instances and Linux instances, verify
//   that the SSM agent is running. On EC2 Windows instances, verify that the
//   EC2Config service is running.
//
//   The SSM agent or EC2Config service is not registered to the SSM endpoint.
//   Try reinstalling the SSM agent or EC2Config service.
//
//   The instance is not in valid state. Valid states are: Running, Pending, Stopped,
//   Stopping. Invalid states are: Shutting-down and Terminated.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeAssociation
func (c *SSM) DescribeAssociation(input *DescribeAssociationInput) (*DescribeAssociationOutput, error) {
	req, out := c.DescribeAssociationRequest(input)
	return out, req.Send()
}

// DescribeAssociationWithContext is the same as DescribeAssociation with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeAssociation for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribeAssociationWithContext(ctx aws.Context, input *DescribeAssociationInput, opts ...request.Option) (*DescribeAssociationOutput, error) {
	req, out := c.DescribeAssociationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeAutomationExecutions = "DescribeAutomationExecutions"

// DescribeAutomationExecutionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeAutomationExecutions operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeAutomationExecutions for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeAutomationExecutions method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeAutomationExecutionsRequest method.
//    req, resp := client.DescribeAutomationExecutionsRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeAutomationExecutions
func (c *SSM) DescribeAutomationExecutionsRequest(input *DescribeAutomationExecutionsInput) (req *request.Request, output *DescribeAutomationExecutionsOutput) {
	op := &request.Operation{
		Name:       opDescribeAutomationExecutions,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeAutomationExecutionsInput{}
	}

	output = &DescribeAutomationExecutionsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeAutomationExecutions API operation for Amazon Simple Systems Manager (SSM).
//
// Provides details about all active and terminated Automation executions.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DescribeAutomationExecutions for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInvalidNextToken "InvalidNextToken"
//   The specified token is not valid.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeAutomationExecutions
func (c *SSM) DescribeAutomationExecutions(input *DescribeAutomationExecutionsInput) (*DescribeAutomationExecutionsOutput, error) {
	req, out := c.DescribeAutomationExecutionsRequest(input)
	return out, req.Send()
}

// DescribeAutomationExecutionsWithContext is the same as DescribeAutomationExecutions with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeAutomationExecutions for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribeAutomationExecutionsWithContext(ctx aws.Context, input *DescribeAutomationExecutionsInput, opts ...request.Option) (*DescribeAutomationExecutionsOutput, error) {
	req, out := c.DescribeAutomationExecutionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeAvailablePatches = "DescribeAvailablePatches"

// DescribeAvailablePatchesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeAvailablePatches operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeAvailablePatches for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeAvailablePatches method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeAvailablePatchesRequest method.
//    req, resp := client.DescribeAvailablePatchesRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeAvailablePatches
func (c *SSM) DescribeAvailablePatchesRequest(input *DescribeAvailablePatchesInput) (req *request.Request, output *DescribeAvailablePatchesOutput) {
	op := &request.Operation{
		Name:       opDescribeAvailablePatches,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeAvailablePatchesInput{}
	}

	output = &DescribeAvailablePatchesOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeAvailablePatches API operation for Amazon Simple Systems Manager (SSM).
//
// Lists all patches that could possibly be included in a patch baseline.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DescribeAvailablePatches for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeAvailablePatches
func (c *SSM) DescribeAvailablePatches(input *DescribeAvailablePatchesInput) (*DescribeAvailablePatchesOutput, error) {
	req, out := c.DescribeAvailablePatchesRequest(input)
	return out, req.Send()
}

// DescribeAvailablePatchesWithContext is the same as DescribeAvailablePatches with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeAvailablePatches for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribeAvailablePatchesWithContext(ctx aws.Context, input *DescribeAvailablePatchesInput, opts ...request.Option) (*DescribeAvailablePatchesOutput, error) {
	req, out := c.DescribeAvailablePatchesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeDocument = "DescribeDocument"

// DescribeDocumentRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDocument operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeDocument for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeDocument method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeDocumentRequest method.
//    req, resp := client.DescribeDocumentRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeDocument
func (c *SSM) DescribeDocumentRequest(input *DescribeDocumentInput) (req *request.Request, output *DescribeDocumentOutput) {
	op := &request.Operation{
		Name:       opDescribeDocument,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeDocumentInput{}
	}

	output = &DescribeDocumentOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeDocument API operation for Amazon Simple Systems Manager (SSM).
//
// Describes the specified SSM document.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DescribeDocument for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidDocument "InvalidDocument"
//   The specified document does not exist.
//
//   * ErrCodeInvalidDocumentVersion "InvalidDocumentVersion"
//   The document version is not valid or does not exist.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeDocument
func (c *SSM) DescribeDocument(input *DescribeDocumentInput) (*DescribeDocumentOutput, error) {
	req, out := c.DescribeDocumentRequest(input)
	return out, req.Send()
}

// DescribeDocumentWithContext is the same as DescribeDocument with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeDocument for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribeDocumentWithContext(ctx aws.Context, input *DescribeDocumentInput, opts ...request.Option) (*DescribeDocumentOutput, error) {
	req, out := c.DescribeDocumentRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeDocumentPermission = "DescribeDocumentPermission"

// DescribeDocumentPermissionRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDocumentPermission operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeDocumentPermission for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeDocumentPermission method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeDocumentPermissionRequest method.
//    req, resp := client.DescribeDocumentPermissionRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeDocumentPermission
func (c *SSM) DescribeDocumentPermissionRequest(input *DescribeDocumentPermissionInput) (req *request.Request, output *DescribeDocumentPermissionOutput) {
	op := &request.Operation{
		Name:       opDescribeDocumentPermission,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeDocumentPermissionInput{}
	}

	output = &DescribeDocumentPermissionOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeDocumentPermission API operation for Amazon Simple Systems Manager (SSM).
//
// Describes the permissions for an SSM 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 (All).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DescribeDocumentPermission for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidDocument "InvalidDocument"
//   The specified document does not exist.
//
//   * ErrCodeInvalidPermissionType "InvalidPermissionType"
//   The permission type is not supported. Share is the only supported permission
//   type.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeDocumentPermission
func (c *SSM) DescribeDocumentPermission(input *DescribeDocumentPermissionInput) (*DescribeDocumentPermissionOutput, error) {
	req, out := c.DescribeDocumentPermissionRequest(input)
	return out, req.Send()
}

// DescribeDocumentPermissionWithContext is the same as DescribeDocumentPermission with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeDocumentPermission for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribeDocumentPermissionWithContext(ctx aws.Context, input *DescribeDocumentPermissionInput, opts ...request.Option) (*DescribeDocumentPermissionOutput, error) {
	req, out := c.DescribeDocumentPermissionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeEffectiveInstanceAssociations = "DescribeEffectiveInstanceAssociations"

// DescribeEffectiveInstanceAssociationsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeEffectiveInstanceAssociations operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeEffectiveInstanceAssociations for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeEffectiveInstanceAssociations method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeEffectiveInstanceAssociationsRequest method.
//    req, resp := client.DescribeEffectiveInstanceAssociationsRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeEffectiveInstanceAssociations
func (c *SSM) DescribeEffectiveInstanceAssociationsRequest(input *DescribeEffectiveInstanceAssociationsInput) (req *request.Request, output *DescribeEffectiveInstanceAssociationsOutput) {
	op := &request.Operation{
		Name:       opDescribeEffectiveInstanceAssociations,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeEffectiveInstanceAssociationsInput{}
	}

	output = &DescribeEffectiveInstanceAssociationsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeEffectiveInstanceAssociations API operation for Amazon Simple Systems Manager (SSM).
//
// All associations for the instance(s).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DescribeEffectiveInstanceAssociations for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidInstanceId "InvalidInstanceId"
//   The following problems can cause this exception:
//
//   You do not have permission to access the instance.
//
//   The SSM agent is not running. On managed instances and Linux instances, verify
//   that the SSM agent is running. On EC2 Windows instances, verify that the
//   EC2Config service is running.
//
//   The SSM agent or EC2Config service is not registered to the SSM endpoint.
//   Try reinstalling the SSM agent or EC2Config service.
//
//   The instance is not in valid state. Valid states are: Running, Pending, Stopped,
//   Stopping. Invalid states are: Shutting-down and Terminated.
//
//   * ErrCodeInvalidNextToken "InvalidNextToken"
//   The specified token is not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeEffectiveInstanceAssociations
func (c *SSM) DescribeEffectiveInstanceAssociations(input *DescribeEffectiveInstanceAssociationsInput) (*DescribeEffectiveInstanceAssociationsOutput, error) {
	req, out := c.DescribeEffectiveInstanceAssociationsRequest(input)
	return out, req.Send()
}

// DescribeEffectiveInstanceAssociationsWithContext is the same as DescribeEffectiveInstanceAssociations with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeEffectiveInstanceAssociations for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribeEffectiveInstanceAssociationsWithContext(ctx aws.Context, input *DescribeEffectiveInstanceAssociationsInput, opts ...request.Option) (*DescribeEffectiveInstanceAssociationsOutput, error) {
	req, out := c.DescribeEffectiveInstanceAssociationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeEffectivePatchesForPatchBaseline = "DescribeEffectivePatchesForPatchBaseline"

// DescribeEffectivePatchesForPatchBaselineRequest generates a "aws/request.Request" representing the
// client's request for the DescribeEffectivePatchesForPatchBaseline operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeEffectivePatchesForPatchBaseline for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeEffectivePatchesForPatchBaseline method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeEffectivePatchesForPatchBaselineRequest method.
//    req, resp := client.DescribeEffectivePatchesForPatchBaselineRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeEffectivePatchesForPatchBaseline
func (c *SSM) DescribeEffectivePatchesForPatchBaselineRequest(input *DescribeEffectivePatchesForPatchBaselineInput) (req *request.Request, output *DescribeEffectivePatchesForPatchBaselineOutput) {
	op := &request.Operation{
		Name:       opDescribeEffectivePatchesForPatchBaseline,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeEffectivePatchesForPatchBaselineInput{}
	}

	output = &DescribeEffectivePatchesForPatchBaselineOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeEffectivePatchesForPatchBaseline API operation for Amazon Simple Systems Manager (SSM).
//
// Retrieves the current effective patches (the patch and the approval state)
// for the specified patch baseline.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DescribeEffectivePatchesForPatchBaseline for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInvalidResourceId "InvalidResourceId"
//   The resource ID is not valid. Verify that you entered the correct ID and
//   try again.
//
//   * ErrCodeDoesNotExistException "DoesNotExistException"
//   Error returned when the ID specified for a resource (e.g. a Maintenance Window)
//   doesn’t exist.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeEffectivePatchesForPatchBaseline
func (c *SSM) DescribeEffectivePatchesForPatchBaseline(input *DescribeEffectivePatchesForPatchBaselineInput) (*DescribeEffectivePatchesForPatchBaselineOutput, error) {
	req, out := c.DescribeEffectivePatchesForPatchBaselineRequest(input)
	return out, req.Send()
}

// DescribeEffectivePatchesForPatchBaselineWithContext is the same as DescribeEffectivePatchesForPatchBaseline with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeEffectivePatchesForPatchBaseline for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribeEffectivePatchesForPatchBaselineWithContext(ctx aws.Context, input *DescribeEffectivePatchesForPatchBaselineInput, opts ...request.Option) (*DescribeEffectivePatchesForPatchBaselineOutput, error) {
	req, out := c.DescribeEffectivePatchesForPatchBaselineRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeInstanceAssociationsStatus = "DescribeInstanceAssociationsStatus"

// DescribeInstanceAssociationsStatusRequest generates a "aws/request.Request" representing the
// client's request for the DescribeInstanceAssociationsStatus operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeInstanceAssociationsStatus for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeInstanceAssociationsStatus method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeInstanceAssociationsStatusRequest method.
//    req, resp := client.DescribeInstanceAssociationsStatusRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstanceAssociationsStatus
func (c *SSM) DescribeInstanceAssociationsStatusRequest(input *DescribeInstanceAssociationsStatusInput) (req *request.Request, output *DescribeInstanceAssociationsStatusOutput) {
	op := &request.Operation{
		Name:       opDescribeInstanceAssociationsStatus,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeInstanceAssociationsStatusInput{}
	}

	output = &DescribeInstanceAssociationsStatusOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeInstanceAssociationsStatus API operation for Amazon Simple Systems Manager (SSM).
//
// The status of the associations for the instance(s).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DescribeInstanceAssociationsStatus for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidInstanceId "InvalidInstanceId"
//   The following problems can cause this exception:
//
//   You do not have permission to access the instance.
//
//   The SSM agent is not running. On managed instances and Linux instances, verify
//   that the SSM agent is running. On EC2 Windows instances, verify that the
//   EC2Config service is running.
//
//   The SSM agent or EC2Config service is not registered to the SSM endpoint.
//   Try reinstalling the SSM agent or EC2Config service.
//
//   The instance is not in valid state. Valid states are: Running, Pending, Stopped,
//   Stopping. Invalid states are: Shutting-down and Terminated.
//
//   * ErrCodeInvalidNextToken "InvalidNextToken"
//   The specified token is not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstanceAssociationsStatus
func (c *SSM) DescribeInstanceAssociationsStatus(input *DescribeInstanceAssociationsStatusInput) (*DescribeInstanceAssociationsStatusOutput, error) {
	req, out := c.DescribeInstanceAssociationsStatusRequest(input)
	return out, req.Send()
}

// DescribeInstanceAssociationsStatusWithContext is the same as DescribeInstanceAssociationsStatus with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeInstanceAssociationsStatus for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribeInstanceAssociationsStatusWithContext(ctx aws.Context, input *DescribeInstanceAssociationsStatusInput, opts ...request.Option) (*DescribeInstanceAssociationsStatusOutput, error) {
	req, out := c.DescribeInstanceAssociationsStatusRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeInstanceInformation = "DescribeInstanceInformation"

// DescribeInstanceInformationRequest generates a "aws/request.Request" representing the
// client's request for the DescribeInstanceInformation operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeInstanceInformation for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeInstanceInformation method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeInstanceInformationRequest method.
//    req, resp := client.DescribeInstanceInformationRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstanceInformation
func (c *SSM) DescribeInstanceInformationRequest(input *DescribeInstanceInformationInput) (req *request.Request, output *DescribeInstanceInformationOutput) {
	op := &request.Operation{
		Name:       opDescribeInstanceInformation,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeInstanceInformationInput{}
	}

	output = &DescribeInstanceInformationOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeInstanceInformation API operation for Amazon Simple Systems Manager (SSM).
//
// Describes one or more of your instances. You can use this to get information
// about instances like the operating system platform, the SSM agent version
// (Linux), status etc. 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.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DescribeInstanceInformation for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidInstanceId "InvalidInstanceId"
//   The following problems can cause this exception:
//
//   You do not have permission to access the instance.
//
//   The SSM agent is not running. On managed instances and Linux instances, verify
//   that the SSM agent is running. On EC2 Windows instances, verify that the
//   EC2Config service is running.
//
//   The SSM agent or EC2Config service is not registered to the SSM endpoint.
//   Try reinstalling the SSM agent or EC2Config service.
//
//   The instance is not in valid state. Valid states are: Running, Pending, Stopped,
//   Stopping. Invalid states are: Shutting-down and Terminated.
//
//   * ErrCodeInvalidNextToken "InvalidNextToken"
//   The specified token is not valid.
//
//   * ErrCodeInvalidInstanceInformationFilterValue "InvalidInstanceInformationFilterValue"
//   The specified filter value is not valid.
//
//   * ErrCodeInvalidFilterKey "InvalidFilterKey"
//   The specified key is not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstanceInformation
func (c *SSM) DescribeInstanceInformation(input *DescribeInstanceInformationInput) (*DescribeInstanceInformationOutput, error) {
	req, out := c.DescribeInstanceInformationRequest(input)
	return out, req.Send()
}

// DescribeInstanceInformationWithContext is the same as DescribeInstanceInformation with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeInstanceInformation for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribeInstanceInformationWithContext(ctx aws.Context, input *DescribeInstanceInformationInput, opts ...request.Option) (*DescribeInstanceInformationOutput, error) {
	req, out := c.DescribeInstanceInformationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// DescribeInstanceInformationPages iterates over the pages of a DescribeInstanceInformation operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeInstanceInformation method for more information on how to use this operation.
//
// Note: This operation can generate multiple requests to a service.
//
//    // Example iterating over at most 3 pages of a DescribeInstanceInformation operation.
//    pageNum := 0
//    err := client.DescribeInstanceInformationPages(params,
//        func(page *DescribeInstanceInformationOutput, lastPage bool) bool {
//            pageNum++
//            fmt.Println(page)
//            return pageNum <= 3
//        })
//
func (c *SSM) DescribeInstanceInformationPages(input *DescribeInstanceInformationInput, fn func(*DescribeInstanceInformationOutput, bool) bool) error {
	return c.DescribeInstanceInformationPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeInstanceInformationPagesWithContext same as DescribeInstanceInformationPages except
// it takes a Context and allows setting request options on the pages.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribeInstanceInformationPagesWithContext(ctx aws.Context, input *DescribeInstanceInformationInput, fn func(*DescribeInstanceInformationOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			inCpy := *input
			req, _ := c.DescribeInstanceInformationRequest(&inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	cont := true
	for p.Next() && cont {
		cont = fn(p.Page().(*DescribeInstanceInformationOutput), !p.HasNextPage())
	}
	return p.Err()
}

const opDescribeInstancePatchStates = "DescribeInstancePatchStates"

// DescribeInstancePatchStatesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeInstancePatchStates operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeInstancePatchStates for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeInstancePatchStates method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeInstancePatchStatesRequest method.
//    req, resp := client.DescribeInstancePatchStatesRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstancePatchStates
func (c *SSM) DescribeInstancePatchStatesRequest(input *DescribeInstancePatchStatesInput) (req *request.Request, output *DescribeInstancePatchStatesOutput) {
	op := &request.Operation{
		Name:       opDescribeInstancePatchStates,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeInstancePatchStatesInput{}
	}

	output = &DescribeInstancePatchStatesOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeInstancePatchStates API operation for Amazon Simple Systems Manager (SSM).
//
// Retrieves the high-level patch state of one or more instances.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DescribeInstancePatchStates for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidNextToken "InvalidNextToken"
//   The specified token is not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstancePatchStates
func (c *SSM) DescribeInstancePatchStates(input *DescribeInstancePatchStatesInput) (*DescribeInstancePatchStatesOutput, error) {
	req, out := c.DescribeInstancePatchStatesRequest(input)
	return out, req.Send()
}

// DescribeInstancePatchStatesWithContext is the same as DescribeInstancePatchStates with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeInstancePatchStates for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribeInstancePatchStatesWithContext(ctx aws.Context, input *DescribeInstancePatchStatesInput, opts ...request.Option) (*DescribeInstancePatchStatesOutput, error) {
	req, out := c.DescribeInstancePatchStatesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeInstancePatchStatesForPatchGroup = "DescribeInstancePatchStatesForPatchGroup"

// DescribeInstancePatchStatesForPatchGroupRequest generates a "aws/request.Request" representing the
// client's request for the DescribeInstancePatchStatesForPatchGroup operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeInstancePatchStatesForPatchGroup for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeInstancePatchStatesForPatchGroup method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeInstancePatchStatesForPatchGroupRequest method.
//    req, resp := client.DescribeInstancePatchStatesForPatchGroupRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstancePatchStatesForPatchGroup
func (c *SSM) DescribeInstancePatchStatesForPatchGroupRequest(input *DescribeInstancePatchStatesForPatchGroupInput) (req *request.Request, output *DescribeInstancePatchStatesForPatchGroupOutput) {
	op := &request.Operation{
		Name:       opDescribeInstancePatchStatesForPatchGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeInstancePatchStatesForPatchGroupInput{}
	}

	output = &DescribeInstancePatchStatesForPatchGroupOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeInstancePatchStatesForPatchGroup API operation for Amazon Simple Systems Manager (SSM).
//
// Retrieves the high-level patch state for the instances in the specified patch
// group.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DescribeInstancePatchStatesForPatchGroup for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidFilter "InvalidFilter"
//   The filter name is not valid. Verify the you entered the correct name and
//   try again.
//
//   * ErrCodeInvalidNextToken "InvalidNextToken"
//   The specified token is not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstancePatchStatesForPatchGroup
func (c *SSM) DescribeInstancePatchStatesForPatchGroup(input *DescribeInstancePatchStatesForPatchGroupInput) (*DescribeInstancePatchStatesForPatchGroupOutput, error) {
	req, out := c.DescribeInstancePatchStatesForPatchGroupRequest(input)
	return out, req.Send()
}

// DescribeInstancePatchStatesForPatchGroupWithContext is the same as DescribeInstancePatchStatesForPatchGroup with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeInstancePatchStatesForPatchGroup for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribeInstancePatchStatesForPatchGroupWithContext(ctx aws.Context, input *DescribeInstancePatchStatesForPatchGroupInput, opts ...request.Option) (*DescribeInstancePatchStatesForPatchGroupOutput, error) {
	req, out := c.DescribeInstancePatchStatesForPatchGroupRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeInstancePatches = "DescribeInstancePatches"

// DescribeInstancePatchesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeInstancePatches operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeInstancePatches for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeInstancePatches method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeInstancePatchesRequest method.
//    req, resp := client.DescribeInstancePatchesRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstancePatches
func (c *SSM) DescribeInstancePatchesRequest(input *DescribeInstancePatchesInput) (req *request.Request, output *DescribeInstancePatchesOutput) {
	op := &request.Operation{
		Name:       opDescribeInstancePatches,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeInstancePatchesInput{}
	}

	output = &DescribeInstancePatchesOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeInstancePatches API operation for Amazon Simple Systems Manager (SSM).
//
// Retrieves information about the patches on the specified instance and their
// state relative to the patch baseline being used for the instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DescribeInstancePatches for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidInstanceId "InvalidInstanceId"
//   The following problems can cause this exception:
//
//   You do not have permission to access the instance.
//
//   The SSM agent is not running. On managed instances and Linux instances, verify
//   that the SSM agent is running. On EC2 Windows instances, verify that the
//   EC2Config service is running.
//
//   The SSM agent or EC2Config service is not registered to the SSM endpoint.
//   Try reinstalling the SSM agent or EC2Config service.
//
//   The instance is not in valid state. Valid states are: Running, Pending, Stopped,
//   Stopping. Invalid states are: Shutting-down and Terminated.
//
//   * ErrCodeInvalidFilter "InvalidFilter"
//   The filter name is not valid. Verify the you entered the correct name and
//   try again.
//
//   * ErrCodeInvalidNextToken "InvalidNextToken"
//   The specified token is not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstancePatches
func (c *SSM) DescribeInstancePatches(input *DescribeInstancePatchesInput) (*DescribeInstancePatchesOutput, error) {
	req, out := c.DescribeInstancePatchesRequest(input)
	return out, req.Send()
}

// DescribeInstancePatchesWithContext is the same as DescribeInstancePatches with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeInstancePatches for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribeInstancePatchesWithContext(ctx aws.Context, input *DescribeInstancePatchesInput, opts ...request.Option) (*DescribeInstancePatchesOutput, error) {
	req, out := c.DescribeInstancePatchesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeMaintenanceWindowExecutionTaskInvocations = "DescribeMaintenanceWindowExecutionTaskInvocations"

// DescribeMaintenanceWindowExecutionTaskInvocationsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeMaintenanceWindowExecutionTaskInvocations operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeMaintenanceWindowExecutionTaskInvocations for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeMaintenanceWindowExecutionTaskInvocations method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeMaintenanceWindowExecutionTaskInvocationsRequest method.
//    req, resp := client.DescribeMaintenanceWindowExecutionTaskInvocationsRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowExecutionTaskInvocations
func (c *SSM) DescribeMaintenanceWindowExecutionTaskInvocationsRequest(input *DescribeMaintenanceWindowExecutionTaskInvocationsInput) (req *request.Request, output *DescribeMaintenanceWindowExecutionTaskInvocationsOutput) {
	op := &request.Operation{
		Name:       opDescribeMaintenanceWindowExecutionTaskInvocations,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeMaintenanceWindowExecutionTaskInvocationsInput{}
	}

	output = &DescribeMaintenanceWindowExecutionTaskInvocationsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeMaintenanceWindowExecutionTaskInvocations API operation for Amazon Simple Systems Manager (SSM).
//
// Retrieves the individual task executions (one per target) for a particular
// task executed as part of a Maintenance Window execution.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DescribeMaintenanceWindowExecutionTaskInvocations for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeDoesNotExistException "DoesNotExistException"
//   Error returned when the ID specified for a resource (e.g. a Maintenance Window)
//   doesn’t exist.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowExecutionTaskInvocations
func (c *SSM) DescribeMaintenanceWindowExecutionTaskInvocations(input *DescribeMaintenanceWindowExecutionTaskInvocationsInput) (*DescribeMaintenanceWindowExecutionTaskInvocationsOutput, error) {
	req, out := c.DescribeMaintenanceWindowExecutionTaskInvocationsRequest(input)
	return out, req.Send()
}

// DescribeMaintenanceWindowExecutionTaskInvocationsWithContext is the same as DescribeMaintenanceWindowExecutionTaskInvocations with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeMaintenanceWindowExecutionTaskInvocations for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribeMaintenanceWindowExecutionTaskInvocationsWithContext(ctx aws.Context, input *DescribeMaintenanceWindowExecutionTaskInvocationsInput, opts ...request.Option) (*DescribeMaintenanceWindowExecutionTaskInvocationsOutput, error) {
	req, out := c.DescribeMaintenanceWindowExecutionTaskInvocationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeMaintenanceWindowExecutionTasks = "DescribeMaintenanceWindowExecutionTasks"

// DescribeMaintenanceWindowExecutionTasksRequest generates a "aws/request.Request" representing the
// client's request for the DescribeMaintenanceWindowExecutionTasks operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeMaintenanceWindowExecutionTasks for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeMaintenanceWindowExecutionTasks method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeMaintenanceWindowExecutionTasksRequest method.
//    req, resp := client.DescribeMaintenanceWindowExecutionTasksRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowExecutionTasks
func (c *SSM) DescribeMaintenanceWindowExecutionTasksRequest(input *DescribeMaintenanceWindowExecutionTasksInput) (req *request.Request, output *DescribeMaintenanceWindowExecutionTasksOutput) {
	op := &request.Operation{
		Name:       opDescribeMaintenanceWindowExecutionTasks,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeMaintenanceWindowExecutionTasksInput{}
	}

	output = &DescribeMaintenanceWindowExecutionTasksOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeMaintenanceWindowExecutionTasks API operation for Amazon Simple Systems Manager (SSM).
//
// For a given Maintenance Window execution, lists the tasks that were executed.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DescribeMaintenanceWindowExecutionTasks for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeDoesNotExistException "DoesNotExistException"
//   Error returned when the ID specified for a resource (e.g. a Maintenance Window)
//   doesn’t exist.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowExecutionTasks
func (c *SSM) DescribeMaintenanceWindowExecutionTasks(input *DescribeMaintenanceWindowExecutionTasksInput) (*DescribeMaintenanceWindowExecutionTasksOutput, error) {
	req, out := c.DescribeMaintenanceWindowExecutionTasksRequest(input)
	return out, req.Send()
}

// DescribeMaintenanceWindowExecutionTasksWithContext is the same as DescribeMaintenanceWindowExecutionTasks with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeMaintenanceWindowExecutionTasks for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribeMaintenanceWindowExecutionTasksWithContext(ctx aws.Context, input *DescribeMaintenanceWindowExecutionTasksInput, opts ...request.Option) (*DescribeMaintenanceWindowExecutionTasksOutput, error) {
	req, out := c.DescribeMaintenanceWindowExecutionTasksRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeMaintenanceWindowExecutions = "DescribeMaintenanceWindowExecutions"

// DescribeMaintenanceWindowExecutionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeMaintenanceWindowExecutions operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeMaintenanceWindowExecutions for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeMaintenanceWindowExecutions method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeMaintenanceWindowExecutionsRequest method.
//    req, resp := client.DescribeMaintenanceWindowExecutionsRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowExecutions
func (c *SSM) DescribeMaintenanceWindowExecutionsRequest(input *DescribeMaintenanceWindowExecutionsInput) (req *request.Request, output *DescribeMaintenanceWindowExecutionsOutput) {
	op := &request.Operation{
		Name:       opDescribeMaintenanceWindowExecutions,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeMaintenanceWindowExecutionsInput{}
	}

	output = &DescribeMaintenanceWindowExecutionsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeMaintenanceWindowExecutions API operation for Amazon Simple Systems Manager (SSM).
//
// Lists the executions of a Maintenance Window (meaning, information about
// when the Maintenance Window was scheduled to be active and information about
// tasks registered and run with the Maintenance Window).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DescribeMaintenanceWindowExecutions for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowExecutions
func (c *SSM) DescribeMaintenanceWindowExecutions(input *DescribeMaintenanceWindowExecutionsInput) (*DescribeMaintenanceWindowExecutionsOutput, error) {
	req, out := c.DescribeMaintenanceWindowExecutionsRequest(input)
	return out, req.Send()
}

// DescribeMaintenanceWindowExecutionsWithContext is the same as DescribeMaintenanceWindowExecutions with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeMaintenanceWindowExecutions for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribeMaintenanceWindowExecutionsWithContext(ctx aws.Context, input *DescribeMaintenanceWindowExecutionsInput, opts ...request.Option) (*DescribeMaintenanceWindowExecutionsOutput, error) {
	req, out := c.DescribeMaintenanceWindowExecutionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeMaintenanceWindowTargets = "DescribeMaintenanceWindowTargets"

// DescribeMaintenanceWindowTargetsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeMaintenanceWindowTargets operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeMaintenanceWindowTargets for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeMaintenanceWindowTargets method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeMaintenanceWindowTargetsRequest method.
//    req, resp := client.DescribeMaintenanceWindowTargetsRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowTargets
func (c *SSM) DescribeMaintenanceWindowTargetsRequest(input *DescribeMaintenanceWindowTargetsInput) (req *request.Request, output *DescribeMaintenanceWindowTargetsOutput) {
	op := &request.Operation{
		Name:       opDescribeMaintenanceWindowTargets,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeMaintenanceWindowTargetsInput{}
	}

	output = &DescribeMaintenanceWindowTargetsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeMaintenanceWindowTargets API operation for Amazon Simple Systems Manager (SSM).
//
// Lists the targets registered with the Maintenance Window.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DescribeMaintenanceWindowTargets for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeDoesNotExistException "DoesNotExistException"
//   Error returned when the ID specified for a resource (e.g. a Maintenance Window)
//   doesn’t exist.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowTargets
func (c *SSM) DescribeMaintenanceWindowTargets(input *DescribeMaintenanceWindowTargetsInput) (*DescribeMaintenanceWindowTargetsOutput, error) {
	req, out := c.DescribeMaintenanceWindowTargetsRequest(input)
	return out, req.Send()
}

// DescribeMaintenanceWindowTargetsWithContext is the same as DescribeMaintenanceWindowTargets with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeMaintenanceWindowTargets for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribeMaintenanceWindowTargetsWithContext(ctx aws.Context, input *DescribeMaintenanceWindowTargetsInput, opts ...request.Option) (*DescribeMaintenanceWindowTargetsOutput, error) {
	req, out := c.DescribeMaintenanceWindowTargetsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeMaintenanceWindowTasks = "DescribeMaintenanceWindowTasks"

// DescribeMaintenanceWindowTasksRequest generates a "aws/request.Request" representing the
// client's request for the DescribeMaintenanceWindowTasks operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeMaintenanceWindowTasks for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeMaintenanceWindowTasks method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeMaintenanceWindowTasksRequest method.
//    req, resp := client.DescribeMaintenanceWindowTasksRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowTasks
func (c *SSM) DescribeMaintenanceWindowTasksRequest(input *DescribeMaintenanceWindowTasksInput) (req *request.Request, output *DescribeMaintenanceWindowTasksOutput) {
	op := &request.Operation{
		Name:       opDescribeMaintenanceWindowTasks,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeMaintenanceWindowTasksInput{}
	}

	output = &DescribeMaintenanceWindowTasksOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeMaintenanceWindowTasks API operation for Amazon Simple Systems Manager (SSM).
//
// Lists the tasks in a Maintenance Window.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DescribeMaintenanceWindowTasks for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeDoesNotExistException "DoesNotExistException"
//   Error returned when the ID specified for a resource (e.g. a Maintenance Window)
//   doesn’t exist.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowTasks
func (c *SSM) DescribeMaintenanceWindowTasks(input *DescribeMaintenanceWindowTasksInput) (*DescribeMaintenanceWindowTasksOutput, error) {
	req, out := c.DescribeMaintenanceWindowTasksRequest(input)
	return out, req.Send()
}

// DescribeMaintenanceWindowTasksWithContext is the same as DescribeMaintenanceWindowTasks with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeMaintenanceWindowTasks for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribeMaintenanceWindowTasksWithContext(ctx aws.Context, input *DescribeMaintenanceWindowTasksInput, opts ...request.Option) (*DescribeMaintenanceWindowTasksOutput, error) {
	req, out := c.DescribeMaintenanceWindowTasksRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeMaintenanceWindows = "DescribeMaintenanceWindows"

// DescribeMaintenanceWindowsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeMaintenanceWindows operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeMaintenanceWindows for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeMaintenanceWindows method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeMaintenanceWindowsRequest method.
//    req, resp := client.DescribeMaintenanceWindowsRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindows
func (c *SSM) DescribeMaintenanceWindowsRequest(input *DescribeMaintenanceWindowsInput) (req *request.Request, output *DescribeMaintenanceWindowsOutput) {
	op := &request.Operation{
		Name:       opDescribeMaintenanceWindows,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeMaintenanceWindowsInput{}
	}

	output = &DescribeMaintenanceWindowsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeMaintenanceWindows API operation for Amazon Simple Systems Manager (SSM).
//
// Retrieves the Maintenance Windows in an AWS account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DescribeMaintenanceWindows for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindows
func (c *SSM) DescribeMaintenanceWindows(input *DescribeMaintenanceWindowsInput) (*DescribeMaintenanceWindowsOutput, error) {
	req, out := c.DescribeMaintenanceWindowsRequest(input)
	return out, req.Send()
}

// DescribeMaintenanceWindowsWithContext is the same as DescribeMaintenanceWindows with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeMaintenanceWindows for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribeMaintenanceWindowsWithContext(ctx aws.Context, input *DescribeMaintenanceWindowsInput, opts ...request.Option) (*DescribeMaintenanceWindowsOutput, error) {
	req, out := c.DescribeMaintenanceWindowsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeParameters = "DescribeParameters"

// DescribeParametersRequest generates a "aws/request.Request" representing the
// client's request for the DescribeParameters operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeParameters for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeParameters method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeParametersRequest method.
//    req, resp := client.DescribeParametersRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeParameters
func (c *SSM) DescribeParametersRequest(input *DescribeParametersInput) (req *request.Request, output *DescribeParametersOutput) {
	op := &request.Operation{
		Name:       opDescribeParameters,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeParametersInput{}
	}

	output = &DescribeParametersOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeParameters API operation for Amazon Simple Systems Manager (SSM).
//
// Get information about a parameter.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DescribeParameters for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidFilterValue "InvalidFilterValue"
//   The filter value is not valid. Verify the value and try again.
//
//   * ErrCodeInvalidNextToken "InvalidNextToken"
//   The specified token is not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeParameters
func (c *SSM) DescribeParameters(input *DescribeParametersInput) (*DescribeParametersOutput, error) {
	req, out := c.DescribeParametersRequest(input)
	return out, req.Send()
}

// DescribeParametersWithContext is the same as DescribeParameters with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeParameters for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribeParametersWithContext(ctx aws.Context, input *DescribeParametersInput, opts ...request.Option) (*DescribeParametersOutput, error) {
	req, out := c.DescribeParametersRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribePatchBaselines = "DescribePatchBaselines"

// DescribePatchBaselinesRequest generates a "aws/request.Request" representing the
// client's request for the DescribePatchBaselines operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribePatchBaselines for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribePatchBaselines method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribePatchBaselinesRequest method.
//    req, resp := client.DescribePatchBaselinesRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribePatchBaselines
func (c *SSM) DescribePatchBaselinesRequest(input *DescribePatchBaselinesInput) (req *request.Request, output *DescribePatchBaselinesOutput) {
	op := &request.Operation{
		Name:       opDescribePatchBaselines,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribePatchBaselinesInput{}
	}

	output = &DescribePatchBaselinesOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribePatchBaselines API operation for Amazon Simple Systems Manager (SSM).
//
// Lists the patch baselines in your AWS account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DescribePatchBaselines for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribePatchBaselines
func (c *SSM) DescribePatchBaselines(input *DescribePatchBaselinesInput) (*DescribePatchBaselinesOutput, error) {
	req, out := c.DescribePatchBaselinesRequest(input)
	return out, req.Send()
}

// DescribePatchBaselinesWithContext is the same as DescribePatchBaselines with the addition of
// the ability to pass a context and additional request options.
//
// See DescribePatchBaselines for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribePatchBaselinesWithContext(ctx aws.Context, input *DescribePatchBaselinesInput, opts ...request.Option) (*DescribePatchBaselinesOutput, error) {
	req, out := c.DescribePatchBaselinesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribePatchGroupState = "DescribePatchGroupState"

// DescribePatchGroupStateRequest generates a "aws/request.Request" representing the
// client's request for the DescribePatchGroupState operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribePatchGroupState for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribePatchGroupState method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribePatchGroupStateRequest method.
//    req, resp := client.DescribePatchGroupStateRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribePatchGroupState
func (c *SSM) DescribePatchGroupStateRequest(input *DescribePatchGroupStateInput) (req *request.Request, output *DescribePatchGroupStateOutput) {
	op := &request.Operation{
		Name:       opDescribePatchGroupState,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribePatchGroupStateInput{}
	}

	output = &DescribePatchGroupStateOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribePatchGroupState API operation for Amazon Simple Systems Manager (SSM).
//
// Returns high-level aggregated patch compliance state for a patch group.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DescribePatchGroupState for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidNextToken "InvalidNextToken"
//   The specified token is not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribePatchGroupState
func (c *SSM) DescribePatchGroupState(input *DescribePatchGroupStateInput) (*DescribePatchGroupStateOutput, error) {
	req, out := c.DescribePatchGroupStateRequest(input)
	return out, req.Send()
}

// DescribePatchGroupStateWithContext is the same as DescribePatchGroupState with the addition of
// the ability to pass a context and additional request options.
//
// See DescribePatchGroupState for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribePatchGroupStateWithContext(ctx aws.Context, input *DescribePatchGroupStateInput, opts ...request.Option) (*DescribePatchGroupStateOutput, error) {
	req, out := c.DescribePatchGroupStateRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribePatchGroups = "DescribePatchGroups"

// DescribePatchGroupsRequest generates a "aws/request.Request" representing the
// client's request for the DescribePatchGroups operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribePatchGroups for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribePatchGroups method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribePatchGroupsRequest method.
//    req, resp := client.DescribePatchGroupsRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribePatchGroups
func (c *SSM) DescribePatchGroupsRequest(input *DescribePatchGroupsInput) (req *request.Request, output *DescribePatchGroupsOutput) {
	op := &request.Operation{
		Name:       opDescribePatchGroups,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribePatchGroupsInput{}
	}

	output = &DescribePatchGroupsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribePatchGroups API operation for Amazon Simple Systems Manager (SSM).
//
// Lists all patch groups that have been registered with patch baselines.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation DescribePatchGroups for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribePatchGroups
func (c *SSM) DescribePatchGroups(input *DescribePatchGroupsInput) (*DescribePatchGroupsOutput, error) {
	req, out := c.DescribePatchGroupsRequest(input)
	return out, req.Send()
}

// DescribePatchGroupsWithContext is the same as DescribePatchGroups with the addition of
// the ability to pass a context and additional request options.
//
// See DescribePatchGroups for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) DescribePatchGroupsWithContext(ctx aws.Context, input *DescribePatchGroupsInput, opts ...request.Option) (*DescribePatchGroupsOutput, error) {
	req, out := c.DescribePatchGroupsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetAutomationExecution = "GetAutomationExecution"

// GetAutomationExecutionRequest generates a "aws/request.Request" representing the
// client's request for the GetAutomationExecution operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See GetAutomationExecution for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the GetAutomationExecution method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the GetAutomationExecutionRequest method.
//    req, resp := client.GetAutomationExecutionRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetAutomationExecution
func (c *SSM) GetAutomationExecutionRequest(input *GetAutomationExecutionInput) (req *request.Request, output *GetAutomationExecutionOutput) {
	op := &request.Operation{
		Name:       opGetAutomationExecution,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetAutomationExecutionInput{}
	}

	output = &GetAutomationExecutionOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetAutomationExecution API operation for Amazon Simple Systems Manager (SSM).
//
// Get detailed information about a particular Automation execution.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation GetAutomationExecution for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeAutomationExecutionNotFoundException "AutomationExecutionNotFoundException"
//   There is no automation execution information for the requested automation
//   execution ID.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetAutomationExecution
func (c *SSM) GetAutomationExecution(input *GetAutomationExecutionInput) (*GetAutomationExecutionOutput, error) {
	req, out := c.GetAutomationExecutionRequest(input)
	return out, req.Send()
}

// GetAutomationExecutionWithContext is the same as GetAutomationExecution with the addition of
// the ability to pass a context and additional request options.
//
// See GetAutomationExecution for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) GetAutomationExecutionWithContext(ctx aws.Context, input *GetAutomationExecutionInput, opts ...request.Option) (*GetAutomationExecutionOutput, error) {
	req, out := c.GetAutomationExecutionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetCommandInvocation = "GetCommandInvocation"

// GetCommandInvocationRequest generates a "aws/request.Request" representing the
// client's request for the GetCommandInvocation operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See GetCommandInvocation for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the GetCommandInvocation method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the GetCommandInvocationRequest method.
//    req, resp := client.GetCommandInvocationRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetCommandInvocation
func (c *SSM) GetCommandInvocationRequest(input *GetCommandInvocationInput) (req *request.Request, output *GetCommandInvocationOutput) {
	op := &request.Operation{
		Name:       opGetCommandInvocation,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetCommandInvocationInput{}
	}

	output = &GetCommandInvocationOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetCommandInvocation API operation for Amazon Simple Systems Manager (SSM).
//
// Returns detailed information about command execution for an invocation or
// plugin.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation GetCommandInvocation for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidCommandId "InvalidCommandId"
//
//   * ErrCodeInvalidInstanceId "InvalidInstanceId"
//   The following problems can cause this exception:
//
//   You do not have permission to access the instance.
//
//   The SSM agent is not running. On managed instances and Linux instances, verify
//   that the SSM agent is running. On EC2 Windows instances, verify that the
//   EC2Config service is running.
//
//   The SSM agent or EC2Config service is not registered to the SSM endpoint.
//   Try reinstalling the SSM agent or EC2Config service.
//
//   The instance is not in valid state. Valid states are: Running, Pending, Stopped,
//   Stopping. Invalid states are: Shutting-down and Terminated.
//
//   * ErrCodeInvalidPluginName "InvalidPluginName"
//   The plugin name is not valid.
//
//   * ErrCodeInvocationDoesNotExist "InvocationDoesNotExist"
//   The command ID and instance ID you specified did not match any invocations.
//   Verify the command ID adn the instance ID and try again.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetCommandInvocation
func (c *SSM) GetCommandInvocation(input *GetCommandInvocationInput) (*GetCommandInvocationOutput, error) {
	req, out := c.GetCommandInvocationRequest(input)
	return out, req.Send()
}

// GetCommandInvocationWithContext is the same as GetCommandInvocation with the addition of
// the ability to pass a context and additional request options.
//
// See GetCommandInvocation for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) GetCommandInvocationWithContext(ctx aws.Context, input *GetCommandInvocationInput, opts ...request.Option) (*GetCommandInvocationOutput, error) {
	req, out := c.GetCommandInvocationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetDefaultPatchBaseline = "GetDefaultPatchBaseline"

// GetDefaultPatchBaselineRequest generates a "aws/request.Request" representing the
// client's request for the GetDefaultPatchBaseline operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See GetDefaultPatchBaseline for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the GetDefaultPatchBaseline method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the GetDefaultPatchBaselineRequest method.
//    req, resp := client.GetDefaultPatchBaselineRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetDefaultPatchBaseline
func (c *SSM) GetDefaultPatchBaselineRequest(input *GetDefaultPatchBaselineInput) (req *request.Request, output *GetDefaultPatchBaselineOutput) {
	op := &request.Operation{
		Name:       opGetDefaultPatchBaseline,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetDefaultPatchBaselineInput{}
	}

	output = &GetDefaultPatchBaselineOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetDefaultPatchBaseline API operation for Amazon Simple Systems Manager (SSM).
//
// Retrieves the default patch baseline.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation GetDefaultPatchBaseline for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetDefaultPatchBaseline
func (c *SSM) GetDefaultPatchBaseline(input *GetDefaultPatchBaselineInput) (*GetDefaultPatchBaselineOutput, error) {
	req, out := c.GetDefaultPatchBaselineRequest(input)
	return out, req.Send()
}

// GetDefaultPatchBaselineWithContext is the same as GetDefaultPatchBaseline with the addition of
// the ability to pass a context and additional request options.
//
// See GetDefaultPatchBaseline for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) GetDefaultPatchBaselineWithContext(ctx aws.Context, input *GetDefaultPatchBaselineInput, opts ...request.Option) (*GetDefaultPatchBaselineOutput, error) {
	req, out := c.GetDefaultPatchBaselineRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetDeployablePatchSnapshotForInstance = "GetDeployablePatchSnapshotForInstance"

// GetDeployablePatchSnapshotForInstanceRequest generates a "aws/request.Request" representing the
// client's request for the GetDeployablePatchSnapshotForInstance operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See GetDeployablePatchSnapshotForInstance for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the GetDeployablePatchSnapshotForInstance method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the GetDeployablePatchSnapshotForInstanceRequest method.
//    req, resp := client.GetDeployablePatchSnapshotForInstanceRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetDeployablePatchSnapshotForInstance
func (c *SSM) GetDeployablePatchSnapshotForInstanceRequest(input *GetDeployablePatchSnapshotForInstanceInput) (req *request.Request, output *GetDeployablePatchSnapshotForInstanceOutput) {
	op := &request.Operation{
		Name:       opGetDeployablePatchSnapshotForInstance,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetDeployablePatchSnapshotForInstanceInput{}
	}

	output = &GetDeployablePatchSnapshotForInstanceOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetDeployablePatchSnapshotForInstance API operation for Amazon Simple Systems Manager (SSM).
//
// Retrieves the current snapshot for the patch baseline the instance uses.
// This API is primarily used by the AWS-ApplyPatchBaseline Systems Manager
// document.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation GetDeployablePatchSnapshotForInstance for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetDeployablePatchSnapshotForInstance
func (c *SSM) GetDeployablePatchSnapshotForInstance(input *GetDeployablePatchSnapshotForInstanceInput) (*GetDeployablePatchSnapshotForInstanceOutput, error) {
	req, out := c.GetDeployablePatchSnapshotForInstanceRequest(input)
	return out, req.Send()
}

// GetDeployablePatchSnapshotForInstanceWithContext is the same as GetDeployablePatchSnapshotForInstance with the addition of
// the ability to pass a context and additional request options.
//
// See GetDeployablePatchSnapshotForInstance for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) GetDeployablePatchSnapshotForInstanceWithContext(ctx aws.Context, input *GetDeployablePatchSnapshotForInstanceInput, opts ...request.Option) (*GetDeployablePatchSnapshotForInstanceOutput, error) {
	req, out := c.GetDeployablePatchSnapshotForInstanceRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetDocument = "GetDocument"

// GetDocumentRequest generates a "aws/request.Request" representing the
// client's request for the GetDocument operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See GetDocument for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the GetDocument method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the GetDocumentRequest method.
//    req, resp := client.GetDocumentRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetDocument
func (c *SSM) GetDocumentRequest(input *GetDocumentInput) (req *request.Request, output *GetDocumentOutput) {
	op := &request.Operation{
		Name:       opGetDocument,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetDocumentInput{}
	}

	output = &GetDocumentOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetDocument API operation for Amazon Simple Systems Manager (SSM).
//
// Gets the contents of the specified SSM document.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation GetDocument for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidDocument "InvalidDocument"
//   The specified document does not exist.
//
//   * ErrCodeInvalidDocumentVersion "InvalidDocumentVersion"
//   The document version is not valid or does not exist.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetDocument
func (c *SSM) GetDocument(input *GetDocumentInput) (*GetDocumentOutput, error) {
	req, out := c.GetDocumentRequest(input)
	return out, req.Send()
}

// GetDocumentWithContext is the same as GetDocument with the addition of
// the ability to pass a context and additional request options.
//
// See GetDocument for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) GetDocumentWithContext(ctx aws.Context, input *GetDocumentInput, opts ...request.Option) (*GetDocumentOutput, error) {
	req, out := c.GetDocumentRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetInventory = "GetInventory"

// GetInventoryRequest generates a "aws/request.Request" representing the
// client's request for the GetInventory operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See GetInventory for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the GetInventory method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the GetInventoryRequest method.
//    req, resp := client.GetInventoryRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetInventory
func (c *SSM) GetInventoryRequest(input *GetInventoryInput) (req *request.Request, output *GetInventoryOutput) {
	op := &request.Operation{
		Name:       opGetInventory,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetInventoryInput{}
	}

	output = &GetInventoryOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetInventory API operation for Amazon Simple Systems Manager (SSM).
//
// Query inventory information.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation GetInventory for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidFilter "InvalidFilter"
//   The filter name is not valid. Verify the you entered the correct name and
//   try again.
//
//   * ErrCodeInvalidNextToken "InvalidNextToken"
//   The specified token is not valid.
//
//   * ErrCodeInvalidTypeNameException "InvalidTypeNameException"
//   The parameter type name is not valid.
//
//   * ErrCodeInvalidResultAttributeException "InvalidResultAttributeException"
//   The specified inventory item result attribute is not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetInventory
func (c *SSM) GetInventory(input *GetInventoryInput) (*GetInventoryOutput, error) {
	req, out := c.GetInventoryRequest(input)
	return out, req.Send()
}

// GetInventoryWithContext is the same as GetInventory with the addition of
// the ability to pass a context and additional request options.
//
// See GetInventory for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) GetInventoryWithContext(ctx aws.Context, input *GetInventoryInput, opts ...request.Option) (*GetInventoryOutput, error) {
	req, out := c.GetInventoryRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetInventorySchema = "GetInventorySchema"

// GetInventorySchemaRequest generates a "aws/request.Request" representing the
// client's request for the GetInventorySchema operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See GetInventorySchema for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the GetInventorySchema method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the GetInventorySchemaRequest method.
//    req, resp := client.GetInventorySchemaRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetInventorySchema
func (c *SSM) GetInventorySchemaRequest(input *GetInventorySchemaInput) (req *request.Request, output *GetInventorySchemaOutput) {
	op := &request.Operation{
		Name:       opGetInventorySchema,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetInventorySchemaInput{}
	}

	output = &GetInventorySchemaOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetInventorySchema API operation for Amazon Simple Systems Manager (SSM).
//
// Return a list of inventory type names for the account, or return a list of
// attribute names for a specific Inventory item type.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation GetInventorySchema for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidTypeNameException "InvalidTypeNameException"
//   The parameter type name is not valid.
//
//   * ErrCodeInvalidNextToken "InvalidNextToken"
//   The specified token is not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetInventorySchema
func (c *SSM) GetInventorySchema(input *GetInventorySchemaInput) (*GetInventorySchemaOutput, error) {
	req, out := c.GetInventorySchemaRequest(input)
	return out, req.Send()
}

// GetInventorySchemaWithContext is the same as GetInventorySchema with the addition of
// the ability to pass a context and additional request options.
//
// See GetInventorySchema for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) GetInventorySchemaWithContext(ctx aws.Context, input *GetInventorySchemaInput, opts ...request.Option) (*GetInventorySchemaOutput, error) {
	req, out := c.GetInventorySchemaRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetMaintenanceWindow = "GetMaintenanceWindow"

// GetMaintenanceWindowRequest generates a "aws/request.Request" representing the
// client's request for the GetMaintenanceWindow operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See GetMaintenanceWindow for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the GetMaintenanceWindow method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the GetMaintenanceWindowRequest method.
//    req, resp := client.GetMaintenanceWindowRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetMaintenanceWindow
func (c *SSM) GetMaintenanceWindowRequest(input *GetMaintenanceWindowInput) (req *request.Request, output *GetMaintenanceWindowOutput) {
	op := &request.Operation{
		Name:       opGetMaintenanceWindow,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetMaintenanceWindowInput{}
	}

	output = &GetMaintenanceWindowOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetMaintenanceWindow API operation for Amazon Simple Systems Manager (SSM).
//
// Retrieves a Maintenance Window.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation GetMaintenanceWindow for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeDoesNotExistException "DoesNotExistException"
//   Error returned when the ID specified for a resource (e.g. a Maintenance Window)
//   doesn’t exist.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetMaintenanceWindow
func (c *SSM) GetMaintenanceWindow(input *GetMaintenanceWindowInput) (*GetMaintenanceWindowOutput, error) {
	req, out := c.GetMaintenanceWindowRequest(input)
	return out, req.Send()
}

// GetMaintenanceWindowWithContext is the same as GetMaintenanceWindow with the addition of
// the ability to pass a context and additional request options.
//
// See GetMaintenanceWindow for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) GetMaintenanceWindowWithContext(ctx aws.Context, input *GetMaintenanceWindowInput, opts ...request.Option) (*GetMaintenanceWindowOutput, error) {
	req, out := c.GetMaintenanceWindowRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetMaintenanceWindowExecution = "GetMaintenanceWindowExecution"

// GetMaintenanceWindowExecutionRequest generates a "aws/request.Request" representing the
// client's request for the GetMaintenanceWindowExecution operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See GetMaintenanceWindowExecution for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the GetMaintenanceWindowExecution method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the GetMaintenanceWindowExecutionRequest method.
//    req, resp := client.GetMaintenanceWindowExecutionRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetMaintenanceWindowExecution
func (c *SSM) GetMaintenanceWindowExecutionRequest(input *GetMaintenanceWindowExecutionInput) (req *request.Request, output *GetMaintenanceWindowExecutionOutput) {
	op := &request.Operation{
		Name:       opGetMaintenanceWindowExecution,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetMaintenanceWindowExecutionInput{}
	}

	output = &GetMaintenanceWindowExecutionOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetMaintenanceWindowExecution API operation for Amazon Simple Systems Manager (SSM).
//
// Retrieves details about a specific task executed as part of a Maintenance
// Window execution.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation GetMaintenanceWindowExecution for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeDoesNotExistException "DoesNotExistException"
//   Error returned when the ID specified for a resource (e.g. a Maintenance Window)
//   doesn’t exist.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetMaintenanceWindowExecution
func (c *SSM) GetMaintenanceWindowExecution(input *GetMaintenanceWindowExecutionInput) (*GetMaintenanceWindowExecutionOutput, error) {
	req, out := c.GetMaintenanceWindowExecutionRequest(input)
	return out, req.Send()
}

// GetMaintenanceWindowExecutionWithContext is the same as GetMaintenanceWindowExecution with the addition of
// the ability to pass a context and additional request options.
//
// See GetMaintenanceWindowExecution for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) GetMaintenanceWindowExecutionWithContext(ctx aws.Context, input *GetMaintenanceWindowExecutionInput, opts ...request.Option) (*GetMaintenanceWindowExecutionOutput, error) {
	req, out := c.GetMaintenanceWindowExecutionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetMaintenanceWindowExecutionTask = "GetMaintenanceWindowExecutionTask"

// GetMaintenanceWindowExecutionTaskRequest generates a "aws/request.Request" representing the
// client's request for the GetMaintenanceWindowExecutionTask operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See GetMaintenanceWindowExecutionTask for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the GetMaintenanceWindowExecutionTask method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the GetMaintenanceWindowExecutionTaskRequest method.
//    req, resp := client.GetMaintenanceWindowExecutionTaskRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetMaintenanceWindowExecutionTask
func (c *SSM) GetMaintenanceWindowExecutionTaskRequest(input *GetMaintenanceWindowExecutionTaskInput) (req *request.Request, output *GetMaintenanceWindowExecutionTaskOutput) {
	op := &request.Operation{
		Name:       opGetMaintenanceWindowExecutionTask,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetMaintenanceWindowExecutionTaskInput{}
	}

	output = &GetMaintenanceWindowExecutionTaskOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetMaintenanceWindowExecutionTask API operation for Amazon Simple Systems Manager (SSM).
//
// Retrieves the details about a specific task executed as part of a Maintenance
// Window execution.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation GetMaintenanceWindowExecutionTask for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeDoesNotExistException "DoesNotExistException"
//   Error returned when the ID specified for a resource (e.g. a Maintenance Window)
//   doesn’t exist.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetMaintenanceWindowExecutionTask
func (c *SSM) GetMaintenanceWindowExecutionTask(input *GetMaintenanceWindowExecutionTaskInput) (*GetMaintenanceWindowExecutionTaskOutput, error) {
	req, out := c.GetMaintenanceWindowExecutionTaskRequest(input)
	return out, req.Send()
}

// GetMaintenanceWindowExecutionTaskWithContext is the same as GetMaintenanceWindowExecutionTask with the addition of
// the ability to pass a context and additional request options.
//
// See GetMaintenanceWindowExecutionTask for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) GetMaintenanceWindowExecutionTaskWithContext(ctx aws.Context, input *GetMaintenanceWindowExecutionTaskInput, opts ...request.Option) (*GetMaintenanceWindowExecutionTaskOutput, error) {
	req, out := c.GetMaintenanceWindowExecutionTaskRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetParameterHistory = "GetParameterHistory"

// GetParameterHistoryRequest generates a "aws/request.Request" representing the
// client's request for the GetParameterHistory operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See GetParameterHistory for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the GetParameterHistory method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the GetParameterHistoryRequest method.
//    req, resp := client.GetParameterHistoryRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetParameterHistory
func (c *SSM) GetParameterHistoryRequest(input *GetParameterHistoryInput) (req *request.Request, output *GetParameterHistoryOutput) {
	op := &request.Operation{
		Name:       opGetParameterHistory,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetParameterHistoryInput{}
	}

	output = &GetParameterHistoryOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetParameterHistory API operation for Amazon Simple Systems Manager (SSM).
//
// Query a list of all parameters used by the AWS account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation GetParameterHistory for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeParameterNotFound "ParameterNotFound"
//   The parameter could not be found. Verify the name and try again.
//
//   * ErrCodeInvalidNextToken "InvalidNextToken"
//   The specified token is not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetParameterHistory
func (c *SSM) GetParameterHistory(input *GetParameterHistoryInput) (*GetParameterHistoryOutput, error) {
	req, out := c.GetParameterHistoryRequest(input)
	return out, req.Send()
}

// GetParameterHistoryWithContext is the same as GetParameterHistory with the addition of
// the ability to pass a context and additional request options.
//
// See GetParameterHistory for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) GetParameterHistoryWithContext(ctx aws.Context, input *GetParameterHistoryInput, opts ...request.Option) (*GetParameterHistoryOutput, error) {
	req, out := c.GetParameterHistoryRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetParameters = "GetParameters"

// GetParametersRequest generates a "aws/request.Request" representing the
// client's request for the GetParameters operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See GetParameters for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the GetParameters method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the GetParametersRequest method.
//    req, resp := client.GetParametersRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetParameters
func (c *SSM) GetParametersRequest(input *GetParametersInput) (req *request.Request, output *GetParametersOutput) {
	op := &request.Operation{
		Name:       opGetParameters,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetParametersInput{}
	}

	output = &GetParametersOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetParameters API operation for Amazon Simple Systems Manager (SSM).
//
// Get a list of parameters used by the AWS account.>
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation GetParameters for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetParameters
func (c *SSM) GetParameters(input *GetParametersInput) (*GetParametersOutput, error) {
	req, out := c.GetParametersRequest(input)
	return out, req.Send()
}

// GetParametersWithContext is the same as GetParameters with the addition of
// the ability to pass a context and additional request options.
//
// See GetParameters for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) GetParametersWithContext(ctx aws.Context, input *GetParametersInput, opts ...request.Option) (*GetParametersOutput, error) {
	req, out := c.GetParametersRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetPatchBaseline = "GetPatchBaseline"

// GetPatchBaselineRequest generates a "aws/request.Request" representing the
// client's request for the GetPatchBaseline operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See GetPatchBaseline for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the GetPatchBaseline method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the GetPatchBaselineRequest method.
//    req, resp := client.GetPatchBaselineRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetPatchBaseline
func (c *SSM) GetPatchBaselineRequest(input *GetPatchBaselineInput) (req *request.Request, output *GetPatchBaselineOutput) {
	op := &request.Operation{
		Name:       opGetPatchBaseline,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetPatchBaselineInput{}
	}

	output = &GetPatchBaselineOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetPatchBaseline API operation for Amazon Simple Systems Manager (SSM).
//
// Retrieves information about a patch baseline.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation GetPatchBaseline for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeDoesNotExistException "DoesNotExistException"
//   Error returned when the ID specified for a resource (e.g. a Maintenance Window)
//   doesn’t exist.
//
//   * ErrCodeInvalidResourceId "InvalidResourceId"
//   The resource ID is not valid. Verify that you entered the correct ID and
//   try again.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetPatchBaseline
func (c *SSM) GetPatchBaseline(input *GetPatchBaselineInput) (*GetPatchBaselineOutput, error) {
	req, out := c.GetPatchBaselineRequest(input)
	return out, req.Send()
}

// GetPatchBaselineWithContext is the same as GetPatchBaseline with the addition of
// the ability to pass a context and additional request options.
//
// See GetPatchBaseline for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) GetPatchBaselineWithContext(ctx aws.Context, input *GetPatchBaselineInput, opts ...request.Option) (*GetPatchBaselineOutput, error) {
	req, out := c.GetPatchBaselineRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetPatchBaselineForPatchGroup = "GetPatchBaselineForPatchGroup"

// GetPatchBaselineForPatchGroupRequest generates a "aws/request.Request" representing the
// client's request for the GetPatchBaselineForPatchGroup operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See GetPatchBaselineForPatchGroup for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the GetPatchBaselineForPatchGroup method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the GetPatchBaselineForPatchGroupRequest method.
//    req, resp := client.GetPatchBaselineForPatchGroupRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetPatchBaselineForPatchGroup
func (c *SSM) GetPatchBaselineForPatchGroupRequest(input *GetPatchBaselineForPatchGroupInput) (req *request.Request, output *GetPatchBaselineForPatchGroupOutput) {
	op := &request.Operation{
		Name:       opGetPatchBaselineForPatchGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetPatchBaselineForPatchGroupInput{}
	}

	output = &GetPatchBaselineForPatchGroupOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetPatchBaselineForPatchGroup API operation for Amazon Simple Systems Manager (SSM).
//
// Retrieves the patch baseline that should be used for the specified patch
// group.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation GetPatchBaselineForPatchGroup for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetPatchBaselineForPatchGroup
func (c *SSM) GetPatchBaselineForPatchGroup(input *GetPatchBaselineForPatchGroupInput) (*GetPatchBaselineForPatchGroupOutput, error) {
	req, out := c.GetPatchBaselineForPatchGroupRequest(input)
	return out, req.Send()
}

// GetPatchBaselineForPatchGroupWithContext is the same as GetPatchBaselineForPatchGroup with the addition of
// the ability to pass a context and additional request options.
//
// See GetPatchBaselineForPatchGroup for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) GetPatchBaselineForPatchGroupWithContext(ctx aws.Context, input *GetPatchBaselineForPatchGroupInput, opts ...request.Option) (*GetPatchBaselineForPatchGroupOutput, error) {
	req, out := c.GetPatchBaselineForPatchGroupRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opListAssociations = "ListAssociations"

// ListAssociationsRequest generates a "aws/request.Request" representing the
// client's request for the ListAssociations operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See ListAssociations for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the ListAssociations method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the ListAssociationsRequest method.
//    req, resp := client.ListAssociationsRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListAssociations
func (c *SSM) ListAssociationsRequest(input *ListAssociationsInput) (req *request.Request, output *ListAssociationsOutput) {
	op := &request.Operation{
		Name:       opListAssociations,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListAssociationsInput{}
	}

	output = &ListAssociationsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// ListAssociations API operation for Amazon Simple Systems Manager (SSM).
//
// Lists the associations for the specified SSM document or instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation ListAssociations for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidNextToken "InvalidNextToken"
//   The specified token is not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListAssociations
func (c *SSM) ListAssociations(input *ListAssociationsInput) (*ListAssociationsOutput, error) {
	req, out := c.ListAssociationsRequest(input)
	return out, req.Send()
}

// ListAssociationsWithContext is the same as ListAssociations with the addition of
// the ability to pass a context and additional request options.
//
// See ListAssociations for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) ListAssociationsWithContext(ctx aws.Context, input *ListAssociationsInput, opts ...request.Option) (*ListAssociationsOutput, error) {
	req, out := c.ListAssociationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListAssociationsPages iterates over the pages of a ListAssociations operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListAssociations method for more information on how to use this operation.
//
// Note: This operation can generate multiple requests to a service.
//
//    // Example iterating over at most 3 pages of a ListAssociations operation.
//    pageNum := 0
//    err := client.ListAssociationsPages(params,
//        func(page *ListAssociationsOutput, lastPage bool) bool {
//            pageNum++
//            fmt.Println(page)
//            return pageNum <= 3
//        })
//
func (c *SSM) ListAssociationsPages(input *ListAssociationsInput, fn func(*ListAssociationsOutput, bool) bool) error {
	return c.ListAssociationsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListAssociationsPagesWithContext same as ListAssociationsPages except
// it takes a Context and allows setting request options on the pages.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) ListAssociationsPagesWithContext(ctx aws.Context, input *ListAssociationsInput, fn func(*ListAssociationsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			inCpy := *input
			req, _ := c.ListAssociationsRequest(&inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	cont := true
	for p.Next() && cont {
		cont = fn(p.Page().(*ListAssociationsOutput), !p.HasNextPage())
	}
	return p.Err()
}

const opListCommandInvocations = "ListCommandInvocations"

// ListCommandInvocationsRequest generates a "aws/request.Request" representing the
// client's request for the ListCommandInvocations operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See ListCommandInvocations for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the ListCommandInvocations method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the ListCommandInvocationsRequest method.
//    req, resp := client.ListCommandInvocationsRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListCommandInvocations
func (c *SSM) ListCommandInvocationsRequest(input *ListCommandInvocationsInput) (req *request.Request, output *ListCommandInvocationsOutput) {
	op := &request.Operation{
		Name:       opListCommandInvocations,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListCommandInvocationsInput{}
	}

	output = &ListCommandInvocationsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// ListCommandInvocations API operation for Amazon Simple Systems Manager (SSM).
//
// 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 executes SendCommand against three instances, then
// a command invocation is created for each requested instance ID. ListCommandInvocations
// provide status about command execution.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation ListCommandInvocations for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidCommandId "InvalidCommandId"
//
//   * ErrCodeInvalidInstanceId "InvalidInstanceId"
//   The following problems can cause this exception:
//
//   You do not have permission to access the instance.
//
//   The SSM agent is not running. On managed instances and Linux instances, verify
//   that the SSM agent is running. On EC2 Windows instances, verify that the
//   EC2Config service is running.
//
//   The SSM agent or EC2Config service is not registered to the SSM endpoint.
//   Try reinstalling the SSM agent or EC2Config service.
//
//   The instance is not in valid state. Valid states are: Running, Pending, Stopped,
//   Stopping. Invalid states are: Shutting-down and Terminated.
//
//   * ErrCodeInvalidFilterKey "InvalidFilterKey"
//   The specified key is not valid.
//
//   * ErrCodeInvalidNextToken "InvalidNextToken"
//   The specified token is not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListCommandInvocations
func (c *SSM) ListCommandInvocations(input *ListCommandInvocationsInput) (*ListCommandInvocationsOutput, error) {
	req, out := c.ListCommandInvocationsRequest(input)
	return out, req.Send()
}

// ListCommandInvocationsWithContext is the same as ListCommandInvocations with the addition of
// the ability to pass a context and additional request options.
//
// See ListCommandInvocations for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) ListCommandInvocationsWithContext(ctx aws.Context, input *ListCommandInvocationsInput, opts ...request.Option) (*ListCommandInvocationsOutput, error) {
	req, out := c.ListCommandInvocationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListCommandInvocationsPages iterates over the pages of a ListCommandInvocations operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListCommandInvocations method for more information on how to use this operation.
//
// Note: This operation can generate multiple requests to a service.
//
//    // Example iterating over at most 3 pages of a ListCommandInvocations operation.
//    pageNum := 0
//    err := client.ListCommandInvocationsPages(params,
//        func(page *ListCommandInvocationsOutput, lastPage bool) bool {
//            pageNum++
//            fmt.Println(page)
//            return pageNum <= 3
//        })
//
func (c *SSM) ListCommandInvocationsPages(input *ListCommandInvocationsInput, fn func(*ListCommandInvocationsOutput, bool) bool) error {
	return c.ListCommandInvocationsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListCommandInvocationsPagesWithContext same as ListCommandInvocationsPages except
// it takes a Context and allows setting request options on the pages.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) ListCommandInvocationsPagesWithContext(ctx aws.Context, input *ListCommandInvocationsInput, fn func(*ListCommandInvocationsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			inCpy := *input
			req, _ := c.ListCommandInvocationsRequest(&inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	cont := true
	for p.Next() && cont {
		cont = fn(p.Page().(*ListCommandInvocationsOutput), !p.HasNextPage())
	}
	return p.Err()
}

const opListCommands = "ListCommands"

// ListCommandsRequest generates a "aws/request.Request" representing the
// client's request for the ListCommands operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See ListCommands for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the ListCommands method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the ListCommandsRequest method.
//    req, resp := client.ListCommandsRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListCommands
func (c *SSM) ListCommandsRequest(input *ListCommandsInput) (req *request.Request, output *ListCommandsOutput) {
	op := &request.Operation{
		Name:       opListCommands,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListCommandsInput{}
	}

	output = &ListCommandsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// ListCommands API operation for Amazon Simple Systems Manager (SSM).
//
// Lists the commands requested by users of the AWS account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation ListCommands for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidCommandId "InvalidCommandId"
//
//   * ErrCodeInvalidInstanceId "InvalidInstanceId"
//   The following problems can cause this exception:
//
//   You do not have permission to access the instance.
//
//   The SSM agent is not running. On managed instances and Linux instances, verify
//   that the SSM agent is running. On EC2 Windows instances, verify that the
//   EC2Config service is running.
//
//   The SSM agent or EC2Config service is not registered to the SSM endpoint.
//   Try reinstalling the SSM agent or EC2Config service.
//
//   The instance is not in valid state. Valid states are: Running, Pending, Stopped,
//   Stopping. Invalid states are: Shutting-down and Terminated.
//
//   * ErrCodeInvalidFilterKey "InvalidFilterKey"
//   The specified key is not valid.
//
//   * ErrCodeInvalidNextToken "InvalidNextToken"
//   The specified token is not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListCommands
func (c *SSM) ListCommands(input *ListCommandsInput) (*ListCommandsOutput, error) {
	req, out := c.ListCommandsRequest(input)
	return out, req.Send()
}

// ListCommandsWithContext is the same as ListCommands with the addition of
// the ability to pass a context and additional request options.
//
// See ListCommands for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) ListCommandsWithContext(ctx aws.Context, input *ListCommandsInput, opts ...request.Option) (*ListCommandsOutput, error) {
	req, out := c.ListCommandsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListCommandsPages iterates over the pages of a ListCommands operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListCommands method for more information on how to use this operation.
//
// Note: This operation can generate multiple requests to a service.
//
//    // Example iterating over at most 3 pages of a ListCommands operation.
//    pageNum := 0
//    err := client.ListCommandsPages(params,
//        func(page *ListCommandsOutput, lastPage bool) bool {
//            pageNum++
//            fmt.Println(page)
//            return pageNum <= 3
//        })
//
func (c *SSM) ListCommandsPages(input *ListCommandsInput, fn func(*ListCommandsOutput, bool) bool) error {
	return c.ListCommandsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListCommandsPagesWithContext same as ListCommandsPages except
// it takes a Context and allows setting request options on the pages.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) ListCommandsPagesWithContext(ctx aws.Context, input *ListCommandsInput, fn func(*ListCommandsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			inCpy := *input
			req, _ := c.ListCommandsRequest(&inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	cont := true
	for p.Next() && cont {
		cont = fn(p.Page().(*ListCommandsOutput), !p.HasNextPage())
	}
	return p.Err()
}

const opListDocumentVersions = "ListDocumentVersions"

// ListDocumentVersionsRequest generates a "aws/request.Request" representing the
// client's request for the ListDocumentVersions operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See ListDocumentVersions for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the ListDocumentVersions method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the ListDocumentVersionsRequest method.
//    req, resp := client.ListDocumentVersionsRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListDocumentVersions
func (c *SSM) ListDocumentVersionsRequest(input *ListDocumentVersionsInput) (req *request.Request, output *ListDocumentVersionsOutput) {
	op := &request.Operation{
		Name:       opListDocumentVersions,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ListDocumentVersionsInput{}
	}

	output = &ListDocumentVersionsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// ListDocumentVersions API operation for Amazon Simple Systems Manager (SSM).
//
// List all versions for a document.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation ListDocumentVersions for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidNextToken "InvalidNextToken"
//   The specified token is not valid.
//
//   * ErrCodeInvalidDocument "InvalidDocument"
//   The specified document does not exist.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListDocumentVersions
func (c *SSM) ListDocumentVersions(input *ListDocumentVersionsInput) (*ListDocumentVersionsOutput, error) {
	req, out := c.ListDocumentVersionsRequest(input)
	return out, req.Send()
}

// ListDocumentVersionsWithContext is the same as ListDocumentVersions with the addition of
// the ability to pass a context and additional request options.
//
// See ListDocumentVersions for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) ListDocumentVersionsWithContext(ctx aws.Context, input *ListDocumentVersionsInput, opts ...request.Option) (*ListDocumentVersionsOutput, error) {
	req, out := c.ListDocumentVersionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opListDocuments = "ListDocuments"

// ListDocumentsRequest generates a "aws/request.Request" representing the
// client's request for the ListDocuments operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See ListDocuments for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the ListDocuments method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the ListDocumentsRequest method.
//    req, resp := client.ListDocumentsRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListDocuments
func (c *SSM) ListDocumentsRequest(input *ListDocumentsInput) (req *request.Request, output *ListDocumentsOutput) {
	op := &request.Operation{
		Name:       opListDocuments,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListDocumentsInput{}
	}

	output = &ListDocumentsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// ListDocuments API operation for Amazon Simple Systems Manager (SSM).
//
// Describes one or more of your SSM documents.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation ListDocuments for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidNextToken "InvalidNextToken"
//   The specified token is not valid.
//
//   * ErrCodeInvalidFilterKey "InvalidFilterKey"
//   The specified key is not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListDocuments
func (c *SSM) ListDocuments(input *ListDocumentsInput) (*ListDocumentsOutput, error) {
	req, out := c.ListDocumentsRequest(input)
	return out, req.Send()
}

// ListDocumentsWithContext is the same as ListDocuments with the addition of
// the ability to pass a context and additional request options.
//
// See ListDocuments for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) ListDocumentsWithContext(ctx aws.Context, input *ListDocumentsInput, opts ...request.Option) (*ListDocumentsOutput, error) {
	req, out := c.ListDocumentsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListDocumentsPages iterates over the pages of a ListDocuments operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListDocuments method for more information on how to use this operation.
//
// Note: This operation can generate multiple requests to a service.
//
//    // Example iterating over at most 3 pages of a ListDocuments operation.
//    pageNum := 0
//    err := client.ListDocumentsPages(params,
//        func(page *ListDocumentsOutput, lastPage bool) bool {
//            pageNum++
//            fmt.Println(page)
//            return pageNum <= 3
//        })
//
func (c *SSM) ListDocumentsPages(input *ListDocumentsInput, fn func(*ListDocumentsOutput, bool) bool) error {
	return c.ListDocumentsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListDocumentsPagesWithContext same as ListDocumentsPages except
// it takes a Context and allows setting request options on the pages.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) ListDocumentsPagesWithContext(ctx aws.Context, input *ListDocumentsInput, fn func(*ListDocumentsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			inCpy := *input
			req, _ := c.ListDocumentsRequest(&inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	cont := true
	for p.Next() && cont {
		cont = fn(p.Page().(*ListDocumentsOutput), !p.HasNextPage())
	}
	return p.Err()
}

const opListInventoryEntries = "ListInventoryEntries"

// ListInventoryEntriesRequest generates a "aws/request.Request" representing the
// client's request for the ListInventoryEntries operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See ListInventoryEntries for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the ListInventoryEntries method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the ListInventoryEntriesRequest method.
//    req, resp := client.ListInventoryEntriesRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListInventoryEntries
func (c *SSM) ListInventoryEntriesRequest(input *ListInventoryEntriesInput) (req *request.Request, output *ListInventoryEntriesOutput) {
	op := &request.Operation{
		Name:       opListInventoryEntries,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ListInventoryEntriesInput{}
	}

	output = &ListInventoryEntriesOutput{}
	req = c.newRequest(op, input, output)
	return
}

// ListInventoryEntries API operation for Amazon Simple Systems Manager (SSM).
//
// A list of inventory items returned by the request.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation ListInventoryEntries for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidInstanceId "InvalidInstanceId"
//   The following problems can cause this exception:
//
//   You do not have permission to access the instance.
//
//   The SSM agent is not running. On managed instances and Linux instances, verify
//   that the SSM agent is running. On EC2 Windows instances, verify that the
//   EC2Config service is running.
//
//   The SSM agent or EC2Config service is not registered to the SSM endpoint.
//   Try reinstalling the SSM agent or EC2Config service.
//
//   The instance is not in valid state. Valid states are: Running, Pending, Stopped,
//   Stopping. Invalid states are: Shutting-down and Terminated.
//
//   * ErrCodeInvalidTypeNameException "InvalidTypeNameException"
//   The parameter type name is not valid.
//
//   * ErrCodeInvalidFilter "InvalidFilter"
//   The filter name is not valid. Verify the you entered the correct name and
//   try again.
//
//   * ErrCodeInvalidNextToken "InvalidNextToken"
//   The specified token is not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListInventoryEntries
func (c *SSM) ListInventoryEntries(input *ListInventoryEntriesInput) (*ListInventoryEntriesOutput, error) {
	req, out := c.ListInventoryEntriesRequest(input)
	return out, req.Send()
}

// ListInventoryEntriesWithContext is the same as ListInventoryEntries with the addition of
// the ability to pass a context and additional request options.
//
// See ListInventoryEntries for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) ListInventoryEntriesWithContext(ctx aws.Context, input *ListInventoryEntriesInput, opts ...request.Option) (*ListInventoryEntriesOutput, error) {
	req, out := c.ListInventoryEntriesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opListTagsForResource = "ListTagsForResource"

// ListTagsForResourceRequest generates a "aws/request.Request" representing the
// client's request for the ListTagsForResource operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See ListTagsForResource for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the ListTagsForResource method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the ListTagsForResourceRequest method.
//    req, resp := client.ListTagsForResourceRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListTagsForResource
func (c *SSM) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *ListTagsForResourceOutput) {
	op := &request.Operation{
		Name:       opListTagsForResource,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ListTagsForResourceInput{}
	}

	output = &ListTagsForResourceOutput{}
	req = c.newRequest(op, input, output)
	return
}

// ListTagsForResource API operation for Amazon Simple Systems Manager (SSM).
//
// Returns a list of the tags assigned to the specified resource.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation ListTagsForResource for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInvalidResourceType "InvalidResourceType"
//   The resource type is not valid. If you are attempting to tag an instance,
//   the instance must be a registered, managed instance.
//
//   * ErrCodeInvalidResourceId "InvalidResourceId"
//   The resource ID is not valid. Verify that you entered the correct ID and
//   try again.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListTagsForResource
func (c *SSM) ListTagsForResource(input *ListTagsForResourceInput) (*ListTagsForResourceOutput, error) {
	req, out := c.ListTagsForResourceRequest(input)
	return out, req.Send()
}

// ListTagsForResourceWithContext is the same as ListTagsForResource with the addition of
// the ability to pass a context and additional request options.
//
// See ListTagsForResource for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) ListTagsForResourceWithContext(ctx aws.Context, input *ListTagsForResourceInput, opts ...request.Option) (*ListTagsForResourceOutput, error) {
	req, out := c.ListTagsForResourceRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opModifyDocumentPermission = "ModifyDocumentPermission"

// ModifyDocumentPermissionRequest generates a "aws/request.Request" representing the
// client's request for the ModifyDocumentPermission operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See ModifyDocumentPermission for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the ModifyDocumentPermission method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the ModifyDocumentPermissionRequest method.
//    req, resp := client.ModifyDocumentPermissionRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ModifyDocumentPermission
func (c *SSM) ModifyDocumentPermissionRequest(input *ModifyDocumentPermissionInput) (req *request.Request, output *ModifyDocumentPermissionOutput) {
	op := &request.Operation{
		Name:       opModifyDocumentPermission,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ModifyDocumentPermissionInput{}
	}

	output = &ModifyDocumentPermissionOutput{}
	req = c.newRequest(op, input, output)
	return
}

// ModifyDocumentPermission API operation for Amazon Simple Systems Manager (SSM).
//
// Share a 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 All as the account
// ID.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation ModifyDocumentPermission for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidDocument "InvalidDocument"
//   The specified document does not exist.
//
//   * ErrCodeInvalidPermissionType "InvalidPermissionType"
//   The permission type is not supported. Share is the only supported permission
//   type.
//
//   * ErrCodeDocumentPermissionLimit "DocumentPermissionLimit"
//   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.
//
//   * ErrCodeDocumentLimitExceeded "DocumentLimitExceeded"
//   You can have at most 200 active SSM documents.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ModifyDocumentPermission
func (c *SSM) ModifyDocumentPermission(input *ModifyDocumentPermissionInput) (*ModifyDocumentPermissionOutput, error) {
	req, out := c.ModifyDocumentPermissionRequest(input)
	return out, req.Send()
}

// ModifyDocumentPermissionWithContext is the same as ModifyDocumentPermission with the addition of
// the ability to pass a context and additional request options.
//
// See ModifyDocumentPermission for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) ModifyDocumentPermissionWithContext(ctx aws.Context, input *ModifyDocumentPermissionInput, opts ...request.Option) (*ModifyDocumentPermissionOutput, error) {
	req, out := c.ModifyDocumentPermissionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opPutInventory = "PutInventory"

// PutInventoryRequest generates a "aws/request.Request" representing the
// client's request for the PutInventory operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See PutInventory for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the PutInventory method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the PutInventoryRequest method.
//    req, resp := client.PutInventoryRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PutInventory
func (c *SSM) PutInventoryRequest(input *PutInventoryInput) (req *request.Request, output *PutInventoryOutput) {
	op := &request.Operation{
		Name:       opPutInventory,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &PutInventoryInput{}
	}

	output = &PutInventoryOutput{}
	req = c.newRequest(op, input, output)
	return
}

// PutInventory API operation for Amazon Simple Systems Manager (SSM).
//
// 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.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation PutInventory for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidInstanceId "InvalidInstanceId"
//   The following problems can cause this exception:
//
//   You do not have permission to access the instance.
//
//   The SSM agent is not running. On managed instances and Linux instances, verify
//   that the SSM agent is running. On EC2 Windows instances, verify that the
//   EC2Config service is running.
//
//   The SSM agent or EC2Config service is not registered to the SSM endpoint.
//   Try reinstalling the SSM agent or EC2Config service.
//
//   The instance is not in valid state. Valid states are: Running, Pending, Stopped,
//   Stopping. Invalid states are: Shutting-down and Terminated.
//
//   * ErrCodeInvalidTypeNameException "InvalidTypeNameException"
//   The parameter type name is not valid.
//
//   * ErrCodeInvalidItemContentException "InvalidItemContentException"
//   One or more content items is not valid.
//
//   * ErrCodeTotalSizeLimitExceededException "TotalSizeLimitExceededException"
//   The size of inventory data has exceeded the total size limit for the resource.
//
//   * ErrCodeItemSizeLimitExceededException "ItemSizeLimitExceededException"
//   The inventory item size has exceeded the size limit.
//
//   * ErrCodeItemContentMismatchException "ItemContentMismatchException"
//   The inventory item has invalid content.
//
//   * ErrCodeCustomSchemaCountLimitExceededException "CustomSchemaCountLimitExceededException"
//   You have exceeded the limit for custom schemas. Delete one or more custom
//   schemas and try again.
//
//   * ErrCodeUnsupportedInventorySchemaVersionException "UnsupportedInventorySchemaVersionException"
//   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.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PutInventory
func (c *SSM) PutInventory(input *PutInventoryInput) (*PutInventoryOutput, error) {
	req, out := c.PutInventoryRequest(input)
	return out, req.Send()
}

// PutInventoryWithContext is the same as PutInventory with the addition of
// the ability to pass a context and additional request options.
//
// See PutInventory for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) PutInventoryWithContext(ctx aws.Context, input *PutInventoryInput, opts ...request.Option) (*PutInventoryOutput, error) {
	req, out := c.PutInventoryRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opPutParameter = "PutParameter"

// PutParameterRequest generates a "aws/request.Request" representing the
// client's request for the PutParameter operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See PutParameter for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the PutParameter method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the PutParameterRequest method.
//    req, resp := client.PutParameterRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PutParameter
func (c *SSM) PutParameterRequest(input *PutParameterInput) (req *request.Request, output *PutParameterOutput) {
	op := &request.Operation{
		Name:       opPutParameter,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &PutParameterInput{}
	}

	output = &PutParameterOutput{}
	req = c.newRequest(op, input, output)
	return
}

// PutParameter API operation for Amazon Simple Systems Manager (SSM).
//
// Add one or more paramaters to the system.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation PutParameter for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidKeyId "InvalidKeyId"
//   The query key ID is not valid.
//
//   * ErrCodeParameterLimitExceeded "ParameterLimitExceeded"
//   You have exceeded the number of parameters for this AWS account. Delete one
//   or more parameters and try again.
//
//   * ErrCodeTooManyUpdates "TooManyUpdates"
//   There are concurrent updates for a resource that supports one update at a
//   time.
//
//   * ErrCodeParameterAlreadyExists "ParameterAlreadyExists"
//   The parameter already exists. You can't create duplicate parameters.
//
//   * ErrCodeUnsupportedParameterType "UnsupportedParameterType"
//   The parameter type is not supported.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PutParameter
func (c *SSM) PutParameter(input *PutParameterInput) (*PutParameterOutput, error) {
	req, out := c.PutParameterRequest(input)
	return out, req.Send()
}

// PutParameterWithContext is the same as PutParameter with the addition of
// the ability to pass a context and additional request options.
//
// See PutParameter for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) PutParameterWithContext(ctx aws.Context, input *PutParameterInput, opts ...request.Option) (*PutParameterOutput, error) {
	req, out := c.PutParameterRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opRegisterDefaultPatchBaseline = "RegisterDefaultPatchBaseline"

// RegisterDefaultPatchBaselineRequest generates a "aws/request.Request" representing the
// client's request for the RegisterDefaultPatchBaseline operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See RegisterDefaultPatchBaseline for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the RegisterDefaultPatchBaseline method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the RegisterDefaultPatchBaselineRequest method.
//    req, resp := client.RegisterDefaultPatchBaselineRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RegisterDefaultPatchBaseline
func (c *SSM) RegisterDefaultPatchBaselineRequest(input *RegisterDefaultPatchBaselineInput) (req *request.Request, output *RegisterDefaultPatchBaselineOutput) {
	op := &request.Operation{
		Name:       opRegisterDefaultPatchBaseline,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RegisterDefaultPatchBaselineInput{}
	}

	output = &RegisterDefaultPatchBaselineOutput{}
	req = c.newRequest(op, input, output)
	return
}

// RegisterDefaultPatchBaseline API operation for Amazon Simple Systems Manager (SSM).
//
// Defines the default patch baseline.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation RegisterDefaultPatchBaseline for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInvalidResourceId "InvalidResourceId"
//   The resource ID is not valid. Verify that you entered the correct ID and
//   try again.
//
//   * ErrCodeDoesNotExistException "DoesNotExistException"
//   Error returned when the ID specified for a resource (e.g. a Maintenance Window)
//   doesn’t exist.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RegisterDefaultPatchBaseline
func (c *SSM) RegisterDefaultPatchBaseline(input *RegisterDefaultPatchBaselineInput) (*RegisterDefaultPatchBaselineOutput, error) {
	req, out := c.RegisterDefaultPatchBaselineRequest(input)
	return out, req.Send()
}

// RegisterDefaultPatchBaselineWithContext is the same as RegisterDefaultPatchBaseline with the addition of
// the ability to pass a context and additional request options.
//
// See RegisterDefaultPatchBaseline for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) RegisterDefaultPatchBaselineWithContext(ctx aws.Context, input *RegisterDefaultPatchBaselineInput, opts ...request.Option) (*RegisterDefaultPatchBaselineOutput, error) {
	req, out := c.RegisterDefaultPatchBaselineRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opRegisterPatchBaselineForPatchGroup = "RegisterPatchBaselineForPatchGroup"

// RegisterPatchBaselineForPatchGroupRequest generates a "aws/request.Request" representing the
// client's request for the RegisterPatchBaselineForPatchGroup operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See RegisterPatchBaselineForPatchGroup for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the RegisterPatchBaselineForPatchGroup method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the RegisterPatchBaselineForPatchGroupRequest method.
//    req, resp := client.RegisterPatchBaselineForPatchGroupRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RegisterPatchBaselineForPatchGroup
func (c *SSM) RegisterPatchBaselineForPatchGroupRequest(input *RegisterPatchBaselineForPatchGroupInput) (req *request.Request, output *RegisterPatchBaselineForPatchGroupOutput) {
	op := &request.Operation{
		Name:       opRegisterPatchBaselineForPatchGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RegisterPatchBaselineForPatchGroupInput{}
	}

	output = &RegisterPatchBaselineForPatchGroupOutput{}
	req = c.newRequest(op, input, output)
	return
}

// RegisterPatchBaselineForPatchGroup API operation for Amazon Simple Systems Manager (SSM).
//
// Registers a patch baseline for a patch group.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation RegisterPatchBaselineForPatchGroup for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeAlreadyExistsException "AlreadyExistsException"
//   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.
//
//   * ErrCodeDoesNotExistException "DoesNotExistException"
//   Error returned when the ID specified for a resource (e.g. a Maintenance Window)
//   doesn’t exist.
//
//   * ErrCodeInvalidResourceId "InvalidResourceId"
//   The resource ID is not valid. Verify that you entered the correct ID and
//   try again.
//
//   * ErrCodeResourceLimitExceededException "ResourceLimitExceededException"
//   Error returned when the caller has exceeded the default resource limits (e.g.
//   too many Maintenance Windows have been created).
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RegisterPatchBaselineForPatchGroup
func (c *SSM) RegisterPatchBaselineForPatchGroup(input *RegisterPatchBaselineForPatchGroupInput) (*RegisterPatchBaselineForPatchGroupOutput, error) {
	req, out := c.RegisterPatchBaselineForPatchGroupRequest(input)
	return out, req.Send()
}

// RegisterPatchBaselineForPatchGroupWithContext is the same as RegisterPatchBaselineForPatchGroup with the addition of
// the ability to pass a context and additional request options.
//
// See RegisterPatchBaselineForPatchGroup for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) RegisterPatchBaselineForPatchGroupWithContext(ctx aws.Context, input *RegisterPatchBaselineForPatchGroupInput, opts ...request.Option) (*RegisterPatchBaselineForPatchGroupOutput, error) {
	req, out := c.RegisterPatchBaselineForPatchGroupRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opRegisterTargetWithMaintenanceWindow = "RegisterTargetWithMaintenanceWindow"

// RegisterTargetWithMaintenanceWindowRequest generates a "aws/request.Request" representing the
// client's request for the RegisterTargetWithMaintenanceWindow operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See RegisterTargetWithMaintenanceWindow for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the RegisterTargetWithMaintenanceWindow method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the RegisterTargetWithMaintenanceWindowRequest method.
//    req, resp := client.RegisterTargetWithMaintenanceWindowRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RegisterTargetWithMaintenanceWindow
func (c *SSM) RegisterTargetWithMaintenanceWindowRequest(input *RegisterTargetWithMaintenanceWindowInput) (req *request.Request, output *RegisterTargetWithMaintenanceWindowOutput) {
	op := &request.Operation{
		Name:       opRegisterTargetWithMaintenanceWindow,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RegisterTargetWithMaintenanceWindowInput{}
	}

	output = &RegisterTargetWithMaintenanceWindowOutput{}
	req = c.newRequest(op, input, output)
	return
}

// RegisterTargetWithMaintenanceWindow API operation for Amazon Simple Systems Manager (SSM).
//
// Registers a target with a Maintenance Window.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation RegisterTargetWithMaintenanceWindow for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeIdempotentParameterMismatch "IdempotentParameterMismatch"
//   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.
//
//   * ErrCodeDoesNotExistException "DoesNotExistException"
//   Error returned when the ID specified for a resource (e.g. a Maintenance Window)
//   doesn’t exist.
//
//   * ErrCodeResourceLimitExceededException "ResourceLimitExceededException"
//   Error returned when the caller has exceeded the default resource limits (e.g.
//   too many Maintenance Windows have been created).
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RegisterTargetWithMaintenanceWindow
func (c *SSM) RegisterTargetWithMaintenanceWindow(input *RegisterTargetWithMaintenanceWindowInput) (*RegisterTargetWithMaintenanceWindowOutput, error) {
	req, out := c.RegisterTargetWithMaintenanceWindowRequest(input)
	return out, req.Send()
}

// RegisterTargetWithMaintenanceWindowWithContext is the same as RegisterTargetWithMaintenanceWindow with the addition of
// the ability to pass a context and additional request options.
//
// See RegisterTargetWithMaintenanceWindow for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) RegisterTargetWithMaintenanceWindowWithContext(ctx aws.Context, input *RegisterTargetWithMaintenanceWindowInput, opts ...request.Option) (*RegisterTargetWithMaintenanceWindowOutput, error) {
	req, out := c.RegisterTargetWithMaintenanceWindowRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opRegisterTaskWithMaintenanceWindow = "RegisterTaskWithMaintenanceWindow"

// RegisterTaskWithMaintenanceWindowRequest generates a "aws/request.Request" representing the
// client's request for the RegisterTaskWithMaintenanceWindow operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See RegisterTaskWithMaintenanceWindow for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the RegisterTaskWithMaintenanceWindow method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the RegisterTaskWithMaintenanceWindowRequest method.
//    req, resp := client.RegisterTaskWithMaintenanceWindowRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RegisterTaskWithMaintenanceWindow
func (c *SSM) RegisterTaskWithMaintenanceWindowRequest(input *RegisterTaskWithMaintenanceWindowInput) (req *request.Request, output *RegisterTaskWithMaintenanceWindowOutput) {
	op := &request.Operation{
		Name:       opRegisterTaskWithMaintenanceWindow,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RegisterTaskWithMaintenanceWindowInput{}
	}

	output = &RegisterTaskWithMaintenanceWindowOutput{}
	req = c.newRequest(op, input, output)
	return
}

// RegisterTaskWithMaintenanceWindow API operation for Amazon Simple Systems Manager (SSM).
//
// Adds a new task to a Maintenance Window.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation RegisterTaskWithMaintenanceWindow for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeIdempotentParameterMismatch "IdempotentParameterMismatch"
//   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.
//
//   * ErrCodeDoesNotExistException "DoesNotExistException"
//   Error returned when the ID specified for a resource (e.g. a Maintenance Window)
//   doesn’t exist.
//
//   * ErrCodeResourceLimitExceededException "ResourceLimitExceededException"
//   Error returned when the caller has exceeded the default resource limits (e.g.
//   too many Maintenance Windows have been created).
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RegisterTaskWithMaintenanceWindow
func (c *SSM) RegisterTaskWithMaintenanceWindow(input *RegisterTaskWithMaintenanceWindowInput) (*RegisterTaskWithMaintenanceWindowOutput, error) {
	req, out := c.RegisterTaskWithMaintenanceWindowRequest(input)
	return out, req.Send()
}

// RegisterTaskWithMaintenanceWindowWithContext is the same as RegisterTaskWithMaintenanceWindow with the addition of
// the ability to pass a context and additional request options.
//
// See RegisterTaskWithMaintenanceWindow for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) RegisterTaskWithMaintenanceWindowWithContext(ctx aws.Context, input *RegisterTaskWithMaintenanceWindowInput, opts ...request.Option) (*RegisterTaskWithMaintenanceWindowOutput, error) {
	req, out := c.RegisterTaskWithMaintenanceWindowRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opRemoveTagsFromResource = "RemoveTagsFromResource"

// RemoveTagsFromResourceRequest generates a "aws/request.Request" representing the
// client's request for the RemoveTagsFromResource operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See RemoveTagsFromResource for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the RemoveTagsFromResource method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the RemoveTagsFromResourceRequest method.
//    req, resp := client.RemoveTagsFromResourceRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RemoveTagsFromResource
func (c *SSM) RemoveTagsFromResourceRequest(input *RemoveTagsFromResourceInput) (req *request.Request, output *RemoveTagsFromResourceOutput) {
	op := &request.Operation{
		Name:       opRemoveTagsFromResource,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RemoveTagsFromResourceInput{}
	}

	output = &RemoveTagsFromResourceOutput{}
	req = c.newRequest(op, input, output)
	return
}

// RemoveTagsFromResource API operation for Amazon Simple Systems Manager (SSM).
//
// Removes all tags from the specified resource.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation RemoveTagsFromResource for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInvalidResourceType "InvalidResourceType"
//   The resource type is not valid. If you are attempting to tag an instance,
//   the instance must be a registered, managed instance.
//
//   * ErrCodeInvalidResourceId "InvalidResourceId"
//   The resource ID is not valid. Verify that you entered the correct ID and
//   try again.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RemoveTagsFromResource
func (c *SSM) RemoveTagsFromResource(input *RemoveTagsFromResourceInput) (*RemoveTagsFromResourceOutput, error) {
	req, out := c.RemoveTagsFromResourceRequest(input)
	return out, req.Send()
}

// RemoveTagsFromResourceWithContext is the same as RemoveTagsFromResource with the addition of
// the ability to pass a context and additional request options.
//
// See RemoveTagsFromResource for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) RemoveTagsFromResourceWithContext(ctx aws.Context, input *RemoveTagsFromResourceInput, opts ...request.Option) (*RemoveTagsFromResourceOutput, error) {
	req, out := c.RemoveTagsFromResourceRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opSendCommand = "SendCommand"

// SendCommandRequest generates a "aws/request.Request" representing the
// client's request for the SendCommand operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See SendCommand for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the SendCommand method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the SendCommandRequest method.
//    req, resp := client.SendCommandRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/SendCommand
func (c *SSM) SendCommandRequest(input *SendCommandInput) (req *request.Request, output *SendCommandOutput) {
	op := &request.Operation{
		Name:       opSendCommand,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &SendCommandInput{}
	}

	output = &SendCommandOutput{}
	req = c.newRequest(op, input, output)
	return
}

// SendCommand API operation for Amazon Simple Systems Manager (SSM).
//
// Executes commands on one or more remote instances.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation SendCommand for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeDuplicateInstanceId "DuplicateInstanceId"
//   You cannot specify an instance ID in more than one association.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidInstanceId "InvalidInstanceId"
//   The following problems can cause this exception:
//
//   You do not have permission to access the instance.
//
//   The SSM agent is not running. On managed instances and Linux instances, verify
//   that the SSM agent is running. On EC2 Windows instances, verify that the
//   EC2Config service is running.
//
//   The SSM agent or EC2Config service is not registered to the SSM endpoint.
//   Try reinstalling the SSM agent or EC2Config service.
//
//   The instance is not in valid state. Valid states are: Running, Pending, Stopped,
//   Stopping. Invalid states are: Shutting-down and Terminated.
//
//   * ErrCodeInvalidDocument "InvalidDocument"
//   The specified document does not exist.
//
//   * ErrCodeInvalidOutputFolder "InvalidOutputFolder"
//   The S3 bucket does not exist.
//
//   * ErrCodeInvalidParameters "InvalidParameters"
//   You must specify values for all required parameters in the SSM document.
//   You can only supply values to parameters defined in the SSM document.
//
//   * ErrCodeUnsupportedPlatformType "UnsupportedPlatformType"
//   The document does not support the platform type of the given instance ID(s).
//   For example, you sent an SSM document for a Windows instance to a Linux instance.
//
//   * ErrCodeMaxDocumentSizeExceeded "MaxDocumentSizeExceeded"
//   The size limit of an SSM document is 64 KB.
//
//   * ErrCodeInvalidRole "InvalidRole"
//   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 Getting Amazon SNS Notifications When a Command Changes Status (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/rc-sns.html)
//   in the Amazon Elastic Compute Cloud User Guide .
//
//   * ErrCodeInvalidNotificationConfig "InvalidNotificationConfig"
//   One or more configuration items is not valid. Verify that a valid Amazon
//   Resource Name (ARN) was provided for an Amazon SNS topic.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/SendCommand
func (c *SSM) SendCommand(input *SendCommandInput) (*SendCommandOutput, error) {
	req, out := c.SendCommandRequest(input)
	return out, req.Send()
}

// SendCommandWithContext is the same as SendCommand with the addition of
// the ability to pass a context and additional request options.
//
// See SendCommand for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) SendCommandWithContext(ctx aws.Context, input *SendCommandInput, opts ...request.Option) (*SendCommandOutput, error) {
	req, out := c.SendCommandRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opStartAutomationExecution = "StartAutomationExecution"

// StartAutomationExecutionRequest generates a "aws/request.Request" representing the
// client's request for the StartAutomationExecution operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See StartAutomationExecution for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the StartAutomationExecution method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the StartAutomationExecutionRequest method.
//    req, resp := client.StartAutomationExecutionRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/StartAutomationExecution
func (c *SSM) StartAutomationExecutionRequest(input *StartAutomationExecutionInput) (req *request.Request, output *StartAutomationExecutionOutput) {
	op := &request.Operation{
		Name:       opStartAutomationExecution,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartAutomationExecutionInput{}
	}

	output = &StartAutomationExecutionOutput{}
	req = c.newRequest(op, input, output)
	return
}

// StartAutomationExecution API operation for Amazon Simple Systems Manager (SSM).
//
// Initiates execution of an Automation document.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation StartAutomationExecution for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeAutomationDefinitionNotFoundException "AutomationDefinitionNotFoundException"
//   An Automation document with the specified name could not be found.
//
//   * ErrCodeInvalidAutomationExecutionParametersException "InvalidAutomationExecutionParametersException"
//   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.
//
//   * ErrCodeAutomationExecutionLimitExceededException "AutomationExecutionLimitExceededException"
//   The number of simultaneously running Automation executions exceeded the allowable
//   limit.
//
//   * ErrCodeAutomationDefinitionVersionNotFoundException "AutomationDefinitionVersionNotFoundException"
//   An Automation document with the specified name and version could not be found.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/StartAutomationExecution
func (c *SSM) StartAutomationExecution(input *StartAutomationExecutionInput) (*StartAutomationExecutionOutput, error) {
	req, out := c.StartAutomationExecutionRequest(input)
	return out, req.Send()
}

// StartAutomationExecutionWithContext is the same as StartAutomationExecution with the addition of
// the ability to pass a context and additional request options.
//
// See StartAutomationExecution for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) StartAutomationExecutionWithContext(ctx aws.Context, input *StartAutomationExecutionInput, opts ...request.Option) (*StartAutomationExecutionOutput, error) {
	req, out := c.StartAutomationExecutionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opStopAutomationExecution = "StopAutomationExecution"

// StopAutomationExecutionRequest generates a "aws/request.Request" representing the
// client's request for the StopAutomationExecution operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See StopAutomationExecution for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the StopAutomationExecution method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the StopAutomationExecutionRequest method.
//    req, resp := client.StopAutomationExecutionRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/StopAutomationExecution
func (c *SSM) StopAutomationExecutionRequest(input *StopAutomationExecutionInput) (req *request.Request, output *StopAutomationExecutionOutput) {
	op := &request.Operation{
		Name:       opStopAutomationExecution,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StopAutomationExecutionInput{}
	}

	output = &StopAutomationExecutionOutput{}
	req = c.newRequest(op, input, output)
	return
}

// StopAutomationExecution API operation for Amazon Simple Systems Manager (SSM).
//
// Stop an Automation that is currently executing.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation StopAutomationExecution for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeAutomationExecutionNotFoundException "AutomationExecutionNotFoundException"
//   There is no automation execution information for the requested automation
//   execution ID.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/StopAutomationExecution
func (c *SSM) StopAutomationExecution(input *StopAutomationExecutionInput) (*StopAutomationExecutionOutput, error) {
	req, out := c.StopAutomationExecutionRequest(input)
	return out, req.Send()
}

// StopAutomationExecutionWithContext is the same as StopAutomationExecution with the addition of
// the ability to pass a context and additional request options.
//
// See StopAutomationExecution for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) StopAutomationExecutionWithContext(ctx aws.Context, input *StopAutomationExecutionInput, opts ...request.Option) (*StopAutomationExecutionOutput, error) {
	req, out := c.StopAutomationExecutionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateAssociation = "UpdateAssociation"

// UpdateAssociationRequest generates a "aws/request.Request" representing the
// client's request for the UpdateAssociation operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See UpdateAssociation for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the UpdateAssociation method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the UpdateAssociationRequest method.
//    req, resp := client.UpdateAssociationRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateAssociation
func (c *SSM) UpdateAssociationRequest(input *UpdateAssociationInput) (req *request.Request, output *UpdateAssociationOutput) {
	op := &request.Operation{
		Name:       opUpdateAssociation,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateAssociationInput{}
	}

	output = &UpdateAssociationOutput{}
	req = c.newRequest(op, input, output)
	return
}

// UpdateAssociation API operation for Amazon Simple Systems Manager (SSM).
//
// Updates an association. You can only update the document version, schedule,
// parameters, and Amazon S3 output of an association.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation UpdateAssociation for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidSchedule "InvalidSchedule"
//   The schedule is invalid. Verify your cron or rate expression and try again.
//
//   * ErrCodeInvalidParameters "InvalidParameters"
//   You must specify values for all required parameters in the SSM document.
//   You can only supply values to parameters defined in the SSM document.
//
//   * ErrCodeInvalidOutputLocation "InvalidOutputLocation"
//   The output location is not valid or does not exist.
//
//   * ErrCodeInvalidDocumentVersion "InvalidDocumentVersion"
//   The document version is not valid or does not exist.
//
//   * ErrCodeAssociationDoesNotExist "AssociationDoesNotExist"
//   The specified association does not exist.
//
//   * ErrCodeInvalidUpdate "InvalidUpdate"
//   The update is not valid.
//
//   * ErrCodeTooManyUpdates "TooManyUpdates"
//   There are concurrent updates for a resource that supports one update at a
//   time.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateAssociation
func (c *SSM) UpdateAssociation(input *UpdateAssociationInput) (*UpdateAssociationOutput, error) {
	req, out := c.UpdateAssociationRequest(input)
	return out, req.Send()
}

// UpdateAssociationWithContext is the same as UpdateAssociation with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateAssociation for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) UpdateAssociationWithContext(ctx aws.Context, input *UpdateAssociationInput, opts ...request.Option) (*UpdateAssociationOutput, error) {
	req, out := c.UpdateAssociationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateAssociationStatus = "UpdateAssociationStatus"

// UpdateAssociationStatusRequest generates a "aws/request.Request" representing the
// client's request for the UpdateAssociationStatus operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See UpdateAssociationStatus for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the UpdateAssociationStatus method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the UpdateAssociationStatusRequest method.
//    req, resp := client.UpdateAssociationStatusRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateAssociationStatus
func (c *SSM) UpdateAssociationStatusRequest(input *UpdateAssociationStatusInput) (req *request.Request, output *UpdateAssociationStatusOutput) {
	op := &request.Operation{
		Name:       opUpdateAssociationStatus,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateAssociationStatusInput{}
	}

	output = &UpdateAssociationStatusOutput{}
	req = c.newRequest(op, input, output)
	return
}

// UpdateAssociationStatus API operation for Amazon Simple Systems Manager (SSM).
//
// Updates the status of the SSM document associated with the specified instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation UpdateAssociationStatus for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidInstanceId "InvalidInstanceId"
//   The following problems can cause this exception:
//
//   You do not have permission to access the instance.
//
//   The SSM agent is not running. On managed instances and Linux instances, verify
//   that the SSM agent is running. On EC2 Windows instances, verify that the
//   EC2Config service is running.
//
//   The SSM agent or EC2Config service is not registered to the SSM endpoint.
//   Try reinstalling the SSM agent or EC2Config service.
//
//   The instance is not in valid state. Valid states are: Running, Pending, Stopped,
//   Stopping. Invalid states are: Shutting-down and Terminated.
//
//   * ErrCodeInvalidDocument "InvalidDocument"
//   The specified document does not exist.
//
//   * ErrCodeAssociationDoesNotExist "AssociationDoesNotExist"
//   The specified association does not exist.
//
//   * ErrCodeStatusUnchanged "StatusUnchanged"
//   The updated status is the same as the current status.
//
//   * ErrCodeTooManyUpdates "TooManyUpdates"
//   There are concurrent updates for a resource that supports one update at a
//   time.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateAssociationStatus
func (c *SSM) UpdateAssociationStatus(input *UpdateAssociationStatusInput) (*UpdateAssociationStatusOutput, error) {
	req, out := c.UpdateAssociationStatusRequest(input)
	return out, req.Send()
}

// UpdateAssociationStatusWithContext is the same as UpdateAssociationStatus with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateAssociationStatus for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) UpdateAssociationStatusWithContext(ctx aws.Context, input *UpdateAssociationStatusInput, opts ...request.Option) (*UpdateAssociationStatusOutput, error) {
	req, out := c.UpdateAssociationStatusRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateDocument = "UpdateDocument"

// UpdateDocumentRequest generates a "aws/request.Request" representing the
// client's request for the UpdateDocument operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See UpdateDocument for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the UpdateDocument method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the UpdateDocumentRequest method.
//    req, resp := client.UpdateDocumentRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateDocument
func (c *SSM) UpdateDocumentRequest(input *UpdateDocumentInput) (req *request.Request, output *UpdateDocumentOutput) {
	op := &request.Operation{
		Name:       opUpdateDocument,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateDocumentInput{}
	}

	output = &UpdateDocumentOutput{}
	req = c.newRequest(op, input, output)
	return
}

// UpdateDocument API operation for Amazon Simple Systems Manager (SSM).
//
// The document you want to update.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation UpdateDocument for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeMaxDocumentSizeExceeded "MaxDocumentSizeExceeded"
//   The size limit of an SSM document is 64 KB.
//
//   * ErrCodeDocumentVersionLimitExceeded "DocumentVersionLimitExceeded"
//   The document has too many versions. Delete one or more document versions
//   and try again.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeDuplicateDocumentContent "DuplicateDocumentContent"
//   The content of the association document matches another document. Change
//   the content of the document and try again.
//
//   * ErrCodeInvalidDocumentContent "InvalidDocumentContent"
//   The content for the SSM document is not valid.
//
//   * ErrCodeInvalidDocumentVersion "InvalidDocumentVersion"
//   The document version is not valid or does not exist.
//
//   * ErrCodeInvalidDocumentSchemaVersion "InvalidDocumentSchemaVersion"
//   The version of the document schema is not supported.
//
//   * ErrCodeInvalidDocument "InvalidDocument"
//   The specified document does not exist.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateDocument
func (c *SSM) UpdateDocument(input *UpdateDocumentInput) (*UpdateDocumentOutput, error) {
	req, out := c.UpdateDocumentRequest(input)
	return out, req.Send()
}

// UpdateDocumentWithContext is the same as UpdateDocument with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateDocument for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) UpdateDocumentWithContext(ctx aws.Context, input *UpdateDocumentInput, opts ...request.Option) (*UpdateDocumentOutput, error) {
	req, out := c.UpdateDocumentRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateDocumentDefaultVersion = "UpdateDocumentDefaultVersion"

// UpdateDocumentDefaultVersionRequest generates a "aws/request.Request" representing the
// client's request for the UpdateDocumentDefaultVersion operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See UpdateDocumentDefaultVersion for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the UpdateDocumentDefaultVersion method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the UpdateDocumentDefaultVersionRequest method.
//    req, resp := client.UpdateDocumentDefaultVersionRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateDocumentDefaultVersion
func (c *SSM) UpdateDocumentDefaultVersionRequest(input *UpdateDocumentDefaultVersionInput) (req *request.Request, output *UpdateDocumentDefaultVersionOutput) {
	op := &request.Operation{
		Name:       opUpdateDocumentDefaultVersion,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateDocumentDefaultVersionInput{}
	}

	output = &UpdateDocumentDefaultVersionOutput{}
	req = c.newRequest(op, input, output)
	return
}

// UpdateDocumentDefaultVersion API operation for Amazon Simple Systems Manager (SSM).
//
// Set the default version of a document.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation UpdateDocumentDefaultVersion for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
//   * ErrCodeInvalidDocument "InvalidDocument"
//   The specified document does not exist.
//
//   * ErrCodeInvalidDocumentVersion "InvalidDocumentVersion"
//   The document version is not valid or does not exist.
//
//   * ErrCodeInvalidDocumentSchemaVersion "InvalidDocumentSchemaVersion"
//   The version of the document schema is not supported.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateDocumentDefaultVersion
func (c *SSM) UpdateDocumentDefaultVersion(input *UpdateDocumentDefaultVersionInput) (*UpdateDocumentDefaultVersionOutput, error) {
	req, out := c.UpdateDocumentDefaultVersionRequest(input)
	return out, req.Send()
}

// UpdateDocumentDefaultVersionWithContext is the same as UpdateDocumentDefaultVersion with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateDocumentDefaultVersion for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) UpdateDocumentDefaultVersionWithContext(ctx aws.Context, input *UpdateDocumentDefaultVersionInput, opts ...request.Option) (*UpdateDocumentDefaultVersionOutput, error) {
	req, out := c.UpdateDocumentDefaultVersionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateMaintenanceWindow = "UpdateMaintenanceWindow"

// UpdateMaintenanceWindowRequest generates a "aws/request.Request" representing the
// client's request for the UpdateMaintenanceWindow operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See UpdateMaintenanceWindow for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the UpdateMaintenanceWindow method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the UpdateMaintenanceWindowRequest method.
//    req, resp := client.UpdateMaintenanceWindowRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateMaintenanceWindow
func (c *SSM) UpdateMaintenanceWindowRequest(input *UpdateMaintenanceWindowInput) (req *request.Request, output *UpdateMaintenanceWindowOutput) {
	op := &request.Operation{
		Name:       opUpdateMaintenanceWindow,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateMaintenanceWindowInput{}
	}

	output = &UpdateMaintenanceWindowOutput{}
	req = c.newRequest(op, input, output)
	return
}

// UpdateMaintenanceWindow API operation for Amazon Simple Systems Manager (SSM).
//
// Updates an existing Maintenance Window. Only specified parameters are modified.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation UpdateMaintenanceWindow for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeDoesNotExistException "DoesNotExistException"
//   Error returned when the ID specified for a resource (e.g. a Maintenance Window)
//   doesn’t exist.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateMaintenanceWindow
func (c *SSM) UpdateMaintenanceWindow(input *UpdateMaintenanceWindowInput) (*UpdateMaintenanceWindowOutput, error) {
	req, out := c.UpdateMaintenanceWindowRequest(input)
	return out, req.Send()
}

// UpdateMaintenanceWindowWithContext is the same as UpdateMaintenanceWindow with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateMaintenanceWindow for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) UpdateMaintenanceWindowWithContext(ctx aws.Context, input *UpdateMaintenanceWindowInput, opts ...request.Option) (*UpdateMaintenanceWindowOutput, error) {
	req, out := c.UpdateMaintenanceWindowRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateManagedInstanceRole = "UpdateManagedInstanceRole"

// UpdateManagedInstanceRoleRequest generates a "aws/request.Request" representing the
// client's request for the UpdateManagedInstanceRole operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See UpdateManagedInstanceRole for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the UpdateManagedInstanceRole method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the UpdateManagedInstanceRoleRequest method.
//    req, resp := client.UpdateManagedInstanceRoleRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateManagedInstanceRole
func (c *SSM) UpdateManagedInstanceRoleRequest(input *UpdateManagedInstanceRoleInput) (req *request.Request, output *UpdateManagedInstanceRoleOutput) {
	op := &request.Operation{
		Name:       opUpdateManagedInstanceRole,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateManagedInstanceRoleInput{}
	}

	output = &UpdateManagedInstanceRoleOutput{}
	req = c.newRequest(op, input, output)
	return
}

// UpdateManagedInstanceRole API operation for Amazon Simple Systems Manager (SSM).
//
// Assigns or changes an Amazon Identity and Access Management (IAM) role to
// the managed instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation UpdateManagedInstanceRole for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInvalidInstanceId "InvalidInstanceId"
//   The following problems can cause this exception:
//
//   You do not have permission to access the instance.
//
//   The SSM agent is not running. On managed instances and Linux instances, verify
//   that the SSM agent is running. On EC2 Windows instances, verify that the
//   EC2Config service is running.
//
//   The SSM agent or EC2Config service is not registered to the SSM endpoint.
//   Try reinstalling the SSM agent or EC2Config service.
//
//   The instance is not in valid state. Valid states are: Running, Pending, Stopped,
//   Stopping. Invalid states are: Shutting-down and Terminated.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateManagedInstanceRole
func (c *SSM) UpdateManagedInstanceRole(input *UpdateManagedInstanceRoleInput) (*UpdateManagedInstanceRoleOutput, error) {
	req, out := c.UpdateManagedInstanceRoleRequest(input)
	return out, req.Send()
}

// UpdateManagedInstanceRoleWithContext is the same as UpdateManagedInstanceRole with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateManagedInstanceRole for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) UpdateManagedInstanceRoleWithContext(ctx aws.Context, input *UpdateManagedInstanceRoleInput, opts ...request.Option) (*UpdateManagedInstanceRoleOutput, error) {
	req, out := c.UpdateManagedInstanceRoleRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdatePatchBaseline = "UpdatePatchBaseline"

// UpdatePatchBaselineRequest generates a "aws/request.Request" representing the
// client's request for the UpdatePatchBaseline operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See UpdatePatchBaseline for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the UpdatePatchBaseline method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the UpdatePatchBaselineRequest method.
//    req, resp := client.UpdatePatchBaselineRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdatePatchBaseline
func (c *SSM) UpdatePatchBaselineRequest(input *UpdatePatchBaselineInput) (req *request.Request, output *UpdatePatchBaselineOutput) {
	op := &request.Operation{
		Name:       opUpdatePatchBaseline,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdatePatchBaselineInput{}
	}

	output = &UpdatePatchBaselineOutput{}
	req = c.newRequest(op, input, output)
	return
}

// UpdatePatchBaseline API operation for Amazon Simple Systems Manager (SSM).
//
// Modifies an existing patch baseline. Fields not specified in the request
// are left unchanged.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
// API operation UpdatePatchBaseline for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeDoesNotExistException "DoesNotExistException"
//   Error returned when the ID specified for a resource (e.g. a Maintenance Window)
//   doesn’t exist.
//
//   * ErrCodeInternalServerError "InternalServerError"
//   An error occurred on the server side.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdatePatchBaseline
func (c *SSM) UpdatePatchBaseline(input *UpdatePatchBaselineInput) (*UpdatePatchBaselineOutput, error) {
	req, out := c.UpdatePatchBaselineRequest(input)
	return out, req.Send()
}

// UpdatePatchBaselineWithContext is the same as UpdatePatchBaseline with the addition of
// the ability to pass a context and additional request options.
//
// See UpdatePatchBaseline for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SSM) UpdatePatchBaselineWithContext(ctx aws.Context, input *UpdatePatchBaselineInput, opts ...request.Option) (*UpdatePatchBaselineOutput, error) {
	req, out := c.UpdatePatchBaselineRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// 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.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/Activation
type Activation struct {
	_ struct{} `type:"structure"`

	// The ID created by Systems Manager when you submitted the activation.
	ActivationId *string `type:"string"`

	// The date the activation was created.
	CreatedDate *time.Time `type:"timestamp" timestampFormat:"unix"`

	// A name for the managed instance when it is created.
	DefaultInstanceName *string `type:"string"`

	// A user defined description of the activation.
	Description *string `type:"string"`

	// The date when this activation can no longer be used to register managed instances.
	ExpirationDate *time.Time `type:"timestamp" timestampFormat:"unix"`

	// Whether or not the activation is expired.
	Expired *bool `type:"boolean"`

	// The Amazon Identity and Access Management (IAM) role to assign to the managed
	// instance.
	IamRole *string `type:"string"`

	// The maximum number of managed instances that can be registered using this
	// activation.
	RegistrationLimit *int64 `min:"1" type:"integer"`

	// The number of managed instances already registered with this activation.
	RegistrationsCount *int64 `min:"1" type:"integer"`
}

// String returns the string representation
func (s Activation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s Activation) GoString() string {
	return s.String()
}

// SetActivationId sets the ActivationId field's value.
func (s *Activation) SetActivationId(v string) *Activation {
	s.ActivationId = &v
	return s
}

// SetCreatedDate sets the CreatedDate field's value.
func (s *Activation) SetCreatedDate(v time.Time) *Activation {
	s.CreatedDate = &v
	return s
}

// SetDefaultInstanceName sets the DefaultInstanceName field's value.
func (s *Activation) SetDefaultInstanceName(v string) *Activation {
	s.DefaultInstanceName = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *Activation) SetDescription(v string) *Activation {
	s.Description = &v
	return s
}

// SetExpirationDate sets the ExpirationDate field's value.
func (s *Activation) SetExpirationDate(v time.Time) *Activation {
	s.ExpirationDate = &v
	return s
}

// SetExpired sets the Expired field's value.
func (s *Activation) SetExpired(v bool) *Activation {
	s.Expired = &v
	return s
}

// SetIamRole sets the IamRole field's value.
func (s *Activation) SetIamRole(v string) *Activation {
	s.IamRole = &v
	return s
}

// SetRegistrationLimit sets the RegistrationLimit field's value.
func (s *Activation) SetRegistrationLimit(v int64) *Activation {
	s.RegistrationLimit = &v
	return s
}

// SetRegistrationsCount sets the RegistrationsCount field's value.
func (s *Activation) SetRegistrationsCount(v int64) *Activation {
	s.RegistrationsCount = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/AddTagsToResourceRequest
type AddTagsToResourceInput struct {
	_ struct{} `type:"structure"`

	// The resource ID you want to tag.
	//
	// ResourceId is a required field
	ResourceId *string `type:"string" required:"true"`

	// Specifies the type of resource you are tagging.
	//
	// ResourceType is a required field
	ResourceType *string `type:"string" required:"true" enum:"ResourceTypeForTagging"`

	// One or more tags. The value parameter is required, but if you don't want
	// the tag to have a value, specify the parameter with no value, and we set
	// the value to an empty string.
	//
	// Tags is a required field
	Tags []*Tag `type:"list" required:"true"`
}

// String returns the string representation
func (s AddTagsToResourceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s AddTagsToResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AddTagsToResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AddTagsToResourceInput"}
	if s.ResourceId == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceId"))
	}
	if s.ResourceType == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceType"))
	}
	if s.Tags == nil {
		invalidParams.Add(request.NewErrParamRequired("Tags"))
	}
	if s.Tags != nil {
		for i, v := range s.Tags {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceId sets the ResourceId field's value.
func (s *AddTagsToResourceInput) SetResourceId(v string) *AddTagsToResourceInput {
	s.ResourceId = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *AddTagsToResourceInput) SetResourceType(v string) *AddTagsToResourceInput {
	s.ResourceType = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *AddTagsToResourceInput) SetTags(v []*Tag) *AddTagsToResourceInput {
	s.Tags = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/AddTagsToResourceResult
type AddTagsToResourceOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation
func (s AddTagsToResourceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s AddTagsToResourceOutput) GoString() string {
	return s.String()
}

// Describes an association of an SSM document and an instance.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/Association
type Association struct {
	_ struct{} `type:"structure"`

	// 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.
	AssociationId *string `type:"string"`

	// The version of the document used in the association.
	DocumentVersion *string `type:"string"`

	// The ID of the instance.
	InstanceId *string `type:"string"`

	// The date on which the association was last run.
	LastExecutionDate *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The name of the SSM document.
	Name *string `type:"string"`

	// Information about the association.
	Overview *AssociationOverview `type:"structure"`

	// A cron expression that specifies a schedule when the association runs.
	ScheduleExpression *string `min:"1" type:"string"`

	// The instances targeted by the request to create an association.
	Targets []*Target `type:"list"`
}

// String returns the string representation
func (s Association) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s Association) GoString() string {
	return s.String()
}

// SetAssociationId sets the AssociationId field's value.
func (s *Association) SetAssociationId(v string) *Association {
	s.AssociationId = &v
	return s
}

// SetDocumentVersion sets the DocumentVersion field's value.
func (s *Association) SetDocumentVersion(v string) *Association {
	s.DocumentVersion = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *Association) SetInstanceId(v string) *Association {
	s.InstanceId = &v
	return s
}

// SetLastExecutionDate sets the LastExecutionDate field's value.
func (s *Association) SetLastExecutionDate(v time.Time) *Association {
	s.LastExecutionDate = &v
	return s
}

// SetName sets the Name field's value.
func (s *Association) SetName(v string) *Association {
	s.Name = &v
	return s
}

// SetOverview sets the Overview field's value.
func (s *Association) SetOverview(v *AssociationOverview) *Association {
	s.Overview = v
	return s
}

// SetScheduleExpression sets the ScheduleExpression field's value.
func (s *Association) SetScheduleExpression(v string) *Association {
	s.ScheduleExpression = &v
	return s
}

// SetTargets sets the Targets field's value.
func (s *Association) SetTargets(v []*Target) *Association {
	s.Targets = v
	return s
}

// Describes the parameters for a document.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/AssociationDescription
type AssociationDescription struct {
	_ struct{} `type:"structure"`

	// The association ID.
	AssociationId *string `type:"string"`

	// The date when the association was made.
	Date *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The document version.
	DocumentVersion *string `type:"string"`

	// The ID of the instance.
	InstanceId *string `type:"string"`

	// The date on which the association was last run.
	LastExecutionDate *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The last date on which the association was successfully run.
	LastSuccessfulExecutionDate *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The date when the association was last updated.
	LastUpdateAssociationDate *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The name of the SSM document.
	Name *string `type:"string"`

	// An Amazon S3 bucket where you want to store the output details of the request.
	OutputLocation *InstanceAssociationOutputLocation `type:"structure"`

	// Information about the association.
	Overview *AssociationOverview `type:"structure"`

	// A description of the parameters for a document.
	Parameters map[string][]*string `type:"map"`

	// A cron expression that specifies a schedule when the association runs.
	ScheduleExpression *string `min:"1" type:"string"`

	// The association status.
	Status *AssociationStatus `type:"structure"`

	// The instances targeted by the request.
	Targets []*Target `type:"list"`
}

// String returns the string representation
func (s AssociationDescription) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s AssociationDescription) GoString() string {
	return s.String()
}

// SetAssociationId sets the AssociationId field's value.
func (s *AssociationDescription) SetAssociationId(v string) *AssociationDescription {
	s.AssociationId = &v
	return s
}

// SetDate sets the Date field's value.
func (s *AssociationDescription) SetDate(v time.Time) *AssociationDescription {
	s.Date = &v
	return s
}

// SetDocumentVersion sets the DocumentVersion field's value.
func (s *AssociationDescription) SetDocumentVersion(v string) *AssociationDescription {
	s.DocumentVersion = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *AssociationDescription) SetInstanceId(v string) *AssociationDescription {
	s.InstanceId = &v
	return s
}

// SetLastExecutionDate sets the LastExecutionDate field's value.
func (s *AssociationDescription) SetLastExecutionDate(v time.Time) *AssociationDescription {
	s.LastExecutionDate = &v
	return s
}

// SetLastSuccessfulExecutionDate sets the LastSuccessfulExecutionDate field's value.
func (s *AssociationDescription) SetLastSuccessfulExecutionDate(v time.Time) *AssociationDescription {
	s.LastSuccessfulExecutionDate = &v
	return s
}

// SetLastUpdateAssociationDate sets the LastUpdateAssociationDate field's value.
func (s *AssociationDescription) SetLastUpdateAssociationDate(v time.Time) *AssociationDescription {
	s.LastUpdateAssociationDate = &v
	return s
}

// SetName sets the Name field's value.
func (s *AssociationDescription) SetName(v string) *AssociationDescription {
	s.Name = &v
	return s
}

// SetOutputLocation sets the OutputLocation field's value.
func (s *AssociationDescription) SetOutputLocation(v *InstanceAssociationOutputLocation) *AssociationDescription {
	s.OutputLocation = v
	return s
}

// SetOverview sets the Overview field's value.
func (s *AssociationDescription) SetOverview(v *AssociationOverview) *AssociationDescription {
	s.Overview = v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *AssociationDescription) SetParameters(v map[string][]*string) *AssociationDescription {
	s.Parameters = v
	return s
}

// SetScheduleExpression sets the ScheduleExpression field's value.
func (s *AssociationDescription) SetScheduleExpression(v string) *AssociationDescription {
	s.ScheduleExpression = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AssociationDescription) SetStatus(v *AssociationStatus) *AssociationDescription {
	s.Status = v
	return s
}

// SetTargets sets the Targets field's value.
func (s *AssociationDescription) SetTargets(v []*Target) *AssociationDescription {
	s.Targets = v
	return s
}

// Describes a filter.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/AssociationFilter
type AssociationFilter struct {
	_ struct{} `type:"structure"`

	// The name of the filter.
	//
	// Key is a required field
	Key *string `locationName:"key" type:"string" required:"true" enum:"AssociationFilterKey"`

	// The filter value.
	//
	// Value is a required field
	Value *string `locationName:"value" min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s AssociationFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s AssociationFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AssociationFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AssociationFilter"}
	if s.Key == nil {
		invalidParams.Add(request.NewErrParamRequired("Key"))
	}
	if s.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}
	if s.Value != nil && len(*s.Value) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Value", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetKey sets the Key field's value.
func (s *AssociationFilter) SetKey(v string) *AssociationFilter {
	s.Key = &v
	return s
}

// SetValue sets the Value field's value.
func (s *AssociationFilter) SetValue(v string) *AssociationFilter {
	s.Value = &v
	return s
}

// Information about the association.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/AssociationOverview
type AssociationOverview struct {
	_ struct{} `type:"structure"`

	// 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.
	AssociationStatusAggregatedCount map[string]*int64 `type:"map"`

	// A detailed status of the association.
	DetailedStatus *string `type:"string"`

	// The status of the association. Status can be: Pending, Success, or Failed.
	Status *string `type:"string"`
}

// String returns the string representation
func (s AssociationOverview) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s AssociationOverview) GoString() string {
	return s.String()
}

// SetAssociationStatusAggregatedCount sets the AssociationStatusAggregatedCount field's value.
func (s *AssociationOverview) SetAssociationStatusAggregatedCount(v map[string]*int64) *AssociationOverview {
	s.AssociationStatusAggregatedCount = v
	return s
}

// SetDetailedStatus sets the DetailedStatus field's value.
func (s *AssociationOverview) SetDetailedStatus(v string) *AssociationOverview {
	s.DetailedStatus = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AssociationOverview) SetStatus(v string) *AssociationOverview {
	s.Status = &v
	return s
}

// Describes an association status.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/AssociationStatus
type AssociationStatus struct {
	_ struct{} `type:"structure"`

	// A user-defined string.
	AdditionalInfo *string `type:"string"`

	// The date when the status changed.
	//
	// Date is a required field
	Date *time.Time `type:"timestamp" timestampFormat:"unix" required:"true"`

	// The reason for the status.
	//
	// Message is a required field
	Message *string `min:"1" type:"string" required:"true"`

	// The status.
	//
	// Name is a required field
	Name *string `type:"string" required:"true" enum:"AssociationStatusName"`
}

// String returns the string representation
func (s AssociationStatus) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s AssociationStatus) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AssociationStatus) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AssociationStatus"}
	if s.Date == nil {
		invalidParams.Add(request.NewErrParamRequired("Date"))
	}
	if s.Message == nil {
		invalidParams.Add(request.NewErrParamRequired("Message"))
	}
	if s.Message != nil && len(*s.Message) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Message", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalInfo sets the AdditionalInfo field's value.
func (s *AssociationStatus) SetAdditionalInfo(v string) *AssociationStatus {
	s.AdditionalInfo = &v
	return s
}

// SetDate sets the Date field's value.
func (s *AssociationStatus) SetDate(v time.Time) *AssociationStatus {
	s.Date = &v
	return s
}

// SetMessage sets the Message field's value.
func (s *AssociationStatus) SetMessage(v string) *AssociationStatus {
	s.Message = &v
	return s
}

// SetName sets the Name field's value.
func (s *AssociationStatus) SetName(v string) *AssociationStatus {
	s.Name = &v
	return s
}

// Detailed information about the current state of an individual Automation
// execution.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/AutomationExecution
type AutomationExecution struct {
	_ struct{} `type:"structure"`

	// The execution ID.
	AutomationExecutionId *string `min:"36" type:"string"`

	// The execution status of the Automation.
	AutomationExecutionStatus *string `type:"string" enum:"AutomationExecutionStatus"`

	// The name of the Automation document used during the execution.
	DocumentName *string `type:"string"`

	// The version of the document to use during execution.
	DocumentVersion *string `type:"string"`

	// The time the execution finished.
	ExecutionEndTime *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The time the execution started.
	ExecutionStartTime *time.Time `type:"timestamp" timestampFormat:"unix"`

	// A message describing why an execution has failed, if the status is set to
	// Failed.
	FailureMessage *string `type:"string"`

	// The list of execution outputs as defined in the automation document.
	Outputs map[string][]*string `min:"1" type:"map"`

	// The key-value map of execution parameters, which were supplied when calling
	// StartAutomationExecution.
	Parameters map[string][]*string `min:"1" type:"map"`

	// 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 executed in order.
	StepExecutions []*StepExecution `type:"list"`
}

// String returns the string representation
func (s AutomationExecution) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s AutomationExecution) GoString() string {
	return s.String()
}

// SetAutomationExecutionId sets the AutomationExecutionId field's value.
func (s *AutomationExecution) SetAutomationExecutionId(v string) *AutomationExecution {
	s.AutomationExecutionId = &v
	return s
}

// SetAutomationExecutionStatus sets the AutomationExecutionStatus field's value.
func (s *AutomationExecution) SetAutomationExecutionStatus(v string) *AutomationExecution {
	s.AutomationExecutionStatus = &v
	return s
}

// SetDocumentName sets the DocumentName field's value.
func (s *AutomationExecution) SetDocumentName(v string) *AutomationExecution {
	s.DocumentName = &v
	return s
}

// SetDocumentVersion sets the DocumentVersion field's value.
func (s *AutomationExecution) SetDocumentVersion(v string) *AutomationExecution {
	s.DocumentVersion = &v
	return s
}

// SetExecutionEndTime sets the ExecutionEndTime field's value.
func (s *AutomationExecution) SetExecutionEndTime(v time.Time) *AutomationExecution {
	s.ExecutionEndTime = &v
	return s
}

// SetExecutionStartTime sets the ExecutionStartTime field's value.
func (s *AutomationExecution) SetExecutionStartTime(v time.Time) *AutomationExecution {
	s.ExecutionStartTime = &v
	return s
}

// SetFailureMessage sets the FailureMessage field's value.
func (s *AutomationExecution) SetFailureMessage(v string) *AutomationExecution {
	s.FailureMessage = &v
	return s
}

// SetOutputs sets the Outputs field's value.
func (s *AutomationExecution) SetOutputs(v map[string][]*string) *AutomationExecution {
	s.Outputs = v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *AutomationExecution) SetParameters(v map[string][]*string) *AutomationExecution {
	s.Parameters = v
	return s
}

// SetStepExecutions sets the StepExecutions field's value.
func (s *AutomationExecution) SetStepExecutions(v []*StepExecution) *AutomationExecution {
	s.StepExecutions = v
	return s
}

// A filter used to match specific automation executions. This is used to limit
// the scope of Automation execution information returned.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/AutomationExecutionFilter
type AutomationExecutionFilter struct {
	_ struct{} `type:"structure"`

	// The aspect of the Automation execution information that should be limited.
	//
	// Key is a required field
	Key *string `type:"string" required:"true" enum:"AutomationExecutionFilterKey"`

	// The values used to limit the execution information associated with the filter's
	// key.
	//
	// Values is a required field
	Values []*string `min:"1" type:"list" required:"true"`
}

// String returns the string representation
func (s AutomationExecutionFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s AutomationExecutionFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AutomationExecutionFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AutomationExecutionFilter"}
	if s.Key == nil {
		invalidParams.Add(request.NewErrParamRequired("Key"))
	}
	if s.Values == nil {
		invalidParams.Add(request.NewErrParamRequired("Values"))
	}
	if s.Values != nil && len(s.Values) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Values", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetKey sets the Key field's value.
func (s *AutomationExecutionFilter) SetKey(v string) *AutomationExecutionFilter {
	s.Key = &v
	return s
}

// SetValues sets the Values field's value.
func (s *AutomationExecutionFilter) SetValues(v []*string) *AutomationExecutionFilter {
	s.Values = v
	return s
}

// Details about a specific Automation execution.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/AutomationExecutionMetadata
type AutomationExecutionMetadata struct {
	_ struct{} `type:"structure"`

	// The execution ID.
	AutomationExecutionId *string `min:"36" type:"string"`

	// The status of the execution. Valid values include: Running, Succeeded, Failed,
	// Timed out, or Cancelled.
	AutomationExecutionStatus *string `type:"string" enum:"AutomationExecutionStatus"`

	// The name of the Automation document used during execution.
	DocumentName *string `type:"string"`

	// The document version used during the execution.
	DocumentVersion *string `type:"string"`

	// The IAM role ARN of the user who executed the Automation.
	ExecutedBy *string `type:"string"`

	// The time the execution finished. This is not populated if the execution is
	// still in progress.
	ExecutionEndTime *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The time the execution started.>
	ExecutionStartTime *time.Time `type:"timestamp" timestampFormat:"unix"`

	// An Amazon S3 bucket where execution information is stored.
	LogFile *string `type:"string"`

	// The list of execution outputs as defined in the Automation document.
	Outputs map[string][]*string `min:"1" type:"map"`
}

// String returns the string representation
func (s AutomationExecutionMetadata) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s AutomationExecutionMetadata) GoString() string {
	return s.String()
}

// SetAutomationExecutionId sets the AutomationExecutionId field's value.
func (s *AutomationExecutionMetadata) SetAutomationExecutionId(v string) *AutomationExecutionMetadata {
	s.AutomationExecutionId = &v
	return s
}

// SetAutomationExecutionStatus sets the AutomationExecutionStatus field's value.
func (s *AutomationExecutionMetadata) SetAutomationExecutionStatus(v string) *AutomationExecutionMetadata {
	s.AutomationExecutionStatus = &v
	return s
}

// SetDocumentName sets the DocumentName field's value.
func (s *AutomationExecutionMetadata) SetDocumentName(v string) *AutomationExecutionMetadata {
	s.DocumentName = &v
	return s
}

// SetDocumentVersion sets the DocumentVersion field's value.
func (s *AutomationExecutionMetadata) SetDocumentVersion(v string) *AutomationExecutionMetadata {
	s.DocumentVersion = &v
	return s
}

// SetExecutedBy sets the ExecutedBy field's value.
func (s *AutomationExecutionMetadata) SetExecutedBy(v string) *AutomationExecutionMetadata {
	s.ExecutedBy = &v
	return s
}

// SetExecutionEndTime sets the ExecutionEndTime field's value.
func (s *AutomationExecutionMetadata) SetExecutionEndTime(v time.Time) *AutomationExecutionMetadata {
	s.ExecutionEndTime = &v
	return s
}

// SetExecutionStartTime sets the ExecutionStartTime field's value.
func (s *AutomationExecutionMetadata) SetExecutionStartTime(v time.Time) *AutomationExecutionMetadata {
	s.ExecutionStartTime = &v
	return s
}

// SetLogFile sets the LogFile field's value.
func (s *AutomationExecutionMetadata) SetLogFile(v string) *AutomationExecutionMetadata {
	s.LogFile = &v
	return s
}

// SetOutputs sets the Outputs field's value.
func (s *AutomationExecutionMetadata) SetOutputs(v map[string][]*string) *AutomationExecutionMetadata {
	s.Outputs = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CancelCommandRequest
type CancelCommandInput struct {
	_ struct{} `type:"structure"`

	// The ID of the command you want to cancel.
	//
	// CommandId is a required field
	CommandId *string `min:"36" type:"string" required:"true"`

	// (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.
	InstanceIds []*string `type:"list"`
}

// String returns the string representation
func (s CancelCommandInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CancelCommandInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CancelCommandInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CancelCommandInput"}
	if s.CommandId == nil {
		invalidParams.Add(request.NewErrParamRequired("CommandId"))
	}
	if s.CommandId != nil && len(*s.CommandId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("CommandId", 36))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCommandId sets the CommandId field's value.
func (s *CancelCommandInput) SetCommandId(v string) *CancelCommandInput {
	s.CommandId = &v
	return s
}

// SetInstanceIds sets the InstanceIds field's value.
func (s *CancelCommandInput) SetInstanceIds(v []*string) *CancelCommandInput {
	s.InstanceIds = v
	return s
}

// Whether or not the command was successfully canceled. There is no guarantee
// that a request can be canceled.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CancelCommandResult
type CancelCommandOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation
func (s CancelCommandOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CancelCommandOutput) GoString() string {
	return s.String()
}

// Describes a command request.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/Command
type Command struct {
	_ struct{} `type:"structure"`

	// A unique identifier for this command.
	CommandId *string `min:"36" type:"string"`

	// User-specified information about the command, such as a brief description
	// of what the command should do.
	Comment *string `type:"string"`

	// 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.
	CompletedCount *int64 `type:"integer"`

	// The name of the SSM document requested for execution.
	DocumentName *string `type:"string"`

	// The number of targets for which the status is Failed or Execution Timed Out.
	ErrorCount *int64 `type:"integer"`

	// If this time is reached and the command has not already started executing,
	// it will not execute. Calculated based on the ExpiresAfter user input provided
	// as part of the SendCommand API.
	ExpiresAfter *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The instance IDs against which this command was requested.
	InstanceIds []*string `type:"list"`

	// The maximum number of instances that are allowed to execute 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 Executing a Command Using Amazon EC2
	// Run Command (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/run-command.html)
	// (Linux) or Executing a Command Using Amazon EC2 Run Command (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/run-command.html)
	// (Windows).
	MaxConcurrency *string `min:"1" type:"string"`

	// 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 50. For
	// more information about how to use MaxErrors, see Executing a Command Using
	// Amazon EC2 Run Command (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/run-command.html)
	// (Linux) or Executing a Command Using Amazon EC2 Run Command (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/run-command.html)
	// (Windows).
	MaxErrors *string `min:"1" type:"string"`

	// Configurations for sending notifications about command status changes.
	NotificationConfig *NotificationConfig `type:"structure"`

	// The S3 bucket where the responses to the command executions should be stored.
	// This was requested when issuing the command.
	OutputS3BucketName *string `min:"3" type:"string"`

	// The S3 directory path inside the bucket where the responses to the command
	// executions should be stored. This was requested when issuing the command.
	OutputS3KeyPrefix *string `type:"string"`

	// The region where the Amazon Simple Storage Service (Amazon S3) output bucket
	// is located. The default value is the region where Run Command is being called.
	OutputS3Region *string `min:"3" type:"string"`

	// The parameter values to be inserted in the SSM document when executing the
	// command.
	Parameters map[string][]*string `type:"map"`

	// The date and time the command was requested.
	RequestedDateTime *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The IAM service role that Run Command uses to act on your behalf when sending
	// notifications about command status changes.
	ServiceRole *string `type:"string"`

	// The status of the command.
	Status *string `type:"string" enum:"CommandStatus"`

	// 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 Monitor Commands (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitor-commands.html)
	// (Linux) or Monitor Commands (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/monitor-commands.html)
	// (Windows). StatusDetails can be one of the following values:
	//
	//    * Pending – The command has not been sent to any instances.
	//
	//    * In Progress – The command has been sent to at least one instance but
	//    has not reached a final state on all instances.
	//
	//    * Success – The command successfully executed on all invocations. This
	//    is a terminal state.
	//
	//    * Delivery Timed Out – The value of MaxErrors or more command invocations
	//    shows a status of Delivery Timed Out. This is a terminal state.
	//
	//    * Execution Timed Out – The value of MaxErrors or more command invocations
	//    shows a status of Execution Timed Out. This is a terminal state.
	//
	//    * Failed – The value of MaxErrors or more command invocations shows a
	//    status of Failed. This is a terminal state.
	//
	//    * 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.
	//
	//    * Canceled – The command was terminated before it was completed. This
	//    is a terminal state.
	//
	//    * Rate Exceeded – The number of instances targeted by the command exceeded
	//    the account limit for pending invocations. The system has canceled the
	//    command before executing it on any instance. This is a terminal state.
	StatusDetails *string `type:"string"`

	// The number of targets for the command.
	TargetCount *int64 `type:"integer"`

	// 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.
	Targets []*Target `type:"list"`
}

// String returns the string representation
func (s Command) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s Command) GoString() string {
	return s.String()
}

// SetCommandId sets the CommandId field's value.
func (s *Command) SetCommandId(v string) *Command {
	s.CommandId = &v
	return s
}

// SetComment sets the Comment field's value.
func (s *Command) SetComment(v string) *Command {
	s.Comment = &v
	return s
}

// SetCompletedCount sets the CompletedCount field's value.
func (s *Command) SetCompletedCount(v int64) *Command {
	s.CompletedCount = &v
	return s
}

// SetDocumentName sets the DocumentName field's value.
func (s *Command) SetDocumentName(v string) *Command {
	s.DocumentName = &v
	return s
}

// SetErrorCount sets the ErrorCount field's value.
func (s *Command) SetErrorCount(v int64) *Command {
	s.ErrorCount = &v
	return s
}

// SetExpiresAfter sets the ExpiresAfter field's value.
func (s *Command) SetExpiresAfter(v time.Time) *Command {
	s.ExpiresAfter = &v
	return s
}

// SetInstanceIds sets the InstanceIds field's value.
func (s *Command) SetInstanceIds(v []*string) *Command {
	s.InstanceIds = v
	return s
}

// SetMaxConcurrency sets the MaxConcurrency field's value.
func (s *Command) SetMaxConcurrency(v string) *Command {
	s.MaxConcurrency = &v
	return s
}

// SetMaxErrors sets the MaxErrors field's value.
func (s *Command) SetMaxErrors(v string) *Command {
	s.MaxErrors = &v
	return s
}

// SetNotificationConfig sets the NotificationConfig field's value.
func (s *Command) SetNotificationConfig(v *NotificationConfig) *Command {
	s.NotificationConfig = v
	return s
}

// SetOutputS3BucketName sets the OutputS3BucketName field's value.
func (s *Command) SetOutputS3BucketName(v string) *Command {
	s.OutputS3BucketName = &v
	return s
}

// SetOutputS3KeyPrefix sets the OutputS3KeyPrefix field's value.
func (s *Command) SetOutputS3KeyPrefix(v string) *Command {
	s.OutputS3KeyPrefix = &v
	return s
}

// SetOutputS3Region sets the OutputS3Region field's value.
func (s *Command) SetOutputS3Region(v string) *Command {
	s.OutputS3Region = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *Command) SetParameters(v map[string][]*string) *Command {
	s.Parameters = v
	return s
}

// SetRequestedDateTime sets the RequestedDateTime field's value.
func (s *Command) SetRequestedDateTime(v time.Time) *Command {
	s.RequestedDateTime = &v
	return s
}

// SetServiceRole sets the ServiceRole field's value.
func (s *Command) SetServiceRole(v string) *Command {
	s.ServiceRole = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *Command) SetStatus(v string) *Command {
	s.Status = &v
	return s
}

// SetStatusDetails sets the StatusDetails field's value.
func (s *Command) SetStatusDetails(v string) *Command {
	s.StatusDetails = &v
	return s
}

// SetTargetCount sets the TargetCount field's value.
func (s *Command) SetTargetCount(v int64) *Command {
	s.TargetCount = &v
	return s
}

// SetTargets sets the Targets field's value.
func (s *Command) SetTargets(v []*Target) *Command {
	s.Targets = v
	return s
}

// Describes a command filter.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CommandFilter
type CommandFilter struct {
	_ struct{} `type:"structure"`

	// The name of the filter. For example, requested date and time.
	//
	// Key is a required field
	Key *string `locationName:"key" type:"string" required:"true" enum:"CommandFilterKey"`

	// The filter value. For example: June 30, 2015.
	//
	// Value is a required field
	Value *string `locationName:"value" min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s CommandFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CommandFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CommandFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CommandFilter"}
	if s.Key == nil {
		invalidParams.Add(request.NewErrParamRequired("Key"))
	}
	if s.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}
	if s.Value != nil && len(*s.Value) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Value", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetKey sets the Key field's value.
func (s *CommandFilter) SetKey(v string) *CommandFilter {
	s.Key = &v
	return s
}

// SetValue sets the Value field's value.
func (s *CommandFilter) SetValue(v string) *CommandFilter {
	s.Value = &v
	return s
}

// 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 executes 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 executed.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CommandInvocation
type CommandInvocation struct {
	_ struct{} `type:"structure"`

	// The command against which this invocation was requested.
	CommandId *string `min:"36" type:"string"`

	CommandPlugins []*CommandPlugin `type:"list"`

	// User-specified information about the command, such as a brief description
	// of what the command should do.
	Comment *string `type:"string"`

	// The document name that was requested for execution.
	DocumentName *string `type:"string"`

	// The instance ID in which this invocation was requested.
	InstanceId *string `type:"string"`

	// The name of the invocation target. For Amazon EC2 instances this is the value
	// for the aws:Name tag. For on-premises instances, this is the name of the
	// instance.
	InstanceName *string `type:"string"`

	// Configurations for sending notifications about command status changes on
	// a per instance basis.
	NotificationConfig *NotificationConfig `type:"structure"`

	// The time and date the request was sent to this instance.
	RequestedDateTime *time.Time `type:"timestamp" timestampFormat:"unix"`

	// 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.
	ServiceRole *string `type:"string"`

	// The URL to the plugin’s StdErr file in Amazon S3, if the Amazon 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 Amazon
	// S3 bucket was defined for the command.
	StandardErrorUrl *string `type:"string"`

	// The URL to the plugin’s StdOut file in Amazon S3, if the Amazon 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
	// Amazon S3 bucket was defined for the command.
	StandardOutputUrl *string `type:"string"`

	// Whether or not the invocation succeeded, failed, or is pending.
	Status *string `type:"string" enum:"CommandInvocationStatus"`

	// 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 Monitor Commands (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitor-commands.html)
	// (Linux) or Monitor Commands (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/monitor-commands.html)
	// (Windows). StatusDetails can be one of the following values:
	//
	//    * Pending – The command has not been sent to the instance.
	//
	//    * In Progress – The command has been sent to the instance but has not
	//    reached a terminal state.
	//
	//    * Success – The execution of the command or plugin was successfully completed.
	//    This is a terminal state.
	//
	//    * 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’s MaxErrors limit, but they do contribute to whether the
	//    parent command status is Success or Incomplete. This is a terminal state.
	//
	//    * 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.
	//
	//    * 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.
	//
	//    * Canceled – The command was terminated before it was completed. This
	//    is a terminal state.
	//
	//    * Undeliverable – The command can't be delivered to the instance. The
	//    instance might not exist or might not be responding. Undeliverable invocations
	//    don't count against the parent command’s MaxErrors limit and don't contribute
	//    to whether the parent command status is Success or Incomplete. This is
	//    a terminal state.
	//
	//    * Terminated – The parent command exceeded its MaxErrors limit and subsequent
	//    command invocations were canceled by the system. This is a terminal state.
	StatusDetails *string `type:"string"`

	// Gets the trace output sent by the agent.
	TraceOutput *string `type:"string"`
}

// String returns the string representation
func (s CommandInvocation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CommandInvocation) GoString() string {
	return s.String()
}

// SetCommandId sets the CommandId field's value.
func (s *CommandInvocation) SetCommandId(v string) *CommandInvocation {
	s.CommandId = &v
	return s
}

// SetCommandPlugins sets the CommandPlugins field's value.
func (s *CommandInvocation) SetCommandPlugins(v []*CommandPlugin) *CommandInvocation {
	s.CommandPlugins = v
	return s
}

// SetComment sets the Comment field's value.
func (s *CommandInvocation) SetComment(v string) *CommandInvocation {
	s.Comment = &v
	return s
}

// SetDocumentName sets the DocumentName field's value.
func (s *CommandInvocation) SetDocumentName(v string) *CommandInvocation {
	s.DocumentName = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *CommandInvocation) SetInstanceId(v string) *CommandInvocation {
	s.InstanceId = &v
	return s
}

// SetInstanceName sets the InstanceName field's value.
func (s *CommandInvocation) SetInstanceName(v string) *CommandInvocation {
	s.InstanceName = &v
	return s
}

// SetNotificationConfig sets the NotificationConfig field's value.
func (s *CommandInvocation) SetNotificationConfig(v *NotificationConfig) *CommandInvocation {
	s.NotificationConfig = v
	return s
}

// SetRequestedDateTime sets the RequestedDateTime field's value.
func (s *CommandInvocation) SetRequestedDateTime(v time.Time) *CommandInvocation {
	s.RequestedDateTime = &v
	return s
}

// SetServiceRole sets the ServiceRole field's value.
func (s *CommandInvocation) SetServiceRole(v string) *CommandInvocation {
	s.ServiceRole = &v
	return s
}

// SetStandardErrorUrl sets the StandardErrorUrl field's value.
func (s *CommandInvocation) SetStandardErrorUrl(v string) *CommandInvocation {
	s.StandardErrorUrl = &v
	return s
}

// SetStandardOutputUrl sets the StandardOutputUrl field's value.
func (s *CommandInvocation) SetStandardOutputUrl(v string) *CommandInvocation {
	s.StandardOutputUrl = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *CommandInvocation) SetStatus(v string) *CommandInvocation {
	s.Status = &v
	return s
}

// SetStatusDetails sets the StatusDetails field's value.
func (s *CommandInvocation) SetStatusDetails(v string) *CommandInvocation {
	s.StatusDetails = &v
	return s
}

// SetTraceOutput sets the TraceOutput field's value.
func (s *CommandInvocation) SetTraceOutput(v string) *CommandInvocation {
	s.TraceOutput = &v
	return s
}

// Describes plugin details.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CommandPlugin
type CommandPlugin struct {
	_ struct{} `type:"structure"`

	// 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.
	Name *string `min:"4" type:"string"`

	// Output of the plugin execution.
	Output *string `type:"string"`

	// 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:
	//
	// test_folder/ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix/i-1234567876543/awsrunShellScript
	//
	// test_folder is the name of the Amazon S3 bucket;
	//
	// ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix is the name of the S3 prefix;
	//
	// i-1234567876543 is the instance ID;
	//
	// awsrunShellScript is the name of the plugin.
	OutputS3BucketName *string `min:"3" type:"string"`

	// 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:
	//
	// test_folder/ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix/i-1234567876543/awsrunShellScript
	//
	// test_folder is the name of the Amazon S3 bucket;
	//
	// ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix is the name of the S3 prefix;
	//
	// i-1234567876543 is the instance ID;
	//
	// awsrunShellScript is the name of the plugin.
	OutputS3KeyPrefix *string `type:"string"`

	// The name of the region where the output is stored in Amazon S3.
	OutputS3Region *string `min:"3" type:"string"`

	// A numeric response code generated after executing the plugin.
	ResponseCode *int64 `type:"integer"`

	// The time the plugin stopped executing. Could stop prematurely if, for example,
	// a cancel command was sent.
	ResponseFinishDateTime *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The time the plugin started executing.
	ResponseStartDateTime *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The URL for the complete text written by the plugin to stderr. If execution
	// is not yet complete, then this string is empty.
	StandardErrorUrl *string `type:"string"`

	// The URL for the complete text written by the plugin to stdout in Amazon S3.
	// If the Amazon S3 bucket for the command was not specified, then this string
	// is empty.
	StandardOutputUrl *string `type:"string"`

	// The status of this plugin. You can execute a document with multiple plugins.
	Status *string `type:"string" enum:"CommandPluginStatus"`

	// 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 Monitor Commands (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitor-commands.html)
	// (Linux) or Monitor Commands (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/monitor-commands.html)
	// (Windows). StatusDetails can be one of the following values:
	//
	//    * Pending – The command has not been sent to the instance.
	//
	//    * In Progress – The command has been sent to the instance but has not
	//    reached a terminal state.
	//
	//    * Success – The execution of the command or plugin was successfully completed.
	//    This is a terminal state.
	//
	//    * 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’s MaxErrors limit, but they do contribute to whether the
	//    parent command status is Success or Incomplete. This is a terminal state.
	//
	//    * 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.
	//
	//    * 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.
	//
	//    * Canceled – The command was terminated before it was completed. This
	//    is a terminal state.
	//
	//    * Undeliverable – The command can't be delivered to the instance. The
	//    instance might not exist, or it might not be responding. Undeliverable
	//    invocations don't count against the parent command’s MaxErrors limit,
	//    and they don't contribute to whether the parent command status is Success
	//    or Incomplete. This is a terminal state.
	//
	//    * Terminated – The parent command exceeded its MaxErrors limit and subsequent
	//    command invocations were canceled by the system. This is a terminal state.
	StatusDetails *string `type:"string"`
}

// String returns the string representation
func (s CommandPlugin) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CommandPlugin) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *CommandPlugin) SetName(v string) *CommandPlugin {
	s.Name = &v
	return s
}

// SetOutput sets the Output field's value.
func (s *CommandPlugin) SetOutput(v string) *CommandPlugin {
	s.Output = &v
	return s
}

// SetOutputS3BucketName sets the OutputS3BucketName field's value.
func (s *CommandPlugin) SetOutputS3BucketName(v string) *CommandPlugin {
	s.OutputS3BucketName = &v
	return s
}

// SetOutputS3KeyPrefix sets the OutputS3KeyPrefix field's value.
func (s *CommandPlugin) SetOutputS3KeyPrefix(v string) *CommandPlugin {
	s.OutputS3KeyPrefix = &v
	return s
}

// SetOutputS3Region sets the OutputS3Region field's value.
func (s *CommandPlugin) SetOutputS3Region(v string) *CommandPlugin {
	s.OutputS3Region = &v
	return s
}

// SetResponseCode sets the ResponseCode field's value.
func (s *CommandPlugin) SetResponseCode(v int64) *CommandPlugin {
	s.ResponseCode = &v
	return s
}

// SetResponseFinishDateTime sets the ResponseFinishDateTime field's value.
func (s *CommandPlugin) SetResponseFinishDateTime(v time.Time) *CommandPlugin {
	s.ResponseFinishDateTime = &v
	return s
}

// SetResponseStartDateTime sets the ResponseStartDateTime field's value.
func (s *CommandPlugin) SetResponseStartDateTime(v time.Time) *CommandPlugin {
	s.ResponseStartDateTime = &v
	return s
}

// SetStandardErrorUrl sets the StandardErrorUrl field's value.
func (s *CommandPlugin) SetStandardErrorUrl(v string) *CommandPlugin {
	s.StandardErrorUrl = &v
	return s
}

// SetStandardOutputUrl sets the StandardOutputUrl field's value.
func (s *CommandPlugin) SetStandardOutputUrl(v string) *CommandPlugin {
	s.StandardOutputUrl = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *CommandPlugin) SetStatus(v string) *CommandPlugin {
	s.Status = &v
	return s
}

// SetStatusDetails sets the StatusDetails field's value.
func (s *CommandPlugin) SetStatusDetails(v string) *CommandPlugin {
	s.StatusDetails = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateActivationRequest
type CreateActivationInput struct {
	_ struct{} `type:"structure"`

	// The name of the registered, managed instance as it will appear in the Amazon
	// EC2 console or when you use the AWS command line tools to list EC2 resources.
	DefaultInstanceName *string `type:"string"`

	// A user-defined description of the resource that you want to register with
	// Amazon EC2.
	Description *string `type:"string"`

	// The date by which this activation request should expire. The default value
	// is 24 hours.
	ExpirationDate *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The Amazon Identity and Access Management (IAM) role that you want to assign
	// to the managed instance.
	//
	// IamRole is a required field
	IamRole *string `type:"string" required:"true"`

	// Specify the maximum number of managed instances you want to register. The
	// default value is 1 instance.
	RegistrationLimit *int64 `min:"1" type:"integer"`
}

// String returns the string representation
func (s CreateActivationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CreateActivationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateActivationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateActivationInput"}
	if s.IamRole == nil {
		invalidParams.Add(request.NewErrParamRequired("IamRole"))
	}
	if s.RegistrationLimit != nil && *s.RegistrationLimit < 1 {
		invalidParams.Add(request.NewErrParamMinValue("RegistrationLimit", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDefaultInstanceName sets the DefaultInstanceName field's value.
func (s *CreateActivationInput) SetDefaultInstanceName(v string) *CreateActivationInput {
	s.DefaultInstanceName = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateActivationInput) SetDescription(v string) *CreateActivationInput {
	s.Description = &v
	return s
}

// SetExpirationDate sets the ExpirationDate field's value.
func (s *CreateActivationInput) SetExpirationDate(v time.Time) *CreateActivationInput {
	s.ExpirationDate = &v
	return s
}

// SetIamRole sets the IamRole field's value.
func (s *CreateActivationInput) SetIamRole(v string) *CreateActivationInput {
	s.IamRole = &v
	return s
}

// SetRegistrationLimit sets the RegistrationLimit field's value.
func (s *CreateActivationInput) SetRegistrationLimit(v int64) *CreateActivationInput {
	s.RegistrationLimit = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateActivationResult
type CreateActivationOutput struct {
	_ struct{} `type:"structure"`

	// The code the system generates when it processes the activation. The activation
	// code functions like a password to validate the activation ID.
	ActivationCode *string `min:"20" type:"string"`

	// The ID number generated by the system when it processed the activation. The
	// activation ID functions like a user name.
	ActivationId *string `type:"string"`
}

// String returns the string representation
func (s CreateActivationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CreateActivationOutput) GoString() string {
	return s.String()
}

// SetActivationCode sets the ActivationCode field's value.
func (s *CreateActivationOutput) SetActivationCode(v string) *CreateActivationOutput {
	s.ActivationCode = &v
	return s
}

// SetActivationId sets the ActivationId field's value.
func (s *CreateActivationOutput) SetActivationId(v string) *CreateActivationOutput {
	s.ActivationId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateAssociationBatchRequest
type CreateAssociationBatchInput struct {
	_ struct{} `type:"structure"`

	// One or more associations.
	//
	// Entries is a required field
	Entries []*CreateAssociationBatchRequestEntry `locationNameList:"entries" min:"1" type:"list" required:"true"`
}

// String returns the string representation
func (s CreateAssociationBatchInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CreateAssociationBatchInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateAssociationBatchInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateAssociationBatchInput"}
	if s.Entries == nil {
		invalidParams.Add(request.NewErrParamRequired("Entries"))
	}
	if s.Entries != nil && len(s.Entries) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Entries", 1))
	}
	if s.Entries != nil {
		for i, v := range s.Entries {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Entries", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEntries sets the Entries field's value.
func (s *CreateAssociationBatchInput) SetEntries(v []*CreateAssociationBatchRequestEntry) *CreateAssociationBatchInput {
	s.Entries = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateAssociationBatchResult
type CreateAssociationBatchOutput struct {
	_ struct{} `type:"structure"`

	// Information about the associations that failed.
	Failed []*FailedCreateAssociation `locationNameList:"FailedCreateAssociationEntry" type:"list"`

	// Information about the associations that succeeded.
	Successful []*AssociationDescription `locationNameList:"AssociationDescription" type:"list"`
}

// String returns the string representation
func (s CreateAssociationBatchOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CreateAssociationBatchOutput) GoString() string {
	return s.String()
}

// SetFailed sets the Failed field's value.
func (s *CreateAssociationBatchOutput) SetFailed(v []*FailedCreateAssociation) *CreateAssociationBatchOutput {
	s.Failed = v
	return s
}

// SetSuccessful sets the Successful field's value.
func (s *CreateAssociationBatchOutput) SetSuccessful(v []*AssociationDescription) *CreateAssociationBatchOutput {
	s.Successful = v
	return s
}

// Describes the association of an SSM document and an instance.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateAssociationBatchRequestEntry
type CreateAssociationBatchRequestEntry struct {
	_ struct{} `type:"structure"`

	// The document version.
	DocumentVersion *string `type:"string"`

	// The ID of the instance.
	InstanceId *string `type:"string"`

	// The name of the configuration document.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// An Amazon S3 bucket where you want to store the results of this request.
	OutputLocation *InstanceAssociationOutputLocation `type:"structure"`

	// A description of the parameters for a document.
	Parameters map[string][]*string `type:"map"`

	// A cron expression that specifies a schedule when the association runs.
	ScheduleExpression *string `min:"1" type:"string"`

	// The instances targeted by the request.
	Targets []*Target `type:"list"`
}

// String returns the string representation
func (s CreateAssociationBatchRequestEntry) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CreateAssociationBatchRequestEntry) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateAssociationBatchRequestEntry) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateAssociationBatchRequestEntry"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.ScheduleExpression != nil && len(*s.ScheduleExpression) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ScheduleExpression", 1))
	}
	if s.OutputLocation != nil {
		if err := s.OutputLocation.Validate(); err != nil {
			invalidParams.AddNested("OutputLocation", err.(request.ErrInvalidParams))
		}
	}
	if s.Targets != nil {
		for i, v := range s.Targets {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Targets", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDocumentVersion sets the DocumentVersion field's value.
func (s *CreateAssociationBatchRequestEntry) SetDocumentVersion(v string) *CreateAssociationBatchRequestEntry {
	s.DocumentVersion = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreateAssociationBatchRequestEntry) SetInstanceId(v string) *CreateAssociationBatchRequestEntry {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateAssociationBatchRequestEntry) SetName(v string) *CreateAssociationBatchRequestEntry {
	s.Name = &v
	return s
}

// SetOutputLocation sets the OutputLocation field's value.
func (s *CreateAssociationBatchRequestEntry) SetOutputLocation(v *InstanceAssociationOutputLocation) *CreateAssociationBatchRequestEntry {
	s.OutputLocation = v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *CreateAssociationBatchRequestEntry) SetParameters(v map[string][]*string) *CreateAssociationBatchRequestEntry {
	s.Parameters = v
	return s
}

// SetScheduleExpression sets the ScheduleExpression field's value.
func (s *CreateAssociationBatchRequestEntry) SetScheduleExpression(v string) *CreateAssociationBatchRequestEntry {
	s.ScheduleExpression = &v
	return s
}

// SetTargets sets the Targets field's value.
func (s *CreateAssociationBatchRequestEntry) SetTargets(v []*Target) *CreateAssociationBatchRequestEntry {
	s.Targets = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateAssociationRequest
type CreateAssociationInput struct {
	_ struct{} `type:"structure"`

	// The document version you want to associate with the target(s). Can be a specific
	// version or the default version.
	DocumentVersion *string `type:"string"`

	// The instance ID.
	InstanceId *string `type:"string"`

	// The name of the SSM document.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// An Amazon S3 bucket where you want to store the output details of the request.
	// For example:
	//
	// "{ \"S3Location\": { \"OutputS3Region\": \"<region>\", \"OutputS3BucketName\":
	// \"bucket name\", \"OutputS3KeyPrefix\": \"folder name\" } }"
	OutputLocation *InstanceAssociationOutputLocation `type:"structure"`

	// The parameters for the documents runtime configuration.
	Parameters map[string][]*string `type:"map"`

	// A cron expression when the association will be applied to the target(s).
	// Supported expressions are every half, 1, 2, 4, 8 or 12 hour(s); every specified
	// day and time of the week. For example: cron(0 0/30 * 1/1 * ? *) to run every
	// thirty minutes; cron(0 0 0/4 1/1 * ? *) to run every four hours; and cron(0
	// 0 10 ? * SUN *) to run every Sunday at 10 a.m.
	ScheduleExpression *string `min:"1" type:"string"`

	// The targets (either instances or tags) for the association. Instances are
	// specified using Key=instanceids,Values=<instanceid1>,<instanceid2>. Tags
	// are specified using Key=<tag name>,Values=<tag value>.
	Targets []*Target `type:"list"`
}

// String returns the string representation
func (s CreateAssociationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CreateAssociationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateAssociationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateAssociationInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.ScheduleExpression != nil && len(*s.ScheduleExpression) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ScheduleExpression", 1))
	}
	if s.OutputLocation != nil {
		if err := s.OutputLocation.Validate(); err != nil {
			invalidParams.AddNested("OutputLocation", err.(request.ErrInvalidParams))
		}
	}
	if s.Targets != nil {
		for i, v := range s.Targets {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Targets", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDocumentVersion sets the DocumentVersion field's value.
func (s *CreateAssociationInput) SetDocumentVersion(v string) *CreateAssociationInput {
	s.DocumentVersion = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreateAssociationInput) SetInstanceId(v string) *CreateAssociationInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateAssociationInput) SetName(v string) *CreateAssociationInput {
	s.Name = &v
	return s
}

// SetOutputLocation sets the OutputLocation field's value.
func (s *CreateAssociationInput) SetOutputLocation(v *InstanceAssociationOutputLocation) *CreateAssociationInput {
	s.OutputLocation = v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *CreateAssociationInput) SetParameters(v map[string][]*string) *CreateAssociationInput {
	s.Parameters = v
	return s
}

// SetScheduleExpression sets the ScheduleExpression field's value.
func (s *CreateAssociationInput) SetScheduleExpression(v string) *CreateAssociationInput {
	s.ScheduleExpression = &v
	return s
}

// SetTargets sets the Targets field's value.
func (s *CreateAssociationInput) SetTargets(v []*Target) *CreateAssociationInput {
	s.Targets = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateAssociationResult
type CreateAssociationOutput struct {
	_ struct{} `type:"structure"`

	// Information about the association.
	AssociationDescription *AssociationDescription `type:"structure"`
}

// String returns the string representation
func (s CreateAssociationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CreateAssociationOutput) GoString() string {
	return s.String()
}

// SetAssociationDescription sets the AssociationDescription field's value.
func (s *CreateAssociationOutput) SetAssociationDescription(v *AssociationDescription) *CreateAssociationOutput {
	s.AssociationDescription = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateDocumentRequest
type CreateDocumentInput struct {
	_ struct{} `type:"structure"`

	// A valid JSON string.
	//
	// Content is a required field
	Content *string `min:"1" type:"string" required:"true"`

	// The type of document to create. Valid document types include: Policy, Automation,
	// and Command.
	DocumentType *string `type:"string" enum:"DocumentType"`

	// A name for the SSM document.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`
}

// String returns the string representation
func (s CreateDocumentInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CreateDocumentInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateDocumentInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateDocumentInput"}
	if s.Content == nil {
		invalidParams.Add(request.NewErrParamRequired("Content"))
	}
	if s.Content != nil && len(*s.Content) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Content", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContent sets the Content field's value.
func (s *CreateDocumentInput) SetContent(v string) *CreateDocumentInput {
	s.Content = &v
	return s
}

// SetDocumentType sets the DocumentType field's value.
func (s *CreateDocumentInput) SetDocumentType(v string) *CreateDocumentInput {
	s.DocumentType = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateDocumentInput) SetName(v string) *CreateDocumentInput {
	s.Name = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateDocumentResult
type CreateDocumentOutput struct {
	_ struct{} `type:"structure"`

	// Information about the SSM document.
	DocumentDescription *DocumentDescription `type:"structure"`
}

// String returns the string representation
func (s CreateDocumentOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CreateDocumentOutput) GoString() string {
	return s.String()
}

// SetDocumentDescription sets the DocumentDescription field's value.
func (s *CreateDocumentOutput) SetDocumentDescription(v *DocumentDescription) *CreateDocumentOutput {
	s.DocumentDescription = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateMaintenanceWindowRequest
type CreateMaintenanceWindowInput struct {
	_ struct{} `type:"structure"`

	// Whether targets must be registered with the Maintenance Window before tasks
	// can be defined for those targets.
	//
	// AllowUnassociatedTargets is a required field
	AllowUnassociatedTargets *bool `type:"boolean" required:"true"`

	// User-provided idempotency token.
	ClientToken *string `min:"1" type:"string" idempotencyToken:"true"`

	// The number of hours before the end of the Maintenance Window that Systems
	// Manager stops scheduling new tasks for execution.
	//
	// Cutoff is a required field
	Cutoff *int64 `type:"integer" required:"true"`

	// The duration of the Maintenance Window in hours.
	//
	// Duration is a required field
	Duration *int64 `min:"1" type:"integer" required:"true"`

	// The name of the Maintenance Window.
	//
	// Name is a required field
	Name *string `min:"3" type:"string" required:"true"`

	// The schedule of the Maintenance Window in the form of a cron or rate expression.
	//
	// Schedule is a required field
	Schedule *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s CreateMaintenanceWindowInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CreateMaintenanceWindowInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateMaintenanceWindowInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateMaintenanceWindowInput"}
	if s.AllowUnassociatedTargets == nil {
		invalidParams.Add(request.NewErrParamRequired("AllowUnassociatedTargets"))
	}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.Cutoff == nil {
		invalidParams.Add(request.NewErrParamRequired("Cutoff"))
	}
	if s.Duration == nil {
		invalidParams.Add(request.NewErrParamRequired("Duration"))
	}
	if s.Duration != nil && *s.Duration < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Duration", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 3))
	}
	if s.Schedule == nil {
		invalidParams.Add(request.NewErrParamRequired("Schedule"))
	}
	if s.Schedule != nil && len(*s.Schedule) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Schedule", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAllowUnassociatedTargets sets the AllowUnassociatedTargets field's value.
func (s *CreateMaintenanceWindowInput) SetAllowUnassociatedTargets(v bool) *CreateMaintenanceWindowInput {
	s.AllowUnassociatedTargets = &v
	return s
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateMaintenanceWindowInput) SetClientToken(v string) *CreateMaintenanceWindowInput {
	s.ClientToken = &v
	return s
}

// SetCutoff sets the Cutoff field's value.
func (s *CreateMaintenanceWindowInput) SetCutoff(v int64) *CreateMaintenanceWindowInput {
	s.Cutoff = &v
	return s
}

// SetDuration sets the Duration field's value.
func (s *CreateMaintenanceWindowInput) SetDuration(v int64) *CreateMaintenanceWindowInput {
	s.Duration = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateMaintenanceWindowInput) SetName(v string) *CreateMaintenanceWindowInput {
	s.Name = &v
	return s
}

// SetSchedule sets the Schedule field's value.
func (s *CreateMaintenanceWindowInput) SetSchedule(v string) *CreateMaintenanceWindowInput {
	s.Schedule = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateMaintenanceWindowResult
type CreateMaintenanceWindowOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the created Maintenance Window.
	WindowId *string `min:"20" type:"string"`
}

// String returns the string representation
func (s CreateMaintenanceWindowOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CreateMaintenanceWindowOutput) GoString() string {
	return s.String()
}

// SetWindowId sets the WindowId field's value.
func (s *CreateMaintenanceWindowOutput) SetWindowId(v string) *CreateMaintenanceWindowOutput {
	s.WindowId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreatePatchBaselineRequest
type CreatePatchBaselineInput struct {
	_ struct{} `type:"structure"`

	// A set of rules used to include patches in the baseline.
	ApprovalRules *PatchRuleGroup `type:"structure"`

	// A list of explicitly approved patches for the baseline.
	ApprovedPatches []*string `type:"list"`

	// Caller-provided idempotency token.
	ClientToken *string `min:"1" type:"string" idempotencyToken:"true"`

	// A description of the patch baseline.
	Description *string `min:"1" type:"string"`

	// A set of global filters used to exclude patches from the baseline.
	GlobalFilters *PatchFilterGroup `type:"structure"`

	// The name of the patch baseline.
	//
	// Name is a required field
	Name *string `min:"3" type:"string" required:"true"`

	// A list of explicitly rejected patches for the baseline.
	RejectedPatches []*string `type:"list"`
}

// String returns the string representation
func (s CreatePatchBaselineInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CreatePatchBaselineInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreatePatchBaselineInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreatePatchBaselineInput"}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 3))
	}
	if s.ApprovalRules != nil {
		if err := s.ApprovalRules.Validate(); err != nil {
			invalidParams.AddNested("ApprovalRules", err.(request.ErrInvalidParams))
		}
	}
	if s.GlobalFilters != nil {
		if err := s.GlobalFilters.Validate(); err != nil {
			invalidParams.AddNested("GlobalFilters", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetApprovalRules sets the ApprovalRules field's value.
func (s *CreatePatchBaselineInput) SetApprovalRules(v *PatchRuleGroup) *CreatePatchBaselineInput {
	s.ApprovalRules = v
	return s
}

// SetApprovedPatches sets the ApprovedPatches field's value.
func (s *CreatePatchBaselineInput) SetApprovedPatches(v []*string) *CreatePatchBaselineInput {
	s.ApprovedPatches = v
	return s
}

// SetClientToken sets the ClientToken field's value.
func (s *CreatePatchBaselineInput) SetClientToken(v string) *CreatePatchBaselineInput {
	s.ClientToken = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreatePatchBaselineInput) SetDescription(v string) *CreatePatchBaselineInput {
	s.Description = &v
	return s
}

// SetGlobalFilters sets the GlobalFilters field's value.
func (s *CreatePatchBaselineInput) SetGlobalFilters(v *PatchFilterGroup) *CreatePatchBaselineInput {
	s.GlobalFilters = v
	return s
}

// SetName sets the Name field's value.
func (s *CreatePatchBaselineInput) SetName(v string) *CreatePatchBaselineInput {
	s.Name = &v
	return s
}

// SetRejectedPatches sets the RejectedPatches field's value.
func (s *CreatePatchBaselineInput) SetRejectedPatches(v []*string) *CreatePatchBaselineInput {
	s.RejectedPatches = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreatePatchBaselineResult
type CreatePatchBaselineOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the created patch baseline.
	BaselineId *string `min:"20" type:"string"`
}

// String returns the string representation
func (s CreatePatchBaselineOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CreatePatchBaselineOutput) GoString() string {
	return s.String()
}

// SetBaselineId sets the BaselineId field's value.
func (s *CreatePatchBaselineOutput) SetBaselineId(v string) *CreatePatchBaselineOutput {
	s.BaselineId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteActivationRequest
type DeleteActivationInput struct {
	_ struct{} `type:"structure"`

	// The ID of the activation that you want to delete.
	//
	// ActivationId is a required field
	ActivationId *string `type:"string" required:"true"`
}

// String returns the string representation
func (s DeleteActivationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DeleteActivationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteActivationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteActivationInput"}
	if s.ActivationId == nil {
		invalidParams.Add(request.NewErrParamRequired("ActivationId"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActivationId sets the ActivationId field's value.
func (s *DeleteActivationInput) SetActivationId(v string) *DeleteActivationInput {
	s.ActivationId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteActivationResult
type DeleteActivationOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation
func (s DeleteActivationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DeleteActivationOutput) GoString() string {
	return s.String()
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteAssociationRequest
type DeleteAssociationInput struct {
	_ struct{} `type:"structure"`

	// The association ID that you want to delete.
	AssociationId *string `type:"string"`

	// The ID of the instance.
	InstanceId *string `type:"string"`

	// The name of the SSM document.
	Name *string `type:"string"`
}

// String returns the string representation
func (s DeleteAssociationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DeleteAssociationInput) GoString() string {
	return s.String()
}

// SetAssociationId sets the AssociationId field's value.
func (s *DeleteAssociationInput) SetAssociationId(v string) *DeleteAssociationInput {
	s.AssociationId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DeleteAssociationInput) SetInstanceId(v string) *DeleteAssociationInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *DeleteAssociationInput) SetName(v string) *DeleteAssociationInput {
	s.Name = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteAssociationResult
type DeleteAssociationOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation
func (s DeleteAssociationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DeleteAssociationOutput) GoString() string {
	return s.String()
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteDocumentRequest
type DeleteDocumentInput struct {
	_ struct{} `type:"structure"`

	// The name of the SSM document.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`
}

// String returns the string representation
func (s DeleteDocumentInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DeleteDocumentInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteDocumentInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteDocumentInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *DeleteDocumentInput) SetName(v string) *DeleteDocumentInput {
	s.Name = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteDocumentResult
type DeleteDocumentOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation
func (s DeleteDocumentOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DeleteDocumentOutput) GoString() string {
	return s.String()
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteMaintenanceWindowRequest
type DeleteMaintenanceWindowInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Maintenance Window to delete.
	//
	// WindowId is a required field
	WindowId *string `min:"20" type:"string" required:"true"`
}

// String returns the string representation
func (s DeleteMaintenanceWindowInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DeleteMaintenanceWindowInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteMaintenanceWindowInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteMaintenanceWindowInput"}
	if s.WindowId == nil {
		invalidParams.Add(request.NewErrParamRequired("WindowId"))
	}
	if s.WindowId != nil && len(*s.WindowId) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("WindowId", 20))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetWindowId sets the WindowId field's value.
func (s *DeleteMaintenanceWindowInput) SetWindowId(v string) *DeleteMaintenanceWindowInput {
	s.WindowId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteMaintenanceWindowResult
type DeleteMaintenanceWindowOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the deleted Maintenance Window.
	WindowId *string `min:"20" type:"string"`
}

// String returns the string representation
func (s DeleteMaintenanceWindowOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DeleteMaintenanceWindowOutput) GoString() string {
	return s.String()
}

// SetWindowId sets the WindowId field's value.
func (s *DeleteMaintenanceWindowOutput) SetWindowId(v string) *DeleteMaintenanceWindowOutput {
	s.WindowId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteParameterRequest
type DeleteParameterInput struct {
	_ struct{} `type:"structure"`

	// The name of the parameter to delete.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s DeleteParameterInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DeleteParameterInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteParameterInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteParameterInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *DeleteParameterInput) SetName(v string) *DeleteParameterInput {
	s.Name = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteParameterResult
type DeleteParameterOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation
func (s DeleteParameterOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DeleteParameterOutput) GoString() string {
	return s.String()
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeletePatchBaselineRequest
type DeletePatchBaselineInput struct {
	_ struct{} `type:"structure"`

	// The ID of the patch baseline to delete.
	//
	// BaselineId is a required field
	BaselineId *string `min:"20" type:"string" required:"true"`
}

// String returns the string representation
func (s DeletePatchBaselineInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DeletePatchBaselineInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeletePatchBaselineInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeletePatchBaselineInput"}
	if s.BaselineId == nil {
		invalidParams.Add(request.NewErrParamRequired("BaselineId"))
	}
	if s.BaselineId != nil && len(*s.BaselineId) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("BaselineId", 20))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBaselineId sets the BaselineId field's value.
func (s *DeletePatchBaselineInput) SetBaselineId(v string) *DeletePatchBaselineInput {
	s.BaselineId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeletePatchBaselineResult
type DeletePatchBaselineOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the deleted patch baseline.
	BaselineId *string `min:"20" type:"string"`
}

// String returns the string representation
func (s DeletePatchBaselineOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DeletePatchBaselineOutput) GoString() string {
	return s.String()
}

// SetBaselineId sets the BaselineId field's value.
func (s *DeletePatchBaselineOutput) SetBaselineId(v string) *DeletePatchBaselineOutput {
	s.BaselineId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeregisterManagedInstanceRequest
type DeregisterManagedInstanceInput struct {
	_ struct{} `type:"structure"`

	// The ID assigned to the managed instance when you registered it using the
	// activation process.
	//
	// InstanceId is a required field
	InstanceId *string `type:"string" required:"true"`
}

// String returns the string representation
func (s DeregisterManagedInstanceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DeregisterManagedInstanceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeregisterManagedInstanceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeregisterManagedInstanceInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DeregisterManagedInstanceInput) SetInstanceId(v string) *DeregisterManagedInstanceInput {
	s.InstanceId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeregisterManagedInstanceResult
type DeregisterManagedInstanceOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation
func (s DeregisterManagedInstanceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DeregisterManagedInstanceOutput) GoString() string {
	return s.String()
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeregisterPatchBaselineForPatchGroupRequest
type DeregisterPatchBaselineForPatchGroupInput struct {
	_ struct{} `type:"structure"`

	// The ID of the patch baseline to deregister the patch group from.
	//
	// BaselineId is a required field
	BaselineId *string `min:"20" type:"string" required:"true"`

	// The name of the patch group that should be deregistered from the patch baseline.
	//
	// PatchGroup is a required field
	PatchGroup *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s DeregisterPatchBaselineForPatchGroupInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DeregisterPatchBaselineForPatchGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeregisterPatchBaselineForPatchGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeregisterPatchBaselineForPatchGroupInput"}
	if s.BaselineId == nil {
		invalidParams.Add(request.NewErrParamRequired("BaselineId"))
	}
	if s.BaselineId != nil && len(*s.BaselineId) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("BaselineId", 20))
	}
	if s.PatchGroup == nil {
		invalidParams.Add(request.NewErrParamRequired("PatchGroup"))
	}
	if s.PatchGroup != nil && len(*s.PatchGroup) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PatchGroup", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBaselineId sets the BaselineId field's value.
func (s *DeregisterPatchBaselineForPatchGroupInput) SetBaselineId(v string) *DeregisterPatchBaselineForPatchGroupInput {
	s.BaselineId = &v
	return s
}

// SetPatchGroup sets the PatchGroup field's value.
func (s *DeregisterPatchBaselineForPatchGroupInput) SetPatchGroup(v string) *DeregisterPatchBaselineForPatchGroupInput {
	s.PatchGroup = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeregisterPatchBaselineForPatchGroupResult
type DeregisterPatchBaselineForPatchGroupOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the patch baseline the patch group was deregistered from.
	BaselineId *string `min:"20" type:"string"`

	// The name of the patch group deregistered from the patch baseline.
	PatchGroup *string `min:"1" type:"string"`
}

// String returns the string representation
func (s DeregisterPatchBaselineForPatchGroupOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DeregisterPatchBaselineForPatchGroupOutput) GoString() string {
	return s.String()
}

// SetBaselineId sets the BaselineId field's value.
func (s *DeregisterPatchBaselineForPatchGroupOutput) SetBaselineId(v string) *DeregisterPatchBaselineForPatchGroupOutput {
	s.BaselineId = &v
	return s
}

// SetPatchGroup sets the PatchGroup field's value.
func (s *DeregisterPatchBaselineForPatchGroupOutput) SetPatchGroup(v string) *DeregisterPatchBaselineForPatchGroupOutput {
	s.PatchGroup = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeregisterTargetFromMaintenanceWindowRequest
type DeregisterTargetFromMaintenanceWindowInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Maintenance Window the target should be removed from.
	//
	// WindowId is a required field
	WindowId *string `min:"20" type:"string" required:"true"`

	// The ID of the target definition to remove.
	//
	// WindowTargetId is a required field
	WindowTargetId *string `min:"36" type:"string" required:"true"`
}

// String returns the string representation
func (s DeregisterTargetFromMaintenanceWindowInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DeregisterTargetFromMaintenanceWindowInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeregisterTargetFromMaintenanceWindowInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeregisterTargetFromMaintenanceWindowInput"}
	if s.WindowId == nil {
		invalidParams.Add(request.NewErrParamRequired("WindowId"))
	}
	if s.WindowId != nil && len(*s.WindowId) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("WindowId", 20))
	}
	if s.WindowTargetId == nil {
		invalidParams.Add(request.NewErrParamRequired("WindowTargetId"))
	}
	if s.WindowTargetId != nil && len(*s.WindowTargetId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("WindowTargetId", 36))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetWindowId sets the WindowId field's value.
func (s *DeregisterTargetFromMaintenanceWindowInput) SetWindowId(v string) *DeregisterTargetFromMaintenanceWindowInput {
	s.WindowId = &v
	return s
}

// SetWindowTargetId sets the WindowTargetId field's value.
func (s *DeregisterTargetFromMaintenanceWindowInput) SetWindowTargetId(v string) *DeregisterTargetFromMaintenanceWindowInput {
	s.WindowTargetId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeregisterTargetFromMaintenanceWindowResult
type DeregisterTargetFromMaintenanceWindowOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the Maintenance Window the target was removed from.
	WindowId *string `min:"20" type:"string"`

	// The ID of the removed target definition.
	WindowTargetId *string `min:"36" type:"string"`
}

// String returns the string representation
func (s DeregisterTargetFromMaintenanceWindowOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DeregisterTargetFromMaintenanceWindowOutput) GoString() string {
	return s.String()
}

// SetWindowId sets the WindowId field's value.
func (s *DeregisterTargetFromMaintenanceWindowOutput) SetWindowId(v string) *DeregisterTargetFromMaintenanceWindowOutput {
	s.WindowId = &v
	return s
}

// SetWindowTargetId sets the WindowTargetId field's value.
func (s *DeregisterTargetFromMaintenanceWindowOutput) SetWindowTargetId(v string) *DeregisterTargetFromMaintenanceWindowOutput {
	s.WindowTargetId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeregisterTaskFromMaintenanceWindowRequest
type DeregisterTaskFromMaintenanceWindowInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Maintenance Window the task should be removed from.
	//
	// WindowId is a required field
	WindowId *string `min:"20" type:"string" required:"true"`

	// The ID of the task to remove from the Maintenance Window.
	//
	// WindowTaskId is a required field
	WindowTaskId *string `min:"36" type:"string" required:"true"`
}

// String returns the string representation
func (s DeregisterTaskFromMaintenanceWindowInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DeregisterTaskFromMaintenanceWindowInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeregisterTaskFromMaintenanceWindowInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeregisterTaskFromMaintenanceWindowInput"}
	if s.WindowId == nil {
		invalidParams.Add(request.NewErrParamRequired("WindowId"))
	}
	if s.WindowId != nil && len(*s.WindowId) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("WindowId", 20))
	}
	if s.WindowTaskId == nil {
		invalidParams.Add(request.NewErrParamRequired("WindowTaskId"))
	}
	if s.WindowTaskId != nil && len(*s.WindowTaskId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("WindowTaskId", 36))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetWindowId sets the WindowId field's value.
func (s *DeregisterTaskFromMaintenanceWindowInput) SetWindowId(v string) *DeregisterTaskFromMaintenanceWindowInput {
	s.WindowId = &v
	return s
}

// SetWindowTaskId sets the WindowTaskId field's value.
func (s *DeregisterTaskFromMaintenanceWindowInput) SetWindowTaskId(v string) *DeregisterTaskFromMaintenanceWindowInput {
	s.WindowTaskId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeregisterTaskFromMaintenanceWindowResult
type DeregisterTaskFromMaintenanceWindowOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the Maintenance Window the task was removed from.
	WindowId *string `min:"20" type:"string"`

	// The ID of the task removed from the Maintenance Window.
	WindowTaskId *string `min:"36" type:"string"`
}

// String returns the string representation
func (s DeregisterTaskFromMaintenanceWindowOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DeregisterTaskFromMaintenanceWindowOutput) GoString() string {
	return s.String()
}

// SetWindowId sets the WindowId field's value.
func (s *DeregisterTaskFromMaintenanceWindowOutput) SetWindowId(v string) *DeregisterTaskFromMaintenanceWindowOutput {
	s.WindowId = &v
	return s
}

// SetWindowTaskId sets the WindowTaskId field's value.
func (s *DeregisterTaskFromMaintenanceWindowOutput) SetWindowTaskId(v string) *DeregisterTaskFromMaintenanceWindowOutput {
	s.WindowTaskId = &v
	return s
}

// Filter for the DescribeActivation API.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeActivationsFilter
type DescribeActivationsFilter struct {
	_ struct{} `type:"structure"`

	// The name of the filter.
	FilterKey *string `type:"string" enum:"DescribeActivationsFilterKeys"`

	// The filter values.
	FilterValues []*string `type:"list"`
}

// String returns the string representation
func (s DescribeActivationsFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeActivationsFilter) GoString() string {
	return s.String()
}

// SetFilterKey sets the FilterKey field's value.
func (s *DescribeActivationsFilter) SetFilterKey(v string) *DescribeActivationsFilter {
	s.FilterKey = &v
	return s
}

// SetFilterValues sets the FilterValues field's value.
func (s *DescribeActivationsFilter) SetFilterValues(v []*string) *DescribeActivationsFilter {
	s.FilterValues = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeActivationsRequest
type DescribeActivationsInput struct {
	_ struct{} `type:"structure"`

	// A filter to view information about your activations.
	Filters []*DescribeActivationsFilter `type:"list"`

	// 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.
	MaxResults *int64 `min:"1" type:"integer"`

	// A token to start the list. Use this token to get the next set of results.
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s DescribeActivationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeActivationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeActivationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeActivationsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *DescribeActivationsInput) SetFilters(v []*DescribeActivationsFilter) *DescribeActivationsInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeActivationsInput) SetMaxResults(v int64) *DescribeActivationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeActivationsInput) SetNextToken(v string) *DescribeActivationsInput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeActivationsResult
type DescribeActivationsOutput struct {
	_ struct{} `type:"structure"`

	// A list of activations for your AWS account.
	ActivationList []*Activation `type:"list"`

	// The token for the next set of items to return. Use this token to get the
	// next set of results.
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s DescribeActivationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeActivationsOutput) GoString() string {
	return s.String()
}

// SetActivationList sets the ActivationList field's value.
func (s *DescribeActivationsOutput) SetActivationList(v []*Activation) *DescribeActivationsOutput {
	s.ActivationList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeActivationsOutput) SetNextToken(v string) *DescribeActivationsOutput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeAssociationRequest
type DescribeAssociationInput struct {
	_ struct{} `type:"structure"`

	// The association ID for which you want information.
	AssociationId *string `type:"string"`

	// The instance ID.
	InstanceId *string `type:"string"`

	// The name of the SSM document.
	Name *string `type:"string"`
}

// String returns the string representation
func (s DescribeAssociationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeAssociationInput) GoString() string {
	return s.String()
}

// SetAssociationId sets the AssociationId field's value.
func (s *DescribeAssociationInput) SetAssociationId(v string) *DescribeAssociationInput {
	s.AssociationId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeAssociationInput) SetInstanceId(v string) *DescribeAssociationInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *DescribeAssociationInput) SetName(v string) *DescribeAssociationInput {
	s.Name = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeAssociationResult
type DescribeAssociationOutput struct {
	_ struct{} `type:"structure"`

	// Information about the association.
	AssociationDescription *AssociationDescription `type:"structure"`
}

// String returns the string representation
func (s DescribeAssociationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeAssociationOutput) GoString() string {
	return s.String()
}

// SetAssociationDescription sets the AssociationDescription field's value.
func (s *DescribeAssociationOutput) SetAssociationDescription(v *AssociationDescription) *DescribeAssociationOutput {
	s.AssociationDescription = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeAutomationExecutionsRequest
type DescribeAutomationExecutionsInput struct {
	_ struct{} `type:"structure"`

	// Filters used to limit the scope of executions that are requested.
	Filters []*AutomationExecutionFilter `min:"1" type:"list"`

	// 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.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s DescribeAutomationExecutionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeAutomationExecutionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeAutomationExecutionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeAutomationExecutionsInput"}
	if s.Filters != nil && len(s.Filters) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Filters", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *DescribeAutomationExecutionsInput) SetFilters(v []*AutomationExecutionFilter) *DescribeAutomationExecutionsInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeAutomationExecutionsInput) SetMaxResults(v int64) *DescribeAutomationExecutionsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeAutomationExecutionsInput) SetNextToken(v string) *DescribeAutomationExecutionsInput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeAutomationExecutionsResult
type DescribeAutomationExecutionsOutput struct {
	_ struct{} `type:"structure"`

	// The list of details about each automation execution which has occurred which
	// matches the filter specification, if any.
	AutomationExecutionMetadataList []*AutomationExecutionMetadata `type:"list"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s DescribeAutomationExecutionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeAutomationExecutionsOutput) GoString() string {
	return s.String()
}

// SetAutomationExecutionMetadataList sets the AutomationExecutionMetadataList field's value.
func (s *DescribeAutomationExecutionsOutput) SetAutomationExecutionMetadataList(v []*AutomationExecutionMetadata) *DescribeAutomationExecutionsOutput {
	s.AutomationExecutionMetadataList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeAutomationExecutionsOutput) SetNextToken(v string) *DescribeAutomationExecutionsOutput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeAvailablePatchesRequest
type DescribeAvailablePatchesInput struct {
	_ struct{} `type:"structure"`

	// Filters used to scope down the returned patches.
	Filters []*PatchOrchestratorFilter `type:"list"`

	// The maximum number of patches to return (per page).
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s DescribeAvailablePatchesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeAvailablePatchesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeAvailablePatchesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeAvailablePatchesInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *DescribeAvailablePatchesInput) SetFilters(v []*PatchOrchestratorFilter) *DescribeAvailablePatchesInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeAvailablePatchesInput) SetMaxResults(v int64) *DescribeAvailablePatchesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeAvailablePatchesInput) SetNextToken(v string) *DescribeAvailablePatchesInput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeAvailablePatchesResult
type DescribeAvailablePatchesOutput struct {
	_ struct{} `type:"structure"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`

	// An array of patches. Each entry in the array is a patch structure.
	Patches []*Patch `type:"list"`
}

// String returns the string representation
func (s DescribeAvailablePatchesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeAvailablePatchesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeAvailablePatchesOutput) SetNextToken(v string) *DescribeAvailablePatchesOutput {
	s.NextToken = &v
	return s
}

// SetPatches sets the Patches field's value.
func (s *DescribeAvailablePatchesOutput) SetPatches(v []*Patch) *DescribeAvailablePatchesOutput {
	s.Patches = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeDocumentRequest
type DescribeDocumentInput struct {
	_ struct{} `type:"structure"`

	// The document version for which you want information. Can be a specific version
	// or the default version.
	DocumentVersion *string `type:"string"`

	// The name of the SSM document.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`
}

// String returns the string representation
func (s DescribeDocumentInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeDocumentInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDocumentInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDocumentInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDocumentVersion sets the DocumentVersion field's value.
func (s *DescribeDocumentInput) SetDocumentVersion(v string) *DescribeDocumentInput {
	s.DocumentVersion = &v
	return s
}

// SetName sets the Name field's value.
func (s *DescribeDocumentInput) SetName(v string) *DescribeDocumentInput {
	s.Name = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeDocumentResult
type DescribeDocumentOutput struct {
	_ struct{} `type:"structure"`

	// Information about the SSM document.
	Document *DocumentDescription `type:"structure"`
}

// String returns the string representation
func (s DescribeDocumentOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeDocumentOutput) GoString() string {
	return s.String()
}

// SetDocument sets the Document field's value.
func (s *DescribeDocumentOutput) SetDocument(v *DocumentDescription) *DescribeDocumentOutput {
	s.Document = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeDocumentPermissionRequest
type DescribeDocumentPermissionInput struct {
	_ struct{} `type:"structure"`

	// The name of the document for which you are the owner.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The permission type for the document. The permission type can be Share.
	//
	// PermissionType is a required field
	PermissionType *string `type:"string" required:"true" enum:"DocumentPermissionType"`
}

// String returns the string representation
func (s DescribeDocumentPermissionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeDocumentPermissionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDocumentPermissionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDocumentPermissionInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.PermissionType == nil {
		invalidParams.Add(request.NewErrParamRequired("PermissionType"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *DescribeDocumentPermissionInput) SetName(v string) *DescribeDocumentPermissionInput {
	s.Name = &v
	return s
}

// SetPermissionType sets the PermissionType field's value.
func (s *DescribeDocumentPermissionInput) SetPermissionType(v string) *DescribeDocumentPermissionInput {
	s.PermissionType = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeDocumentPermissionResponse
type DescribeDocumentPermissionOutput struct {
	_ struct{} `type:"structure"`

	// The account IDs that have permission to use this document. The ID can be
	// either an AWS account or All.
	AccountIds []*string `locationNameList:"AccountId" type:"list"`
}

// String returns the string representation
func (s DescribeDocumentPermissionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeDocumentPermissionOutput) GoString() string {
	return s.String()
}

// SetAccountIds sets the AccountIds field's value.
func (s *DescribeDocumentPermissionOutput) SetAccountIds(v []*string) *DescribeDocumentPermissionOutput {
	s.AccountIds = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeEffectiveInstanceAssociationsRequest
type DescribeEffectiveInstanceAssociationsInput struct {
	_ struct{} `type:"structure"`

	// The instance ID for which you want to view all associations.
	//
	// InstanceId is a required field
	InstanceId *string `type:"string" required:"true"`

	// 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.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s DescribeEffectiveInstanceAssociationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeEffectiveInstanceAssociationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeEffectiveInstanceAssociationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeEffectiveInstanceAssociationsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeEffectiveInstanceAssociationsInput) SetInstanceId(v string) *DescribeEffectiveInstanceAssociationsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeEffectiveInstanceAssociationsInput) SetMaxResults(v int64) *DescribeEffectiveInstanceAssociationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeEffectiveInstanceAssociationsInput) SetNextToken(v string) *DescribeEffectiveInstanceAssociationsInput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeEffectiveInstanceAssociationsResult
type DescribeEffectiveInstanceAssociationsOutput struct {
	_ struct{} `type:"structure"`

	// The associations for the requested instance.
	Associations []*InstanceAssociation `type:"list"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s DescribeEffectiveInstanceAssociationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeEffectiveInstanceAssociationsOutput) GoString() string {
	return s.String()
}

// SetAssociations sets the Associations field's value.
func (s *DescribeEffectiveInstanceAssociationsOutput) SetAssociations(v []*InstanceAssociation) *DescribeEffectiveInstanceAssociationsOutput {
	s.Associations = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeEffectiveInstanceAssociationsOutput) SetNextToken(v string) *DescribeEffectiveInstanceAssociationsOutput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeEffectivePatchesForPatchBaselineRequest
type DescribeEffectivePatchesForPatchBaselineInput struct {
	_ struct{} `type:"structure"`

	// The ID of the patch baseline to retrieve the effective patches for.
	//
	// BaselineId is a required field
	BaselineId *string `min:"20" type:"string" required:"true"`

	// The maximum number of patches to return (per page).
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s DescribeEffectivePatchesForPatchBaselineInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeEffectivePatchesForPatchBaselineInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeEffectivePatchesForPatchBaselineInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeEffectivePatchesForPatchBaselineInput"}
	if s.BaselineId == nil {
		invalidParams.Add(request.NewErrParamRequired("BaselineId"))
	}
	if s.BaselineId != nil && len(*s.BaselineId) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("BaselineId", 20))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBaselineId sets the BaselineId field's value.
func (s *DescribeEffectivePatchesForPatchBaselineInput) SetBaselineId(v string) *DescribeEffectivePatchesForPatchBaselineInput {
	s.BaselineId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeEffectivePatchesForPatchBaselineInput) SetMaxResults(v int64) *DescribeEffectivePatchesForPatchBaselineInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeEffectivePatchesForPatchBaselineInput) SetNextToken(v string) *DescribeEffectivePatchesForPatchBaselineInput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeEffectivePatchesForPatchBaselineResult
type DescribeEffectivePatchesForPatchBaselineOutput struct {
	_ struct{} `type:"structure"`

	// An array of patches and patch status.
	EffectivePatches []*EffectivePatch `type:"list"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s DescribeEffectivePatchesForPatchBaselineOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeEffectivePatchesForPatchBaselineOutput) GoString() string {
	return s.String()
}

// SetEffectivePatches sets the EffectivePatches field's value.
func (s *DescribeEffectivePatchesForPatchBaselineOutput) SetEffectivePatches(v []*EffectivePatch) *DescribeEffectivePatchesForPatchBaselineOutput {
	s.EffectivePatches = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeEffectivePatchesForPatchBaselineOutput) SetNextToken(v string) *DescribeEffectivePatchesForPatchBaselineOutput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstanceAssociationsStatusRequest
type DescribeInstanceAssociationsStatusInput struct {
	_ struct{} `type:"structure"`

	// The instance IDs for which you want association status information.
	//
	// InstanceId is a required field
	InstanceId *string `type:"string" required:"true"`

	// 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.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s DescribeInstanceAssociationsStatusInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeInstanceAssociationsStatusInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeInstanceAssociationsStatusInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeInstanceAssociationsStatusInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeInstanceAssociationsStatusInput) SetInstanceId(v string) *DescribeInstanceAssociationsStatusInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeInstanceAssociationsStatusInput) SetMaxResults(v int64) *DescribeInstanceAssociationsStatusInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeInstanceAssociationsStatusInput) SetNextToken(v string) *DescribeInstanceAssociationsStatusInput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstanceAssociationsStatusResult
type DescribeInstanceAssociationsStatusOutput struct {
	_ struct{} `type:"structure"`

	// Status information about the association.
	InstanceAssociationStatusInfos []*InstanceAssociationStatusInfo `type:"list"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s DescribeInstanceAssociationsStatusOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeInstanceAssociationsStatusOutput) GoString() string {
	return s.String()
}

// SetInstanceAssociationStatusInfos sets the InstanceAssociationStatusInfos field's value.
func (s *DescribeInstanceAssociationsStatusOutput) SetInstanceAssociationStatusInfos(v []*InstanceAssociationStatusInfo) *DescribeInstanceAssociationsStatusOutput {
	s.InstanceAssociationStatusInfos = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeInstanceAssociationsStatusOutput) SetNextToken(v string) *DescribeInstanceAssociationsStatusOutput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstanceInformationRequest
type DescribeInstanceInformationInput struct {
	_ struct{} `type:"structure"`

	// One or more filters. Use a filter to return a more specific list of instances.
	Filters []*InstanceInformationStringFilter `locationNameList:"InstanceInformationStringFilter" type:"list"`

	// One or more filters. Use a filter to return a more specific list of instances.
	InstanceInformationFilterList []*InstanceInformationFilter `locationNameList:"InstanceInformationFilter" type:"list"`

	// 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.
	MaxResults *int64 `min:"5" type:"integer"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s DescribeInstanceInformationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeInstanceInformationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeInstanceInformationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeInstanceInformationInput"}
	if s.MaxResults != nil && *s.MaxResults < 5 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.InstanceInformationFilterList != nil {
		for i, v := range s.InstanceInformationFilterList {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InstanceInformationFilterList", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *DescribeInstanceInformationInput) SetFilters(v []*InstanceInformationStringFilter) *DescribeInstanceInformationInput {
	s.Filters = v
	return s
}

// SetInstanceInformationFilterList sets the InstanceInformationFilterList field's value.
func (s *DescribeInstanceInformationInput) SetInstanceInformationFilterList(v []*InstanceInformationFilter) *DescribeInstanceInformationInput {
	s.InstanceInformationFilterList = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeInstanceInformationInput) SetMaxResults(v int64) *DescribeInstanceInformationInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeInstanceInformationInput) SetNextToken(v string) *DescribeInstanceInformationInput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstanceInformationResult
type DescribeInstanceInformationOutput struct {
	_ struct{} `type:"structure"`

	// The instance information list.
	InstanceInformationList []*InstanceInformation `locationNameList:"InstanceInformation" type:"list"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s DescribeInstanceInformationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeInstanceInformationOutput) GoString() string {
	return s.String()
}

// SetInstanceInformationList sets the InstanceInformationList field's value.
func (s *DescribeInstanceInformationOutput) SetInstanceInformationList(v []*InstanceInformation) *DescribeInstanceInformationOutput {
	s.InstanceInformationList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeInstanceInformationOutput) SetNextToken(v string) *DescribeInstanceInformationOutput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstancePatchStatesForPatchGroupRequest
type DescribeInstancePatchStatesForPatchGroupInput struct {
	_ struct{} `type:"structure"`

	// Each entry in the array is a structure containing:
	//
	// Key (string 1 ≤ length ≤ 200)
	//
	// Values (array containing a single string)
	//
	// Type (string “Equal”, “NotEqual”, “LessThan”, “GreaterThan”)
	Filters []*InstancePatchStateFilter `type:"list"`

	// The maximum number of patches to return (per page).
	MaxResults *int64 `min:"10" type:"integer"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`

	// The name of the patch group for which the patch state information should
	// be retrieved.
	//
	// PatchGroup is a required field
	PatchGroup *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s DescribeInstancePatchStatesForPatchGroupInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeInstancePatchStatesForPatchGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeInstancePatchStatesForPatchGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeInstancePatchStatesForPatchGroupInput"}
	if s.MaxResults != nil && *s.MaxResults < 10 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 10))
	}
	if s.PatchGroup == nil {
		invalidParams.Add(request.NewErrParamRequired("PatchGroup"))
	}
	if s.PatchGroup != nil && len(*s.PatchGroup) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PatchGroup", 1))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *DescribeInstancePatchStatesForPatchGroupInput) SetFilters(v []*InstancePatchStateFilter) *DescribeInstancePatchStatesForPatchGroupInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeInstancePatchStatesForPatchGroupInput) SetMaxResults(v int64) *DescribeInstancePatchStatesForPatchGroupInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeInstancePatchStatesForPatchGroupInput) SetNextToken(v string) *DescribeInstancePatchStatesForPatchGroupInput {
	s.NextToken = &v
	return s
}

// SetPatchGroup sets the PatchGroup field's value.
func (s *DescribeInstancePatchStatesForPatchGroupInput) SetPatchGroup(v string) *DescribeInstancePatchStatesForPatchGroupInput {
	s.PatchGroup = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstancePatchStatesForPatchGroupResult
type DescribeInstancePatchStatesForPatchGroupOutput struct {
	_ struct{} `type:"structure"`

	// The high-level patch state for the requested instances.
	InstancePatchStates []*InstancePatchState `min:"1" type:"list"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s DescribeInstancePatchStatesForPatchGroupOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeInstancePatchStatesForPatchGroupOutput) GoString() string {
	return s.String()
}

// SetInstancePatchStates sets the InstancePatchStates field's value.
func (s *DescribeInstancePatchStatesForPatchGroupOutput) SetInstancePatchStates(v []*InstancePatchState) *DescribeInstancePatchStatesForPatchGroupOutput {
	s.InstancePatchStates = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeInstancePatchStatesForPatchGroupOutput) SetNextToken(v string) *DescribeInstancePatchStatesForPatchGroupOutput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstancePatchStatesRequest
type DescribeInstancePatchStatesInput struct {
	_ struct{} `type:"structure"`

	// The ID of the instance whose patch state information should be retrieved.
	//
	// InstanceIds is a required field
	InstanceIds []*string `type:"list" required:"true"`

	// The maximum number of instances to return (per page).
	MaxResults *int64 `min:"10" type:"integer"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s DescribeInstancePatchStatesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeInstancePatchStatesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeInstancePatchStatesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeInstancePatchStatesInput"}
	if s.InstanceIds == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceIds"))
	}
	if s.MaxResults != nil && *s.MaxResults < 10 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 10))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceIds sets the InstanceIds field's value.
func (s *DescribeInstancePatchStatesInput) SetInstanceIds(v []*string) *DescribeInstancePatchStatesInput {
	s.InstanceIds = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeInstancePatchStatesInput) SetMaxResults(v int64) *DescribeInstancePatchStatesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeInstancePatchStatesInput) SetNextToken(v string) *DescribeInstancePatchStatesInput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstancePatchStatesResult
type DescribeInstancePatchStatesOutput struct {
	_ struct{} `type:"structure"`

	// The high-level patch state for the requested instances.
	InstancePatchStates []*InstancePatchState `type:"list"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s DescribeInstancePatchStatesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeInstancePatchStatesOutput) GoString() string {
	return s.String()
}

// SetInstancePatchStates sets the InstancePatchStates field's value.
func (s *DescribeInstancePatchStatesOutput) SetInstancePatchStates(v []*InstancePatchState) *DescribeInstancePatchStatesOutput {
	s.InstancePatchStates = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeInstancePatchStatesOutput) SetNextToken(v string) *DescribeInstancePatchStatesOutput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstancePatchesRequest
type DescribeInstancePatchesInput struct {
	_ struct{} `type:"structure"`

	// Each entry in the array is a structure containing:
	//
	// Key (string, 1 ≤ length ≤ 128)
	//
	// Values (array of strings 1 ≤ length ≤ 256)
	Filters []*PatchOrchestratorFilter `type:"list"`

	// The ID of the instance whose patch state information should be retrieved.
	//
	// InstanceId is a required field
	InstanceId *string `type:"string" required:"true"`

	// The maximum number of patches to return (per page).
	MaxResults *int64 `min:"10" type:"integer"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s DescribeInstancePatchesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeInstancePatchesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeInstancePatchesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeInstancePatchesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.MaxResults != nil && *s.MaxResults < 10 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 10))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *DescribeInstancePatchesInput) SetFilters(v []*PatchOrchestratorFilter) *DescribeInstancePatchesInput {
	s.Filters = v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeInstancePatchesInput) SetInstanceId(v string) *DescribeInstancePatchesInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeInstancePatchesInput) SetMaxResults(v int64) *DescribeInstancePatchesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeInstancePatchesInput) SetNextToken(v string) *DescribeInstancePatchesInput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstancePatchesResult
type DescribeInstancePatchesOutput struct {
	_ struct{} `type:"structure"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`

	// Each entry in the array is a structure containing:
	//
	// Title (string)
	//
	// KBId (string)
	//
	// Classification (string)
	//
	// Severity (string)
	//
	// State (string – “INSTALLED”, “INSTALLED_OTHER”, “MISSING”, “NOT_APPLICABLE”,
	// “FAILED”)
	//
	// InstalledTime (DateTime)
	//
	// InstalledBy (string)
	Patches []*PatchComplianceData `type:"list"`
}

// String returns the string representation
func (s DescribeInstancePatchesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeInstancePatchesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeInstancePatchesOutput) SetNextToken(v string) *DescribeInstancePatchesOutput {
	s.NextToken = &v
	return s
}

// SetPatches sets the Patches field's value.
func (s *DescribeInstancePatchesOutput) SetPatches(v []*PatchComplianceData) *DescribeInstancePatchesOutput {
	s.Patches = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowExecutionTaskInvocationsRequest
type DescribeMaintenanceWindowExecutionTaskInvocationsInput struct {
	_ struct{} `type:"structure"`

	// 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.
	Filters []*MaintenanceWindowFilter `type:"list"`

	// 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.
	MaxResults *int64 `min:"10" type:"integer"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`

	// The ID of the specific task in the Maintenance Window task that should be
	// retrieved.
	//
	// TaskId is a required field
	TaskId *string `min:"36" type:"string" required:"true"`

	// The ID of the Maintenance Window execution the task is part of.
	//
	// WindowExecutionId is a required field
	WindowExecutionId *string `min:"36" type:"string" required:"true"`
}

// String returns the string representation
func (s DescribeMaintenanceWindowExecutionTaskInvocationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeMaintenanceWindowExecutionTaskInvocationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeMaintenanceWindowExecutionTaskInvocationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeMaintenanceWindowExecutionTaskInvocationsInput"}
	if s.MaxResults != nil && *s.MaxResults < 10 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 10))
	}
	if s.TaskId == nil {
		invalidParams.Add(request.NewErrParamRequired("TaskId"))
	}
	if s.TaskId != nil && len(*s.TaskId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("TaskId", 36))
	}
	if s.WindowExecutionId == nil {
		invalidParams.Add(request.NewErrParamRequired("WindowExecutionId"))
	}
	if s.WindowExecutionId != nil && len(*s.WindowExecutionId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("WindowExecutionId", 36))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *DescribeMaintenanceWindowExecutionTaskInvocationsInput) SetFilters(v []*MaintenanceWindowFilter) *DescribeMaintenanceWindowExecutionTaskInvocationsInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeMaintenanceWindowExecutionTaskInvocationsInput) SetMaxResults(v int64) *DescribeMaintenanceWindowExecutionTaskInvocationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeMaintenanceWindowExecutionTaskInvocationsInput) SetNextToken(v string) *DescribeMaintenanceWindowExecutionTaskInvocationsInput {
	s.NextToken = &v
	return s
}

// SetTaskId sets the TaskId field's value.
func (s *DescribeMaintenanceWindowExecutionTaskInvocationsInput) SetTaskId(v string) *DescribeMaintenanceWindowExecutionTaskInvocationsInput {
	s.TaskId = &v
	return s
}

// SetWindowExecutionId sets the WindowExecutionId field's value.
func (s *DescribeMaintenanceWindowExecutionTaskInvocationsInput) SetWindowExecutionId(v string) *DescribeMaintenanceWindowExecutionTaskInvocationsInput {
	s.WindowExecutionId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowExecutionTaskInvocationsResult
type DescribeMaintenanceWindowExecutionTaskInvocationsOutput struct {
	_ struct{} `type:"structure"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`

	// Information about the task invocation results per invocation.
	WindowExecutionTaskInvocationIdentities []*MaintenanceWindowExecutionTaskInvocationIdentity `type:"list"`
}

// String returns the string representation
func (s DescribeMaintenanceWindowExecutionTaskInvocationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeMaintenanceWindowExecutionTaskInvocationsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeMaintenanceWindowExecutionTaskInvocationsOutput) SetNextToken(v string) *DescribeMaintenanceWindowExecutionTaskInvocationsOutput {
	s.NextToken = &v
	return s
}

// SetWindowExecutionTaskInvocationIdentities sets the WindowExecutionTaskInvocationIdentities field's value.
func (s *DescribeMaintenanceWindowExecutionTaskInvocationsOutput) SetWindowExecutionTaskInvocationIdentities(v []*MaintenanceWindowExecutionTaskInvocationIdentity) *DescribeMaintenanceWindowExecutionTaskInvocationsOutput {
	s.WindowExecutionTaskInvocationIdentities = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowExecutionTasksRequest
type DescribeMaintenanceWindowExecutionTasksInput struct {
	_ struct{} `type:"structure"`

	// 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.
	Filters []*MaintenanceWindowFilter `type:"list"`

	// 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.
	MaxResults *int64 `min:"10" type:"integer"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`

	// The ID of the Maintenance Window execution whose task executions should be
	// retrieved.
	//
	// WindowExecutionId is a required field
	WindowExecutionId *string `min:"36" type:"string" required:"true"`
}

// String returns the string representation
func (s DescribeMaintenanceWindowExecutionTasksInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeMaintenanceWindowExecutionTasksInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeMaintenanceWindowExecutionTasksInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeMaintenanceWindowExecutionTasksInput"}
	if s.MaxResults != nil && *s.MaxResults < 10 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 10))
	}
	if s.WindowExecutionId == nil {
		invalidParams.Add(request.NewErrParamRequired("WindowExecutionId"))
	}
	if s.WindowExecutionId != nil && len(*s.WindowExecutionId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("WindowExecutionId", 36))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *DescribeMaintenanceWindowExecutionTasksInput) SetFilters(v []*MaintenanceWindowFilter) *DescribeMaintenanceWindowExecutionTasksInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeMaintenanceWindowExecutionTasksInput) SetMaxResults(v int64) *DescribeMaintenanceWindowExecutionTasksInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeMaintenanceWindowExecutionTasksInput) SetNextToken(v string) *DescribeMaintenanceWindowExecutionTasksInput {
	s.NextToken = &v
	return s
}

// SetWindowExecutionId sets the WindowExecutionId field's value.
func (s *DescribeMaintenanceWindowExecutionTasksInput) SetWindowExecutionId(v string) *DescribeMaintenanceWindowExecutionTasksInput {
	s.WindowExecutionId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowExecutionTasksResult
type DescribeMaintenanceWindowExecutionTasksOutput struct {
	_ struct{} `type:"structure"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`

	// Information about the task executions.
	WindowExecutionTaskIdentities []*MaintenanceWindowExecutionTaskIdentity `type:"list"`
}

// String returns the string representation
func (s DescribeMaintenanceWindowExecutionTasksOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeMaintenanceWindowExecutionTasksOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeMaintenanceWindowExecutionTasksOutput) SetNextToken(v string) *DescribeMaintenanceWindowExecutionTasksOutput {
	s.NextToken = &v
	return s
}

// SetWindowExecutionTaskIdentities sets the WindowExecutionTaskIdentities field's value.
func (s *DescribeMaintenanceWindowExecutionTasksOutput) SetWindowExecutionTaskIdentities(v []*MaintenanceWindowExecutionTaskIdentity) *DescribeMaintenanceWindowExecutionTasksOutput {
	s.WindowExecutionTaskIdentities = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowExecutionsRequest
type DescribeMaintenanceWindowExecutionsInput struct {
	_ struct{} `type:"structure"`

	// Each entry in the array is a structure containing:
	//
	// Key (string, 1 ≤ length ≤ 128)
	//
	// Values (array of strings 1 ≤ length ≤ 256)
	//
	// The supported Keys are ExecutedBefore and ExecutedAfter with the value being
	// a date/time string such as 2016-11-04T05:00:00Z.
	Filters []*MaintenanceWindowFilter `type:"list"`

	// 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.
	MaxResults *int64 `min:"10" type:"integer"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`

	// The ID of the Maintenance Window whose executions should be retrieved.
	//
	// WindowId is a required field
	WindowId *string `min:"20" type:"string" required:"true"`
}

// String returns the string representation
func (s DescribeMaintenanceWindowExecutionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeMaintenanceWindowExecutionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeMaintenanceWindowExecutionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeMaintenanceWindowExecutionsInput"}
	if s.MaxResults != nil && *s.MaxResults < 10 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 10))
	}
	if s.WindowId == nil {
		invalidParams.Add(request.NewErrParamRequired("WindowId"))
	}
	if s.WindowId != nil && len(*s.WindowId) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("WindowId", 20))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *DescribeMaintenanceWindowExecutionsInput) SetFilters(v []*MaintenanceWindowFilter) *DescribeMaintenanceWindowExecutionsInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeMaintenanceWindowExecutionsInput) SetMaxResults(v int64) *DescribeMaintenanceWindowExecutionsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeMaintenanceWindowExecutionsInput) SetNextToken(v string) *DescribeMaintenanceWindowExecutionsInput {
	s.NextToken = &v
	return s
}

// SetWindowId sets the WindowId field's value.
func (s *DescribeMaintenanceWindowExecutionsInput) SetWindowId(v string) *DescribeMaintenanceWindowExecutionsInput {
	s.WindowId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowExecutionsResult
type DescribeMaintenanceWindowExecutionsOutput struct {
	_ struct{} `type:"structure"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`

	// Information about the Maintenance Windows execution.
	WindowExecutions []*MaintenanceWindowExecution `type:"list"`
}

// String returns the string representation
func (s DescribeMaintenanceWindowExecutionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeMaintenanceWindowExecutionsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeMaintenanceWindowExecutionsOutput) SetNextToken(v string) *DescribeMaintenanceWindowExecutionsOutput {
	s.NextToken = &v
	return s
}

// SetWindowExecutions sets the WindowExecutions field's value.
func (s *DescribeMaintenanceWindowExecutionsOutput) SetWindowExecutions(v []*MaintenanceWindowExecution) *DescribeMaintenanceWindowExecutionsOutput {
	s.WindowExecutions = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowTargetsRequest
type DescribeMaintenanceWindowTargetsInput struct {
	_ struct{} `type:"structure"`

	// 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.
	Filters []*MaintenanceWindowFilter `type:"list"`

	// 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.
	MaxResults *int64 `min:"10" type:"integer"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`

	// The ID of the Maintenance Window whose targets should be retrieved.
	//
	// WindowId is a required field
	WindowId *string `min:"20" type:"string" required:"true"`
}

// String returns the string representation
func (s DescribeMaintenanceWindowTargetsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeMaintenanceWindowTargetsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeMaintenanceWindowTargetsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeMaintenanceWindowTargetsInput"}
	if s.MaxResults != nil && *s.MaxResults < 10 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 10))
	}
	if s.WindowId == nil {
		invalidParams.Add(request.NewErrParamRequired("WindowId"))
	}
	if s.WindowId != nil && len(*s.WindowId) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("WindowId", 20))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *DescribeMaintenanceWindowTargetsInput) SetFilters(v []*MaintenanceWindowFilter) *DescribeMaintenanceWindowTargetsInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeMaintenanceWindowTargetsInput) SetMaxResults(v int64) *DescribeMaintenanceWindowTargetsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeMaintenanceWindowTargetsInput) SetNextToken(v string) *DescribeMaintenanceWindowTargetsInput {
	s.NextToken = &v
	return s
}

// SetWindowId sets the WindowId field's value.
func (s *DescribeMaintenanceWindowTargetsInput) SetWindowId(v string) *DescribeMaintenanceWindowTargetsInput {
	s.WindowId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowTargetsResult
type DescribeMaintenanceWindowTargetsOutput struct {
	_ struct{} `type:"structure"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`

	// Information about the targets in the Maintenance Window.
	Targets []*MaintenanceWindowTarget `type:"list"`
}

// String returns the string representation
func (s DescribeMaintenanceWindowTargetsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeMaintenanceWindowTargetsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeMaintenanceWindowTargetsOutput) SetNextToken(v string) *DescribeMaintenanceWindowTargetsOutput {
	s.NextToken = &v
	return s
}

// SetTargets sets the Targets field's value.
func (s *DescribeMaintenanceWindowTargetsOutput) SetTargets(v []*MaintenanceWindowTarget) *DescribeMaintenanceWindowTargetsOutput {
	s.Targets = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowTasksRequest
type DescribeMaintenanceWindowTasksInput struct {
	_ struct{} `type:"structure"`

	// Optional filters used to narrow down the scope of the returned tasks. The
	// supported filter keys are WindowTaskId, TaskArn, Priority, and TaskType.
	Filters []*MaintenanceWindowFilter `type:"list"`

	// 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.
	MaxResults *int64 `min:"10" type:"integer"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`

	// The ID of the Maintenance Window whose tasks should be retrieved.
	//
	// WindowId is a required field
	WindowId *string `min:"20" type:"string" required:"true"`
}

// String returns the string representation
func (s DescribeMaintenanceWindowTasksInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeMaintenanceWindowTasksInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeMaintenanceWindowTasksInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeMaintenanceWindowTasksInput"}
	if s.MaxResults != nil && *s.MaxResults < 10 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 10))
	}
	if s.WindowId == nil {
		invalidParams.Add(request.NewErrParamRequired("WindowId"))
	}
	if s.WindowId != nil && len(*s.WindowId) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("WindowId", 20))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *DescribeMaintenanceWindowTasksInput) SetFilters(v []*MaintenanceWindowFilter) *DescribeMaintenanceWindowTasksInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeMaintenanceWindowTasksInput) SetMaxResults(v int64) *DescribeMaintenanceWindowTasksInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeMaintenanceWindowTasksInput) SetNextToken(v string) *DescribeMaintenanceWindowTasksInput {
	s.NextToken = &v
	return s
}

// SetWindowId sets the WindowId field's value.
func (s *DescribeMaintenanceWindowTasksInput) SetWindowId(v string) *DescribeMaintenanceWindowTasksInput {
	s.WindowId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowTasksResult
type DescribeMaintenanceWindowTasksOutput struct {
	_ struct{} `type:"structure"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`

	// Information about the tasks in the Maintenance Window.
	Tasks []*MaintenanceWindowTask `type:"list"`
}

// String returns the string representation
func (s DescribeMaintenanceWindowTasksOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeMaintenanceWindowTasksOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeMaintenanceWindowTasksOutput) SetNextToken(v string) *DescribeMaintenanceWindowTasksOutput {
	s.NextToken = &v
	return s
}

// SetTasks sets the Tasks field's value.
func (s *DescribeMaintenanceWindowTasksOutput) SetTasks(v []*MaintenanceWindowTask) *DescribeMaintenanceWindowTasksOutput {
	s.Tasks = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowsRequest
type DescribeMaintenanceWindowsInput struct {
	_ struct{} `type:"structure"`

	// Optional filters used to narrow down the scope of the returned Maintenance
	// Windows. Supported filter keys are Name and Enabled.
	Filters []*MaintenanceWindowFilter `type:"list"`

	// 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.
	MaxResults *int64 `min:"10" type:"integer"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s DescribeMaintenanceWindowsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeMaintenanceWindowsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeMaintenanceWindowsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeMaintenanceWindowsInput"}
	if s.MaxResults != nil && *s.MaxResults < 10 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 10))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *DescribeMaintenanceWindowsInput) SetFilters(v []*MaintenanceWindowFilter) *DescribeMaintenanceWindowsInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeMaintenanceWindowsInput) SetMaxResults(v int64) *DescribeMaintenanceWindowsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeMaintenanceWindowsInput) SetNextToken(v string) *DescribeMaintenanceWindowsInput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowsResult
type DescribeMaintenanceWindowsOutput struct {
	_ struct{} `type:"structure"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`

	// Information about the Maintenance Windows.
	WindowIdentities []*MaintenanceWindowIdentity `type:"list"`
}

// String returns the string representation
func (s DescribeMaintenanceWindowsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeMaintenanceWindowsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeMaintenanceWindowsOutput) SetNextToken(v string) *DescribeMaintenanceWindowsOutput {
	s.NextToken = &v
	return s
}

// SetWindowIdentities sets the WindowIdentities field's value.
func (s *DescribeMaintenanceWindowsOutput) SetWindowIdentities(v []*MaintenanceWindowIdentity) *DescribeMaintenanceWindowsOutput {
	s.WindowIdentities = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeParametersRequest
type DescribeParametersInput struct {
	_ struct{} `type:"structure"`

	// One or more filters. Use a filter to return a more specific list of results.
	Filters []*ParametersFilter `type:"list"`

	// 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.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s DescribeParametersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeParametersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeParametersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeParametersInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *DescribeParametersInput) SetFilters(v []*ParametersFilter) *DescribeParametersInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeParametersInput) SetMaxResults(v int64) *DescribeParametersInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeParametersInput) SetNextToken(v string) *DescribeParametersInput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeParametersResult
type DescribeParametersOutput struct {
	_ struct{} `type:"structure"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`

	// Parameters returned by the request.
	Parameters []*ParameterMetadata `type:"list"`
}

// String returns the string representation
func (s DescribeParametersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeParametersOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeParametersOutput) SetNextToken(v string) *DescribeParametersOutput {
	s.NextToken = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *DescribeParametersOutput) SetParameters(v []*ParameterMetadata) *DescribeParametersOutput {
	s.Parameters = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribePatchBaselinesRequest
type DescribePatchBaselinesInput struct {
	_ struct{} `type:"structure"`

	// Each element in the array is a structure containing:
	//
	// Key: (string, “NAME_PREFIX” or “OWNER”)
	//
	// Value: (array of strings, exactly 1 entry, 1 ≤ length ≤ 255)
	Filters []*PatchOrchestratorFilter `type:"list"`

	// The maximum number of patch baselines to return (per page).
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s DescribePatchBaselinesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribePatchBaselinesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribePatchBaselinesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribePatchBaselinesInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *DescribePatchBaselinesInput) SetFilters(v []*PatchOrchestratorFilter) *DescribePatchBaselinesInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribePatchBaselinesInput) SetMaxResults(v int64) *DescribePatchBaselinesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribePatchBaselinesInput) SetNextToken(v string) *DescribePatchBaselinesInput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribePatchBaselinesResult
type DescribePatchBaselinesOutput struct {
	_ struct{} `type:"structure"`

	// An array of PatchBaselineIdentity elements.
	BaselineIdentities []*PatchBaselineIdentity `type:"list"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s DescribePatchBaselinesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribePatchBaselinesOutput) GoString() string {
	return s.String()
}

// SetBaselineIdentities sets the BaselineIdentities field's value.
func (s *DescribePatchBaselinesOutput) SetBaselineIdentities(v []*PatchBaselineIdentity) *DescribePatchBaselinesOutput {
	s.BaselineIdentities = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribePatchBaselinesOutput) SetNextToken(v string) *DescribePatchBaselinesOutput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribePatchGroupStateRequest
type DescribePatchGroupStateInput struct {
	_ struct{} `type:"structure"`

	// The name of the patch group whose patch snapshot should be retrieved.
	//
	// PatchGroup is a required field
	PatchGroup *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s DescribePatchGroupStateInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribePatchGroupStateInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribePatchGroupStateInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribePatchGroupStateInput"}
	if s.PatchGroup == nil {
		invalidParams.Add(request.NewErrParamRequired("PatchGroup"))
	}
	if s.PatchGroup != nil && len(*s.PatchGroup) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PatchGroup", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPatchGroup sets the PatchGroup field's value.
func (s *DescribePatchGroupStateInput) SetPatchGroup(v string) *DescribePatchGroupStateInput {
	s.PatchGroup = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribePatchGroupStateResult
type DescribePatchGroupStateOutput struct {
	_ struct{} `type:"structure"`

	// The number of instances in the patch group.
	Instances *int64 `type:"integer"`

	// The number of instances with patches from the patch baseline that failed
	// to install.
	InstancesWithFailedPatches *int64 `type:"integer"`

	// The number of instances with patches installed that aren’t defined in the
	// patch baseline.
	InstancesWithInstalledOtherPatches *int64 `type:"integer"`

	// The number of instances with installed patches.
	InstancesWithInstalledPatches *int64 `type:"integer"`

	// The number of instances with missing patches from the patch baseline.
	InstancesWithMissingPatches *int64 `type:"integer"`

	// The number of instances with patches that aren’t applicable.
	InstancesWithNotApplicablePatches *int64 `type:"integer"`
}

// String returns the string representation
func (s DescribePatchGroupStateOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribePatchGroupStateOutput) GoString() string {
	return s.String()
}

// SetInstances sets the Instances field's value.
func (s *DescribePatchGroupStateOutput) SetInstances(v int64) *DescribePatchGroupStateOutput {
	s.Instances = &v
	return s
}

// SetInstancesWithFailedPatches sets the InstancesWithFailedPatches field's value.
func (s *DescribePatchGroupStateOutput) SetInstancesWithFailedPatches(v int64) *DescribePatchGroupStateOutput {
	s.InstancesWithFailedPatches = &v
	return s
}

// SetInstancesWithInstalledOtherPatches sets the InstancesWithInstalledOtherPatches field's value.
func (s *DescribePatchGroupStateOutput) SetInstancesWithInstalledOtherPatches(v int64) *DescribePatchGroupStateOutput {
	s.InstancesWithInstalledOtherPatches = &v
	return s
}

// SetInstancesWithInstalledPatches sets the InstancesWithInstalledPatches field's value.
func (s *DescribePatchGroupStateOutput) SetInstancesWithInstalledPatches(v int64) *DescribePatchGroupStateOutput {
	s.InstancesWithInstalledPatches = &v
	return s
}

// SetInstancesWithMissingPatches sets the InstancesWithMissingPatches field's value.
func (s *DescribePatchGroupStateOutput) SetInstancesWithMissingPatches(v int64) *DescribePatchGroupStateOutput {
	s.InstancesWithMissingPatches = &v
	return s
}

// SetInstancesWithNotApplicablePatches sets the InstancesWithNotApplicablePatches field's value.
func (s *DescribePatchGroupStateOutput) SetInstancesWithNotApplicablePatches(v int64) *DescribePatchGroupStateOutput {
	s.InstancesWithNotApplicablePatches = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribePatchGroupsRequest
type DescribePatchGroupsInput struct {
	_ struct{} `type:"structure"`

	// The maximum number of patch groups to return (per page).
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s DescribePatchGroupsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribePatchGroupsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribePatchGroupsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribePatchGroupsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribePatchGroupsInput) SetMaxResults(v int64) *DescribePatchGroupsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribePatchGroupsInput) SetNextToken(v string) *DescribePatchGroupsInput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribePatchGroupsResult
type DescribePatchGroupsOutput struct {
	_ struct{} `type:"structure"`

	// Each entry in the array contains:
	//
	// PatchGroup: string (1 ≤ length ≤ 256, Regex: ^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$)
	//
	// PatchBaselineIdentity: A PatchBaselineIdentity element.
	Mappings []*PatchGroupPatchBaselineMapping `type:"list"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s DescribePatchGroupsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribePatchGroupsOutput) GoString() string {
	return s.String()
}

// SetMappings sets the Mappings field's value.
func (s *DescribePatchGroupsOutput) SetMappings(v []*PatchGroupPatchBaselineMapping) *DescribePatchGroupsOutput {
	s.Mappings = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribePatchGroupsOutput) SetNextToken(v string) *DescribePatchGroupsOutput {
	s.NextToken = &v
	return s
}

// A default version of a document.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DocumentDefaultVersionDescription
type DocumentDefaultVersionDescription struct {
	_ struct{} `type:"structure"`

	// The default version of the document.
	DefaultVersion *string `type:"string"`

	// The name of the document.
	Name *string `type:"string"`
}

// String returns the string representation
func (s DocumentDefaultVersionDescription) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DocumentDefaultVersionDescription) GoString() string {
	return s.String()
}

// SetDefaultVersion sets the DefaultVersion field's value.
func (s *DocumentDefaultVersionDescription) SetDefaultVersion(v string) *DocumentDefaultVersionDescription {
	s.DefaultVersion = &v
	return s
}

// SetName sets the Name field's value.
func (s *DocumentDefaultVersionDescription) SetName(v string) *DocumentDefaultVersionDescription {
	s.Name = &v
	return s
}

// Describes an SSM document.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DocumentDescription
type DocumentDescription struct {
	_ struct{} `type:"structure"`

	// The date when the SSM document was created.
	CreatedDate *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The default version.
	DefaultVersion *string `type:"string"`

	// A description of the document.
	Description *string `type:"string"`

	// The type of document.
	DocumentType *string `type:"string" enum:"DocumentType"`

	// The document version.
	DocumentVersion *string `type:"string"`

	// The Sha256 or Sha1 hash created by the system when the document was created.
	//
	// Sha1 hashes have been deprecated.
	Hash *string `type:"string"`

	// Sha256 or Sha1.
	//
	// Sha1 hashes have been deprecated.
	HashType *string `type:"string" enum:"DocumentHashType"`

	// The latest version of the document.
	LatestVersion *string `type:"string"`

	// The name of the SSM document.
	Name *string `type:"string"`

	// The AWS user account of the person who created the document.
	Owner *string `type:"string"`

	// A description of the parameters for a document.
	Parameters []*DocumentParameter `locationNameList:"DocumentParameter" type:"list"`

	// The list of OS platforms compatible with this SSM document.
	PlatformTypes []*string `locationNameList:"PlatformType" type:"list"`

	// The schema version.
	SchemaVersion *string `type:"string"`

	// The SHA1 hash of the document, which you can use for verification purposes.
	Sha1 *string `type:"string"`

	// The status of the SSM document.
	Status *string `type:"string" enum:"DocumentStatus"`
}

// String returns the string representation
func (s DocumentDescription) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DocumentDescription) GoString() string {
	return s.String()
}

// SetCreatedDate sets the CreatedDate field's value.
func (s *DocumentDescription) SetCreatedDate(v time.Time) *DocumentDescription {
	s.CreatedDate = &v
	return s
}

// SetDefaultVersion sets the DefaultVersion field's value.
func (s *DocumentDescription) SetDefaultVersion(v string) *DocumentDescription {
	s.DefaultVersion = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *DocumentDescription) SetDescription(v string) *DocumentDescription {
	s.Description = &v
	return s
}

// SetDocumentType sets the DocumentType field's value.
func (s *DocumentDescription) SetDocumentType(v string) *DocumentDescription {
	s.DocumentType = &v
	return s
}

// SetDocumentVersion sets the DocumentVersion field's value.
func (s *DocumentDescription) SetDocumentVersion(v string) *DocumentDescription {
	s.DocumentVersion = &v
	return s
}

// SetHash sets the Hash field's value.
func (s *DocumentDescription) SetHash(v string) *DocumentDescription {
	s.Hash = &v
	return s
}

// SetHashType sets the HashType field's value.
func (s *DocumentDescription) SetHashType(v string) *DocumentDescription {
	s.HashType = &v
	return s
}

// SetLatestVersion sets the LatestVersion field's value.
func (s *DocumentDescription) SetLatestVersion(v string) *DocumentDescription {
	s.LatestVersion = &v
	return s
}

// SetName sets the Name field's value.
func (s *DocumentDescription) SetName(v string) *DocumentDescription {
	s.Name = &v
	return s
}

// SetOwner sets the Owner field's value.
func (s *DocumentDescription) SetOwner(v string) *DocumentDescription {
	s.Owner = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *DocumentDescription) SetParameters(v []*DocumentParameter) *DocumentDescription {
	s.Parameters = v
	return s
}

// SetPlatformTypes sets the PlatformTypes field's value.
func (s *DocumentDescription) SetPlatformTypes(v []*string) *DocumentDescription {
	s.PlatformTypes = v
	return s
}

// SetSchemaVersion sets the SchemaVersion field's value.
func (s *DocumentDescription) SetSchemaVersion(v string) *DocumentDescription {
	s.SchemaVersion = &v
	return s
}

// SetSha1 sets the Sha1 field's value.
func (s *DocumentDescription) SetSha1(v string) *DocumentDescription {
	s.Sha1 = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DocumentDescription) SetStatus(v string) *DocumentDescription {
	s.Status = &v
	return s
}

// Describes a filter.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DocumentFilter
type DocumentFilter struct {
	_ struct{} `type:"structure"`

	// The name of the filter.
	//
	// Key is a required field
	Key *string `locationName:"key" type:"string" required:"true" enum:"DocumentFilterKey"`

	// The value of the filter.
	//
	// Value is a required field
	Value *string `locationName:"value" min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s DocumentFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DocumentFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DocumentFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DocumentFilter"}
	if s.Key == nil {
		invalidParams.Add(request.NewErrParamRequired("Key"))
	}
	if s.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}
	if s.Value != nil && len(*s.Value) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Value", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetKey sets the Key field's value.
func (s *DocumentFilter) SetKey(v string) *DocumentFilter {
	s.Key = &v
	return s
}

// SetValue sets the Value field's value.
func (s *DocumentFilter) SetValue(v string) *DocumentFilter {
	s.Value = &v
	return s
}

// Describes the name of an SSM document.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DocumentIdentifier
type DocumentIdentifier struct {
	_ struct{} `type:"structure"`

	// The document type.
	DocumentType *string `type:"string" enum:"DocumentType"`

	// The document version.
	DocumentVersion *string `type:"string"`

	// The name of the SSM document.
	Name *string `type:"string"`

	// The AWS user account of the person who created the document.
	Owner *string `type:"string"`

	// The operating system platform.
	PlatformTypes []*string `locationNameList:"PlatformType" type:"list"`

	// The schema version.
	SchemaVersion *string `type:"string"`
}

// String returns the string representation
func (s DocumentIdentifier) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DocumentIdentifier) GoString() string {
	return s.String()
}

// SetDocumentType sets the DocumentType field's value.
func (s *DocumentIdentifier) SetDocumentType(v string) *DocumentIdentifier {
	s.DocumentType = &v
	return s
}

// SetDocumentVersion sets the DocumentVersion field's value.
func (s *DocumentIdentifier) SetDocumentVersion(v string) *DocumentIdentifier {
	s.DocumentVersion = &v
	return s
}

// SetName sets the Name field's value.
func (s *DocumentIdentifier) SetName(v string) *DocumentIdentifier {
	s.Name = &v
	return s
}

// SetOwner sets the Owner field's value.
func (s *DocumentIdentifier) SetOwner(v string) *DocumentIdentifier {
	s.Owner = &v
	return s
}

// SetPlatformTypes sets the PlatformTypes field's value.
func (s *DocumentIdentifier) SetPlatformTypes(v []*string) *DocumentIdentifier {
	s.PlatformTypes = v
	return s
}

// SetSchemaVersion sets the SchemaVersion field's value.
func (s *DocumentIdentifier) SetSchemaVersion(v string) *DocumentIdentifier {
	s.SchemaVersion = &v
	return s
}

// Parameters specified in the SSM document that execute on the server when
// the command is run.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DocumentParameter
type DocumentParameter struct {
	_ struct{} `type:"structure"`

	// If specified, the default values for the parameters. Parameters without a
	// default value are required. Parameters with a default value are optional.
	DefaultValue *string `type:"string"`

	// A description of what the parameter does, how to use it, the default value,
	// and whether or not the parameter is optional.
	Description *string `type:"string"`

	// The name of the parameter.
	Name *string `type:"string"`

	// The type of parameter. The type can be either “String” or “StringList”.
	Type *string `type:"string" enum:"DocumentParameterType"`
}

// String returns the string representation
func (s DocumentParameter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DocumentParameter) GoString() string {
	return s.String()
}

// SetDefaultValue sets the DefaultValue field's value.
func (s *DocumentParameter) SetDefaultValue(v string) *DocumentParameter {
	s.DefaultValue = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *DocumentParameter) SetDescription(v string) *DocumentParameter {
	s.Description = &v
	return s
}

// SetName sets the Name field's value.
func (s *DocumentParameter) SetName(v string) *DocumentParameter {
	s.Name = &v
	return s
}

// SetType sets the Type field's value.
func (s *DocumentParameter) SetType(v string) *DocumentParameter {
	s.Type = &v
	return s
}

// Version information about the document.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DocumentVersionInfo
type DocumentVersionInfo struct {
	_ struct{} `type:"structure"`

	// The date the document was created.
	CreatedDate *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The document version.
	DocumentVersion *string `type:"string"`

	// An identifier for the default version of the document.
	IsDefaultVersion *bool `type:"boolean"`

	// The document name.
	Name *string `type:"string"`
}

// String returns the string representation
func (s DocumentVersionInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DocumentVersionInfo) GoString() string {
	return s.String()
}

// SetCreatedDate sets the CreatedDate field's value.
func (s *DocumentVersionInfo) SetCreatedDate(v time.Time) *DocumentVersionInfo {
	s.CreatedDate = &v
	return s
}

// SetDocumentVersion sets the DocumentVersion field's value.
func (s *DocumentVersionInfo) SetDocumentVersion(v string) *DocumentVersionInfo {
	s.DocumentVersion = &v
	return s
}

// SetIsDefaultVersion sets the IsDefaultVersion field's value.
func (s *DocumentVersionInfo) SetIsDefaultVersion(v bool) *DocumentVersionInfo {
	s.IsDefaultVersion = &v
	return s
}

// SetName sets the Name field's value.
func (s *DocumentVersionInfo) SetName(v string) *DocumentVersionInfo {
	s.Name = &v
	return s
}

// 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.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/EffectivePatch
type EffectivePatch struct {
	_ struct{} `type:"structure"`

	// 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.
	Patch *Patch `type:"structure"`

	// 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.
	PatchStatus *PatchStatus `type:"structure"`
}

// String returns the string representation
func (s EffectivePatch) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s EffectivePatch) GoString() string {
	return s.String()
}

// SetPatch sets the Patch field's value.
func (s *EffectivePatch) SetPatch(v *Patch) *EffectivePatch {
	s.Patch = v
	return s
}

// SetPatchStatus sets the PatchStatus field's value.
func (s *EffectivePatch) SetPatchStatus(v *PatchStatus) *EffectivePatch {
	s.PatchStatus = v
	return s
}

// Describes a failed association.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/FailedCreateAssociation
type FailedCreateAssociation struct {
	_ struct{} `type:"structure"`

	// The association.
	Entry *CreateAssociationBatchRequestEntry `type:"structure"`

	// The source of the failure.
	Fault *string `type:"string" enum:"Fault"`

	// A description of the failure.
	Message *string `type:"string"`
}

// String returns the string representation
func (s FailedCreateAssociation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s FailedCreateAssociation) GoString() string {
	return s.String()
}

// SetEntry sets the Entry field's value.
func (s *FailedCreateAssociation) SetEntry(v *CreateAssociationBatchRequestEntry) *FailedCreateAssociation {
	s.Entry = v
	return s
}

// SetFault sets the Fault field's value.
func (s *FailedCreateAssociation) SetFault(v string) *FailedCreateAssociation {
	s.Fault = &v
	return s
}

// SetMessage sets the Message field's value.
func (s *FailedCreateAssociation) SetMessage(v string) *FailedCreateAssociation {
	s.Message = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetAutomationExecutionRequest
type GetAutomationExecutionInput struct {
	_ struct{} `type:"structure"`

	// 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.
	//
	// AutomationExecutionId is a required field
	AutomationExecutionId *string `min:"36" type:"string" required:"true"`
}

// String returns the string representation
func (s GetAutomationExecutionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetAutomationExecutionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetAutomationExecutionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetAutomationExecutionInput"}
	if s.AutomationExecutionId == nil {
		invalidParams.Add(request.NewErrParamRequired("AutomationExecutionId"))
	}
	if s.AutomationExecutionId != nil && len(*s.AutomationExecutionId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("AutomationExecutionId", 36))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAutomationExecutionId sets the AutomationExecutionId field's value.
func (s *GetAutomationExecutionInput) SetAutomationExecutionId(v string) *GetAutomationExecutionInput {
	s.AutomationExecutionId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetAutomationExecutionResult
type GetAutomationExecutionOutput struct {
	_ struct{} `type:"structure"`

	// Detailed information about the current state of an automation execution.
	AutomationExecution *AutomationExecution `type:"structure"`
}

// String returns the string representation
func (s GetAutomationExecutionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetAutomationExecutionOutput) GoString() string {
	return s.String()
}

// SetAutomationExecution sets the AutomationExecution field's value.
func (s *GetAutomationExecutionOutput) SetAutomationExecution(v *AutomationExecution) *GetAutomationExecutionOutput {
	s.AutomationExecution = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetCommandInvocationRequest
type GetCommandInvocationInput struct {
	_ struct{} `type:"structure"`

	// (Required) The parent command ID of the invocation plugin.
	//
	// CommandId is a required field
	CommandId *string `min:"36" type:"string" required:"true"`

	// (Required) The ID of the managed instance targeted by the command. A managed
	// instance can be an Amazon EC2 instance or an instance in your hybrid environment
	// that is configured for Systems Manager.
	//
	// InstanceId is a required field
	InstanceId *string `type:"string" required:"true"`

	// (Optional) The name of the plugin for which you want detailed results. If
	// the SSM document contains only one plugin, the name can be omitted and the
	// details will be returned.
	PluginName *string `min:"4" type:"string"`
}

// String returns the string representation
func (s GetCommandInvocationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetCommandInvocationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetCommandInvocationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetCommandInvocationInput"}
	if s.CommandId == nil {
		invalidParams.Add(request.NewErrParamRequired("CommandId"))
	}
	if s.CommandId != nil && len(*s.CommandId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("CommandId", 36))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.PluginName != nil && len(*s.PluginName) < 4 {
		invalidParams.Add(request.NewErrParamMinLen("PluginName", 4))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCommandId sets the CommandId field's value.
func (s *GetCommandInvocationInput) SetCommandId(v string) *GetCommandInvocationInput {
	s.CommandId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *GetCommandInvocationInput) SetInstanceId(v string) *GetCommandInvocationInput {
	s.InstanceId = &v
	return s
}

// SetPluginName sets the PluginName field's value.
func (s *GetCommandInvocationInput) SetPluginName(v string) *GetCommandInvocationInput {
	s.PluginName = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetCommandInvocationResult
type GetCommandInvocationOutput struct {
	_ struct{} `type:"structure"`

	// The parent command ID of the invocation plugin.
	CommandId *string `min:"36" type:"string"`

	// The comment text for the command.
	Comment *string `type:"string"`

	// The name of the SSM document that was executed. For example, AWS-RunShellScript
	// is an SSM document.
	DocumentName *string `type:"string"`

	// Duration since ExecutionStartDateTime.
	ExecutionElapsedTime *string `type:"string"`

	// The date and time the plugin was finished executing. Date and time are written
	// in ISO 8601 format. For example, August 28, 2016 is represented as 2016-08-28.
	// If the plugin has not started to execute, the string is empty.
	ExecutionEndDateTime *string `type:"string"`

	// The date and time the plugin started executing. Date and time are written
	// in ISO 8601 format. For example, August 28, 2016 is represented as 2016-08-28.
	// If the plugin has not started to execute, the string is empty.
	ExecutionStartDateTime *string `type:"string"`

	// The ID of the managed instance targeted by the command. A managed instance
	// can be an Amazon EC2 instance or an instance in your hybrid environment that
	// is configured for Systems Manager.
	InstanceId *string `type:"string"`

	// The name of the plugin for which you want detailed results. For example,
	// aws:RunShellScript is a plugin.
	PluginName *string `min:"4" type:"string"`

	// The error level response code for the plugin script. If the response code
	// is -1, then the command has not started executing on the instance, or it
	// was not received by the instance.
	ResponseCode *int64 `type:"integer"`

	// The first 8,000 characters written by the plugin to stderr. If the command
	// has not finished executing, then this string is empty.
	StandardErrorContent *string `type:"string"`

	// The URL for the complete text written by the plugin to stderr. If the command
	// has not finished executing, then this string is empty.
	StandardErrorUrl *string `type:"string"`

	// The first 24,000 characters written by the plugin to stdout. If the command
	// has not finished executing, if ExecutionStatus is neither Succeeded nor Failed,
	// then this string is empty.
	StandardOutputContent *string `type:"string"`

	// The URL for the complete text written by the plugin to stdout in Amazon S3.
	// If an Amazon S3 bucket was not specified, then this string is empty.
	StandardOutputUrl *string `type:"string"`

	// The status of the parent command for this invocation. This status can be
	// different than StatusDetails.
	Status *string `type:"string" enum:"CommandInvocationStatus"`

	// 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 Monitor
	// Commands (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitor-commands.html)
	// (Linux) or Monitor Commands (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/monitor-commands.html)
	// (Windows). StatusDetails can be one of the following values:
	//
	//    * Pending – The command has not been sent to the instance.
	//
	//    * In Progress – The command has been sent to the instance but has not
	//    reached a terminal state.
	//
	//    * 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, the instance was stopped, etc. The system will try
	//    to deliver the command again.
	//
	//    * Success – The command or plugin was executed successfully. This is a
	//    terminal state.
	//
	//    * 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’s MaxErrors limit, but they do contribute to whether the
	//    parent command status is Success or Incomplete. This is a terminal state.
	//
	//    * Execution Timed Out – The command started to execute 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.
	//
	//    * Failed – The command wasn't executed 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.
	//
	//    * Canceled – The command was terminated before it was completed. This
	//    is a terminal state.
	//
	//    * Undeliverable – The command can't be delivered to the instance. The
	//    instance might not exist or might not be responding. Undeliverable invocations
	//    don't count against the parent command’s MaxErrors limit and don't contribute
	//    to whether the parent command status is Success or Incomplete. This is
	//    a terminal state.
	//
	//    * Terminated – The parent command exceeded its MaxErrors limit and subsequent
	//    command invocations were canceled by the system. This is a terminal state.
	StatusDetails *string `type:"string"`
}

// String returns the string representation
func (s GetCommandInvocationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetCommandInvocationOutput) GoString() string {
	return s.String()
}

// SetCommandId sets the CommandId field's value.
func (s *GetCommandInvocationOutput) SetCommandId(v string) *GetCommandInvocationOutput {
	s.CommandId = &v
	return s
}

// SetComment sets the Comment field's value.
func (s *GetCommandInvocationOutput) SetComment(v string) *GetCommandInvocationOutput {
	s.Comment = &v
	return s
}

// SetDocumentName sets the DocumentName field's value.
func (s *GetCommandInvocationOutput) SetDocumentName(v string) *GetCommandInvocationOutput {
	s.DocumentName = &v
	return s
}

// SetExecutionElapsedTime sets the ExecutionElapsedTime field's value.
func (s *GetCommandInvocationOutput) SetExecutionElapsedTime(v string) *GetCommandInvocationOutput {
	s.ExecutionElapsedTime = &v
	return s
}

// SetExecutionEndDateTime sets the ExecutionEndDateTime field's value.
func (s *GetCommandInvocationOutput) SetExecutionEndDateTime(v string) *GetCommandInvocationOutput {
	s.ExecutionEndDateTime = &v
	return s
}

// SetExecutionStartDateTime sets the ExecutionStartDateTime field's value.
func (s *GetCommandInvocationOutput) SetExecutionStartDateTime(v string) *GetCommandInvocationOutput {
	s.ExecutionStartDateTime = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *GetCommandInvocationOutput) SetInstanceId(v string) *GetCommandInvocationOutput {
	s.InstanceId = &v
	return s
}

// SetPluginName sets the PluginName field's value.
func (s *GetCommandInvocationOutput) SetPluginName(v string) *GetCommandInvocationOutput {
	s.PluginName = &v
	return s
}

// SetResponseCode sets the ResponseCode field's value.
func (s *GetCommandInvocationOutput) SetResponseCode(v int64) *GetCommandInvocationOutput {
	s.ResponseCode = &v
	return s
}

// SetStandardErrorContent sets the StandardErrorContent field's value.
func (s *GetCommandInvocationOutput) SetStandardErrorContent(v string) *GetCommandInvocationOutput {
	s.StandardErrorContent = &v
	return s
}

// SetStandardErrorUrl sets the StandardErrorUrl field's value.
func (s *GetCommandInvocationOutput) SetStandardErrorUrl(v string) *GetCommandInvocationOutput {
	s.StandardErrorUrl = &v
	return s
}

// SetStandardOutputContent sets the StandardOutputContent field's value.
func (s *GetCommandInvocationOutput) SetStandardOutputContent(v string) *GetCommandInvocationOutput {
	s.StandardOutputContent = &v
	return s
}

// SetStandardOutputUrl sets the StandardOutputUrl field's value.
func (s *GetCommandInvocationOutput) SetStandardOutputUrl(v string) *GetCommandInvocationOutput {
	s.StandardOutputUrl = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetCommandInvocationOutput) SetStatus(v string) *GetCommandInvocationOutput {
	s.Status = &v
	return s
}

// SetStatusDetails sets the StatusDetails field's value.
func (s *GetCommandInvocationOutput) SetStatusDetails(v string) *GetCommandInvocationOutput {
	s.StatusDetails = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetDefaultPatchBaselineRequest
type GetDefaultPatchBaselineInput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation
func (s GetDefaultPatchBaselineInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetDefaultPatchBaselineInput) GoString() string {
	return s.String()
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetDefaultPatchBaselineResult
type GetDefaultPatchBaselineOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the default patch baseline.
	BaselineId *string `min:"20" type:"string"`
}

// String returns the string representation
func (s GetDefaultPatchBaselineOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetDefaultPatchBaselineOutput) GoString() string {
	return s.String()
}

// SetBaselineId sets the BaselineId field's value.
func (s *GetDefaultPatchBaselineOutput) SetBaselineId(v string) *GetDefaultPatchBaselineOutput {
	s.BaselineId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetDeployablePatchSnapshotForInstanceRequest
type GetDeployablePatchSnapshotForInstanceInput struct {
	_ struct{} `type:"structure"`

	// The ID of the instance for which the appropriate patch snapshot should be
	// retrieved.
	//
	// InstanceId is a required field
	InstanceId *string `type:"string" required:"true"`

	// The user-defined snapshot ID.
	//
	// SnapshotId is a required field
	SnapshotId *string `min:"36" type:"string" required:"true"`
}

// String returns the string representation
func (s GetDeployablePatchSnapshotForInstanceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetDeployablePatchSnapshotForInstanceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetDeployablePatchSnapshotForInstanceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetDeployablePatchSnapshotForInstanceInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.SnapshotId == nil {
		invalidParams.Add(request.NewErrParamRequired("SnapshotId"))
	}
	if s.SnapshotId != nil && len(*s.SnapshotId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("SnapshotId", 36))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *GetDeployablePatchSnapshotForInstanceInput) SetInstanceId(v string) *GetDeployablePatchSnapshotForInstanceInput {
	s.InstanceId = &v
	return s
}

// SetSnapshotId sets the SnapshotId field's value.
func (s *GetDeployablePatchSnapshotForInstanceInput) SetSnapshotId(v string) *GetDeployablePatchSnapshotForInstanceInput {
	s.SnapshotId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetDeployablePatchSnapshotForInstanceResult
type GetDeployablePatchSnapshotForInstanceOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the instance.
	InstanceId *string `type:"string"`

	// A pre-signed Amazon S3 URL that can be used to download the patch snapshot.
	SnapshotDownloadUrl *string `type:"string"`

	// The user-defined snapshot ID.
	SnapshotId *string `min:"36" type:"string"`
}

// String returns the string representation
func (s GetDeployablePatchSnapshotForInstanceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetDeployablePatchSnapshotForInstanceOutput) GoString() string {
	return s.String()
}

// SetInstanceId sets the InstanceId field's value.
func (s *GetDeployablePatchSnapshotForInstanceOutput) SetInstanceId(v string) *GetDeployablePatchSnapshotForInstanceOutput {
	s.InstanceId = &v
	return s
}

// SetSnapshotDownloadUrl sets the SnapshotDownloadUrl field's value.
func (s *GetDeployablePatchSnapshotForInstanceOutput) SetSnapshotDownloadUrl(v string) *GetDeployablePatchSnapshotForInstanceOutput {
	s.SnapshotDownloadUrl = &v
	return s
}

// SetSnapshotId sets the SnapshotId field's value.
func (s *GetDeployablePatchSnapshotForInstanceOutput) SetSnapshotId(v string) *GetDeployablePatchSnapshotForInstanceOutput {
	s.SnapshotId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetDocumentRequest
type GetDocumentInput struct {
	_ struct{} `type:"structure"`

	// The document version for which you want information.
	DocumentVersion *string `type:"string"`

	// The name of the SSM document.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`
}

// String returns the string representation
func (s GetDocumentInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetDocumentInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetDocumentInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetDocumentInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDocumentVersion sets the DocumentVersion field's value.
func (s *GetDocumentInput) SetDocumentVersion(v string) *GetDocumentInput {
	s.DocumentVersion = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetDocumentInput) SetName(v string) *GetDocumentInput {
	s.Name = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetDocumentResult
type GetDocumentOutput struct {
	_ struct{} `type:"structure"`

	// The contents of the SSM document.
	Content *string `min:"1" type:"string"`

	// The document type.
	DocumentType *string `type:"string" enum:"DocumentType"`

	// The document version.
	DocumentVersion *string `type:"string"`

	// The name of the SSM document.
	Name *string `type:"string"`
}

// String returns the string representation
func (s GetDocumentOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetDocumentOutput) GoString() string {
	return s.String()
}

// SetContent sets the Content field's value.
func (s *GetDocumentOutput) SetContent(v string) *GetDocumentOutput {
	s.Content = &v
	return s
}

// SetDocumentType sets the DocumentType field's value.
func (s *GetDocumentOutput) SetDocumentType(v string) *GetDocumentOutput {
	s.DocumentType = &v
	return s
}

// SetDocumentVersion sets the DocumentVersion field's value.
func (s *GetDocumentOutput) SetDocumentVersion(v string) *GetDocumentOutput {
	s.DocumentVersion = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetDocumentOutput) SetName(v string) *GetDocumentOutput {
	s.Name = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetInventoryRequest
type GetInventoryInput struct {
	_ struct{} `type:"structure"`

	// One or more filters. Use a filter to return a more specific list of results.
	Filters []*InventoryFilter `locationNameList:"InventoryFilter" min:"1" type:"list"`

	// 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.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`

	// The list of inventory item types to return.
	ResultAttributes []*ResultAttribute `locationNameList:"ResultAttribute" min:"1" type:"list"`
}

// String returns the string representation
func (s GetInventoryInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetInventoryInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetInventoryInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetInventoryInput"}
	if s.Filters != nil && len(s.Filters) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Filters", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.ResultAttributes != nil && len(s.ResultAttributes) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResultAttributes", 1))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ResultAttributes != nil {
		for i, v := range s.ResultAttributes {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ResultAttributes", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *GetInventoryInput) SetFilters(v []*InventoryFilter) *GetInventoryInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetInventoryInput) SetMaxResults(v int64) *GetInventoryInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetInventoryInput) SetNextToken(v string) *GetInventoryInput {
	s.NextToken = &v
	return s
}

// SetResultAttributes sets the ResultAttributes field's value.
func (s *GetInventoryInput) SetResultAttributes(v []*ResultAttribute) *GetInventoryInput {
	s.ResultAttributes = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetInventoryResult
type GetInventoryOutput struct {
	_ struct{} `type:"structure"`

	// Collection of inventory entities such as a collection of instance inventory.
	Entities []*InventoryResultEntity `locationNameList:"Entity" type:"list"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s GetInventoryOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetInventoryOutput) GoString() string {
	return s.String()
}

// SetEntities sets the Entities field's value.
func (s *GetInventoryOutput) SetEntities(v []*InventoryResultEntity) *GetInventoryOutput {
	s.Entities = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetInventoryOutput) SetNextToken(v string) *GetInventoryOutput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetInventorySchemaRequest
type GetInventorySchemaInput struct {
	_ struct{} `type:"structure"`

	// 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.
	MaxResults *int64 `min:"50" type:"integer"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`

	// The type of inventory item to return.
	TypeName *string `type:"string"`
}

// String returns the string representation
func (s GetInventorySchemaInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetInventorySchemaInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetInventorySchemaInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetInventorySchemaInput"}
	if s.MaxResults != nil && *s.MaxResults < 50 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 50))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetInventorySchemaInput) SetMaxResults(v int64) *GetInventorySchemaInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetInventorySchemaInput) SetNextToken(v string) *GetInventorySchemaInput {
	s.NextToken = &v
	return s
}

// SetTypeName sets the TypeName field's value.
func (s *GetInventorySchemaInput) SetTypeName(v string) *GetInventorySchemaInput {
	s.TypeName = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetInventorySchemaResult
type GetInventorySchemaOutput struct {
	_ struct{} `type:"structure"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`

	// Inventory schemas returned by the request.
	Schemas []*InventoryItemSchema `type:"list"`
}

// String returns the string representation
func (s GetInventorySchemaOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetInventorySchemaOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *GetInventorySchemaOutput) SetNextToken(v string) *GetInventorySchemaOutput {
	s.NextToken = &v
	return s
}

// SetSchemas sets the Schemas field's value.
func (s *GetInventorySchemaOutput) SetSchemas(v []*InventoryItemSchema) *GetInventorySchemaOutput {
	s.Schemas = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetMaintenanceWindowExecutionRequest
type GetMaintenanceWindowExecutionInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Maintenance Window execution that includes the task.
	//
	// WindowExecutionId is a required field
	WindowExecutionId *string `min:"36" type:"string" required:"true"`
}

// String returns the string representation
func (s GetMaintenanceWindowExecutionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetMaintenanceWindowExecutionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetMaintenanceWindowExecutionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetMaintenanceWindowExecutionInput"}
	if s.WindowExecutionId == nil {
		invalidParams.Add(request.NewErrParamRequired("WindowExecutionId"))
	}
	if s.WindowExecutionId != nil && len(*s.WindowExecutionId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("WindowExecutionId", 36))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetWindowExecutionId sets the WindowExecutionId field's value.
func (s *GetMaintenanceWindowExecutionInput) SetWindowExecutionId(v string) *GetMaintenanceWindowExecutionInput {
	s.WindowExecutionId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetMaintenanceWindowExecutionResult
type GetMaintenanceWindowExecutionOutput struct {
	_ struct{} `type:"structure"`

	// The time the Maintenance Window finished executing.
	EndTime *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The time the Maintenance Window started executing.
	StartTime *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The status of the Maintenance Window execution.
	Status *string `type:"string" enum:"MaintenanceWindowExecutionStatus"`

	// The details explaining the Status. Only available for certain status values.
	StatusDetails *string `type:"string"`

	// The ID of the task executions from the Maintenance Window execution.
	TaskIds []*string `type:"list"`

	// The ID of the Maintenance Window execution.
	WindowExecutionId *string `min:"36" type:"string"`
}

// String returns the string representation
func (s GetMaintenanceWindowExecutionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetMaintenanceWindowExecutionOutput) GoString() string {
	return s.String()
}

// SetEndTime sets the EndTime field's value.
func (s *GetMaintenanceWindowExecutionOutput) SetEndTime(v time.Time) *GetMaintenanceWindowExecutionOutput {
	s.EndTime = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *GetMaintenanceWindowExecutionOutput) SetStartTime(v time.Time) *GetMaintenanceWindowExecutionOutput {
	s.StartTime = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetMaintenanceWindowExecutionOutput) SetStatus(v string) *GetMaintenanceWindowExecutionOutput {
	s.Status = &v
	return s
}

// SetStatusDetails sets the StatusDetails field's value.
func (s *GetMaintenanceWindowExecutionOutput) SetStatusDetails(v string) *GetMaintenanceWindowExecutionOutput {
	s.StatusDetails = &v
	return s
}

// SetTaskIds sets the TaskIds field's value.
func (s *GetMaintenanceWindowExecutionOutput) SetTaskIds(v []*string) *GetMaintenanceWindowExecutionOutput {
	s.TaskIds = v
	return s
}

// SetWindowExecutionId sets the WindowExecutionId field's value.
func (s *GetMaintenanceWindowExecutionOutput) SetWindowExecutionId(v string) *GetMaintenanceWindowExecutionOutput {
	s.WindowExecutionId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetMaintenanceWindowExecutionTaskRequest
type GetMaintenanceWindowExecutionTaskInput struct {
	_ struct{} `type:"structure"`

	// The ID of the specific task execution in the Maintenance Window task that
	// should be retrieved.
	//
	// TaskId is a required field
	TaskId *string `min:"36" type:"string" required:"true"`

	// The ID of the Maintenance Window execution that includes the task.
	//
	// WindowExecutionId is a required field
	WindowExecutionId *string `min:"36" type:"string" required:"true"`
}

// String returns the string representation
func (s GetMaintenanceWindowExecutionTaskInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetMaintenanceWindowExecutionTaskInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetMaintenanceWindowExecutionTaskInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetMaintenanceWindowExecutionTaskInput"}
	if s.TaskId == nil {
		invalidParams.Add(request.NewErrParamRequired("TaskId"))
	}
	if s.TaskId != nil && len(*s.TaskId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("TaskId", 36))
	}
	if s.WindowExecutionId == nil {
		invalidParams.Add(request.NewErrParamRequired("WindowExecutionId"))
	}
	if s.WindowExecutionId != nil && len(*s.WindowExecutionId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("WindowExecutionId", 36))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetTaskId sets the TaskId field's value.
func (s *GetMaintenanceWindowExecutionTaskInput) SetTaskId(v string) *GetMaintenanceWindowExecutionTaskInput {
	s.TaskId = &v
	return s
}

// SetWindowExecutionId sets the WindowExecutionId field's value.
func (s *GetMaintenanceWindowExecutionTaskInput) SetWindowExecutionId(v string) *GetMaintenanceWindowExecutionTaskInput {
	s.WindowExecutionId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetMaintenanceWindowExecutionTaskResult
type GetMaintenanceWindowExecutionTaskOutput struct {
	_ struct{} `type:"structure"`

	// The time the task execution completed.
	EndTime *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The defined maximum number of task executions that could be run in parallel.
	MaxConcurrency *string `min:"1" type:"string"`

	// The defined maximum number of task execution errors allowed before scheduling
	// of the task execution would have been stopped.
	MaxErrors *string `min:"1" type:"string"`

	// The priority of the task.
	Priority *int64 `type:"integer"`

	// The role that was assumed when executing the task.
	ServiceRole *string `type:"string"`

	// The time the task execution started.
	StartTime *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The status of the task.
	Status *string `type:"string" enum:"MaintenanceWindowExecutionStatus"`

	// The details explaining the Status. Only available for certain status values.
	StatusDetails *string `type:"string"`

	// The ARN of the executed task.
	TaskArn *string `min:"1" type:"string"`

	// The ID of the specific task execution in the Maintenance Window task that
	// was retrieved.
	TaskExecutionId *string `min:"36" type:"string"`

	// The parameters passed to the task when it was executed. The map has the following
	// format:
	//
	// Key: string, 1 ≤ length ≤ 255
	//
	// Value: an array of strings where each string 1 ≤ length ≤ 255
	TaskParameters []map[string]*MaintenanceWindowTaskParameterValueExpression `type:"list"`

	// The type of task executed.
	Type *string `type:"string" enum:"MaintenanceWindowTaskType"`

	// The ID of the Maintenance Window execution that includes the task.
	WindowExecutionId *string `min:"36" type:"string"`
}

// String returns the string representation
func (s GetMaintenanceWindowExecutionTaskOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetMaintenanceWindowExecutionTaskOutput) GoString() string {
	return s.String()
}

// SetEndTime sets the EndTime field's value.
func (s *GetMaintenanceWindowExecutionTaskOutput) SetEndTime(v time.Time) *GetMaintenanceWindowExecutionTaskOutput {
	s.EndTime = &v
	return s
}

// SetMaxConcurrency sets the MaxConcurrency field's value.
func (s *GetMaintenanceWindowExecutionTaskOutput) SetMaxConcurrency(v string) *GetMaintenanceWindowExecutionTaskOutput {
	s.MaxConcurrency = &v
	return s
}

// SetMaxErrors sets the MaxErrors field's value.
func (s *GetMaintenanceWindowExecutionTaskOutput) SetMaxErrors(v string) *GetMaintenanceWindowExecutionTaskOutput {
	s.MaxErrors = &v
	return s
}

// SetPriority sets the Priority field's value.
func (s *GetMaintenanceWindowExecutionTaskOutput) SetPriority(v int64) *GetMaintenanceWindowExecutionTaskOutput {
	s.Priority = &v
	return s
}

// SetServiceRole sets the ServiceRole field's value.
func (s *GetMaintenanceWindowExecutionTaskOutput) SetServiceRole(v string) *GetMaintenanceWindowExecutionTaskOutput {
	s.ServiceRole = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *GetMaintenanceWindowExecutionTaskOutput) SetStartTime(v time.Time) *GetMaintenanceWindowExecutionTaskOutput {
	s.StartTime = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetMaintenanceWindowExecutionTaskOutput) SetStatus(v string) *GetMaintenanceWindowExecutionTaskOutput {
	s.Status = &v
	return s
}

// SetStatusDetails sets the StatusDetails field's value.
func (s *GetMaintenanceWindowExecutionTaskOutput) SetStatusDetails(v string) *GetMaintenanceWindowExecutionTaskOutput {
	s.StatusDetails = &v
	return s
}

// SetTaskArn sets the TaskArn field's value.
func (s *GetMaintenanceWindowExecutionTaskOutput) SetTaskArn(v string) *GetMaintenanceWindowExecutionTaskOutput {
	s.TaskArn = &v
	return s
}

// SetTaskExecutionId sets the TaskExecutionId field's value.
func (s *GetMaintenanceWindowExecutionTaskOutput) SetTaskExecutionId(v string) *GetMaintenanceWindowExecutionTaskOutput {
	s.TaskExecutionId = &v
	return s
}

// SetTaskParameters sets the TaskParameters field's value.
func (s *GetMaintenanceWindowExecutionTaskOutput) SetTaskParameters(v []map[string]*MaintenanceWindowTaskParameterValueExpression) *GetMaintenanceWindowExecutionTaskOutput {
	s.TaskParameters = v
	return s
}

// SetType sets the Type field's value.
func (s *GetMaintenanceWindowExecutionTaskOutput) SetType(v string) *GetMaintenanceWindowExecutionTaskOutput {
	s.Type = &v
	return s
}

// SetWindowExecutionId sets the WindowExecutionId field's value.
func (s *GetMaintenanceWindowExecutionTaskOutput) SetWindowExecutionId(v string) *GetMaintenanceWindowExecutionTaskOutput {
	s.WindowExecutionId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetMaintenanceWindowRequest
type GetMaintenanceWindowInput struct {
	_ struct{} `type:"structure"`

	// The ID of the desired Maintenance Window.
	//
	// WindowId is a required field
	WindowId *string `min:"20" type:"string" required:"true"`
}

// String returns the string representation
func (s GetMaintenanceWindowInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetMaintenanceWindowInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetMaintenanceWindowInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetMaintenanceWindowInput"}
	if s.WindowId == nil {
		invalidParams.Add(request.NewErrParamRequired("WindowId"))
	}
	if s.WindowId != nil && len(*s.WindowId) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("WindowId", 20))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetWindowId sets the WindowId field's value.
func (s *GetMaintenanceWindowInput) SetWindowId(v string) *GetMaintenanceWindowInput {
	s.WindowId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetMaintenanceWindowResult
type GetMaintenanceWindowOutput struct {
	_ struct{} `type:"structure"`

	// Whether targets must be registered with the Maintenance Window before tasks
	// can be defined for those targets.
	AllowUnassociatedTargets *bool `type:"boolean"`

	// The date the Maintenance Window was created.
	CreatedDate *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The number of hours before the end of the Maintenance Window that Systems
	// Manager stops scheduling new tasks for execution.
	Cutoff *int64 `type:"integer"`

	// The duration of the Maintenance Window in hours.
	Duration *int64 `min:"1" type:"integer"`

	// Whether the Maintenance Windows is enabled.
	Enabled *bool `type:"boolean"`

	// The date the Maintenance Window was last modified.
	ModifiedDate *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The name of the Maintenance Window.
	Name *string `min:"3" type:"string"`

	// The schedule of the Maintenance Window in the form of a cron or rate expression.
	Schedule *string `min:"1" type:"string"`

	// The ID of the created Maintenance Window.
	WindowId *string `min:"20" type:"string"`
}

// String returns the string representation
func (s GetMaintenanceWindowOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetMaintenanceWindowOutput) GoString() string {
	return s.String()
}

// SetAllowUnassociatedTargets sets the AllowUnassociatedTargets field's value.
func (s *GetMaintenanceWindowOutput) SetAllowUnassociatedTargets(v bool) *GetMaintenanceWindowOutput {
	s.AllowUnassociatedTargets = &v
	return s
}

// SetCreatedDate sets the CreatedDate field's value.
func (s *GetMaintenanceWindowOutput) SetCreatedDate(v time.Time) *GetMaintenanceWindowOutput {
	s.CreatedDate = &v
	return s
}

// SetCutoff sets the Cutoff field's value.
func (s *GetMaintenanceWindowOutput) SetCutoff(v int64) *GetMaintenanceWindowOutput {
	s.Cutoff = &v
	return s
}

// SetDuration sets the Duration field's value.
func (s *GetMaintenanceWindowOutput) SetDuration(v int64) *GetMaintenanceWindowOutput {
	s.Duration = &v
	return s
}

// SetEnabled sets the Enabled field's value.
func (s *GetMaintenanceWindowOutput) SetEnabled(v bool) *GetMaintenanceWindowOutput {
	s.Enabled = &v
	return s
}

// SetModifiedDate sets the ModifiedDate field's value.
func (s *GetMaintenanceWindowOutput) SetModifiedDate(v time.Time) *GetMaintenanceWindowOutput {
	s.ModifiedDate = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetMaintenanceWindowOutput) SetName(v string) *GetMaintenanceWindowOutput {
	s.Name = &v
	return s
}

// SetSchedule sets the Schedule field's value.
func (s *GetMaintenanceWindowOutput) SetSchedule(v string) *GetMaintenanceWindowOutput {
	s.Schedule = &v
	return s
}

// SetWindowId sets the WindowId field's value.
func (s *GetMaintenanceWindowOutput) SetWindowId(v string) *GetMaintenanceWindowOutput {
	s.WindowId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetParameterHistoryRequest
type GetParameterHistoryInput struct {
	_ struct{} `type:"structure"`

	// 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.
	MaxResults *int64 `min:"1" type:"integer"`

	// The name of a parameter you want to query.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`

	// Return decrypted values for secure string parameters. This flag is ignored
	// for String and StringList parameter types.
	WithDecryption *bool `type:"boolean"`
}

// String returns the string representation
func (s GetParameterHistoryInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetParameterHistoryInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetParameterHistoryInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetParameterHistoryInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetParameterHistoryInput) SetMaxResults(v int64) *GetParameterHistoryInput {
	s.MaxResults = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetParameterHistoryInput) SetName(v string) *GetParameterHistoryInput {
	s.Name = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetParameterHistoryInput) SetNextToken(v string) *GetParameterHistoryInput {
	s.NextToken = &v
	return s
}

// SetWithDecryption sets the WithDecryption field's value.
func (s *GetParameterHistoryInput) SetWithDecryption(v bool) *GetParameterHistoryInput {
	s.WithDecryption = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetParameterHistoryResult
type GetParameterHistoryOutput struct {
	_ struct{} `type:"structure"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`

	// A list of parameters returned by the request.
	Parameters []*ParameterHistory `type:"list"`
}

// String returns the string representation
func (s GetParameterHistoryOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetParameterHistoryOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *GetParameterHistoryOutput) SetNextToken(v string) *GetParameterHistoryOutput {
	s.NextToken = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *GetParameterHistoryOutput) SetParameters(v []*ParameterHistory) *GetParameterHistoryOutput {
	s.Parameters = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetParametersRequest
type GetParametersInput struct {
	_ struct{} `type:"structure"`

	// Names of the parameters for which you want to query information.
	//
	// Names is a required field
	Names []*string `min:"1" type:"list" required:"true"`

	// Return decrypted secure string value. Return decrypted values for secure
	// string parameters. This flag is ignored for String and StringList parameter
	// types.
	WithDecryption *bool `type:"boolean"`
}

// String returns the string representation
func (s GetParametersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetParametersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetParametersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetParametersInput"}
	if s.Names == nil {
		invalidParams.Add(request.NewErrParamRequired("Names"))
	}
	if s.Names != nil && len(s.Names) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Names", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetNames sets the Names field's value.
func (s *GetParametersInput) SetNames(v []*string) *GetParametersInput {
	s.Names = v
	return s
}

// SetWithDecryption sets the WithDecryption field's value.
func (s *GetParametersInput) SetWithDecryption(v bool) *GetParametersInput {
	s.WithDecryption = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetParametersResult
type GetParametersOutput struct {
	_ struct{} `type:"structure"`

	// A list of parameters that are not formatted correctly or do not run when
	// executed.
	InvalidParameters []*string `min:"1" type:"list"`

	// A list of parameters used by the AWS account.
	Parameters []*Parameter `type:"list"`
}

// String returns the string representation
func (s GetParametersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetParametersOutput) GoString() string {
	return s.String()
}

// SetInvalidParameters sets the InvalidParameters field's value.
func (s *GetParametersOutput) SetInvalidParameters(v []*string) *GetParametersOutput {
	s.InvalidParameters = v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *GetParametersOutput) SetParameters(v []*Parameter) *GetParametersOutput {
	s.Parameters = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetPatchBaselineForPatchGroupRequest
type GetPatchBaselineForPatchGroupInput struct {
	_ struct{} `type:"structure"`

	// The name of the patch group whose patch baseline should be retrieved.
	//
	// PatchGroup is a required field
	PatchGroup *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s GetPatchBaselineForPatchGroupInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetPatchBaselineForPatchGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetPatchBaselineForPatchGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetPatchBaselineForPatchGroupInput"}
	if s.PatchGroup == nil {
		invalidParams.Add(request.NewErrParamRequired("PatchGroup"))
	}
	if s.PatchGroup != nil && len(*s.PatchGroup) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PatchGroup", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPatchGroup sets the PatchGroup field's value.
func (s *GetPatchBaselineForPatchGroupInput) SetPatchGroup(v string) *GetPatchBaselineForPatchGroupInput {
	s.PatchGroup = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetPatchBaselineForPatchGroupResult
type GetPatchBaselineForPatchGroupOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the patch baseline that should be used for the patch group.
	BaselineId *string `min:"20" type:"string"`

	// The name of the patch group.
	PatchGroup *string `min:"1" type:"string"`
}

// String returns the string representation
func (s GetPatchBaselineForPatchGroupOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetPatchBaselineForPatchGroupOutput) GoString() string {
	return s.String()
}

// SetBaselineId sets the BaselineId field's value.
func (s *GetPatchBaselineForPatchGroupOutput) SetBaselineId(v string) *GetPatchBaselineForPatchGroupOutput {
	s.BaselineId = &v
	return s
}

// SetPatchGroup sets the PatchGroup field's value.
func (s *GetPatchBaselineForPatchGroupOutput) SetPatchGroup(v string) *GetPatchBaselineForPatchGroupOutput {
	s.PatchGroup = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetPatchBaselineRequest
type GetPatchBaselineInput struct {
	_ struct{} `type:"structure"`

	// The ID of the patch baseline to retrieve.
	//
	// BaselineId is a required field
	BaselineId *string `min:"20" type:"string" required:"true"`
}

// String returns the string representation
func (s GetPatchBaselineInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetPatchBaselineInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetPatchBaselineInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetPatchBaselineInput"}
	if s.BaselineId == nil {
		invalidParams.Add(request.NewErrParamRequired("BaselineId"))
	}
	if s.BaselineId != nil && len(*s.BaselineId) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("BaselineId", 20))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBaselineId sets the BaselineId field's value.
func (s *GetPatchBaselineInput) SetBaselineId(v string) *GetPatchBaselineInput {
	s.BaselineId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetPatchBaselineResult
type GetPatchBaselineOutput struct {
	_ struct{} `type:"structure"`

	// A set of rules used to include patches in the baseline.
	ApprovalRules *PatchRuleGroup `type:"structure"`

	// A list of explicitly approved patches for the baseline.
	ApprovedPatches []*string `type:"list"`

	// The ID of the retrieved patch baseline.
	BaselineId *string `min:"20" type:"string"`

	// The date the patch baseline was created.
	CreatedDate *time.Time `type:"timestamp" timestampFormat:"unix"`

	// A description of the patch baseline.
	Description *string `min:"1" type:"string"`

	// A set of global filters used to exclude patches from the baseline.
	GlobalFilters *PatchFilterGroup `type:"structure"`

	// The date the patch baseline was last modified.
	ModifiedDate *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The name of the patch baseline.
	Name *string `min:"3" type:"string"`

	// Patch groups included in the patch baseline.
	PatchGroups []*string `type:"list"`

	// A list of explicitly rejected patches for the baseline.
	RejectedPatches []*string `type:"list"`
}

// String returns the string representation
func (s GetPatchBaselineOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s GetPatchBaselineOutput) GoString() string {
	return s.String()
}

// SetApprovalRules sets the ApprovalRules field's value.
func (s *GetPatchBaselineOutput) SetApprovalRules(v *PatchRuleGroup) *GetPatchBaselineOutput {
	s.ApprovalRules = v
	return s
}

// SetApprovedPatches sets the ApprovedPatches field's value.
func (s *GetPatchBaselineOutput) SetApprovedPatches(v []*string) *GetPatchBaselineOutput {
	s.ApprovedPatches = v
	return s
}

// SetBaselineId sets the BaselineId field's value.
func (s *GetPatchBaselineOutput) SetBaselineId(v string) *GetPatchBaselineOutput {
	s.BaselineId = &v
	return s
}

// SetCreatedDate sets the CreatedDate field's value.
func (s *GetPatchBaselineOutput) SetCreatedDate(v time.Time) *GetPatchBaselineOutput {
	s.CreatedDate = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *GetPatchBaselineOutput) SetDescription(v string) *GetPatchBaselineOutput {
	s.Description = &v
	return s
}

// SetGlobalFilters sets the GlobalFilters field's value.
func (s *GetPatchBaselineOutput) SetGlobalFilters(v *PatchFilterGroup) *GetPatchBaselineOutput {
	s.GlobalFilters = v
	return s
}

// SetModifiedDate sets the ModifiedDate field's value.
func (s *GetPatchBaselineOutput) SetModifiedDate(v time.Time) *GetPatchBaselineOutput {
	s.ModifiedDate = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetPatchBaselineOutput) SetName(v string) *GetPatchBaselineOutput {
	s.Name = &v
	return s
}

// SetPatchGroups sets the PatchGroups field's value.
func (s *GetPatchBaselineOutput) SetPatchGroups(v []*string) *GetPatchBaselineOutput {
	s.PatchGroups = v
	return s
}

// SetRejectedPatches sets the RejectedPatches field's value.
func (s *GetPatchBaselineOutput) SetRejectedPatches(v []*string) *GetPatchBaselineOutput {
	s.RejectedPatches = v
	return s
}

// Status information about the aggregated associations.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/InstanceAggregatedAssociationOverview
type InstanceAggregatedAssociationOverview struct {
	_ struct{} `type:"structure"`

	// Detailed status information about the aggregated associations.
	DetailedStatus *string `type:"string"`

	// The number of associations for the instance(s).
	InstanceAssociationStatusAggregatedCount map[string]*int64 `type:"map"`
}

// String returns the string representation
func (s InstanceAggregatedAssociationOverview) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s InstanceAggregatedAssociationOverview) GoString() string {
	return s.String()
}

// SetDetailedStatus sets the DetailedStatus field's value.
func (s *InstanceAggregatedAssociationOverview) SetDetailedStatus(v string) *InstanceAggregatedAssociationOverview {
	s.DetailedStatus = &v
	return s
}

// SetInstanceAssociationStatusAggregatedCount sets the InstanceAssociationStatusAggregatedCount field's value.
func (s *InstanceAggregatedAssociationOverview) SetInstanceAssociationStatusAggregatedCount(v map[string]*int64) *InstanceAggregatedAssociationOverview {
	s.InstanceAssociationStatusAggregatedCount = v
	return s
}

// One or more association documents on the instance.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/InstanceAssociation
type InstanceAssociation struct {
	_ struct{} `type:"structure"`

	// The association ID.
	AssociationId *string `type:"string"`

	// The content of the association document for the instance(s).
	Content *string `min:"1" type:"string"`

	// The instance ID.
	InstanceId *string `type:"string"`
}

// String returns the string representation
func (s InstanceAssociation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s InstanceAssociation) GoString() string {
	return s.String()
}

// SetAssociationId sets the AssociationId field's value.
func (s *InstanceAssociation) SetAssociationId(v string) *InstanceAssociation {
	s.AssociationId = &v
	return s
}

// SetContent sets the Content field's value.
func (s *InstanceAssociation) SetContent(v string) *InstanceAssociation {
	s.Content = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *InstanceAssociation) SetInstanceId(v string) *InstanceAssociation {
	s.InstanceId = &v
	return s
}

// An Amazon S3 bucket where you want to store the results of this request.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/InstanceAssociationOutputLocation
type InstanceAssociationOutputLocation struct {
	_ struct{} `type:"structure"`

	// An Amazon S3 bucket where you want to store the results of this request.
	S3Location *S3OutputLocation `type:"structure"`
}

// String returns the string representation
func (s InstanceAssociationOutputLocation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s InstanceAssociationOutputLocation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *InstanceAssociationOutputLocation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "InstanceAssociationOutputLocation"}
	if s.S3Location != nil {
		if err := s.S3Location.Validate(); err != nil {
			invalidParams.AddNested("S3Location", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetS3Location sets the S3Location field's value.
func (s *InstanceAssociationOutputLocation) SetS3Location(v *S3OutputLocation) *InstanceAssociationOutputLocation {
	s.S3Location = v
	return s
}

// The URL of Amazon S3 bucket where you want to store the results of this request.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/InstanceAssociationOutputUrl
type InstanceAssociationOutputUrl struct {
	_ struct{} `type:"structure"`

	// The URL of Amazon S3 bucket where you want to store the results of this request.
	S3OutputUrl *S3OutputUrl `type:"structure"`
}

// String returns the string representation
func (s InstanceAssociationOutputUrl) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s InstanceAssociationOutputUrl) GoString() string {
	return s.String()
}

// SetS3OutputUrl sets the S3OutputUrl field's value.
func (s *InstanceAssociationOutputUrl) SetS3OutputUrl(v *S3OutputUrl) *InstanceAssociationOutputUrl {
	s.S3OutputUrl = v
	return s
}

// Status information about the instance association.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/InstanceAssociationStatusInfo
type InstanceAssociationStatusInfo struct {
	_ struct{} `type:"structure"`

	// The association ID.
	AssociationId *string `type:"string"`

	// Detailed status information about the instance association.
	DetailedStatus *string `type:"string"`

	// The association document verions.
	DocumentVersion *string `type:"string"`

	// An error code returned by the request to create the association.
	ErrorCode *string `type:"string"`

	// The date the instance association executed.
	ExecutionDate *time.Time `type:"timestamp" timestampFormat:"unix"`

	// Summary information about association execution.
	ExecutionSummary *string `min:"1" type:"string"`

	// The instance ID where the association was created.
	InstanceId *string `type:"string"`

	// The name of the association.
	Name *string `type:"string"`

	// A URL for an Amazon S3 bucket where you want to store the results of this
	// request.
	OutputUrl *InstanceAssociationOutputUrl `type:"structure"`

	// Status information about the instance association.
	Status *string `type:"string"`
}

// String returns the string representation
func (s InstanceAssociationStatusInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s InstanceAssociationStatusInfo) GoString() string {
	return s.String()
}

// SetAssociationId sets the AssociationId field's value.
func (s *InstanceAssociationStatusInfo) SetAssociationId(v string) *InstanceAssociationStatusInfo {
	s.AssociationId = &v
	return s
}

// SetDetailedStatus sets the DetailedStatus field's value.
func (s *InstanceAssociationStatusInfo) SetDetailedStatus(v string) *InstanceAssociationStatusInfo {
	s.DetailedStatus = &v
	return s
}

// SetDocumentVersion sets the DocumentVersion field's value.
func (s *InstanceAssociationStatusInfo) SetDocumentVersion(v string) *InstanceAssociationStatusInfo {
	s.DocumentVersion = &v
	return s
}

// SetErrorCode sets the ErrorCode field's value.
func (s *InstanceAssociationStatusInfo) SetErrorCode(v string) *InstanceAssociationStatusInfo {
	s.ErrorCode = &v
	return s
}

// SetExecutionDate sets the ExecutionDate field's value.
func (s *InstanceAssociationStatusInfo) SetExecutionDate(v time.Time) *InstanceAssociationStatusInfo {
	s.ExecutionDate = &v
	return s
}

// SetExecutionSummary sets the ExecutionSummary field's value.
func (s *InstanceAssociationStatusInfo) SetExecutionSummary(v string) *InstanceAssociationStatusInfo {
	s.ExecutionSummary = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *InstanceAssociationStatusInfo) SetInstanceId(v string) *InstanceAssociationStatusInfo {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *InstanceAssociationStatusInfo) SetName(v string) *InstanceAssociationStatusInfo {
	s.Name = &v
	return s
}

// SetOutputUrl sets the OutputUrl field's value.
func (s *InstanceAssociationStatusInfo) SetOutputUrl(v *InstanceAssociationOutputUrl) *InstanceAssociationStatusInfo {
	s.OutputUrl = v
	return s
}

// SetStatus sets the Status field's value.
func (s *InstanceAssociationStatusInfo) SetStatus(v string) *InstanceAssociationStatusInfo {
	s.Status = &v
	return s
}

// Describes a filter for a specific list of instances.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/InstanceInformation
type InstanceInformation struct {
	_ struct{} `type:"structure"`

	// The activation ID created by Systems Manager when the server or VM was registered.
	ActivationId *string `type:"string"`

	// The version of the SSM agent running on your Linux instance.
	AgentVersion *string `type:"string"`

	// Information about the association.
	AssociationOverview *InstanceAggregatedAssociationOverview `type:"structure"`

	// The status of the association.
	AssociationStatus *string `type:"string"`

	// The fully qualified host name of the managed instance.
	ComputerName *string `min:"1" type:"string"`

	// The IP address of the managed instance.
	IPAddress *string `min:"1" type:"string"`

	// The Amazon Identity and Access Management (IAM) role assigned to EC2 instances
	// or managed instances.
	IamRole *string `type:"string"`

	// The instance ID.
	InstanceId *string `type:"string"`

	// Indicates whether latest version of the SSM agent is running on your instance.
	IsLatestVersion *bool `type:"boolean"`

	// The date the association was last executed.
	LastAssociationExecutionDate *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The date and time when agent last pinged Systems Manager service.
	LastPingDateTime *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The last date the association was successfully run.
	LastSuccessfulAssociationExecutionDate *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The name of the managed instance.
	Name *string `type:"string"`

	// Connection status of the SSM agent.
	PingStatus *string `type:"string" enum:"PingStatus"`

	// The name of the operating system platform running on your instance.
	PlatformName *string `type:"string"`

	// The operating system platform type.
	PlatformType *string `type:"string" enum:"PlatformType"`

	// The version of the OS platform running on your instance.
	PlatformVersion *string `type:"string"`

	// The date the server or VM was registered with AWS as a managed instance.
	RegistrationDate *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The type of instance. Instances are either EC2 instances or managed instances.
	ResourceType *string `type:"string" enum:"ResourceType"`
}

// String returns the string representation
func (s InstanceInformation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s InstanceInformation) GoString() string {
	return s.String()
}

// SetActivationId sets the ActivationId field's value.
func (s *InstanceInformation) SetActivationId(v string) *InstanceInformation {
	s.ActivationId = &v
	return s
}

// SetAgentVersion sets the AgentVersion field's value.
func (s *InstanceInformation) SetAgentVersion(v string) *InstanceInformation {
	s.AgentVersion = &v
	return s
}

// SetAssociationOverview sets the AssociationOverview field's value.
func (s *InstanceInformation) SetAssociationOverview(v *InstanceAggregatedAssociationOverview) *InstanceInformation {
	s.AssociationOverview = v
	return s
}

// SetAssociationStatus sets the AssociationStatus field's value.
func (s *InstanceInformation) SetAssociationStatus(v string) *InstanceInformation {
	s.AssociationStatus = &v
	return s
}

// SetComputerName sets the ComputerName field's value.
func (s *InstanceInformation) SetComputerName(v string) *InstanceInformation {
	s.ComputerName = &v
	return s
}

// SetIPAddress sets the IPAddress field's value.
func (s *InstanceInformation) SetIPAddress(v string) *InstanceInformation {
	s.IPAddress = &v
	return s
}

// SetIamRole sets the IamRole field's value.
func (s *InstanceInformation) SetIamRole(v string) *InstanceInformation {
	s.IamRole = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *InstanceInformation) SetInstanceId(v string) *InstanceInformation {
	s.InstanceId = &v
	return s
}

// SetIsLatestVersion sets the IsLatestVersion field's value.
func (s *InstanceInformation) SetIsLatestVersion(v bool) *InstanceInformation {
	s.IsLatestVersion = &v
	return s
}

// SetLastAssociationExecutionDate sets the LastAssociationExecutionDate field's value.
func (s *InstanceInformation) SetLastAssociationExecutionDate(v time.Time) *InstanceInformation {
	s.LastAssociationExecutionDate = &v
	return s
}

// SetLastPingDateTime sets the LastPingDateTime field's value.
func (s *InstanceInformation) SetLastPingDateTime(v time.Time) *InstanceInformation {
	s.LastPingDateTime = &v
	return s
}

// SetLastSuccessfulAssociationExecutionDate sets the LastSuccessfulAssociationExecutionDate field's value.
func (s *InstanceInformation) SetLastSuccessfulAssociationExecutionDate(v time.Time) *InstanceInformation {
	s.LastSuccessfulAssociationExecutionDate = &v
	return s
}

// SetName sets the Name field's value.
func (s *InstanceInformation) SetName(v string) *InstanceInformation {
	s.Name = &v
	return s
}

// SetPingStatus sets the PingStatus field's value.
func (s *InstanceInformation) SetPingStatus(v string) *InstanceInformation {
	s.PingStatus = &v
	return s
}

// SetPlatformName sets the PlatformName field's value.
func (s *InstanceInformation) SetPlatformName(v string) *InstanceInformation {
	s.PlatformName = &v
	return s
}

// SetPlatformType sets the PlatformType field's value.
func (s *InstanceInformation) SetPlatformType(v string) *InstanceInformation {
	s.PlatformType = &v
	return s
}

// SetPlatformVersion sets the PlatformVersion field's value.
func (s *InstanceInformation) SetPlatformVersion(v string) *InstanceInformation {
	s.PlatformVersion = &v
	return s
}

// SetRegistrationDate sets the RegistrationDate field's value.
func (s *InstanceInformation) SetRegistrationDate(v time.Time) *InstanceInformation {
	s.RegistrationDate = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *InstanceInformation) SetResourceType(v string) *InstanceInformation {
	s.ResourceType = &v
	return s
}

// Describes a filter for a specific list of instances.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/InstanceInformationFilter
type InstanceInformationFilter struct {
	_ struct{} `type:"structure"`

	// The name of the filter.
	//
	// Key is a required field
	Key *string `locationName:"key" type:"string" required:"true" enum:"InstanceInformationFilterKey"`

	// The filter values.
	//
	// ValueSet is a required field
	ValueSet []*string `locationName:"valueSet" locationNameList:"InstanceInformationFilterValue" min:"1" type:"list" required:"true"`
}

// String returns the string representation
func (s InstanceInformationFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s InstanceInformationFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *InstanceInformationFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "InstanceInformationFilter"}
	if s.Key == nil {
		invalidParams.Add(request.NewErrParamRequired("Key"))
	}
	if s.ValueSet == nil {
		invalidParams.Add(request.NewErrParamRequired("ValueSet"))
	}
	if s.ValueSet != nil && len(s.ValueSet) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ValueSet", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetKey sets the Key field's value.
func (s *InstanceInformationFilter) SetKey(v string) *InstanceInformationFilter {
	s.Key = &v
	return s
}

// SetValueSet sets the ValueSet field's value.
func (s *InstanceInformationFilter) SetValueSet(v []*string) *InstanceInformationFilter {
	s.ValueSet = v
	return s
}

// The filters to describe or get information about your managed instances.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/InstanceInformationStringFilter
type InstanceInformationStringFilter struct {
	_ struct{} `type:"structure"`

	// The filter key name to describe your instances. For example:
	//
	// "InstanceIds"|"AgentVersion"|"PingStatus"|"PlatformTypes"|"ActivationIds"|"IamRole"|"ResourceType"|”AssociationStatus”|”Tag
	// Key”
	//
	// Key is a required field
	Key *string `min:"1" type:"string" required:"true"`

	// The filter values.
	//
	// Values is a required field
	Values []*string `locationNameList:"InstanceInformationFilterValue" min:"1" type:"list" required:"true"`
}

// String returns the string representation
func (s InstanceInformationStringFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s InstanceInformationStringFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *InstanceInformationStringFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "InstanceInformationStringFilter"}
	if s.Key == nil {
		invalidParams.Add(request.NewErrParamRequired("Key"))
	}
	if s.Key != nil && len(*s.Key) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
	}
	if s.Values == nil {
		invalidParams.Add(request.NewErrParamRequired("Values"))
	}
	if s.Values != nil && len(s.Values) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Values", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetKey sets the Key field's value.
func (s *InstanceInformationStringFilter) SetKey(v string) *InstanceInformationStringFilter {
	s.Key = &v
	return s
}

// SetValues sets the Values field's value.
func (s *InstanceInformationStringFilter) SetValues(v []*string) *InstanceInformationStringFilter {
	s.Values = v
	return s
}

// 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.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/InstancePatchState
type InstancePatchState struct {
	_ struct{} `type:"structure"`

	// The ID of the patch baseline used to patch the instance.
	//
	// BaselineId is a required field
	BaselineId *string `min:"20" type:"string" required:"true"`

	// The number of patches from the patch baseline that were attempted to be installed
	// during the last patching operation, but failed to install.
	FailedCount *int64 `type:"integer"`

	// The number of patches from the patch baseline that are installed on the instance.
	InstalledCount *int64 `type:"integer"`

	// The number of patches not specified in the patch baseline that are installed
	// on the instance.
	InstalledOtherCount *int64 `type:"integer"`

	// The ID of the managed instance the high-level patch compliance information
	// was collected for.
	//
	// InstanceId is a required field
	InstanceId *string `type:"string" required:"true"`

	// The number of patches from the patch baseline that are applicable for the
	// instance but aren’t currently installed.
	MissingCount *int64 `type:"integer"`

	// The number of patches from the patch baseline that aren’t applicable for
	// the instance and hence aren’t installed on the instance.
	NotApplicableCount *int64 `type:"integer"`

	// The type of patching operation that was performed: SCAN (assess patch compliance
	// state) or INSTALL (install missing patches).
	//
	// Operation is a required field
	Operation *string `type:"string" required:"true" enum:"PatchOperationType"`

	// The time the most recent patching operation completed on the instance.
	//
	// OperationEndTime is a required field
	OperationEndTime *time.Time `type:"timestamp" timestampFormat:"unix" required:"true"`

	// The time the most recent patching operation was started on the instance.
	//
	// OperationStartTime is a required field
	OperationStartTime *time.Time `type:"timestamp" timestampFormat:"unix" required:"true"`

	// Placeholder information, this field will always be empty in the current release
	// of the service.
	OwnerInformation *string `min:"1" type:"string"`

	// The name of the patch group the managed instance belongs to.
	//
	// PatchGroup is a required field
	PatchGroup *string `min:"1" type:"string" required:"true"`

	// The ID of the patch baseline snapshot used during the patching operation
	// when this compliance data was collected.
	SnapshotId *string `min:"36" type:"string"`
}

// String returns the string representation
func (s InstancePatchState) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s InstancePatchState) GoString() string {
	return s.String()
}

// SetBaselineId sets the BaselineId field's value.
func (s *InstancePatchState) SetBaselineId(v string) *InstancePatchState {
	s.BaselineId = &v
	return s
}

// SetFailedCount sets the FailedCount field's value.
func (s *InstancePatchState) SetFailedCount(v int64) *InstancePatchState {
	s.FailedCount = &v
	return s
}

// SetInstalledCount sets the InstalledCount field's value.
func (s *InstancePatchState) SetInstalledCount(v int64) *InstancePatchState {
	s.InstalledCount = &v
	return s
}

// SetInstalledOtherCount sets the InstalledOtherCount field's value.
func (s *InstancePatchState) SetInstalledOtherCount(v int64) *InstancePatchState {
	s.InstalledOtherCount = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *InstancePatchState) SetInstanceId(v string) *InstancePatchState {
	s.InstanceId = &v
	return s
}

// SetMissingCount sets the MissingCount field's value.
func (s *InstancePatchState) SetMissingCount(v int64) *InstancePatchState {
	s.MissingCount = &v
	return s
}

// SetNotApplicableCount sets the NotApplicableCount field's value.
func (s *InstancePatchState) SetNotApplicableCount(v int64) *InstancePatchState {
	s.NotApplicableCount = &v
	return s
}

// SetOperation sets the Operation field's value.
func (s *InstancePatchState) SetOperation(v string) *InstancePatchState {
	s.Operation = &v
	return s
}

// SetOperationEndTime sets the OperationEndTime field's value.
func (s *InstancePatchState) SetOperationEndTime(v time.Time) *InstancePatchState {
	s.OperationEndTime = &v
	return s
}

// SetOperationStartTime sets the OperationStartTime field's value.
func (s *InstancePatchState) SetOperationStartTime(v time.Time) *InstancePatchState {
	s.OperationStartTime = &v
	return s
}

// SetOwnerInformation sets the OwnerInformation field's value.
func (s *InstancePatchState) SetOwnerInformation(v string) *InstancePatchState {
	s.OwnerInformation = &v
	return s
}

// SetPatchGroup sets the PatchGroup field's value.
func (s *InstancePatchState) SetPatchGroup(v string) *InstancePatchState {
	s.PatchGroup = &v
	return s
}

// SetSnapshotId sets the SnapshotId field's value.
func (s *InstancePatchState) SetSnapshotId(v string) *InstancePatchState {
	s.SnapshotId = &v
	return s
}

// Defines a filter used in DescribeInstancePatchStatesForPatchGroup used to
// scope down the information returned by the API.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/InstancePatchStateFilter
type InstancePatchStateFilter struct {
	_ struct{} `type:"structure"`

	// The key for the filter. Supported values are FailedCount, InstalledCount,
	// InstalledOtherCount, MissingCount and NotApplicableCount.
	//
	// Key is a required field
	Key *string `min:"1" type:"string" required:"true"`

	// The type of comparison that should be performed for the value: Equal, NotEqual,
	// LessThan or GreaterThan.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"InstancePatchStateOperatorType"`

	// The value for the filter, must be an integer greater than or equal to 0.
	//
	// Values is a required field
	Values []*string `min:"1" type:"list" required:"true"`
}

// String returns the string representation
func (s InstancePatchStateFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s InstancePatchStateFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *InstancePatchStateFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "InstancePatchStateFilter"}
	if s.Key == nil {
		invalidParams.Add(request.NewErrParamRequired("Key"))
	}
	if s.Key != nil && len(*s.Key) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
	}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}
	if s.Values == nil {
		invalidParams.Add(request.NewErrParamRequired("Values"))
	}
	if s.Values != nil && len(s.Values) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Values", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetKey sets the Key field's value.
func (s *InstancePatchStateFilter) SetKey(v string) *InstancePatchStateFilter {
	s.Key = &v
	return s
}

// SetType sets the Type field's value.
func (s *InstancePatchStateFilter) SetType(v string) *InstancePatchStateFilter {
	s.Type = &v
	return s
}

// SetValues sets the Values field's value.
func (s *InstancePatchStateFilter) SetValues(v []*string) *InstancePatchStateFilter {
	s.Values = v
	return s
}

// One or more filters. Use a filter to return a more specific list of results.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/InventoryFilter
type InventoryFilter struct {
	_ struct{} `type:"structure"`

	// The name of the filter key.
	//
	// Key is a required field
	Key *string `min:"1" type:"string" required:"true"`

	// The type of filter. Valid values include the following: "Equal"|"NotEqual"|"BeginWith"|"LessThan"|"GreaterThan"
	Type *string `type:"string" enum:"InventoryQueryOperatorType"`

	// Inventory filter values. Example: inventory filter where instance IDs are
	// specified as values Key=AWS:InstanceInformation.InstanceId,Values= i-a12b3c4d5e6g,
	// i-1a2b3c4d5e6,Type=Equal
	//
	// Values is a required field
	Values []*string `locationNameList:"FilterValue" min:"1" type:"list" required:"true"`
}

// String returns the string representation
func (s InventoryFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s InventoryFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *InventoryFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "InventoryFilter"}
	if s.Key == nil {
		invalidParams.Add(request.NewErrParamRequired("Key"))
	}
	if s.Key != nil && len(*s.Key) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
	}
	if s.Values == nil {
		invalidParams.Add(request.NewErrParamRequired("Values"))
	}
	if s.Values != nil && len(s.Values) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Values", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetKey sets the Key field's value.
func (s *InventoryFilter) SetKey(v string) *InventoryFilter {
	s.Key = &v
	return s
}

// SetType sets the Type field's value.
func (s *InventoryFilter) SetType(v string) *InventoryFilter {
	s.Type = &v
	return s
}

// SetValues sets the Values field's value.
func (s *InventoryFilter) SetValues(v []*string) *InventoryFilter {
	s.Values = v
	return s
}

// Information collected from managed instances based on your inventory policy
// document
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/InventoryItem
type InventoryItem struct {
	_ struct{} `type:"structure"`

	// The time the inventory information was collected.
	//
	// CaptureTime is a required field
	CaptureTime *string `type:"string" required:"true"`

	// The inventory data of the inventory type.
	Content []map[string]*string `type:"list"`

	// 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.
	ContentHash *string `type:"string"`

	// The schema version for the inventory item.
	//
	// SchemaVersion is a required field
	SchemaVersion *string `type:"string" required:"true"`

	// 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.
	//
	// TypeName is a required field
	TypeName *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s InventoryItem) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s InventoryItem) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *InventoryItem) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "InventoryItem"}
	if s.CaptureTime == nil {
		invalidParams.Add(request.NewErrParamRequired("CaptureTime"))
	}
	if s.SchemaVersion == nil {
		invalidParams.Add(request.NewErrParamRequired("SchemaVersion"))
	}
	if s.TypeName == nil {
		invalidParams.Add(request.NewErrParamRequired("TypeName"))
	}
	if s.TypeName != nil && len(*s.TypeName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TypeName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCaptureTime sets the CaptureTime field's value.
func (s *InventoryItem) SetCaptureTime(v string) *InventoryItem {
	s.CaptureTime = &v
	return s
}

// SetContent sets the Content field's value.
func (s *InventoryItem) SetContent(v []map[string]*string) *InventoryItem {
	s.Content = v
	return s
}

// SetContentHash sets the ContentHash field's value.
func (s *InventoryItem) SetContentHash(v string) *InventoryItem {
	s.ContentHash = &v
	return s
}

// SetSchemaVersion sets the SchemaVersion field's value.
func (s *InventoryItem) SetSchemaVersion(v string) *InventoryItem {
	s.SchemaVersion = &v
	return s
}

// SetTypeName sets the TypeName field's value.
func (s *InventoryItem) SetTypeName(v string) *InventoryItem {
	s.TypeName = &v
	return s
}

// Attributes are the entries within the inventory item content. It contains
// name and value.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/InventoryItemAttribute
type InventoryItemAttribute struct {
	_ struct{} `type:"structure"`

	// The data type of the inventory item attribute.
	//
	// DataType is a required field
	DataType *string `type:"string" required:"true" enum:"InventoryAttributeDataType"`

	// Name of the inventory item attribute.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`
}

// String returns the string representation
func (s InventoryItemAttribute) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s InventoryItemAttribute) GoString() string {
	return s.String()
}

// SetDataType sets the DataType field's value.
func (s *InventoryItemAttribute) SetDataType(v string) *InventoryItemAttribute {
	s.DataType = &v
	return s
}

// SetName sets the Name field's value.
func (s *InventoryItemAttribute) SetName(v string) *InventoryItemAttribute {
	s.Name = &v
	return s
}

// The inventory item schema definition. Users can use this to compose inventory
// query filters.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/InventoryItemSchema
type InventoryItemSchema struct {
	_ struct{} `type:"structure"`

	// The schema attributes for inventory. This contains data type and attribute
	// name.
	//
	// Attributes is a required field
	Attributes []*InventoryItemAttribute `locationNameList:"Attribute" min:"1" type:"list" required:"true"`

	// 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.
	//
	// TypeName is a required field
	TypeName *string `min:"1" type:"string" required:"true"`

	// The schema version for the inventory item.
	Version *string `type:"string"`
}

// String returns the string representation
func (s InventoryItemSchema) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s InventoryItemSchema) GoString() string {
	return s.String()
}

// SetAttributes sets the Attributes field's value.
func (s *InventoryItemSchema) SetAttributes(v []*InventoryItemAttribute) *InventoryItemSchema {
	s.Attributes = v
	return s
}

// SetTypeName sets the TypeName field's value.
func (s *InventoryItemSchema) SetTypeName(v string) *InventoryItemSchema {
	s.TypeName = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *InventoryItemSchema) SetVersion(v string) *InventoryItemSchema {
	s.Version = &v
	return s
}

// Inventory query results.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/InventoryResultEntity
type InventoryResultEntity struct {
	_ struct{} `type:"structure"`

	// The data section in the inventory result entity json.
	Data map[string]*InventoryResultItem `type:"map"`

	// 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.
	Id *string `type:"string"`
}

// String returns the string representation
func (s InventoryResultEntity) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s InventoryResultEntity) GoString() string {
	return s.String()
}

// SetData sets the Data field's value.
func (s *InventoryResultEntity) SetData(v map[string]*InventoryResultItem) *InventoryResultEntity {
	s.Data = v
	return s
}

// SetId sets the Id field's value.
func (s *InventoryResultEntity) SetId(v string) *InventoryResultEntity {
	s.Id = &v
	return s
}

// The inventory result item.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/InventoryResultItem
type InventoryResultItem struct {
	_ struct{} `type:"structure"`

	// The time inventory item data was captured.
	CaptureTime *string `type:"string"`

	// Contains all the inventory data of the item type. Results include attribute
	// names and values.
	//
	// Content is a required field
	Content []map[string]*string `type:"list" required:"true"`

	// 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.
	ContentHash *string `type:"string"`

	// The schema version for the inventory result item/
	//
	// SchemaVersion is a required field
	SchemaVersion *string `type:"string" required:"true"`

	// The name of the inventory result item type.
	//
	// TypeName is a required field
	TypeName *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s InventoryResultItem) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s InventoryResultItem) GoString() string {
	return s.String()
}

// SetCaptureTime sets the CaptureTime field's value.
func (s *InventoryResultItem) SetCaptureTime(v string) *InventoryResultItem {
	s.CaptureTime = &v
	return s
}

// SetContent sets the Content field's value.
func (s *InventoryResultItem) SetContent(v []map[string]*string) *InventoryResultItem {
	s.Content = v
	return s
}

// SetContentHash sets the ContentHash field's value.
func (s *InventoryResultItem) SetContentHash(v string) *InventoryResultItem {
	s.ContentHash = &v
	return s
}

// SetSchemaVersion sets the SchemaVersion field's value.
func (s *InventoryResultItem) SetSchemaVersion(v string) *InventoryResultItem {
	s.SchemaVersion = &v
	return s
}

// SetTypeName sets the TypeName field's value.
func (s *InventoryResultItem) SetTypeName(v string) *InventoryResultItem {
	s.TypeName = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListAssociationsRequest
type ListAssociationsInput struct {
	_ struct{} `type:"structure"`

	// One or more filters. Use a filter to return a more specific list of results.
	AssociationFilterList []*AssociationFilter `locationNameList:"AssociationFilter" min:"1" type:"list"`

	// 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.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s ListAssociationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ListAssociationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListAssociationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListAssociationsInput"}
	if s.AssociationFilterList != nil && len(s.AssociationFilterList) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AssociationFilterList", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.AssociationFilterList != nil {
		for i, v := range s.AssociationFilterList {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AssociationFilterList", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssociationFilterList sets the AssociationFilterList field's value.
func (s *ListAssociationsInput) SetAssociationFilterList(v []*AssociationFilter) *ListAssociationsInput {
	s.AssociationFilterList = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListAssociationsInput) SetMaxResults(v int64) *ListAssociationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAssociationsInput) SetNextToken(v string) *ListAssociationsInput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListAssociationsResult
type ListAssociationsOutput struct {
	_ struct{} `type:"structure"`

	// The associations.
	Associations []*Association `locationNameList:"Association" type:"list"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s ListAssociationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ListAssociationsOutput) GoString() string {
	return s.String()
}

// SetAssociations sets the Associations field's value.
func (s *ListAssociationsOutput) SetAssociations(v []*Association) *ListAssociationsOutput {
	s.Associations = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAssociationsOutput) SetNextToken(v string) *ListAssociationsOutput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListCommandInvocationsRequest
type ListCommandInvocationsInput struct {
	_ struct{} `type:"structure"`

	// (Optional) The invocations for a specific command ID.
	CommandId *string `min:"36" type:"string"`

	// (Optional) If set this returns the response of the command executions and
	// any command output. By default this is set to False.
	Details *bool `type:"boolean"`

	// (Optional) One or more filters. Use a filter to return a more specific list
	// of results.
	Filters []*CommandFilter `min:"1" type:"list"`

	// (Optional) The command execution details for a specific instance ID.
	InstanceId *string `type:"string"`

	// (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.
	MaxResults *int64 `min:"1" type:"integer"`

	// (Optional) The token for the next set of items to return. (You received this
	// token from a previous call.)
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s ListCommandInvocationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ListCommandInvocationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListCommandInvocationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListCommandInvocationsInput"}
	if s.CommandId != nil && len(*s.CommandId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("CommandId", 36))
	}
	if s.Filters != nil && len(s.Filters) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Filters", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCommandId sets the CommandId field's value.
func (s *ListCommandInvocationsInput) SetCommandId(v string) *ListCommandInvocationsInput {
	s.CommandId = &v
	return s
}

// SetDetails sets the Details field's value.
func (s *ListCommandInvocationsInput) SetDetails(v bool) *ListCommandInvocationsInput {
	s.Details = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *ListCommandInvocationsInput) SetFilters(v []*CommandFilter) *ListCommandInvocationsInput {
	s.Filters = v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListCommandInvocationsInput) SetInstanceId(v string) *ListCommandInvocationsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListCommandInvocationsInput) SetMaxResults(v int64) *ListCommandInvocationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListCommandInvocationsInput) SetNextToken(v string) *ListCommandInvocationsInput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListCommandInvocationsResult
type ListCommandInvocationsOutput struct {
	_ struct{} `type:"structure"`

	// (Optional) A list of all invocations.
	CommandInvocations []*CommandInvocation `type:"list"`

	// (Optional) The token for the next set of items to return. (You received this
	// token from a previous call.)
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s ListCommandInvocationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ListCommandInvocationsOutput) GoString() string {
	return s.String()
}

// SetCommandInvocations sets the CommandInvocations field's value.
func (s *ListCommandInvocationsOutput) SetCommandInvocations(v []*CommandInvocation) *ListCommandInvocationsOutput {
	s.CommandInvocations = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListCommandInvocationsOutput) SetNextToken(v string) *ListCommandInvocationsOutput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListCommandsRequest
type ListCommandsInput struct {
	_ struct{} `type:"structure"`

	// (Optional) If provided, lists only the specified command.
	CommandId *string `min:"36" type:"string"`

	// (Optional) One or more filters. Use a filter to return a more specific list
	// of results.
	Filters []*CommandFilter `min:"1" type:"list"`

	// (Optional) Lists commands issued against this instance ID.
	InstanceId *string `type:"string"`

	// (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.
	MaxResults *int64 `min:"1" type:"integer"`

	// (Optional) The token for the next set of items to return. (You received this
	// token from a previous call.)
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s ListCommandsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ListCommandsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListCommandsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListCommandsInput"}
	if s.CommandId != nil && len(*s.CommandId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("CommandId", 36))
	}
	if s.Filters != nil && len(s.Filters) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Filters", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCommandId sets the CommandId field's value.
func (s *ListCommandsInput) SetCommandId(v string) *ListCommandsInput {
	s.CommandId = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *ListCommandsInput) SetFilters(v []*CommandFilter) *ListCommandsInput {
	s.Filters = v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListCommandsInput) SetInstanceId(v string) *ListCommandsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListCommandsInput) SetMaxResults(v int64) *ListCommandsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListCommandsInput) SetNextToken(v string) *ListCommandsInput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListCommandsResult
type ListCommandsOutput struct {
	_ struct{} `type:"structure"`

	// (Optional) The list of commands requested by the user.
	Commands []*Command `type:"list"`

	// (Optional) The token for the next set of items to return. (You received this
	// token from a previous call.)
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s ListCommandsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ListCommandsOutput) GoString() string {
	return s.String()
}

// SetCommands sets the Commands field's value.
func (s *ListCommandsOutput) SetCommands(v []*Command) *ListCommandsOutput {
	s.Commands = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListCommandsOutput) SetNextToken(v string) *ListCommandsOutput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListDocumentVersionsRequest
type ListDocumentVersionsInput struct {
	_ struct{} `type:"structure"`

	// 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.
	MaxResults *int64 `min:"1" type:"integer"`

	// The name of the document about which you want version information.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s ListDocumentVersionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ListDocumentVersionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListDocumentVersionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListDocumentVersionsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListDocumentVersionsInput) SetMaxResults(v int64) *ListDocumentVersionsInput {
	s.MaxResults = &v
	return s
}

// SetName sets the Name field's value.
func (s *ListDocumentVersionsInput) SetName(v string) *ListDocumentVersionsInput {
	s.Name = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDocumentVersionsInput) SetNextToken(v string) *ListDocumentVersionsInput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListDocumentVersionsResult
type ListDocumentVersionsOutput struct {
	_ struct{} `type:"structure"`

	// The document versions.
	DocumentVersions []*DocumentVersionInfo `min:"1" type:"list"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s ListDocumentVersionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ListDocumentVersionsOutput) GoString() string {
	return s.String()
}

// SetDocumentVersions sets the DocumentVersions field's value.
func (s *ListDocumentVersionsOutput) SetDocumentVersions(v []*DocumentVersionInfo) *ListDocumentVersionsOutput {
	s.DocumentVersions = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDocumentVersionsOutput) SetNextToken(v string) *ListDocumentVersionsOutput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListDocumentsRequest
type ListDocumentsInput struct {
	_ struct{} `type:"structure"`

	// One or more filters. Use a filter to return a more specific list of results.
	DocumentFilterList []*DocumentFilter `locationNameList:"DocumentFilter" min:"1" type:"list"`

	// 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.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s ListDocumentsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ListDocumentsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListDocumentsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListDocumentsInput"}
	if s.DocumentFilterList != nil && len(s.DocumentFilterList) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DocumentFilterList", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.DocumentFilterList != nil {
		for i, v := range s.DocumentFilterList {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DocumentFilterList", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDocumentFilterList sets the DocumentFilterList field's value.
func (s *ListDocumentsInput) SetDocumentFilterList(v []*DocumentFilter) *ListDocumentsInput {
	s.DocumentFilterList = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListDocumentsInput) SetMaxResults(v int64) *ListDocumentsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDocumentsInput) SetNextToken(v string) *ListDocumentsInput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListDocumentsResult
type ListDocumentsOutput struct {
	_ struct{} `type:"structure"`

	// The names of the SSM documents.
	DocumentIdentifiers []*DocumentIdentifier `locationNameList:"DocumentIdentifier" type:"list"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s ListDocumentsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ListDocumentsOutput) GoString() string {
	return s.String()
}

// SetDocumentIdentifiers sets the DocumentIdentifiers field's value.
func (s *ListDocumentsOutput) SetDocumentIdentifiers(v []*DocumentIdentifier) *ListDocumentsOutput {
	s.DocumentIdentifiers = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDocumentsOutput) SetNextToken(v string) *ListDocumentsOutput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListInventoryEntriesRequest
type ListInventoryEntriesInput struct {
	_ struct{} `type:"structure"`

	// One or more filters. Use a filter to return a more specific list of results.
	Filters []*InventoryFilter `locationNameList:"InventoryFilter" min:"1" type:"list"`

	// The instance ID for which you want inventory information.
	//
	// InstanceId is a required field
	InstanceId *string `type:"string" required:"true"`

	// 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.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of items to return. (You received this token from
	// a previous call.)
	NextToken *string `type:"string"`

	// The type of inventory item for which you want information.
	//
	// TypeName is a required field
	TypeName *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s ListInventoryEntriesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ListInventoryEntriesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListInventoryEntriesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListInventoryEntriesInput"}
	if s.Filters != nil && len(s.Filters) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Filters", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.TypeName == nil {
		invalidParams.Add(request.NewErrParamRequired("TypeName"))
	}
	if s.TypeName != nil && len(*s.TypeName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TypeName", 1))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *ListInventoryEntriesInput) SetFilters(v []*InventoryFilter) *ListInventoryEntriesInput {
	s.Filters = v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListInventoryEntriesInput) SetInstanceId(v string) *ListInventoryEntriesInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListInventoryEntriesInput) SetMaxResults(v int64) *ListInventoryEntriesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListInventoryEntriesInput) SetNextToken(v string) *ListInventoryEntriesInput {
	s.NextToken = &v
	return s
}

// SetTypeName sets the TypeName field's value.
func (s *ListInventoryEntriesInput) SetTypeName(v string) *ListInventoryEntriesInput {
	s.TypeName = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListInventoryEntriesResult
type ListInventoryEntriesOutput struct {
	_ struct{} `type:"structure"`

	// The time that inventory information was collected for the instance(s).
	CaptureTime *string `type:"string"`

	// A list of inventory items on the instance(s).
	Entries []map[string]*string `type:"list"`

	// The instance ID targeted by the request to query inventory information.
	InstanceId *string `type:"string"`

	// The token to use when requesting the next set of items. If there are no additional
	// items to return, the string is empty.
	NextToken *string `type:"string"`

	// The inventory schema version used by the instance(s).
	SchemaVersion *string `type:"string"`

	// The type of inventory item returned by the request.
	TypeName *string `min:"1" type:"string"`
}

// String returns the string representation
func (s ListInventoryEntriesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ListInventoryEntriesOutput) GoString() string {
	return s.String()
}

// SetCaptureTime sets the CaptureTime field's value.
func (s *ListInventoryEntriesOutput) SetCaptureTime(v string) *ListInventoryEntriesOutput {
	s.CaptureTime = &v
	return s
}

// SetEntries sets the Entries field's value.
func (s *ListInventoryEntriesOutput) SetEntries(v []map[string]*string) *ListInventoryEntriesOutput {
	s.Entries = v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListInventoryEntriesOutput) SetInstanceId(v string) *ListInventoryEntriesOutput {
	s.InstanceId = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListInventoryEntriesOutput) SetNextToken(v string) *ListInventoryEntriesOutput {
	s.NextToken = &v
	return s
}

// SetSchemaVersion sets the SchemaVersion field's value.
func (s *ListInventoryEntriesOutput) SetSchemaVersion(v string) *ListInventoryEntriesOutput {
	s.SchemaVersion = &v
	return s
}

// SetTypeName sets the TypeName field's value.
func (s *ListInventoryEntriesOutput) SetTypeName(v string) *ListInventoryEntriesOutput {
	s.TypeName = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListTagsForResourceRequest
type ListTagsForResourceInput struct {
	_ struct{} `type:"structure"`

	// The resource ID for which you want to see a list of tags.
	//
	// ResourceId is a required field
	ResourceId *string `type:"string" required:"true"`

	// Returns a list of tags for a specific resource type.
	//
	// ResourceType is a required field
	ResourceType *string `type:"string" required:"true" enum:"ResourceTypeForTagging"`
}

// String returns the string representation
func (s ListTagsForResourceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ListTagsForResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListTagsForResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"}
	if s.ResourceId == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceId"))
	}
	if s.ResourceType == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceType"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceId sets the ResourceId field's value.
func (s *ListTagsForResourceInput) SetResourceId(v string) *ListTagsForResourceInput {
	s.ResourceId = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *ListTagsForResourceInput) SetResourceType(v string) *ListTagsForResourceInput {
	s.ResourceType = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListTagsForResourceResult
type ListTagsForResourceOutput struct {
	_ struct{} `type:"structure"`

	// A list of tags.
	TagList []*Tag `type:"list"`
}

// String returns the string representation
func (s ListTagsForResourceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ListTagsForResourceOutput) GoString() string {
	return s.String()
}

// SetTagList sets the TagList field's value.
func (s *ListTagsForResourceOutput) SetTagList(v []*Tag) *ListTagsForResourceOutput {
	s.TagList = v
	return s
}

// Information about an Amazon S3 bucket to write instance-level logs to.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/LoggingInfo
type LoggingInfo struct {
	_ struct{} `type:"structure"`

	// The name of an Amazon S3 bucket where execution logs are stored .
	//
	// S3BucketName is a required field
	S3BucketName *string `min:"3" type:"string" required:"true"`

	// (Optional) The Amazon S3 bucket subfolder.
	S3KeyPrefix *string `type:"string"`

	// The region where the Amazon S3 bucket is located.
	//
	// S3Region is a required field
	S3Region *string `min:"3" type:"string" required:"true"`
}

// String returns the string representation
func (s LoggingInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s LoggingInfo) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *LoggingInfo) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "LoggingInfo"}
	if s.S3BucketName == nil {
		invalidParams.Add(request.NewErrParamRequired("S3BucketName"))
	}
	if s.S3BucketName != nil && len(*s.S3BucketName) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("S3BucketName", 3))
	}
	if s.S3Region == nil {
		invalidParams.Add(request.NewErrParamRequired("S3Region"))
	}
	if s.S3Region != nil && len(*s.S3Region) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("S3Region", 3))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetS3BucketName sets the S3BucketName field's value.
func (s *LoggingInfo) SetS3BucketName(v string) *LoggingInfo {
	s.S3BucketName = &v
	return s
}

// SetS3KeyPrefix sets the S3KeyPrefix field's value.
func (s *LoggingInfo) SetS3KeyPrefix(v string) *LoggingInfo {
	s.S3KeyPrefix = &v
	return s
}

// SetS3Region sets the S3Region field's value.
func (s *LoggingInfo) SetS3Region(v string) *LoggingInfo {
	s.S3Region = &v
	return s
}

// Describes the information about an execution of a Maintenance Window.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/MaintenanceWindowExecution
type MaintenanceWindowExecution struct {
	_ struct{} `type:"structure"`

	// The time the execution finished.
	EndTime *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The time the execution started.
	StartTime *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The status of the execution.
	Status *string `type:"string" enum:"MaintenanceWindowExecutionStatus"`

	// The details explaining the Status. Only available for certain status values.
	StatusDetails *string `type:"string"`

	// The ID of the Maintenance Window execution.
	WindowExecutionId *string `min:"36" type:"string"`

	// The ID of the Maintenance Window.
	WindowId *string `min:"20" type:"string"`
}

// String returns the string representation
func (s MaintenanceWindowExecution) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s MaintenanceWindowExecution) GoString() string {
	return s.String()
}

// SetEndTime sets the EndTime field's value.
func (s *MaintenanceWindowExecution) SetEndTime(v time.Time) *MaintenanceWindowExecution {
	s.EndTime = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *MaintenanceWindowExecution) SetStartTime(v time.Time) *MaintenanceWindowExecution {
	s.StartTime = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *MaintenanceWindowExecution) SetStatus(v string) *MaintenanceWindowExecution {
	s.Status = &v
	return s
}

// SetStatusDetails sets the StatusDetails field's value.
func (s *MaintenanceWindowExecution) SetStatusDetails(v string) *MaintenanceWindowExecution {
	s.StatusDetails = &v
	return s
}

// SetWindowExecutionId sets the WindowExecutionId field's value.
func (s *MaintenanceWindowExecution) SetWindowExecutionId(v string) *MaintenanceWindowExecution {
	s.WindowExecutionId = &v
	return s
}

// SetWindowId sets the WindowId field's value.
func (s *MaintenanceWindowExecution) SetWindowId(v string) *MaintenanceWindowExecution {
	s.WindowId = &v
	return s
}

// Information about a task execution performed as part of a Maintenance Window
// execution.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/MaintenanceWindowExecutionTaskIdentity
type MaintenanceWindowExecutionTaskIdentity struct {
	_ struct{} `type:"structure"`

	// The time the task execution finished.
	EndTime *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The time the task execution started.
	StartTime *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The status of the task execution.
	Status *string `type:"string" enum:"MaintenanceWindowExecutionStatus"`

	// The details explaining the status of the task execution. Only available for
	// certain status values.
	StatusDetails *string `type:"string"`

	// The ARN of the executed task.
	TaskArn *string `min:"1" type:"string"`

	// The ID of the specific task execution in the Maintenance Window execution.
	TaskExecutionId *string `min:"36" type:"string"`

	// The type of executed task.
	TaskType *string `type:"string" enum:"MaintenanceWindowTaskType"`

	// The ID of the Maintenance Window execution that ran the task.
	WindowExecutionId *string `min:"36" type:"string"`
}

// String returns the string representation
func (s MaintenanceWindowExecutionTaskIdentity) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s MaintenanceWindowExecutionTaskIdentity) GoString() string {
	return s.String()
}

// SetEndTime sets the EndTime field's value.
func (s *MaintenanceWindowExecutionTaskIdentity) SetEndTime(v time.Time) *MaintenanceWindowExecutionTaskIdentity {
	s.EndTime = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *MaintenanceWindowExecutionTaskIdentity) SetStartTime(v time.Time) *MaintenanceWindowExecutionTaskIdentity {
	s.StartTime = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *MaintenanceWindowExecutionTaskIdentity) SetStatus(v string) *MaintenanceWindowExecutionTaskIdentity {
	s.Status = &v
	return s
}

// SetStatusDetails sets the StatusDetails field's value.
func (s *MaintenanceWindowExecutionTaskIdentity) SetStatusDetails(v string) *MaintenanceWindowExecutionTaskIdentity {
	s.StatusDetails = &v
	return s
}

// SetTaskArn sets the TaskArn field's value.
func (s *MaintenanceWindowExecutionTaskIdentity) SetTaskArn(v string) *MaintenanceWindowExecutionTaskIdentity {
	s.TaskArn = &v
	return s
}

// SetTaskExecutionId sets the TaskExecutionId field's value.
func (s *MaintenanceWindowExecutionTaskIdentity) SetTaskExecutionId(v string) *MaintenanceWindowExecutionTaskIdentity {
	s.TaskExecutionId = &v
	return s
}

// SetTaskType sets the TaskType field's value.
func (s *MaintenanceWindowExecutionTaskIdentity) SetTaskType(v string) *MaintenanceWindowExecutionTaskIdentity {
	s.TaskType = &v
	return s
}

// SetWindowExecutionId sets the WindowExecutionId field's value.
func (s *MaintenanceWindowExecutionTaskIdentity) SetWindowExecutionId(v string) *MaintenanceWindowExecutionTaskIdentity {
	s.WindowExecutionId = &v
	return s
}

// 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.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/MaintenanceWindowExecutionTaskInvocationIdentity
type MaintenanceWindowExecutionTaskInvocationIdentity struct {
	_ struct{} `type:"structure"`

	// The time the invocation finished.
	EndTime *time.Time `type:"timestamp" timestampFormat:"unix"`

	// 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.
	ExecutionId *string `type:"string"`

	// The ID of the task invocation.
	InvocationId *string `min:"36" type:"string"`

	// 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.
	OwnerInformation *string `min:"1" type:"string"`

	// The parameters that were provided for the invocation when it was executed.
	Parameters *string `type:"string"`

	// The time the invocation started.
	StartTime *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The status of the task invocation.
	Status *string `type:"string" enum:"MaintenanceWindowExecutionStatus"`

	// The details explaining the status of the task invocation. Only available
	// for certain Status values.
	StatusDetails *string `type:"string"`

	// The ID of the specific task execution in the Maintenance Window execution.
	TaskExecutionId *string `min:"36" type:"string"`

	// The ID of the Maintenance Window execution that ran the task.
	WindowExecutionId *string `min:"36" type:"string"`

	// The ID of the target definition in this Maintenance Window the invocation
	// was performed for.
	WindowTargetId *string `type:"string"`
}

// String returns the string representation
func (s MaintenanceWindowExecutionTaskInvocationIdentity) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s MaintenanceWindowExecutionTaskInvocationIdentity) GoString() string {
	return s.String()
}

// SetEndTime sets the EndTime field's value.
func (s *MaintenanceWindowExecutionTaskInvocationIdentity) SetEndTime(v time.Time) *MaintenanceWindowExecutionTaskInvocationIdentity {
	s.EndTime = &v
	return s
}

// SetExecutionId sets the ExecutionId field's value.
func (s *MaintenanceWindowExecutionTaskInvocationIdentity) SetExecutionId(v string) *MaintenanceWindowExecutionTaskInvocationIdentity {
	s.ExecutionId = &v
	return s
}

// SetInvocationId sets the InvocationId field's value.
func (s *MaintenanceWindowExecutionTaskInvocationIdentity) SetInvocationId(v string) *MaintenanceWindowExecutionTaskInvocationIdentity {
	s.InvocationId = &v
	return s
}

// SetOwnerInformation sets the OwnerInformation field's value.
func (s *MaintenanceWindowExecutionTaskInvocationIdentity) SetOwnerInformation(v string) *MaintenanceWindowExecutionTaskInvocationIdentity {
	s.OwnerInformation = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *MaintenanceWindowExecutionTaskInvocationIdentity) SetParameters(v string) *MaintenanceWindowExecutionTaskInvocationIdentity {
	s.Parameters = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *MaintenanceWindowExecutionTaskInvocationIdentity) SetStartTime(v time.Time) *MaintenanceWindowExecutionTaskInvocationIdentity {
	s.StartTime = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *MaintenanceWindowExecutionTaskInvocationIdentity) SetStatus(v string) *MaintenanceWindowExecutionTaskInvocationIdentity {
	s.Status = &v
	return s
}

// SetStatusDetails sets the StatusDetails field's value.
func (s *MaintenanceWindowExecutionTaskInvocationIdentity) SetStatusDetails(v string) *MaintenanceWindowExecutionTaskInvocationIdentity {
	s.StatusDetails = &v
	return s
}

// SetTaskExecutionId sets the TaskExecutionId field's value.
func (s *MaintenanceWindowExecutionTaskInvocationIdentity) SetTaskExecutionId(v string) *MaintenanceWindowExecutionTaskInvocationIdentity {
	s.TaskExecutionId = &v
	return s
}

// SetWindowExecutionId sets the WindowExecutionId field's value.
func (s *MaintenanceWindowExecutionTaskInvocationIdentity) SetWindowExecutionId(v string) *MaintenanceWindowExecutionTaskInvocationIdentity {
	s.WindowExecutionId = &v
	return s
}

// SetWindowTargetId sets the WindowTargetId field's value.
func (s *MaintenanceWindowExecutionTaskInvocationIdentity) SetWindowTargetId(v string) *MaintenanceWindowExecutionTaskInvocationIdentity {
	s.WindowTargetId = &v
	return s
}

// Filter used in the request.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/MaintenanceWindowFilter
type MaintenanceWindowFilter struct {
	_ struct{} `type:"structure"`

	// The name of the filter.
	Key *string `min:"1" type:"string"`

	// The filter values.
	Values []*string `type:"list"`
}

// String returns the string representation
func (s MaintenanceWindowFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s MaintenanceWindowFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *MaintenanceWindowFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "MaintenanceWindowFilter"}
	if s.Key != nil && len(*s.Key) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetKey sets the Key field's value.
func (s *MaintenanceWindowFilter) SetKey(v string) *MaintenanceWindowFilter {
	s.Key = &v
	return s
}

// SetValues sets the Values field's value.
func (s *MaintenanceWindowFilter) SetValues(v []*string) *MaintenanceWindowFilter {
	s.Values = v
	return s
}

// Information about the Maintenance Window.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/MaintenanceWindowIdentity
type MaintenanceWindowIdentity struct {
	_ struct{} `type:"structure"`

	// The number of hours before the end of the Maintenance Window that Systems
	// Manager stops scheduling new tasks for execution.
	Cutoff *int64 `type:"integer"`

	// The duration of the Maintenance Window in hours.
	Duration *int64 `min:"1" type:"integer"`

	// Whether the Maintenance Window is enabled.
	Enabled *bool `type:"boolean"`

	// The name of the Maintenance Window.
	Name *string `min:"3" type:"string"`

	// The ID of the Maintenance Window.
	WindowId *string `min:"20" type:"string"`
}

// String returns the string representation
func (s MaintenanceWindowIdentity) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s MaintenanceWindowIdentity) GoString() string {
	return s.String()
}

// SetCutoff sets the Cutoff field's value.
func (s *MaintenanceWindowIdentity) SetCutoff(v int64) *MaintenanceWindowIdentity {
	s.Cutoff = &v
	return s
}

// SetDuration sets the Duration field's value.
func (s *MaintenanceWindowIdentity) SetDuration(v int64) *MaintenanceWindowIdentity {
	s.Duration = &v
	return s
}

// SetEnabled sets the Enabled field's value.
func (s *MaintenanceWindowIdentity) SetEnabled(v bool) *MaintenanceWindowIdentity {
	s.Enabled = &v
	return s
}

// SetName sets the Name field's value.
func (s *MaintenanceWindowIdentity) SetName(v string) *MaintenanceWindowIdentity {
	s.Name = &v
	return s
}

// SetWindowId sets the WindowId field's value.
func (s *MaintenanceWindowIdentity) SetWindowId(v string) *MaintenanceWindowIdentity {
	s.WindowId = &v
	return s
}

// The target registered with the Maintenance Window.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/MaintenanceWindowTarget
type MaintenanceWindowTarget struct {
	_ struct{} `type:"structure"`

	// User-provided value that will be included in any CloudWatch events raised
	// while running tasks for these targets in this Maintenance Window.
	OwnerInformation *string `min:"1" type:"string"`

	// The type of target.
	ResourceType *string `type:"string" enum:"MaintenanceWindowResourceType"`

	// The targets (either instances or tags). Instances are specified using Key=instanceids,Values=<instanceid1>,<instanceid2>.
	// Tags are specified using Key=<tag name>,Values=<tag value>.
	Targets []*Target `type:"list"`

	// The Maintenance Window ID where the target is registered.
	WindowId *string `min:"20" type:"string"`

	// The ID of the target.
	WindowTargetId *string `min:"36" type:"string"`
}

// String returns the string representation
func (s MaintenanceWindowTarget) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s MaintenanceWindowTarget) GoString() string {
	return s.String()
}

// SetOwnerInformation sets the OwnerInformation field's value.
func (s *MaintenanceWindowTarget) SetOwnerInformation(v string) *MaintenanceWindowTarget {
	s.OwnerInformation = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *MaintenanceWindowTarget) SetResourceType(v string) *MaintenanceWindowTarget {
	s.ResourceType = &v
	return s
}

// SetTargets sets the Targets field's value.
func (s *MaintenanceWindowTarget) SetTargets(v []*Target) *MaintenanceWindowTarget {
	s.Targets = v
	return s
}

// SetWindowId sets the WindowId field's value.
func (s *MaintenanceWindowTarget) SetWindowId(v string) *MaintenanceWindowTarget {
	s.WindowId = &v
	return s
}

// SetWindowTargetId sets the WindowTargetId field's value.
func (s *MaintenanceWindowTarget) SetWindowTargetId(v string) *MaintenanceWindowTarget {
	s.WindowTargetId = &v
	return s
}

// Information about a task defined for a Maintenance Window.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/MaintenanceWindowTask
type MaintenanceWindowTask struct {
	_ struct{} `type:"structure"`

	// Information about an Amazon S3 bucket to write task-level logs to.
	LoggingInfo *LoggingInfo `type:"structure"`

	// The maximum number of targets this task can be run for in parallel.
	MaxConcurrency *string `min:"1" type:"string"`

	// The maximum number of errors allowed before this task stops being scheduled.
	MaxErrors *string `min:"1" type:"string"`

	// 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.
	Priority *int64 `type:"integer"`

	// The role that should be assumed when executing the task
	ServiceRoleArn *string `type:"string"`

	// The targets (either instances or tags). Instances are specified using Key=instanceids,Values=<instanceid1>,<instanceid2>.
	// Tags are specified using Key=<tag name>,Values=<tag value>.
	Targets []*Target `type:"list"`

	// The ARN of the task to execute.
	TaskArn *string `min:"1" type:"string"`

	// The parameters that should be passed to the task when it is executed.
	TaskParameters map[string]*MaintenanceWindowTaskParameterValueExpression `type:"map"`

	// The type of task.
	Type *string `type:"string" enum:"MaintenanceWindowTaskType"`

	// The Maintenance Window ID where the task is registered.
	WindowId *string `min:"20" type:"string"`

	// The task ID.
	WindowTaskId *string `min:"36" type:"string"`
}

// String returns the string representation
func (s MaintenanceWindowTask) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s MaintenanceWindowTask) GoString() string {
	return s.String()
}

// SetLoggingInfo sets the LoggingInfo field's value.
func (s *MaintenanceWindowTask) SetLoggingInfo(v *LoggingInfo) *MaintenanceWindowTask {
	s.LoggingInfo = v
	return s
}

// SetMaxConcurrency sets the MaxConcurrency field's value.
func (s *MaintenanceWindowTask) SetMaxConcurrency(v string) *MaintenanceWindowTask {
	s.MaxConcurrency = &v
	return s
}

// SetMaxErrors sets the MaxErrors field's value.
func (s *MaintenanceWindowTask) SetMaxErrors(v string) *MaintenanceWindowTask {
	s.MaxErrors = &v
	return s
}

// SetPriority sets the Priority field's value.
func (s *MaintenanceWindowTask) SetPriority(v int64) *MaintenanceWindowTask {
	s.Priority = &v
	return s
}

// SetServiceRoleArn sets the ServiceRoleArn field's value.
func (s *MaintenanceWindowTask) SetServiceRoleArn(v string) *MaintenanceWindowTask {
	s.ServiceRoleArn = &v
	return s
}

// SetTargets sets the Targets field's value.
func (s *MaintenanceWindowTask) SetTargets(v []*Target) *MaintenanceWindowTask {
	s.Targets = v
	return s
}

// SetTaskArn sets the TaskArn field's value.
func (s *MaintenanceWindowTask) SetTaskArn(v string) *MaintenanceWindowTask {
	s.TaskArn = &v
	return s
}

// SetTaskParameters sets the TaskParameters field's value.
func (s *MaintenanceWindowTask) SetTaskParameters(v map[string]*MaintenanceWindowTaskParameterValueExpression) *MaintenanceWindowTask {
	s.TaskParameters = v
	return s
}

// SetType sets the Type field's value.
func (s *MaintenanceWindowTask) SetType(v string) *MaintenanceWindowTask {
	s.Type = &v
	return s
}

// SetWindowId sets the WindowId field's value.
func (s *MaintenanceWindowTask) SetWindowId(v string) *MaintenanceWindowTask {
	s.WindowId = &v
	return s
}

// SetWindowTaskId sets the WindowTaskId field's value.
func (s *MaintenanceWindowTask) SetWindowTaskId(v string) *MaintenanceWindowTask {
	s.WindowTaskId = &v
	return s
}

// Defines the values for a task parameter.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/MaintenanceWindowTaskParameterValueExpression
type MaintenanceWindowTaskParameterValueExpression struct {
	_ struct{} `type:"structure"`

	// This field contains an array of 0 or more strings, each 1 to 255 characters
	// in length.
	Values []*string `type:"list"`
}

// String returns the string representation
func (s MaintenanceWindowTaskParameterValueExpression) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s MaintenanceWindowTaskParameterValueExpression) GoString() string {
	return s.String()
}

// SetValues sets the Values field's value.
func (s *MaintenanceWindowTaskParameterValueExpression) SetValues(v []*string) *MaintenanceWindowTaskParameterValueExpression {
	s.Values = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ModifyDocumentPermissionRequest
type ModifyDocumentPermissionInput struct {
	_ struct{} `type:"structure"`

	// The AWS user accounts that should have access to the document. The account
	// IDs can either be a group of account IDs or All.
	AccountIdsToAdd []*string `locationNameList:"AccountId" type:"list"`

	// 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 All. This action
	// has a higher priority than AccountIdsToAdd. If you specify an account ID
	// to add and the same ID to remove, the system removes access to the document.
	AccountIdsToRemove []*string `locationNameList:"AccountId" type:"list"`

	// The name of the document that you want to share.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The permission type for the document. The permission type can be Share.
	//
	// PermissionType is a required field
	PermissionType *string `type:"string" required:"true" enum:"DocumentPermissionType"`
}

// String returns the string representation
func (s ModifyDocumentPermissionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ModifyDocumentPermissionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ModifyDocumentPermissionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ModifyDocumentPermissionInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.PermissionType == nil {
		invalidParams.Add(request.NewErrParamRequired("PermissionType"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccountIdsToAdd sets the AccountIdsToAdd field's value.
func (s *ModifyDocumentPermissionInput) SetAccountIdsToAdd(v []*string) *ModifyDocumentPermissionInput {
	s.AccountIdsToAdd = v
	return s
}

// SetAccountIdsToRemove sets the AccountIdsToRemove field's value.
func (s *ModifyDocumentPermissionInput) SetAccountIdsToRemove(v []*string) *ModifyDocumentPermissionInput {
	s.AccountIdsToRemove = v
	return s
}

// SetName sets the Name field's value.
func (s *ModifyDocumentPermissionInput) SetName(v string) *ModifyDocumentPermissionInput {
	s.Name = &v
	return s
}

// SetPermissionType sets the PermissionType field's value.
func (s *ModifyDocumentPermissionInput) SetPermissionType(v string) *ModifyDocumentPermissionInput {
	s.PermissionType = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ModifyDocumentPermissionResponse
type ModifyDocumentPermissionOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation
func (s ModifyDocumentPermissionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ModifyDocumentPermissionOutput) GoString() string {
	return s.String()
}

// Configurations for sending notifications.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/NotificationConfig
type NotificationConfig struct {
	_ struct{} `type:"structure"`

	// An Amazon Resource Name (ARN) for a Simple Notification Service (SNS) topic.
	// Run Command pushes notifications about command status changes to this topic.
	NotificationArn *string `type:"string"`

	// 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 Monitoring Commands (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitor-commands.html)
	// in the Amazon Elastic Compute Cloud User Guide .
	NotificationEvents []*string `type:"list"`

	// 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.
	NotificationType *string `type:"string" enum:"NotificationType"`
}

// String returns the string representation
func (s NotificationConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s NotificationConfig) GoString() string {
	return s.String()
}

// SetNotificationArn sets the NotificationArn field's value.
func (s *NotificationConfig) SetNotificationArn(v string) *NotificationConfig {
	s.NotificationArn = &v
	return s
}

// SetNotificationEvents sets the NotificationEvents field's value.
func (s *NotificationConfig) SetNotificationEvents(v []*string) *NotificationConfig {
	s.NotificationEvents = v
	return s
}

// SetNotificationType sets the NotificationType field's value.
func (s *NotificationConfig) SetNotificationType(v string) *NotificationConfig {
	s.NotificationType = &v
	return s
}

// An Amazon EC2 Systems Manager parameter in Parameter Store.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/Parameter
type Parameter struct {
	_ struct{} `type:"structure"`

	// The name of the parameter.
	Name *string `min:"1" type:"string"`

	// The type of parameter. Valid values include the following: String, String
	// list, Secure string.
	Type *string `type:"string" enum:"ParameterType"`

	// The parameter value.
	Value *string `min:"1" type:"string"`
}

// String returns the string representation
func (s Parameter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s Parameter) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *Parameter) SetName(v string) *Parameter {
	s.Name = &v
	return s
}

// SetType sets the Type field's value.
func (s *Parameter) SetType(v string) *Parameter {
	s.Type = &v
	return s
}

// SetValue sets the Value field's value.
func (s *Parameter) SetValue(v string) *Parameter {
	s.Value = &v
	return s
}

// Information about parameter usage.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ParameterHistory
type ParameterHistory struct {
	_ struct{} `type:"structure"`

	// Information about the parameter.
	Description *string `min:"1" type:"string"`

	// The ID of the query key used for this parameter.
	KeyId *string `min:"1" type:"string"`

	// Date the parameter was last changed or updated.
	LastModifiedDate *time.Time `type:"timestamp" timestampFormat:"unix"`

	// Amazon Resource Name (ARN) of the AWS user who last changed the parameter.
	LastModifiedUser *string `type:"string"`

	// The name of the parameter.
	Name *string `min:"1" type:"string"`

	// The type of parameter used.
	Type *string `type:"string" enum:"ParameterType"`

	// The parameter value.
	Value *string `min:"1" type:"string"`
}

// String returns the string representation
func (s ParameterHistory) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ParameterHistory) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *ParameterHistory) SetDescription(v string) *ParameterHistory {
	s.Description = &v
	return s
}

// SetKeyId sets the KeyId field's value.
func (s *ParameterHistory) SetKeyId(v string) *ParameterHistory {
	s.KeyId = &v
	return s
}

// SetLastModifiedDate sets the LastModifiedDate field's value.
func (s *ParameterHistory) SetLastModifiedDate(v time.Time) *ParameterHistory {
	s.LastModifiedDate = &v
	return s
}

// SetLastModifiedUser sets the LastModifiedUser field's value.
func (s *ParameterHistory) SetLastModifiedUser(v string) *ParameterHistory {
	s.LastModifiedUser = &v
	return s
}

// SetName sets the Name field's value.
func (s *ParameterHistory) SetName(v string) *ParameterHistory {
	s.Name = &v
	return s
}

// SetType sets the Type field's value.
func (s *ParameterHistory) SetType(v string) *ParameterHistory {
	s.Type = &v
	return s
}

// SetValue sets the Value field's value.
func (s *ParameterHistory) SetValue(v string) *ParameterHistory {
	s.Value = &v
	return s
}

// Metada includes information like the ARN of the last user and the date/time
// the parameter was last used.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ParameterMetadata
type ParameterMetadata struct {
	_ struct{} `type:"structure"`

	// Description of the parameter actions.
	Description *string `min:"1" type:"string"`

	// The ID of the query key used for this parameter.
	KeyId *string `min:"1" type:"string"`

	// Date the parameter was last changed or updated.
	LastModifiedDate *time.Time `type:"timestamp" timestampFormat:"unix"`

	// Amazon Resource Name (ARN) of the AWS user who last changed the parameter.
	LastModifiedUser *string `type:"string"`

	// The parameter name.
	Name *string `min:"1" type:"string"`

	// The type of parameter. Valid parameter types include the following: String,
	// String list, Secure string.
	Type *string `type:"string" enum:"ParameterType"`
}

// String returns the string representation
func (s ParameterMetadata) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ParameterMetadata) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *ParameterMetadata) SetDescription(v string) *ParameterMetadata {
	s.Description = &v
	return s
}

// SetKeyId sets the KeyId field's value.
func (s *ParameterMetadata) SetKeyId(v string) *ParameterMetadata {
	s.KeyId = &v
	return s
}

// SetLastModifiedDate sets the LastModifiedDate field's value.
func (s *ParameterMetadata) SetLastModifiedDate(v time.Time) *ParameterMetadata {
	s.LastModifiedDate = &v
	return s
}

// SetLastModifiedUser sets the LastModifiedUser field's value.
func (s *ParameterMetadata) SetLastModifiedUser(v string) *ParameterMetadata {
	s.LastModifiedUser = &v
	return s
}

// SetName sets the Name field's value.
func (s *ParameterMetadata) SetName(v string) *ParameterMetadata {
	s.Name = &v
	return s
}

// SetType sets the Type field's value.
func (s *ParameterMetadata) SetType(v string) *ParameterMetadata {
	s.Type = &v
	return s
}

// One or more filters. Use a filter to return a more specific list of results.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ParametersFilter
type ParametersFilter struct {
	_ struct{} `type:"structure"`

	// The name of the filter.
	Key *string `type:"string" enum:"ParametersFilterKey"`

	// The filter values.
	//
	// Values is a required field
	Values []*string `min:"1" type:"list" required:"true"`
}

// String returns the string representation
func (s ParametersFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ParametersFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ParametersFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ParametersFilter"}
	if s.Values == nil {
		invalidParams.Add(request.NewErrParamRequired("Values"))
	}
	if s.Values != nil && len(s.Values) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Values", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetKey sets the Key field's value.
func (s *ParametersFilter) SetKey(v string) *ParametersFilter {
	s.Key = &v
	return s
}

// SetValues sets the Values field's value.
func (s *ParametersFilter) SetValues(v []*string) *ParametersFilter {
	s.Values = v
	return s
}

// Represents metadata about a patch.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/Patch
type Patch struct {
	_ struct{} `type:"structure"`

	// The classification of the patch (for example, SecurityUpdates, Updates, CriticalUpdates).
	Classification *string `type:"string"`

	// The URL where more information can be obtained about the patch.
	ContentUrl *string `type:"string"`

	// The description of the patch.
	Description *string `type:"string"`

	// The ID of the patch (this is different than the Microsoft Knowledge Base
	// ID).
	Id *string `type:"string"`

	// The Microsoft Knowledge Base ID of the patch.
	KbNumber *string `type:"string"`

	// The language of the patch if it’s language-specific.
	Language *string `type:"string"`

	// The ID of the MSRC bulletin the patch is related to.
	MsrcNumber *string `type:"string"`

	// The severity of the patch (for example Critical, Important, Moderate).
	MsrcSeverity *string `type:"string"`

	// The specific product the patch is applicable for (for example, WindowsServer2016).
	Product *string `type:"string"`

	// The product family the patch is applicable for (for example, Windows).
	ProductFamily *string `type:"string"`

	// The date the patch was released.
	ReleaseDate *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The title of the patch.
	Title *string `type:"string"`

	// The name of the vendor providing the patch.
	Vendor *string `type:"string"`
}

// String returns the string representation
func (s Patch) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s Patch) GoString() string {
	return s.String()
}

// SetClassification sets the Classification field's value.
func (s *Patch) SetClassification(v string) *Patch {
	s.Classification = &v
	return s
}

// SetContentUrl sets the ContentUrl field's value.
func (s *Patch) SetContentUrl(v string) *Patch {
	s.ContentUrl = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *Patch) SetDescription(v string) *Patch {
	s.Description = &v
	return s
}

// SetId sets the Id field's value.
func (s *Patch) SetId(v string) *Patch {
	s.Id = &v
	return s
}

// SetKbNumber sets the KbNumber field's value.
func (s *Patch) SetKbNumber(v string) *Patch {
	s.KbNumber = &v
	return s
}

// SetLanguage sets the Language field's value.
func (s *Patch) SetLanguage(v string) *Patch {
	s.Language = &v
	return s
}

// SetMsrcNumber sets the MsrcNumber field's value.
func (s *Patch) SetMsrcNumber(v string) *Patch {
	s.MsrcNumber = &v
	return s
}

// SetMsrcSeverity sets the MsrcSeverity field's value.
func (s *Patch) SetMsrcSeverity(v string) *Patch {
	s.MsrcSeverity = &v
	return s
}

// SetProduct sets the Product field's value.
func (s *Patch) SetProduct(v string) *Patch {
	s.Product = &v
	return s
}

// SetProductFamily sets the ProductFamily field's value.
func (s *Patch) SetProductFamily(v string) *Patch {
	s.ProductFamily = &v
	return s
}

// SetReleaseDate sets the ReleaseDate field's value.
func (s *Patch) SetReleaseDate(v time.Time) *Patch {
	s.ReleaseDate = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *Patch) SetTitle(v string) *Patch {
	s.Title = &v
	return s
}

// SetVendor sets the Vendor field's value.
func (s *Patch) SetVendor(v string) *Patch {
	s.Vendor = &v
	return s
}

// Defines the basic information about a patch baseline.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PatchBaselineIdentity
type PatchBaselineIdentity struct {
	_ struct{} `type:"structure"`

	// The description of the patch baseline.
	BaselineDescription *string `min:"1" type:"string"`

	// The ID of the patch baseline.
	BaselineId *string `min:"20" type:"string"`

	// The name of the patch baseline.
	BaselineName *string `min:"3" type:"string"`

	// Whether this is the default baseline.
	DefaultBaseline *bool `type:"boolean"`
}

// String returns the string representation
func (s PatchBaselineIdentity) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s PatchBaselineIdentity) GoString() string {
	return s.String()
}

// SetBaselineDescription sets the BaselineDescription field's value.
func (s *PatchBaselineIdentity) SetBaselineDescription(v string) *PatchBaselineIdentity {
	s.BaselineDescription = &v
	return s
}

// SetBaselineId sets the BaselineId field's value.
func (s *PatchBaselineIdentity) SetBaselineId(v string) *PatchBaselineIdentity {
	s.BaselineId = &v
	return s
}

// SetBaselineName sets the BaselineName field's value.
func (s *PatchBaselineIdentity) SetBaselineName(v string) *PatchBaselineIdentity {
	s.BaselineName = &v
	return s
}

// SetDefaultBaseline sets the DefaultBaseline field's value.
func (s *PatchBaselineIdentity) SetDefaultBaseline(v bool) *PatchBaselineIdentity {
	s.DefaultBaseline = &v
	return s
}

// Information about the state of a patch on a particular instance as it relates
// to the patch baseline used to patch the instance.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PatchComplianceData
type PatchComplianceData struct {
	_ struct{} `type:"structure"`

	// The classification of the patch (for example, SecurityUpdates, Updates, CriticalUpdates).
	//
	// Classification is a required field
	Classification *string `type:"string" required:"true"`

	// The date/time the patch was installed on the instance.
	//
	// InstalledTime is a required field
	InstalledTime *time.Time `type:"timestamp" timestampFormat:"unix" required:"true"`

	// The Microsoft Knowledge Base ID of the patch.
	//
	// KBId is a required field
	KBId *string `type:"string" required:"true"`

	// The severity of the patch (for example, Critical, Important, Moderate).
	//
	// Severity is a required field
	Severity *string `type:"string" required:"true"`

	// The state of the patch on the instance (INSTALLED, INSTALLED_OTHER, MISSING,
	// NOT_APPLICABLE or FAILED).
	//
	// State is a required field
	State *string `type:"string" required:"true" enum:"PatchComplianceDataState"`

	// The title of the patch.
	//
	// Title is a required field
	Title *string `type:"string" required:"true"`
}

// String returns the string representation
func (s PatchComplianceData) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s PatchComplianceData) GoString() string {
	return s.String()
}

// SetClassification sets the Classification field's value.
func (s *PatchComplianceData) SetClassification(v string) *PatchComplianceData {
	s.Classification = &v
	return s
}

// SetInstalledTime sets the InstalledTime field's value.
func (s *PatchComplianceData) SetInstalledTime(v time.Time) *PatchComplianceData {
	s.InstalledTime = &v
	return s
}

// SetKBId sets the KBId field's value.
func (s *PatchComplianceData) SetKBId(v string) *PatchComplianceData {
	s.KBId = &v
	return s
}

// SetSeverity sets the Severity field's value.
func (s *PatchComplianceData) SetSeverity(v string) *PatchComplianceData {
	s.Severity = &v
	return s
}

// SetState sets the State field's value.
func (s *PatchComplianceData) SetState(v string) *PatchComplianceData {
	s.State = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *PatchComplianceData) SetTitle(v string) *PatchComplianceData {
	s.Title = &v
	return s
}

// Defines a patch filter.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PatchFilter
type PatchFilter struct {
	_ struct{} `type:"structure"`

	// The key for the filter (PRODUCT, CLASSIFICATION, MSRC_SEVERITY, PATCH_ID)
	//
	// Key is a required field
	Key *string `type:"string" required:"true" enum:"PatchFilterKey"`

	// The value for the filter key.
	//
	// Values is a required field
	Values []*string `min:"1" type:"list" required:"true"`
}

// String returns the string representation
func (s PatchFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s PatchFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PatchFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PatchFilter"}
	if s.Key == nil {
		invalidParams.Add(request.NewErrParamRequired("Key"))
	}
	if s.Values == nil {
		invalidParams.Add(request.NewErrParamRequired("Values"))
	}
	if s.Values != nil && len(s.Values) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Values", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetKey sets the Key field's value.
func (s *PatchFilter) SetKey(v string) *PatchFilter {
	s.Key = &v
	return s
}

// SetValues sets the Values field's value.
func (s *PatchFilter) SetValues(v []*string) *PatchFilter {
	s.Values = v
	return s
}

// A set of patch filters, typically used for approval rules.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PatchFilterGroup
type PatchFilterGroup struct {
	_ struct{} `type:"structure"`

	// The set of patch filters that make up the group.
	//
	// PatchFilters is a required field
	PatchFilters []*PatchFilter `type:"list" required:"true"`
}

// String returns the string representation
func (s PatchFilterGroup) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s PatchFilterGroup) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PatchFilterGroup) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PatchFilterGroup"}
	if s.PatchFilters == nil {
		invalidParams.Add(request.NewErrParamRequired("PatchFilters"))
	}
	if s.PatchFilters != nil {
		for i, v := range s.PatchFilters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PatchFilters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPatchFilters sets the PatchFilters field's value.
func (s *PatchFilterGroup) SetPatchFilters(v []*PatchFilter) *PatchFilterGroup {
	s.PatchFilters = v
	return s
}

// The mapping between a patch group and the patch baseline the patch group
// is registered with.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PatchGroupPatchBaselineMapping
type PatchGroupPatchBaselineMapping struct {
	_ struct{} `type:"structure"`

	// The patch baseline the patch group is registered with.
	BaselineIdentity *PatchBaselineIdentity `type:"structure"`

	// The name of the patch group registered with the patch baseline.
	PatchGroup *string `min:"1" type:"string"`
}

// String returns the string representation
func (s PatchGroupPatchBaselineMapping) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s PatchGroupPatchBaselineMapping) GoString() string {
	return s.String()
}

// SetBaselineIdentity sets the BaselineIdentity field's value.
func (s *PatchGroupPatchBaselineMapping) SetBaselineIdentity(v *PatchBaselineIdentity) *PatchGroupPatchBaselineMapping {
	s.BaselineIdentity = v
	return s
}

// SetPatchGroup sets the PatchGroup field's value.
func (s *PatchGroupPatchBaselineMapping) SetPatchGroup(v string) *PatchGroupPatchBaselineMapping {
	s.PatchGroup = &v
	return s
}

// Defines a filter used in Patch Manager APIs.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PatchOrchestratorFilter
type PatchOrchestratorFilter struct {
	_ struct{} `type:"structure"`

	// The key for the filter.
	Key *string `min:"1" type:"string"`

	// The value for the filter.
	Values []*string `type:"list"`
}

// String returns the string representation
func (s PatchOrchestratorFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s PatchOrchestratorFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PatchOrchestratorFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PatchOrchestratorFilter"}
	if s.Key != nil && len(*s.Key) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetKey sets the Key field's value.
func (s *PatchOrchestratorFilter) SetKey(v string) *PatchOrchestratorFilter {
	s.Key = &v
	return s
}

// SetValues sets the Values field's value.
func (s *PatchOrchestratorFilter) SetValues(v []*string) *PatchOrchestratorFilter {
	s.Values = v
	return s
}

// Defines an approval rule for a patch baseline.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PatchRule
type PatchRule struct {
	_ struct{} `type:"structure"`

	// The number of days after the release date of each patch matched by the rule
	// the patch is marked as approved in the patch baseline.
	//
	// ApproveAfterDays is a required field
	ApproveAfterDays *int64 `type:"integer" required:"true"`

	// The patch filter group that defines the criteria for the rule.
	//
	// PatchFilterGroup is a required field
	PatchFilterGroup *PatchFilterGroup `type:"structure" required:"true"`
}

// String returns the string representation
func (s PatchRule) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s PatchRule) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PatchRule) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PatchRule"}
	if s.ApproveAfterDays == nil {
		invalidParams.Add(request.NewErrParamRequired("ApproveAfterDays"))
	}
	if s.PatchFilterGroup == nil {
		invalidParams.Add(request.NewErrParamRequired("PatchFilterGroup"))
	}
	if s.PatchFilterGroup != nil {
		if err := s.PatchFilterGroup.Validate(); err != nil {
			invalidParams.AddNested("PatchFilterGroup", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetApproveAfterDays sets the ApproveAfterDays field's value.
func (s *PatchRule) SetApproveAfterDays(v int64) *PatchRule {
	s.ApproveAfterDays = &v
	return s
}

// SetPatchFilterGroup sets the PatchFilterGroup field's value.
func (s *PatchRule) SetPatchFilterGroup(v *PatchFilterGroup) *PatchRule {
	s.PatchFilterGroup = v
	return s
}

// A set of rules defining the approval rules for a patch baseline.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PatchRuleGroup
type PatchRuleGroup struct {
	_ struct{} `type:"structure"`

	// The rules that make up the rule group.
	//
	// PatchRules is a required field
	PatchRules []*PatchRule `type:"list" required:"true"`
}

// String returns the string representation
func (s PatchRuleGroup) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s PatchRuleGroup) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PatchRuleGroup) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PatchRuleGroup"}
	if s.PatchRules == nil {
		invalidParams.Add(request.NewErrParamRequired("PatchRules"))
	}
	if s.PatchRules != nil {
		for i, v := range s.PatchRules {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PatchRules", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPatchRules sets the PatchRules field's value.
func (s *PatchRuleGroup) SetPatchRules(v []*PatchRule) *PatchRuleGroup {
	s.PatchRules = v
	return s
}

// Information about the approval status of a patch.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PatchStatus
type PatchStatus struct {
	_ struct{} `type:"structure"`

	// The date the patch was approved (or will be approved if the status is PENDING_APPROVAL).
	ApprovalDate *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The approval status of a patch (APPROVED, PENDING_APPROVAL, EXPLICIT_APPROVED,
	// EXPLICIT_REJECTED).
	DeploymentStatus *string `type:"string" enum:"PatchDeploymentStatus"`
}

// String returns the string representation
func (s PatchStatus) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s PatchStatus) GoString() string {
	return s.String()
}

// SetApprovalDate sets the ApprovalDate field's value.
func (s *PatchStatus) SetApprovalDate(v time.Time) *PatchStatus {
	s.ApprovalDate = &v
	return s
}

// SetDeploymentStatus sets the DeploymentStatus field's value.
func (s *PatchStatus) SetDeploymentStatus(v string) *PatchStatus {
	s.DeploymentStatus = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PutInventoryRequest
type PutInventoryInput struct {
	_ struct{} `type:"structure"`

	// One or more instance IDs where you want to add or update inventory items.
	//
	// InstanceId is a required field
	InstanceId *string `type:"string" required:"true"`

	// The inventory items that you want to add or update on instances.
	//
	// Items is a required field
	Items []*InventoryItem `locationNameList:"Item" min:"1" type:"list" required:"true"`
}

// String returns the string representation
func (s PutInventoryInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s PutInventoryInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PutInventoryInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PutInventoryInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.Items == nil {
		invalidParams.Add(request.NewErrParamRequired("Items"))
	}
	if s.Items != nil && len(s.Items) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Items", 1))
	}
	if s.Items != nil {
		for i, v := range s.Items {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Items", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *PutInventoryInput) SetInstanceId(v string) *PutInventoryInput {
	s.InstanceId = &v
	return s
}

// SetItems sets the Items field's value.
func (s *PutInventoryInput) SetItems(v []*InventoryItem) *PutInventoryInput {
	s.Items = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PutInventoryResult
type PutInventoryOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation
func (s PutInventoryOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s PutInventoryOutput) GoString() string {
	return s.String()
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PutParameterRequest
type PutParameterInput struct {
	_ struct{} `type:"structure"`

	// Information about the parameter that you want to add to the system
	Description *string `min:"1" type:"string"`

	// The parameter key ID that you want to add to the system.
	KeyId *string `min:"1" type:"string"`

	// The name of the parameter that you want to add to the system.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// Overwrite an existing parameter.
	Overwrite *bool `type:"boolean"`

	// The type of parameter that you want to add to the system.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"ParameterType"`

	// The parameter value that you want to add to the system.
	//
	// Value is a required field
	Value *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s PutParameterInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s PutParameterInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PutParameterInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PutParameterInput"}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.KeyId != nil && len(*s.KeyId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("KeyId", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}
	if s.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}
	if s.Value != nil && len(*s.Value) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Value", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *PutParameterInput) SetDescription(v string) *PutParameterInput {
	s.Description = &v
	return s
}

// SetKeyId sets the KeyId field's value.
func (s *PutParameterInput) SetKeyId(v string) *PutParameterInput {
	s.KeyId = &v
	return s
}

// SetName sets the Name field's value.
func (s *PutParameterInput) SetName(v string) *PutParameterInput {
	s.Name = &v
	return s
}

// SetOverwrite sets the Overwrite field's value.
func (s *PutParameterInput) SetOverwrite(v bool) *PutParameterInput {
	s.Overwrite = &v
	return s
}

// SetType sets the Type field's value.
func (s *PutParameterInput) SetType(v string) *PutParameterInput {
	s.Type = &v
	return s
}

// SetValue sets the Value field's value.
func (s *PutParameterInput) SetValue(v string) *PutParameterInput {
	s.Value = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PutParameterResult
type PutParameterOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation
func (s PutParameterOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s PutParameterOutput) GoString() string {
	return s.String()
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RegisterDefaultPatchBaselineRequest
type RegisterDefaultPatchBaselineInput struct {
	_ struct{} `type:"structure"`

	// The ID of the patch baseline that should be the default patch baseline.
	//
	// BaselineId is a required field
	BaselineId *string `min:"20" type:"string" required:"true"`
}

// String returns the string representation
func (s RegisterDefaultPatchBaselineInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s RegisterDefaultPatchBaselineInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RegisterDefaultPatchBaselineInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RegisterDefaultPatchBaselineInput"}
	if s.BaselineId == nil {
		invalidParams.Add(request.NewErrParamRequired("BaselineId"))
	}
	if s.BaselineId != nil && len(*s.BaselineId) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("BaselineId", 20))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBaselineId sets the BaselineId field's value.
func (s *RegisterDefaultPatchBaselineInput) SetBaselineId(v string) *RegisterDefaultPatchBaselineInput {
	s.BaselineId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RegisterDefaultPatchBaselineResult
type RegisterDefaultPatchBaselineOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the default patch baseline.
	BaselineId *string `min:"20" type:"string"`
}

// String returns the string representation
func (s RegisterDefaultPatchBaselineOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s RegisterDefaultPatchBaselineOutput) GoString() string {
	return s.String()
}

// SetBaselineId sets the BaselineId field's value.
func (s *RegisterDefaultPatchBaselineOutput) SetBaselineId(v string) *RegisterDefaultPatchBaselineOutput {
	s.BaselineId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RegisterPatchBaselineForPatchGroupRequest
type RegisterPatchBaselineForPatchGroupInput struct {
	_ struct{} `type:"structure"`

	// The ID of the patch baseline to register the patch group with.
	//
	// BaselineId is a required field
	BaselineId *string `min:"20" type:"string" required:"true"`

	// The name of the patch group that should be registered with the patch baseline.
	//
	// PatchGroup is a required field
	PatchGroup *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s RegisterPatchBaselineForPatchGroupInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s RegisterPatchBaselineForPatchGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RegisterPatchBaselineForPatchGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RegisterPatchBaselineForPatchGroupInput"}
	if s.BaselineId == nil {
		invalidParams.Add(request.NewErrParamRequired("BaselineId"))
	}
	if s.BaselineId != nil && len(*s.BaselineId) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("BaselineId", 20))
	}
	if s.PatchGroup == nil {
		invalidParams.Add(request.NewErrParamRequired("PatchGroup"))
	}
	if s.PatchGroup != nil && len(*s.PatchGroup) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PatchGroup", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBaselineId sets the BaselineId field's value.
func (s *RegisterPatchBaselineForPatchGroupInput) SetBaselineId(v string) *RegisterPatchBaselineForPatchGroupInput {
	s.BaselineId = &v
	return s
}

// SetPatchGroup sets the PatchGroup field's value.
func (s *RegisterPatchBaselineForPatchGroupInput) SetPatchGroup(v string) *RegisterPatchBaselineForPatchGroupInput {
	s.PatchGroup = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RegisterPatchBaselineForPatchGroupResult
type RegisterPatchBaselineForPatchGroupOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the patch baseline the patch group was registered with.
	BaselineId *string `min:"20" type:"string"`

	// The name of the patch group registered with the patch baseline.
	PatchGroup *string `min:"1" type:"string"`
}

// String returns the string representation
func (s RegisterPatchBaselineForPatchGroupOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s RegisterPatchBaselineForPatchGroupOutput) GoString() string {
	return s.String()
}

// SetBaselineId sets the BaselineId field's value.
func (s *RegisterPatchBaselineForPatchGroupOutput) SetBaselineId(v string) *RegisterPatchBaselineForPatchGroupOutput {
	s.BaselineId = &v
	return s
}

// SetPatchGroup sets the PatchGroup field's value.
func (s *RegisterPatchBaselineForPatchGroupOutput) SetPatchGroup(v string) *RegisterPatchBaselineForPatchGroupOutput {
	s.PatchGroup = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RegisterTargetWithMaintenanceWindowRequest
type RegisterTargetWithMaintenanceWindowInput struct {
	_ struct{} `type:"structure"`

	// User-provided idempotency token.
	ClientToken *string `min:"1" type:"string" idempotencyToken:"true"`

	// User-provided value that will be included in any CloudWatch events raised
	// while running tasks for these targets in this Maintenance Window.
	OwnerInformation *string `min:"1" type:"string"`

	// The type of target being registered with the Maintenance Window.
	//
	// ResourceType is a required field
	ResourceType *string `type:"string" required:"true" enum:"MaintenanceWindowResourceType"`

	// The targets (either instances or tags). Instances are specified using Key=instanceids,Values=<instanceid1>,<instanceid2>.
	// Tags are specified using Key=<tag name>,Values=<tag value>.
	//
	// Targets is a required field
	Targets []*Target `type:"list" required:"true"`

	// The ID of the Maintenance Window the target should be registered with.
	//
	// WindowId is a required field
	WindowId *string `min:"20" type:"string" required:"true"`
}

// String returns the string representation
func (s RegisterTargetWithMaintenanceWindowInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s RegisterTargetWithMaintenanceWindowInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RegisterTargetWithMaintenanceWindowInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RegisterTargetWithMaintenanceWindowInput"}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.OwnerInformation != nil && len(*s.OwnerInformation) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("OwnerInformation", 1))
	}
	if s.ResourceType == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceType"))
	}
	if s.Targets == nil {
		invalidParams.Add(request.NewErrParamRequired("Targets"))
	}
	if s.WindowId == nil {
		invalidParams.Add(request.NewErrParamRequired("WindowId"))
	}
	if s.WindowId != nil && len(*s.WindowId) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("WindowId", 20))
	}
	if s.Targets != nil {
		for i, v := range s.Targets {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Targets", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *RegisterTargetWithMaintenanceWindowInput) SetClientToken(v string) *RegisterTargetWithMaintenanceWindowInput {
	s.ClientToken = &v
	return s
}

// SetOwnerInformation sets the OwnerInformation field's value.
func (s *RegisterTargetWithMaintenanceWindowInput) SetOwnerInformation(v string) *RegisterTargetWithMaintenanceWindowInput {
	s.OwnerInformation = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *RegisterTargetWithMaintenanceWindowInput) SetResourceType(v string) *RegisterTargetWithMaintenanceWindowInput {
	s.ResourceType = &v
	return s
}

// SetTargets sets the Targets field's value.
func (s *RegisterTargetWithMaintenanceWindowInput) SetTargets(v []*Target) *RegisterTargetWithMaintenanceWindowInput {
	s.Targets = v
	return s
}

// SetWindowId sets the WindowId field's value.
func (s *RegisterTargetWithMaintenanceWindowInput) SetWindowId(v string) *RegisterTargetWithMaintenanceWindowInput {
	s.WindowId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RegisterTargetWithMaintenanceWindowResult
type RegisterTargetWithMaintenanceWindowOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the target definition in this Maintenance Window.
	WindowTargetId *string `min:"36" type:"string"`
}

// String returns the string representation
func (s RegisterTargetWithMaintenanceWindowOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s RegisterTargetWithMaintenanceWindowOutput) GoString() string {
	return s.String()
}

// SetWindowTargetId sets the WindowTargetId field's value.
func (s *RegisterTargetWithMaintenanceWindowOutput) SetWindowTargetId(v string) *RegisterTargetWithMaintenanceWindowOutput {
	s.WindowTargetId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RegisterTaskWithMaintenanceWindowRequest
type RegisterTaskWithMaintenanceWindowInput struct {
	_ struct{} `type:"structure"`

	// User-provided idempotency token.
	ClientToken *string `min:"1" type:"string" idempotencyToken:"true"`

	// A structure containing information about an Amazon S3 bucket to write instance-level
	// logs to.
	LoggingInfo *LoggingInfo `type:"structure"`

	// The maximum number of targets this task can be run for in parallel.
	//
	// MaxConcurrency is a required field
	MaxConcurrency *string `min:"1" type:"string" required:"true"`

	// The maximum number of errors allowed before this task stops being scheduled.
	//
	// MaxErrors is a required field
	MaxErrors *string `min:"1" type:"string" required:"true"`

	// 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.
	Priority *int64 `type:"integer"`

	// The role that should be assumed when executing the task.
	//
	// ServiceRoleArn is a required field
	ServiceRoleArn *string `type:"string" required:"true"`

	// The targets (either instances or tags). Instances are specified using Key=instanceids,Values=<instanceid1>,<instanceid2>.
	// Tags are specified using Key=<tag name>,Values=<tag value>.
	//
	// Targets is a required field
	Targets []*Target `type:"list" required:"true"`

	// The ARN of the task to execute
	//
	// TaskArn is a required field
	TaskArn *string `min:"1" type:"string" required:"true"`

	// The parameters that should be passed to the task when it is executed.
	TaskParameters map[string]*MaintenanceWindowTaskParameterValueExpression `type:"map"`

	// The type of task being registered.
	//
	// TaskType is a required field
	TaskType *string `type:"string" required:"true" enum:"MaintenanceWindowTaskType"`

	// The id of the Maintenance Window the task should be added to.
	//
	// WindowId is a required field
	WindowId *string `min:"20" type:"string" required:"true"`
}

// String returns the string representation
func (s RegisterTaskWithMaintenanceWindowInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s RegisterTaskWithMaintenanceWindowInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RegisterTaskWithMaintenanceWindowInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RegisterTaskWithMaintenanceWindowInput"}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.MaxConcurrency == nil {
		invalidParams.Add(request.NewErrParamRequired("MaxConcurrency"))
	}
	if s.MaxConcurrency != nil && len(*s.MaxConcurrency) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("MaxConcurrency", 1))
	}
	if s.MaxErrors == nil {
		invalidParams.Add(request.NewErrParamRequired("MaxErrors"))
	}
	if s.MaxErrors != nil && len(*s.MaxErrors) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("MaxErrors", 1))
	}
	if s.ServiceRoleArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ServiceRoleArn"))
	}
	if s.Targets == nil {
		invalidParams.Add(request.NewErrParamRequired("Targets"))
	}
	if s.TaskArn == nil {
		invalidParams.Add(request.NewErrParamRequired("TaskArn"))
	}
	if s.TaskArn != nil && len(*s.TaskArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TaskArn", 1))
	}
	if s.TaskType == nil {
		invalidParams.Add(request.NewErrParamRequired("TaskType"))
	}
	if s.WindowId == nil {
		invalidParams.Add(request.NewErrParamRequired("WindowId"))
	}
	if s.WindowId != nil && len(*s.WindowId) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("WindowId", 20))
	}
	if s.LoggingInfo != nil {
		if err := s.LoggingInfo.Validate(); err != nil {
			invalidParams.AddNested("LoggingInfo", err.(request.ErrInvalidParams))
		}
	}
	if s.Targets != nil {
		for i, v := range s.Targets {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Targets", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *RegisterTaskWithMaintenanceWindowInput) SetClientToken(v string) *RegisterTaskWithMaintenanceWindowInput {
	s.ClientToken = &v
	return s
}

// SetLoggingInfo sets the LoggingInfo field's value.
func (s *RegisterTaskWithMaintenanceWindowInput) SetLoggingInfo(v *LoggingInfo) *RegisterTaskWithMaintenanceWindowInput {
	s.LoggingInfo = v
	return s
}

// SetMaxConcurrency sets the MaxConcurrency field's value.
func (s *RegisterTaskWithMaintenanceWindowInput) SetMaxConcurrency(v string) *RegisterTaskWithMaintenanceWindowInput {
	s.MaxConcurrency = &v
	return s
}

// SetMaxErrors sets the MaxErrors field's value.
func (s *RegisterTaskWithMaintenanceWindowInput) SetMaxErrors(v string) *RegisterTaskWithMaintenanceWindowInput {
	s.MaxErrors = &v
	return s
}

// SetPriority sets the Priority field's value.
func (s *RegisterTaskWithMaintenanceWindowInput) SetPriority(v int64) *RegisterTaskWithMaintenanceWindowInput {
	s.Priority = &v
	return s
}

// SetServiceRoleArn sets the ServiceRoleArn field's value.
func (s *RegisterTaskWithMaintenanceWindowInput) SetServiceRoleArn(v string) *RegisterTaskWithMaintenanceWindowInput {
	s.ServiceRoleArn = &v
	return s
}

// SetTargets sets the Targets field's value.
func (s *RegisterTaskWithMaintenanceWindowInput) SetTargets(v []*Target) *RegisterTaskWithMaintenanceWindowInput {
	s.Targets = v
	return s
}

// SetTaskArn sets the TaskArn field's value.
func (s *RegisterTaskWithMaintenanceWindowInput) SetTaskArn(v string) *RegisterTaskWithMaintenanceWindowInput {
	s.TaskArn = &v
	return s
}

// SetTaskParameters sets the TaskParameters field's value.
func (s *RegisterTaskWithMaintenanceWindowInput) SetTaskParameters(v map[string]*MaintenanceWindowTaskParameterValueExpression) *RegisterTaskWithMaintenanceWindowInput {
	s.TaskParameters = v
	return s
}

// SetTaskType sets the TaskType field's value.
func (s *RegisterTaskWithMaintenanceWindowInput) SetTaskType(v string) *RegisterTaskWithMaintenanceWindowInput {
	s.TaskType = &v
	return s
}

// SetWindowId sets the WindowId field's value.
func (s *RegisterTaskWithMaintenanceWindowInput) SetWindowId(v string) *RegisterTaskWithMaintenanceWindowInput {
	s.WindowId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RegisterTaskWithMaintenanceWindowResult
type RegisterTaskWithMaintenanceWindowOutput struct {
	_ struct{} `type:"structure"`

	// The id of the task in the Maintenance Window.
	WindowTaskId *string `min:"36" type:"string"`
}

// String returns the string representation
func (s RegisterTaskWithMaintenanceWindowOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s RegisterTaskWithMaintenanceWindowOutput) GoString() string {
	return s.String()
}

// SetWindowTaskId sets the WindowTaskId field's value.
func (s *RegisterTaskWithMaintenanceWindowOutput) SetWindowTaskId(v string) *RegisterTaskWithMaintenanceWindowOutput {
	s.WindowTaskId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RemoveTagsFromResourceRequest
type RemoveTagsFromResourceInput struct {
	_ struct{} `type:"structure"`

	// The resource ID for which you want to remove tags.
	//
	// ResourceId is a required field
	ResourceId *string `type:"string" required:"true"`

	// The type of resource of which you want to remove a tag.
	//
	// ResourceType is a required field
	ResourceType *string `type:"string" required:"true" enum:"ResourceTypeForTagging"`

	// Tag keys that you want to remove from the specified resource.
	//
	// TagKeys is a required field
	TagKeys []*string `type:"list" required:"true"`
}

// String returns the string representation
func (s RemoveTagsFromResourceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s RemoveTagsFromResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RemoveTagsFromResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RemoveTagsFromResourceInput"}
	if s.ResourceId == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceId"))
	}
	if s.ResourceType == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceType"))
	}
	if s.TagKeys == nil {
		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceId sets the ResourceId field's value.
func (s *RemoveTagsFromResourceInput) SetResourceId(v string) *RemoveTagsFromResourceInput {
	s.ResourceId = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *RemoveTagsFromResourceInput) SetResourceType(v string) *RemoveTagsFromResourceInput {
	s.ResourceType = &v
	return s
}

// SetTagKeys sets the TagKeys field's value.
func (s *RemoveTagsFromResourceInput) SetTagKeys(v []*string) *RemoveTagsFromResourceInput {
	s.TagKeys = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RemoveTagsFromResourceResult
type RemoveTagsFromResourceOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation
func (s RemoveTagsFromResourceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s RemoveTagsFromResourceOutput) GoString() string {
	return s.String()
}

// The inventory item result attribute.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ResultAttribute
type ResultAttribute struct {
	_ struct{} `type:"structure"`

	// Name of the inventory item type. Valid value: “AWS:InstanceInformation”.
	// Default Value: “AWS:InstanceInformation”.
	//
	// TypeName is a required field
	TypeName *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s ResultAttribute) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ResultAttribute) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ResultAttribute) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ResultAttribute"}
	if s.TypeName == nil {
		invalidParams.Add(request.NewErrParamRequired("TypeName"))
	}
	if s.TypeName != nil && len(*s.TypeName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TypeName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetTypeName sets the TypeName field's value.
func (s *ResultAttribute) SetTypeName(v string) *ResultAttribute {
	s.TypeName = &v
	return s
}

// An Amazon S3 bucket where you want to store the results of this request.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/S3OutputLocation
type S3OutputLocation struct {
	_ struct{} `type:"structure"`

	// The name of the Amazon S3 bucket.
	OutputS3BucketName *string `min:"3" type:"string"`

	// The Amazon S3 bucket subfolder.
	OutputS3KeyPrefix *string `type:"string"`

	// The Amazon S3 region where the association information is stored.
	OutputS3Region *string `min:"3" type:"string"`
}

// String returns the string representation
func (s S3OutputLocation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s S3OutputLocation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3OutputLocation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3OutputLocation"}
	if s.OutputS3BucketName != nil && len(*s.OutputS3BucketName) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("OutputS3BucketName", 3))
	}
	if s.OutputS3Region != nil && len(*s.OutputS3Region) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("OutputS3Region", 3))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetOutputS3BucketName sets the OutputS3BucketName field's value.
func (s *S3OutputLocation) SetOutputS3BucketName(v string) *S3OutputLocation {
	s.OutputS3BucketName = &v
	return s
}

// SetOutputS3KeyPrefix sets the OutputS3KeyPrefix field's value.
func (s *S3OutputLocation) SetOutputS3KeyPrefix(v string) *S3OutputLocation {
	s.OutputS3KeyPrefix = &v
	return s
}

// SetOutputS3Region sets the OutputS3Region field's value.
func (s *S3OutputLocation) SetOutputS3Region(v string) *S3OutputLocation {
	s.OutputS3Region = &v
	return s
}

// A URL for the Amazon S3 bucket where you want to store the results of this
// request.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/S3OutputUrl
type S3OutputUrl struct {
	_ struct{} `type:"structure"`

	// A URL for an Amazon S3 bucket where you want to store the results of this
	// request.
	OutputUrl *string `type:"string"`
}

// String returns the string representation
func (s S3OutputUrl) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s S3OutputUrl) GoString() string {
	return s.String()
}

// SetOutputUrl sets the OutputUrl field's value.
func (s *S3OutputUrl) SetOutputUrl(v string) *S3OutputUrl {
	s.OutputUrl = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/SendCommandRequest
type SendCommandInput struct {
	_ struct{} `type:"structure"`

	// User-specified information about the command, such as a brief description
	// of what the command should do.
	Comment *string `type:"string"`

	// The Sha256 or Sha1 hash created by the system when the document was created.
	//
	// Sha1 hashes have been deprecated.
	DocumentHash *string `type:"string"`

	// Sha256 or Sha1.
	//
	// Sha1 hashes have been deprecated.
	DocumentHashType *string `type:"string" enum:"DocumentHashType"`

	// Required. The name of the SSM document to execute. This can be an SSM public
	// document or a custom document.
	//
	// DocumentName is a required field
	DocumentName *string `type:"string" required:"true"`

	// Required. The instance IDs where the command should execute. You can specify
	// a maximum of 50 IDs.
	InstanceIds []*string `type:"list"`

	// (Optional) The maximum number of instances that are allowed to execute 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 Executing a Command Using Amazon EC2 Run Command
	// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/run-command.html) (Linux)
	// or Executing a Command Using Amazon EC2 Run Command (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/run-command.html)
	// (Windows).
	MaxConcurrency *string `min:"1" type:"string"`

	// 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 50. For more information
	// about how to use MaxErrors, see Executing a Command Using Amazon EC2 Run
	// Command (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/run-command.html)
	// (Linux) or Executing a Command Using Amazon EC2 Run Command (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/run-command.html)
	// (Windows).
	MaxErrors *string `min:"1" type:"string"`

	// Configurations for sending notifications.
	NotificationConfig *NotificationConfig `type:"structure"`

	// The name of the S3 bucket where command execution responses should be stored.
	OutputS3BucketName *string `min:"3" type:"string"`

	// The directory structure within the S3 bucket where the responses should be
	// stored.
	OutputS3KeyPrefix *string `type:"string"`

	// (Optional) The region where the Amazon Simple Storage Service (Amazon S3)
	// output bucket is located. The default value is the region where Run Command
	// is being called.
	OutputS3Region *string `min:"3" type:"string"`

	// The required and optional parameters specified in the SSM document being
	// executed.
	Parameters map[string][]*string `type:"map"`

	// The IAM role that Systems Manager uses to send notifications.
	ServiceRoleArn *string `type:"string"`

	// (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 Executing a Command Using Amazon EC2 Run Command (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/run-command.html)
	// (Linux) or Executing a Command Using Amazon EC2 Run Command (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/run-command.html)
	// (Windows).
	Targets []*Target `type:"list"`

	// If this time is reached and the command has not already started executing,
	// it will not execute.
	TimeoutSeconds *int64 `min:"30" type:"integer"`
}

// String returns the string representation
func (s SendCommandInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s SendCommandInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SendCommandInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SendCommandInput"}
	if s.DocumentName == nil {
		invalidParams.Add(request.NewErrParamRequired("DocumentName"))
	}
	if s.MaxConcurrency != nil && len(*s.MaxConcurrency) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("MaxConcurrency", 1))
	}
	if s.MaxErrors != nil && len(*s.MaxErrors) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("MaxErrors", 1))
	}
	if s.OutputS3BucketName != nil && len(*s.OutputS3BucketName) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("OutputS3BucketName", 3))
	}
	if s.OutputS3Region != nil && len(*s.OutputS3Region) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("OutputS3Region", 3))
	}
	if s.TimeoutSeconds != nil && *s.TimeoutSeconds < 30 {
		invalidParams.Add(request.NewErrParamMinValue("TimeoutSeconds", 30))
	}
	if s.Targets != nil {
		for i, v := range s.Targets {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Targets", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetComment sets the Comment field's value.
func (s *SendCommandInput) SetComment(v string) *SendCommandInput {
	s.Comment = &v
	return s
}

// SetDocumentHash sets the DocumentHash field's value.
func (s *SendCommandInput) SetDocumentHash(v string) *SendCommandInput {
	s.DocumentHash = &v
	return s
}

// SetDocumentHashType sets the DocumentHashType field's value.
func (s *SendCommandInput) SetDocumentHashType(v string) *SendCommandInput {
	s.DocumentHashType = &v
	return s
}

// SetDocumentName sets the DocumentName field's value.
func (s *SendCommandInput) SetDocumentName(v string) *SendCommandInput {
	s.DocumentName = &v
	return s
}

// SetInstanceIds sets the InstanceIds field's value.
func (s *SendCommandInput) SetInstanceIds(v []*string) *SendCommandInput {
	s.InstanceIds = v
	return s
}

// SetMaxConcurrency sets the MaxConcurrency field's value.
func (s *SendCommandInput) SetMaxConcurrency(v string) *SendCommandInput {
	s.MaxConcurrency = &v
	return s
}

// SetMaxErrors sets the MaxErrors field's value.
func (s *SendCommandInput) SetMaxErrors(v string) *SendCommandInput {
	s.MaxErrors = &v
	return s
}

// SetNotificationConfig sets the NotificationConfig field's value.
func (s *SendCommandInput) SetNotificationConfig(v *NotificationConfig) *SendCommandInput {
	s.NotificationConfig = v
	return s
}

// SetOutputS3BucketName sets the OutputS3BucketName field's value.
func (s *SendCommandInput) SetOutputS3BucketName(v string) *SendCommandInput {
	s.OutputS3BucketName = &v
	return s
}

// SetOutputS3KeyPrefix sets the OutputS3KeyPrefix field's value.
func (s *SendCommandInput) SetOutputS3KeyPrefix(v string) *SendCommandInput {
	s.OutputS3KeyPrefix = &v
	return s
}

// SetOutputS3Region sets the OutputS3Region field's value.
func (s *SendCommandInput) SetOutputS3Region(v string) *SendCommandInput {
	s.OutputS3Region = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *SendCommandInput) SetParameters(v map[string][]*string) *SendCommandInput {
	s.Parameters = v
	return s
}

// SetServiceRoleArn sets the ServiceRoleArn field's value.
func (s *SendCommandInput) SetServiceRoleArn(v string) *SendCommandInput {
	s.ServiceRoleArn = &v
	return s
}

// SetTargets sets the Targets field's value.
func (s *SendCommandInput) SetTargets(v []*Target) *SendCommandInput {
	s.Targets = v
	return s
}

// SetTimeoutSeconds sets the TimeoutSeconds field's value.
func (s *SendCommandInput) SetTimeoutSeconds(v int64) *SendCommandInput {
	s.TimeoutSeconds = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/SendCommandResult
type SendCommandOutput struct {
	_ struct{} `type:"structure"`

	// The request as it was received by Systems Manager. Also provides the command
	// ID which can be used future references to this request.
	Command *Command `type:"structure"`
}

// String returns the string representation
func (s SendCommandOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s SendCommandOutput) GoString() string {
	return s.String()
}

// SetCommand sets the Command field's value.
func (s *SendCommandOutput) SetCommand(v *Command) *SendCommandOutput {
	s.Command = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/StartAutomationExecutionRequest
type StartAutomationExecutionInput struct {
	_ struct{} `type:"structure"`

	// The name of the Automation document to use for this execution.
	//
	// DocumentName is a required field
	DocumentName *string `type:"string" required:"true"`

	// The version of the Automation document to use for this execution.
	DocumentVersion *string `type:"string"`

	// A key-value map of execution parameters, which match the declared parameters
	// in the Automation document.
	Parameters map[string][]*string `min:"1" type:"map"`
}

// String returns the string representation
func (s StartAutomationExecutionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s StartAutomationExecutionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartAutomationExecutionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartAutomationExecutionInput"}
	if s.DocumentName == nil {
		invalidParams.Add(request.NewErrParamRequired("DocumentName"))
	}
	if s.Parameters != nil && len(s.Parameters) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Parameters", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDocumentName sets the DocumentName field's value.
func (s *StartAutomationExecutionInput) SetDocumentName(v string) *StartAutomationExecutionInput {
	s.DocumentName = &v
	return s
}

// SetDocumentVersion sets the DocumentVersion field's value.
func (s *StartAutomationExecutionInput) SetDocumentVersion(v string) *StartAutomationExecutionInput {
	s.DocumentVersion = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *StartAutomationExecutionInput) SetParameters(v map[string][]*string) *StartAutomationExecutionInput {
	s.Parameters = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/StartAutomationExecutionResult
type StartAutomationExecutionOutput struct {
	_ struct{} `type:"structure"`

	// The unique ID of a newly scheduled automation execution.
	AutomationExecutionId *string `min:"36" type:"string"`
}

// String returns the string representation
func (s StartAutomationExecutionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s StartAutomationExecutionOutput) GoString() string {
	return s.String()
}

// SetAutomationExecutionId sets the AutomationExecutionId field's value.
func (s *StartAutomationExecutionOutput) SetAutomationExecutionId(v string) *StartAutomationExecutionOutput {
	s.AutomationExecutionId = &v
	return s
}

// Detailed information about an the execution state of an Automation step.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/StepExecution
type StepExecution struct {
	_ struct{} `type:"structure"`

	// The action this step performs. The action determines the behavior of the
	// step.
	Action *string `type:"string"`

	// 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.
	ExecutionEndTime *time.Time `type:"timestamp" timestampFormat:"unix"`

	// 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.
	ExecutionStartTime *time.Time `type:"timestamp" timestampFormat:"unix"`

	// If a step failed, this message explains why the execution failed.
	FailureMessage *string `type:"string"`

	// Fully-resolved values passed into the step before execution.
	Inputs map[string]*string `type:"map"`

	// Returned values from the execution of the step.
	Outputs map[string][]*string `min:"1" type:"map"`

	// A message associated with the response code for an execution.
	Response *string `type:"string"`

	// The response code returned by the execution of the step.
	ResponseCode *string `type:"string"`

	// The name of this execution step.
	StepName *string `type:"string"`

	// The execution status for this step. Valid values include: Pending, InProgress,
	// Success, Cancelled, Failed, and TimedOut.
	StepStatus *string `type:"string" enum:"AutomationExecutionStatus"`
}

// String returns the string representation
func (s StepExecution) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s StepExecution) GoString() string {
	return s.String()
}

// SetAction sets the Action field's value.
func (s *StepExecution) SetAction(v string) *StepExecution {
	s.Action = &v
	return s
}

// SetExecutionEndTime sets the ExecutionEndTime field's value.
func (s *StepExecution) SetExecutionEndTime(v time.Time) *StepExecution {
	s.ExecutionEndTime = &v
	return s
}

// SetExecutionStartTime sets the ExecutionStartTime field's value.
func (s *StepExecution) SetExecutionStartTime(v time.Time) *StepExecution {
	s.ExecutionStartTime = &v
	return s
}

// SetFailureMessage sets the FailureMessage field's value.
func (s *StepExecution) SetFailureMessage(v string) *StepExecution {
	s.FailureMessage = &v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *StepExecution) SetInputs(v map[string]*string) *StepExecution {
	s.Inputs = v
	return s
}

// SetOutputs sets the Outputs field's value.
func (s *StepExecution) SetOutputs(v map[string][]*string) *StepExecution {
	s.Outputs = v
	return s
}

// SetResponse sets the Response field's value.
func (s *StepExecution) SetResponse(v string) *StepExecution {
	s.Response = &v
	return s
}

// SetResponseCode sets the ResponseCode field's value.
func (s *StepExecution) SetResponseCode(v string) *StepExecution {
	s.ResponseCode = &v
	return s
}

// SetStepName sets the StepName field's value.
func (s *StepExecution) SetStepName(v string) *StepExecution {
	s.StepName = &v
	return s
}

// SetStepStatus sets the StepStatus field's value.
func (s *StepExecution) SetStepStatus(v string) *StepExecution {
	s.StepStatus = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/StopAutomationExecutionRequest
type StopAutomationExecutionInput struct {
	_ struct{} `type:"structure"`

	// The execution ID of the Automation to stop.
	//
	// AutomationExecutionId is a required field
	AutomationExecutionId *string `min:"36" type:"string" required:"true"`
}

// String returns the string representation
func (s StopAutomationExecutionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s StopAutomationExecutionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StopAutomationExecutionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StopAutomationExecutionInput"}
	if s.AutomationExecutionId == nil {
		invalidParams.Add(request.NewErrParamRequired("AutomationExecutionId"))
	}
	if s.AutomationExecutionId != nil && len(*s.AutomationExecutionId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("AutomationExecutionId", 36))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAutomationExecutionId sets the AutomationExecutionId field's value.
func (s *StopAutomationExecutionInput) SetAutomationExecutionId(v string) *StopAutomationExecutionInput {
	s.AutomationExecutionId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/StopAutomationExecutionResult
type StopAutomationExecutionOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation
func (s StopAutomationExecutionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s StopAutomationExecutionOutput) GoString() string {
	return s.String()
}

// Metadata that you assign to your managed instances. Tags enable you to categorize
// your managed instances in different ways, for example, by purpose, owner,
// or environment.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/Tag
type Tag struct {
	_ struct{} `type:"structure"`

	// The name of the tag.
	//
	// Key is a required field
	Key *string `min:"1" type:"string" required:"true"`

	// The value of the tag.
	//
	// Value is a required field
	Value *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s Tag) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s Tag) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Tag) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Tag"}
	if s.Key == nil {
		invalidParams.Add(request.NewErrParamRequired("Key"))
	}
	if s.Key != nil && len(*s.Key) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
	}
	if s.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}
	if s.Value != nil && len(*s.Value) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Value", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetKey sets the Key field's value.
func (s *Tag) SetKey(v string) *Tag {
	s.Key = &v
	return s
}

// SetValue sets the Value field's value.
func (s *Tag) SetValue(v string) *Tag {
	s.Value = &v
	return s
}

// 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.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/Target
type Target struct {
	_ struct{} `type:"structure"`

	// User-defined criteria for sending commands that target instances that meet
	// the criteria. Key can be tag:<Amazon EC2 tag> or name:<Amazon EC2 instance
	// ID>. For example, tag:ServerRole or name:0123456789012345. For more information
	// about how to send commands that target instances using Key;Value parameters,
	// see Executing a Command Using Amazon EC2 Run Command (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/run-command.html)
	// (Linux) or Executing a Command Using Amazon EC2 Run Command (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/run-command.html)
	// (Windows).
	Key *string `min:"1" type:"string"`

	// User-defined criteria that maps to Key. For example, if you specified tag:ServerRole,
	// you could specify value:WebServer to execute a command on instances that
	// include Amazon EC2 tags of ServerRole;WebServer. For more information about
	// how to send commands that target instances using Key;Value parameters, see
	// Executing a Command Using Amazon EC2 Run Command (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/run-command.html)
	// (Linux) or Executing a Command Using Amazon EC2 Run Command (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/run-command.html)
	// (Windows).
	Values []*string `type:"list"`
}

// String returns the string representation
func (s Target) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s Target) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Target) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Target"}
	if s.Key != nil && len(*s.Key) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetKey sets the Key field's value.
func (s *Target) SetKey(v string) *Target {
	s.Key = &v
	return s
}

// SetValues sets the Values field's value.
func (s *Target) SetValues(v []*string) *Target {
	s.Values = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateAssociationRequest
type UpdateAssociationInput struct {
	_ struct{} `type:"structure"`

	// The ID of the association you want to update.
	//
	// AssociationId is a required field
	AssociationId *string `type:"string" required:"true"`

	// The document version you want update for the association.
	DocumentVersion *string `type:"string"`

	// An Amazon S3 bucket where you want to store the results of this request.
	//
	// "{ \"S3Location\": { \"OutputS3Region\": \"<region>\", \"OutputS3BucketName\":
	// \"bucket name\", \"OutputS3KeyPrefix\": \"folder name\" } }"
	OutputLocation *InstanceAssociationOutputLocation `type:"structure"`

	// 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}}
	Parameters map[string][]*string `type:"map"`

	// The cron expression used to schedule the association that you want to update.
	// Supported expressions are every half, 1, 2, 4, 8 or 12 hour(s); every specified
	// day and time of the week. For example: cron(0 0/30 * 1/1 * ? *) to run every
	// thirty minutes; cron(0 0 0/4 1/1 * ? *) to run every four hours; and cron(0
	// 0 10 ? * SUN *) to run every Sunday at 10 a.m.
	ScheduleExpression *string `min:"1" type:"string"`
}

// String returns the string representation
func (s UpdateAssociationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s UpdateAssociationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateAssociationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateAssociationInput"}
	if s.AssociationId == nil {
		invalidParams.Add(request.NewErrParamRequired("AssociationId"))
	}
	if s.ScheduleExpression != nil && len(*s.ScheduleExpression) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ScheduleExpression", 1))
	}
	if s.OutputLocation != nil {
		if err := s.OutputLocation.Validate(); err != nil {
			invalidParams.AddNested("OutputLocation", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssociationId sets the AssociationId field's value.
func (s *UpdateAssociationInput) SetAssociationId(v string) *UpdateAssociationInput {
	s.AssociationId = &v
	return s
}

// SetDocumentVersion sets the DocumentVersion field's value.
func (s *UpdateAssociationInput) SetDocumentVersion(v string) *UpdateAssociationInput {
	s.DocumentVersion = &v
	return s
}

// SetOutputLocation sets the OutputLocation field's value.
func (s *UpdateAssociationInput) SetOutputLocation(v *InstanceAssociationOutputLocation) *UpdateAssociationInput {
	s.OutputLocation = v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *UpdateAssociationInput) SetParameters(v map[string][]*string) *UpdateAssociationInput {
	s.Parameters = v
	return s
}

// SetScheduleExpression sets the ScheduleExpression field's value.
func (s *UpdateAssociationInput) SetScheduleExpression(v string) *UpdateAssociationInput {
	s.ScheduleExpression = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateAssociationResult
type UpdateAssociationOutput struct {
	_ struct{} `type:"structure"`

	// The description of the association that was updated.
	AssociationDescription *AssociationDescription `type:"structure"`
}

// String returns the string representation
func (s UpdateAssociationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s UpdateAssociationOutput) GoString() string {
	return s.String()
}

// SetAssociationDescription sets the AssociationDescription field's value.
func (s *UpdateAssociationOutput) SetAssociationDescription(v *AssociationDescription) *UpdateAssociationOutput {
	s.AssociationDescription = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateAssociationStatusRequest
type UpdateAssociationStatusInput struct {
	_ struct{} `type:"structure"`

	// The association status.
	//
	// AssociationStatus is a required field
	AssociationStatus *AssociationStatus `type:"structure" required:"true"`

	// The ID of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `type:"string" required:"true"`

	// The name of the SSM document.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`
}

// String returns the string representation
func (s UpdateAssociationStatusInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s UpdateAssociationStatusInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateAssociationStatusInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateAssociationStatusInput"}
	if s.AssociationStatus == nil {
		invalidParams.Add(request.NewErrParamRequired("AssociationStatus"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.AssociationStatus != nil {
		if err := s.AssociationStatus.Validate(); err != nil {
			invalidParams.AddNested("AssociationStatus", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssociationStatus sets the AssociationStatus field's value.
func (s *UpdateAssociationStatusInput) SetAssociationStatus(v *AssociationStatus) *UpdateAssociationStatusInput {
	s.AssociationStatus = v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateAssociationStatusInput) SetInstanceId(v string) *UpdateAssociationStatusInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateAssociationStatusInput) SetName(v string) *UpdateAssociationStatusInput {
	s.Name = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateAssociationStatusResult
type UpdateAssociationStatusOutput struct {
	_ struct{} `type:"structure"`

	// Information about the association.
	AssociationDescription *AssociationDescription `type:"structure"`
}

// String returns the string representation
func (s UpdateAssociationStatusOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s UpdateAssociationStatusOutput) GoString() string {
	return s.String()
}

// SetAssociationDescription sets the AssociationDescription field's value.
func (s *UpdateAssociationStatusOutput) SetAssociationDescription(v *AssociationDescription) *UpdateAssociationStatusOutput {
	s.AssociationDescription = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateDocumentDefaultVersionRequest
type UpdateDocumentDefaultVersionInput struct {
	_ struct{} `type:"structure"`

	// The version of a custom document that you want to set as the default version.
	//
	// DocumentVersion is a required field
	DocumentVersion *string `type:"string" required:"true"`

	// The name of a custom document that you want to set as the default version.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`
}

// String returns the string representation
func (s UpdateDocumentDefaultVersionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s UpdateDocumentDefaultVersionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateDocumentDefaultVersionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateDocumentDefaultVersionInput"}
	if s.DocumentVersion == nil {
		invalidParams.Add(request.NewErrParamRequired("DocumentVersion"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDocumentVersion sets the DocumentVersion field's value.
func (s *UpdateDocumentDefaultVersionInput) SetDocumentVersion(v string) *UpdateDocumentDefaultVersionInput {
	s.DocumentVersion = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateDocumentDefaultVersionInput) SetName(v string) *UpdateDocumentDefaultVersionInput {
	s.Name = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateDocumentDefaultVersionResult
type UpdateDocumentDefaultVersionOutput struct {
	_ struct{} `type:"structure"`

	// The description of a custom document that you want to set as the default
	// version.
	Description *DocumentDefaultVersionDescription `type:"structure"`
}

// String returns the string representation
func (s UpdateDocumentDefaultVersionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s UpdateDocumentDefaultVersionOutput) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *UpdateDocumentDefaultVersionOutput) SetDescription(v *DocumentDefaultVersionDescription) *UpdateDocumentDefaultVersionOutput {
	s.Description = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateDocumentRequest
type UpdateDocumentInput struct {
	_ struct{} `type:"structure"`

	// The content in a document that you want to update.
	//
	// Content is a required field
	Content *string `min:"1" type:"string" required:"true"`

	// The version of the document that you want to update.
	DocumentVersion *string `type:"string"`

	// The name of the document that you want to update.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`
}

// String returns the string representation
func (s UpdateDocumentInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s UpdateDocumentInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateDocumentInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateDocumentInput"}
	if s.Content == nil {
		invalidParams.Add(request.NewErrParamRequired("Content"))
	}
	if s.Content != nil && len(*s.Content) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Content", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContent sets the Content field's value.
func (s *UpdateDocumentInput) SetContent(v string) *UpdateDocumentInput {
	s.Content = &v
	return s
}

// SetDocumentVersion sets the DocumentVersion field's value.
func (s *UpdateDocumentInput) SetDocumentVersion(v string) *UpdateDocumentInput {
	s.DocumentVersion = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateDocumentInput) SetName(v string) *UpdateDocumentInput {
	s.Name = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateDocumentResult
type UpdateDocumentOutput struct {
	_ struct{} `type:"structure"`

	// A description of the document that was updated.
	DocumentDescription *DocumentDescription `type:"structure"`
}

// String returns the string representation
func (s UpdateDocumentOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s UpdateDocumentOutput) GoString() string {
	return s.String()
}

// SetDocumentDescription sets the DocumentDescription field's value.
func (s *UpdateDocumentOutput) SetDocumentDescription(v *DocumentDescription) *UpdateDocumentOutput {
	s.DocumentDescription = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateMaintenanceWindowRequest
type UpdateMaintenanceWindowInput struct {
	_ struct{} `type:"structure"`

	// Whether targets must be registered with the Maintenance Window before tasks
	// can be defined for those targets.
	AllowUnassociatedTargets *bool `type:"boolean"`

	// The number of hours before the end of the Maintenance Window that Systems
	// Manager stops scheduling new tasks for execution.
	Cutoff *int64 `type:"integer"`

	// The duration of the Maintenance Window in hours.
	Duration *int64 `min:"1" type:"integer"`

	// Whether the Maintenance Window is enabled.
	Enabled *bool `type:"boolean"`

	// The name of the Maintenance Window.
	Name *string `min:"3" type:"string"`

	// The schedule of the Maintenance Window in the form of a cron or rate expression.
	Schedule *string `min:"1" type:"string"`

	// The ID of the Maintenance Window to update.
	//
	// WindowId is a required field
	WindowId *string `min:"20" type:"string" required:"true"`
}

// String returns the string representation
func (s UpdateMaintenanceWindowInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s UpdateMaintenanceWindowInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateMaintenanceWindowInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateMaintenanceWindowInput"}
	if s.Duration != nil && *s.Duration < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Duration", 1))
	}
	if s.Name != nil && len(*s.Name) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 3))
	}
	if s.Schedule != nil && len(*s.Schedule) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Schedule", 1))
	}
	if s.WindowId == nil {
		invalidParams.Add(request.NewErrParamRequired("WindowId"))
	}
	if s.WindowId != nil && len(*s.WindowId) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("WindowId", 20))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAllowUnassociatedTargets sets the AllowUnassociatedTargets field's value.
func (s *UpdateMaintenanceWindowInput) SetAllowUnassociatedTargets(v bool) *UpdateMaintenanceWindowInput {
	s.AllowUnassociatedTargets = &v
	return s
}

// SetCutoff sets the Cutoff field's value.
func (s *UpdateMaintenanceWindowInput) SetCutoff(v int64) *UpdateMaintenanceWindowInput {
	s.Cutoff = &v
	return s
}

// SetDuration sets the Duration field's value.
func (s *UpdateMaintenanceWindowInput) SetDuration(v int64) *UpdateMaintenanceWindowInput {
	s.Duration = &v
	return s
}

// SetEnabled sets the Enabled field's value.
func (s *UpdateMaintenanceWindowInput) SetEnabled(v bool) *UpdateMaintenanceWindowInput {
	s.Enabled = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateMaintenanceWindowInput) SetName(v string) *UpdateMaintenanceWindowInput {
	s.Name = &v
	return s
}

// SetSchedule sets the Schedule field's value.
func (s *UpdateMaintenanceWindowInput) SetSchedule(v string) *UpdateMaintenanceWindowInput {
	s.Schedule = &v
	return s
}

// SetWindowId sets the WindowId field's value.
func (s *UpdateMaintenanceWindowInput) SetWindowId(v string) *UpdateMaintenanceWindowInput {
	s.WindowId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateMaintenanceWindowResult
type UpdateMaintenanceWindowOutput struct {
	_ struct{} `type:"structure"`

	// Whether targets must be registered with the Maintenance Window before tasks
	// can be defined for those targets.
	AllowUnassociatedTargets *bool `type:"boolean"`

	// The number of hours before the end of the Maintenance Window that Systems
	// Manager stops scheduling new tasks for execution.
	Cutoff *int64 `type:"integer"`

	// The duration of the Maintenance Window in hours.
	Duration *int64 `min:"1" type:"integer"`

	// Whether the Maintenance Window is enabled.
	Enabled *bool `type:"boolean"`

	// The name of the Maintenance Window.
	Name *string `min:"3" type:"string"`

	// The schedule of the Maintenance Window in the form of a cron or rate expression.
	Schedule *string `min:"1" type:"string"`

	// The ID of the created Maintenance Window.
	WindowId *string `min:"20" type:"string"`
}

// String returns the string representation
func (s UpdateMaintenanceWindowOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s UpdateMaintenanceWindowOutput) GoString() string {
	return s.String()
}

// SetAllowUnassociatedTargets sets the AllowUnassociatedTargets field's value.
func (s *UpdateMaintenanceWindowOutput) SetAllowUnassociatedTargets(v bool) *UpdateMaintenanceWindowOutput {
	s.AllowUnassociatedTargets = &v
	return s
}

// SetCutoff sets the Cutoff field's value.
func (s *UpdateMaintenanceWindowOutput) SetCutoff(v int64) *UpdateMaintenanceWindowOutput {
	s.Cutoff = &v
	return s
}

// SetDuration sets the Duration field's value.
func (s *UpdateMaintenanceWindowOutput) SetDuration(v int64) *UpdateMaintenanceWindowOutput {
	s.Duration = &v
	return s
}

// SetEnabled sets the Enabled field's value.
func (s *UpdateMaintenanceWindowOutput) SetEnabled(v bool) *UpdateMaintenanceWindowOutput {
	s.Enabled = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateMaintenanceWindowOutput) SetName(v string) *UpdateMaintenanceWindowOutput {
	s.Name = &v
	return s
}

// SetSchedule sets the Schedule field's value.
func (s *UpdateMaintenanceWindowOutput) SetSchedule(v string) *UpdateMaintenanceWindowOutput {
	s.Schedule = &v
	return s
}

// SetWindowId sets the WindowId field's value.
func (s *UpdateMaintenanceWindowOutput) SetWindowId(v string) *UpdateMaintenanceWindowOutput {
	s.WindowId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateManagedInstanceRoleRequest
type UpdateManagedInstanceRoleInput struct {
	_ struct{} `type:"structure"`

	// The IAM role you want to assign or change.
	//
	// IamRole is a required field
	IamRole *string `type:"string" required:"true"`

	// The ID of the managed instance where you want to update the role.
	//
	// InstanceId is a required field
	InstanceId *string `type:"string" required:"true"`
}

// String returns the string representation
func (s UpdateManagedInstanceRoleInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s UpdateManagedInstanceRoleInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateManagedInstanceRoleInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateManagedInstanceRoleInput"}
	if s.IamRole == nil {
		invalidParams.Add(request.NewErrParamRequired("IamRole"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetIamRole sets the IamRole field's value.
func (s *UpdateManagedInstanceRoleInput) SetIamRole(v string) *UpdateManagedInstanceRoleInput {
	s.IamRole = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateManagedInstanceRoleInput) SetInstanceId(v string) *UpdateManagedInstanceRoleInput {
	s.InstanceId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateManagedInstanceRoleResult
type UpdateManagedInstanceRoleOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation
func (s UpdateManagedInstanceRoleOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s UpdateManagedInstanceRoleOutput) GoString() string {
	return s.String()
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdatePatchBaselineRequest
type UpdatePatchBaselineInput struct {
	_ struct{} `type:"structure"`

	// A set of rules used to include patches in the baseline.
	ApprovalRules *PatchRuleGroup `type:"structure"`

	// A list of explicitly approved patches for the baseline.
	ApprovedPatches []*string `type:"list"`

	// The ID of the patch baseline to update.
	//
	// BaselineId is a required field
	BaselineId *string `min:"20" type:"string" required:"true"`

	// A description of the patch baseline.
	Description *string `min:"1" type:"string"`

	// A set of global filters used to exclude patches from the baseline.
	GlobalFilters *PatchFilterGroup `type:"structure"`

	// The name of the patch baseline.
	Name *string `min:"3" type:"string"`

	// A list of explicitly rejected patches for the baseline.
	RejectedPatches []*string `type:"list"`
}

// String returns the string representation
func (s UpdatePatchBaselineInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s UpdatePatchBaselineInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdatePatchBaselineInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdatePatchBaselineInput"}
	if s.BaselineId == nil {
		invalidParams.Add(request.NewErrParamRequired("BaselineId"))
	}
	if s.BaselineId != nil && len(*s.BaselineId) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("BaselineId", 20))
	}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.Name != nil && len(*s.Name) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 3))
	}
	if s.ApprovalRules != nil {
		if err := s.ApprovalRules.Validate(); err != nil {
			invalidParams.AddNested("ApprovalRules", err.(request.ErrInvalidParams))
		}
	}
	if s.GlobalFilters != nil {
		if err := s.GlobalFilters.Validate(); err != nil {
			invalidParams.AddNested("GlobalFilters", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetApprovalRules sets the ApprovalRules field's value.
func (s *UpdatePatchBaselineInput) SetApprovalRules(v *PatchRuleGroup) *UpdatePatchBaselineInput {
	s.ApprovalRules = v
	return s
}

// SetApprovedPatches sets the ApprovedPatches field's value.
func (s *UpdatePatchBaselineInput) SetApprovedPatches(v []*string) *UpdatePatchBaselineInput {
	s.ApprovedPatches = v
	return s
}

// SetBaselineId sets the BaselineId field's value.
func (s *UpdatePatchBaselineInput) SetBaselineId(v string) *UpdatePatchBaselineInput {
	s.BaselineId = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdatePatchBaselineInput) SetDescription(v string) *UpdatePatchBaselineInput {
	s.Description = &v
	return s
}

// SetGlobalFilters sets the GlobalFilters field's value.
func (s *UpdatePatchBaselineInput) SetGlobalFilters(v *PatchFilterGroup) *UpdatePatchBaselineInput {
	s.GlobalFilters = v
	return s
}

// SetName sets the Name field's value.
func (s *UpdatePatchBaselineInput) SetName(v string) *UpdatePatchBaselineInput {
	s.Name = &v
	return s
}

// SetRejectedPatches sets the RejectedPatches field's value.
func (s *UpdatePatchBaselineInput) SetRejectedPatches(v []*string) *UpdatePatchBaselineInput {
	s.RejectedPatches = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdatePatchBaselineResult
type UpdatePatchBaselineOutput struct {
	_ struct{} `type:"structure"`

	// A set of rules used to include patches in the baseline.
	ApprovalRules *PatchRuleGroup `type:"structure"`

	// A list of explicitly approved patches for the baseline.
	ApprovedPatches []*string `type:"list"`

	// The ID of the deleted patch baseline.
	BaselineId *string `min:"20" type:"string"`

	// The date when the patch baseline was created.
	CreatedDate *time.Time `type:"timestamp" timestampFormat:"unix"`

	// A description of the Patch Baseline.
	Description *string `min:"1" type:"string"`

	// A set of global filters used to exclude patches from the baseline.
	GlobalFilters *PatchFilterGroup `type:"structure"`

	// The date when the patch baseline was last modified.
	ModifiedDate *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The name of the patch baseline.
	Name *string `min:"3" type:"string"`

	// A list of explicitly rejected patches for the baseline.
	RejectedPatches []*string `type:"list"`
}

// String returns the string representation
func (s UpdatePatchBaselineOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s UpdatePatchBaselineOutput) GoString() string {
	return s.String()
}

// SetApprovalRules sets the ApprovalRules field's value.
func (s *UpdatePatchBaselineOutput) SetApprovalRules(v *PatchRuleGroup) *UpdatePatchBaselineOutput {
	s.ApprovalRules = v
	return s
}

// SetApprovedPatches sets the ApprovedPatches field's value.
func (s *UpdatePatchBaselineOutput) SetApprovedPatches(v []*string) *UpdatePatchBaselineOutput {
	s.ApprovedPatches = v
	return s
}

// SetBaselineId sets the BaselineId field's value.
func (s *UpdatePatchBaselineOutput) SetBaselineId(v string) *UpdatePatchBaselineOutput {
	s.BaselineId = &v
	return s
}

// SetCreatedDate sets the CreatedDate field's value.
func (s *UpdatePatchBaselineOutput) SetCreatedDate(v time.Time) *UpdatePatchBaselineOutput {
	s.CreatedDate = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdatePatchBaselineOutput) SetDescription(v string) *UpdatePatchBaselineOutput {
	s.Description = &v
	return s
}

// SetGlobalFilters sets the GlobalFilters field's value.
func (s *UpdatePatchBaselineOutput) SetGlobalFilters(v *PatchFilterGroup) *UpdatePatchBaselineOutput {
	s.GlobalFilters = v
	return s
}

// SetModifiedDate sets the ModifiedDate field's value.
func (s *UpdatePatchBaselineOutput) SetModifiedDate(v time.Time) *UpdatePatchBaselineOutput {
	s.ModifiedDate = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdatePatchBaselineOutput) SetName(v string) *UpdatePatchBaselineOutput {
	s.Name = &v
	return s
}

// SetRejectedPatches sets the RejectedPatches field's value.
func (s *UpdatePatchBaselineOutput) SetRejectedPatches(v []*string) *UpdatePatchBaselineOutput {
	s.RejectedPatches = v
	return s
}

const (
	// AssociationFilterKeyInstanceId is a AssociationFilterKey enum value
	AssociationFilterKeyInstanceId = "InstanceId"

	// AssociationFilterKeyName is a AssociationFilterKey enum value
	AssociationFilterKeyName = "Name"

	// AssociationFilterKeyAssociationId is a AssociationFilterKey enum value
	AssociationFilterKeyAssociationId = "AssociationId"

	// AssociationFilterKeyAssociationStatusName is a AssociationFilterKey enum value
	AssociationFilterKeyAssociationStatusName = "AssociationStatusName"

	// AssociationFilterKeyLastExecutedBefore is a AssociationFilterKey enum value
	AssociationFilterKeyLastExecutedBefore = "LastExecutedBefore"

	// AssociationFilterKeyLastExecutedAfter is a AssociationFilterKey enum value
	AssociationFilterKeyLastExecutedAfter = "LastExecutedAfter"
)

const (
	// AssociationStatusNamePending is a AssociationStatusName enum value
	AssociationStatusNamePending = "Pending"

	// AssociationStatusNameSuccess is a AssociationStatusName enum value
	AssociationStatusNameSuccess = "Success"

	// AssociationStatusNameFailed is a AssociationStatusName enum value
	AssociationStatusNameFailed = "Failed"
)

const (
	// AutomationExecutionFilterKeyDocumentNamePrefix is a AutomationExecutionFilterKey enum value
	AutomationExecutionFilterKeyDocumentNamePrefix = "DocumentNamePrefix"

	// AutomationExecutionFilterKeyExecutionStatus is a AutomationExecutionFilterKey enum value
	AutomationExecutionFilterKeyExecutionStatus = "ExecutionStatus"
)

const (
	// AutomationExecutionStatusPending is a AutomationExecutionStatus enum value
	AutomationExecutionStatusPending = "Pending"

	// AutomationExecutionStatusInProgress is a AutomationExecutionStatus enum value
	AutomationExecutionStatusInProgress = "InProgress"

	// AutomationExecutionStatusSuccess is a AutomationExecutionStatus enum value
	AutomationExecutionStatusSuccess = "Success"

	// AutomationExecutionStatusTimedOut is a AutomationExecutionStatus enum value
	AutomationExecutionStatusTimedOut = "TimedOut"

	// AutomationExecutionStatusCancelled is a AutomationExecutionStatus enum value
	AutomationExecutionStatusCancelled = "Cancelled"

	// AutomationExecutionStatusFailed is a AutomationExecutionStatus enum value
	AutomationExecutionStatusFailed = "Failed"
)

const (
	// CommandFilterKeyInvokedAfter is a CommandFilterKey enum value
	CommandFilterKeyInvokedAfter = "InvokedAfter"

	// CommandFilterKeyInvokedBefore is a CommandFilterKey enum value
	CommandFilterKeyInvokedBefore = "InvokedBefore"

	// CommandFilterKeyStatus is a CommandFilterKey enum value
	CommandFilterKeyStatus = "Status"
)

const (
	// CommandInvocationStatusPending is a CommandInvocationStatus enum value
	CommandInvocationStatusPending = "Pending"

	// CommandInvocationStatusInProgress is a CommandInvocationStatus enum value
	CommandInvocationStatusInProgress = "InProgress"

	// CommandInvocationStatusDelayed is a CommandInvocationStatus enum value
	CommandInvocationStatusDelayed = "Delayed"

	// CommandInvocationStatusSuccess is a CommandInvocationStatus enum value
	CommandInvocationStatusSuccess = "Success"

	// CommandInvocationStatusCancelled is a CommandInvocationStatus enum value
	CommandInvocationStatusCancelled = "Cancelled"

	// CommandInvocationStatusTimedOut is a CommandInvocationStatus enum value
	CommandInvocationStatusTimedOut = "TimedOut"

	// CommandInvocationStatusFailed is a CommandInvocationStatus enum value
	CommandInvocationStatusFailed = "Failed"

	// CommandInvocationStatusCancelling is a CommandInvocationStatus enum value
	CommandInvocationStatusCancelling = "Cancelling"
)

const (
	// CommandPluginStatusPending is a CommandPluginStatus enum value
	CommandPluginStatusPending = "Pending"

	// CommandPluginStatusInProgress is a CommandPluginStatus enum value
	CommandPluginStatusInProgress = "InProgress"

	// CommandPluginStatusSuccess is a CommandPluginStatus enum value
	CommandPluginStatusSuccess = "Success"

	// CommandPluginStatusTimedOut is a CommandPluginStatus enum value
	CommandPluginStatusTimedOut = "TimedOut"

	// CommandPluginStatusCancelled is a CommandPluginStatus enum value
	CommandPluginStatusCancelled = "Cancelled"

	// CommandPluginStatusFailed is a CommandPluginStatus enum value
	CommandPluginStatusFailed = "Failed"
)

const (
	// CommandStatusPending is a CommandStatus enum value
	CommandStatusPending = "Pending"

	// CommandStatusInProgress is a CommandStatus enum value
	CommandStatusInProgress = "InProgress"

	// CommandStatusSuccess is a CommandStatus enum value
	CommandStatusSuccess = "Success"

	// CommandStatusCancelled is a CommandStatus enum value
	CommandStatusCancelled = "Cancelled"

	// CommandStatusFailed is a CommandStatus enum value
	CommandStatusFailed = "Failed"

	// CommandStatusTimedOut is a CommandStatus enum value
	CommandStatusTimedOut = "TimedOut"

	// CommandStatusCancelling is a CommandStatus enum value
	CommandStatusCancelling = "Cancelling"
)

const (
	// DescribeActivationsFilterKeysActivationIds is a DescribeActivationsFilterKeys enum value
	DescribeActivationsFilterKeysActivationIds = "ActivationIds"

	// DescribeActivationsFilterKeysDefaultInstanceName is a DescribeActivationsFilterKeys enum value
	DescribeActivationsFilterKeysDefaultInstanceName = "DefaultInstanceName"

	// DescribeActivationsFilterKeysIamRole is a DescribeActivationsFilterKeys enum value
	DescribeActivationsFilterKeysIamRole = "IamRole"
)

const (
	// DocumentFilterKeyName is a DocumentFilterKey enum value
	DocumentFilterKeyName = "Name"

	// DocumentFilterKeyOwner is a DocumentFilterKey enum value
	DocumentFilterKeyOwner = "Owner"

	// DocumentFilterKeyPlatformTypes is a DocumentFilterKey enum value
	DocumentFilterKeyPlatformTypes = "PlatformTypes"

	// DocumentFilterKeyDocumentType is a DocumentFilterKey enum value
	DocumentFilterKeyDocumentType = "DocumentType"
)

const (
	// DocumentHashTypeSha256 is a DocumentHashType enum value
	DocumentHashTypeSha256 = "Sha256"

	// DocumentHashTypeSha1 is a DocumentHashType enum value
	DocumentHashTypeSha1 = "Sha1"
)

const (
	// DocumentParameterTypeString is a DocumentParameterType enum value
	DocumentParameterTypeString = "String"

	// DocumentParameterTypeStringList is a DocumentParameterType enum value
	DocumentParameterTypeStringList = "StringList"
)

const (
	// DocumentPermissionTypeShare is a DocumentPermissionType enum value
	DocumentPermissionTypeShare = "Share"
)

const (
	// DocumentStatusCreating is a DocumentStatus enum value
	DocumentStatusCreating = "Creating"

	// DocumentStatusActive is a DocumentStatus enum value
	DocumentStatusActive = "Active"

	// DocumentStatusUpdating is a DocumentStatus enum value
	DocumentStatusUpdating = "Updating"

	// DocumentStatusDeleting is a DocumentStatus enum value
	DocumentStatusDeleting = "Deleting"
)

const (
	// DocumentTypeCommand is a DocumentType enum value
	DocumentTypeCommand = "Command"

	// DocumentTypePolicy is a DocumentType enum value
	DocumentTypePolicy = "Policy"

	// DocumentTypeAutomation is a DocumentType enum value
	DocumentTypeAutomation = "Automation"
)

const (
	// FaultClient is a Fault enum value
	FaultClient = "Client"

	// FaultServer is a Fault enum value
	FaultServer = "Server"

	// FaultUnknown is a Fault enum value
	FaultUnknown = "Unknown"
)

const (
	// InstanceInformationFilterKeyInstanceIds is a InstanceInformationFilterKey enum value
	InstanceInformationFilterKeyInstanceIds = "InstanceIds"

	// InstanceInformationFilterKeyAgentVersion is a InstanceInformationFilterKey enum value
	InstanceInformationFilterKeyAgentVersion = "AgentVersion"

	// InstanceInformationFilterKeyPingStatus is a InstanceInformationFilterKey enum value
	InstanceInformationFilterKeyPingStatus = "PingStatus"

	// InstanceInformationFilterKeyPlatformTypes is a InstanceInformationFilterKey enum value
	InstanceInformationFilterKeyPlatformTypes = "PlatformTypes"

	// InstanceInformationFilterKeyActivationIds is a InstanceInformationFilterKey enum value
	InstanceInformationFilterKeyActivationIds = "ActivationIds"

	// InstanceInformationFilterKeyIamRole is a InstanceInformationFilterKey enum value
	InstanceInformationFilterKeyIamRole = "IamRole"

	// InstanceInformationFilterKeyResourceType is a InstanceInformationFilterKey enum value
	InstanceInformationFilterKeyResourceType = "ResourceType"

	// InstanceInformationFilterKeyAssociationStatus is a InstanceInformationFilterKey enum value
	InstanceInformationFilterKeyAssociationStatus = "AssociationStatus"
)

const (
	// InstancePatchStateOperatorTypeEqual is a InstancePatchStateOperatorType enum value
	InstancePatchStateOperatorTypeEqual = "Equal"

	// InstancePatchStateOperatorTypeNotEqual is a InstancePatchStateOperatorType enum value
	InstancePatchStateOperatorTypeNotEqual = "NotEqual"

	// InstancePatchStateOperatorTypeLessThan is a InstancePatchStateOperatorType enum value
	InstancePatchStateOperatorTypeLessThan = "LessThan"

	// InstancePatchStateOperatorTypeGreaterThan is a InstancePatchStateOperatorType enum value
	InstancePatchStateOperatorTypeGreaterThan = "GreaterThan"
)

const (
	// InventoryAttributeDataTypeString is a InventoryAttributeDataType enum value
	InventoryAttributeDataTypeString = "string"

	// InventoryAttributeDataTypeNumber is a InventoryAttributeDataType enum value
	InventoryAttributeDataTypeNumber = "number"
)

const (
	// InventoryQueryOperatorTypeEqual is a InventoryQueryOperatorType enum value
	InventoryQueryOperatorTypeEqual = "Equal"

	// InventoryQueryOperatorTypeNotEqual is a InventoryQueryOperatorType enum value
	InventoryQueryOperatorTypeNotEqual = "NotEqual"

	// InventoryQueryOperatorTypeBeginWith is a InventoryQueryOperatorType enum value
	InventoryQueryOperatorTypeBeginWith = "BeginWith"

	// InventoryQueryOperatorTypeLessThan is a InventoryQueryOperatorType enum value
	InventoryQueryOperatorTypeLessThan = "LessThan"

	// InventoryQueryOperatorTypeGreaterThan is a InventoryQueryOperatorType enum value
	InventoryQueryOperatorTypeGreaterThan = "GreaterThan"
)

const (
	// MaintenanceWindowExecutionStatusPending is a MaintenanceWindowExecutionStatus enum value
	MaintenanceWindowExecutionStatusPending = "PENDING"

	// MaintenanceWindowExecutionStatusInProgress is a MaintenanceWindowExecutionStatus enum value
	MaintenanceWindowExecutionStatusInProgress = "IN_PROGRESS"

	// MaintenanceWindowExecutionStatusSuccess is a MaintenanceWindowExecutionStatus enum value
	MaintenanceWindowExecutionStatusSuccess = "SUCCESS"

	// MaintenanceWindowExecutionStatusFailed is a MaintenanceWindowExecutionStatus enum value
	MaintenanceWindowExecutionStatusFailed = "FAILED"

	// MaintenanceWindowExecutionStatusTimedOut is a MaintenanceWindowExecutionStatus enum value
	MaintenanceWindowExecutionStatusTimedOut = "TIMED_OUT"

	// MaintenanceWindowExecutionStatusCancelling is a MaintenanceWindowExecutionStatus enum value
	MaintenanceWindowExecutionStatusCancelling = "CANCELLING"

	// MaintenanceWindowExecutionStatusCancelled is a MaintenanceWindowExecutionStatus enum value
	MaintenanceWindowExecutionStatusCancelled = "CANCELLED"

	// MaintenanceWindowExecutionStatusSkippedOverlapping is a MaintenanceWindowExecutionStatus enum value
	MaintenanceWindowExecutionStatusSkippedOverlapping = "SKIPPED_OVERLAPPING"
)

const (
	// MaintenanceWindowResourceTypeInstance is a MaintenanceWindowResourceType enum value
	MaintenanceWindowResourceTypeInstance = "INSTANCE"
)

const (
	// MaintenanceWindowTaskTypeRunCommand is a MaintenanceWindowTaskType enum value
	MaintenanceWindowTaskTypeRunCommand = "RUN_COMMAND"
)

const (
	// NotificationEventAll is a NotificationEvent enum value
	NotificationEventAll = "All"

	// NotificationEventInProgress is a NotificationEvent enum value
	NotificationEventInProgress = "InProgress"

	// NotificationEventSuccess is a NotificationEvent enum value
	NotificationEventSuccess = "Success"

	// NotificationEventTimedOut is a NotificationEvent enum value
	NotificationEventTimedOut = "TimedOut"

	// NotificationEventCancelled is a NotificationEvent enum value
	NotificationEventCancelled = "Cancelled"

	// NotificationEventFailed is a NotificationEvent enum value
	NotificationEventFailed = "Failed"
)

const (
	// NotificationTypeCommand is a NotificationType enum value
	NotificationTypeCommand = "Command"

	// NotificationTypeInvocation is a NotificationType enum value
	NotificationTypeInvocation = "Invocation"
)

const (
	// ParameterTypeString is a ParameterType enum value
	ParameterTypeString = "String"

	// ParameterTypeStringList is a ParameterType enum value
	ParameterTypeStringList = "StringList"

	// ParameterTypeSecureString is a ParameterType enum value
	ParameterTypeSecureString = "SecureString"
)

const (
	// ParametersFilterKeyName is a ParametersFilterKey enum value
	ParametersFilterKeyName = "Name"

	// ParametersFilterKeyType is a ParametersFilterKey enum value
	ParametersFilterKeyType = "Type"

	// ParametersFilterKeyKeyId is a ParametersFilterKey enum value
	ParametersFilterKeyKeyId = "KeyId"
)

const (
	// PatchComplianceDataStateInstalled is a PatchComplianceDataState enum value
	PatchComplianceDataStateInstalled = "INSTALLED"

	// PatchComplianceDataStateInstalledOther is a PatchComplianceDataState enum value
	PatchComplianceDataStateInstalledOther = "INSTALLED_OTHER"

	// PatchComplianceDataStateMissing is a PatchComplianceDataState enum value
	PatchComplianceDataStateMissing = "MISSING"

	// PatchComplianceDataStateNotApplicable is a PatchComplianceDataState enum value
	PatchComplianceDataStateNotApplicable = "NOT_APPLICABLE"

	// PatchComplianceDataStateFailed is a PatchComplianceDataState enum value
	PatchComplianceDataStateFailed = "FAILED"
)

const (
	// PatchDeploymentStatusApproved is a PatchDeploymentStatus enum value
	PatchDeploymentStatusApproved = "APPROVED"

	// PatchDeploymentStatusPendingApproval is a PatchDeploymentStatus enum value
	PatchDeploymentStatusPendingApproval = "PENDING_APPROVAL"

	// PatchDeploymentStatusExplicitApproved is a PatchDeploymentStatus enum value
	PatchDeploymentStatusExplicitApproved = "EXPLICIT_APPROVED"

	// PatchDeploymentStatusExplicitRejected is a PatchDeploymentStatus enum value
	PatchDeploymentStatusExplicitRejected = "EXPLICIT_REJECTED"
)

const (
	// PatchFilterKeyProduct is a PatchFilterKey enum value
	PatchFilterKeyProduct = "PRODUCT"

	// PatchFilterKeyClassification is a PatchFilterKey enum value
	PatchFilterKeyClassification = "CLASSIFICATION"

	// PatchFilterKeyMsrcSeverity is a PatchFilterKey enum value
	PatchFilterKeyMsrcSeverity = "MSRC_SEVERITY"

	// PatchFilterKeyPatchId is a PatchFilterKey enum value
	PatchFilterKeyPatchId = "PATCH_ID"
)

const (
	// PatchOperationTypeScan is a PatchOperationType enum value
	PatchOperationTypeScan = "Scan"

	// PatchOperationTypeInstall is a PatchOperationType enum value
	PatchOperationTypeInstall = "Install"
)

const (
	// PingStatusOnline is a PingStatus enum value
	PingStatusOnline = "Online"

	// PingStatusConnectionLost is a PingStatus enum value
	PingStatusConnectionLost = "ConnectionLost"

	// PingStatusInactive is a PingStatus enum value
	PingStatusInactive = "Inactive"
)

const (
	// PlatformTypeWindows is a PlatformType enum value
	PlatformTypeWindows = "Windows"

	// PlatformTypeLinux is a PlatformType enum value
	PlatformTypeLinux = "Linux"
)

const (
	// ResourceTypeManagedInstance is a ResourceType enum value
	ResourceTypeManagedInstance = "ManagedInstance"

	// ResourceTypeDocument is a ResourceType enum value
	ResourceTypeDocument = "Document"

	// ResourceTypeEc2instance is a ResourceType enum value
	ResourceTypeEc2instance = "EC2Instance"
)

const (
	// ResourceTypeForTaggingManagedInstance is a ResourceTypeForTagging enum value
	ResourceTypeForTaggingManagedInstance = "ManagedInstance"

	// ResourceTypeForTaggingMaintenanceWindow is a ResourceTypeForTagging enum value
	ResourceTypeForTaggingMaintenanceWindow = "MaintenanceWindow"

	// ResourceTypeForTaggingParameter is a ResourceTypeForTagging enum value
	ResourceTypeForTaggingParameter = "Parameter"
)
