// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.

package applicationdiscoveryservice

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"
	"github.com/aws/aws-sdk-go/private/protocol"
	"github.com/aws/aws-sdk-go/private/protocol/jsonrpc"
)

const opAssociateConfigurationItemsToApplication = "AssociateConfigurationItemsToApplication"

// AssociateConfigurationItemsToApplicationRequest generates a "aws/request.Request" representing the
// client's request for the AssociateConfigurationItemsToApplication operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See AssociateConfigurationItemsToApplication for more information on using the AssociateConfigurationItemsToApplication
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the AssociateConfigurationItemsToApplicationRequest method.
//	req, resp := client.AssociateConfigurationItemsToApplicationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/AssociateConfigurationItemsToApplication
func (c *ApplicationDiscoveryService) AssociateConfigurationItemsToApplicationRequest(input *AssociateConfigurationItemsToApplicationInput) (req *request.Request, output *AssociateConfigurationItemsToApplicationOutput) {
	op := &request.Operation{
		Name:       opAssociateConfigurationItemsToApplication,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &AssociateConfigurationItemsToApplicationInput{}
	}

	output = &AssociateConfigurationItemsToApplicationOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// AssociateConfigurationItemsToApplication API operation for AWS Application Discovery Service.
//
// Associates one or more configuration items with an application.
//
// 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 AWS Application Discovery Service's
// API operation AssociateConfigurationItemsToApplication for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/AssociateConfigurationItemsToApplication
func (c *ApplicationDiscoveryService) AssociateConfigurationItemsToApplication(input *AssociateConfigurationItemsToApplicationInput) (*AssociateConfigurationItemsToApplicationOutput, error) {
	req, out := c.AssociateConfigurationItemsToApplicationRequest(input)
	return out, req.Send()
}

// AssociateConfigurationItemsToApplicationWithContext is the same as AssociateConfigurationItemsToApplication with the addition of
// the ability to pass a context and additional request options.
//
// See AssociateConfigurationItemsToApplication 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 *ApplicationDiscoveryService) AssociateConfigurationItemsToApplicationWithContext(ctx aws.Context, input *AssociateConfigurationItemsToApplicationInput, opts ...request.Option) (*AssociateConfigurationItemsToApplicationOutput, error) {
	req, out := c.AssociateConfigurationItemsToApplicationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opBatchDeleteAgents = "BatchDeleteAgents"

// BatchDeleteAgentsRequest generates a "aws/request.Request" representing the
// client's request for the BatchDeleteAgents operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See BatchDeleteAgents for more information on using the BatchDeleteAgents
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the BatchDeleteAgentsRequest method.
//	req, resp := client.BatchDeleteAgentsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/BatchDeleteAgents
func (c *ApplicationDiscoveryService) BatchDeleteAgentsRequest(input *BatchDeleteAgentsInput) (req *request.Request, output *BatchDeleteAgentsOutput) {
	op := &request.Operation{
		Name:       opBatchDeleteAgents,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &BatchDeleteAgentsInput{}
	}

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

// BatchDeleteAgents API operation for AWS Application Discovery Service.
//
// Deletes one or more agents or collectors as specified by ID. Deleting an
// agent or collector does not delete the previously discovered data. To delete
// the data collected, use StartBatchDeleteConfigurationTask.
//
// 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 AWS Application Discovery Service's
// API operation BatchDeleteAgents for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/BatchDeleteAgents
func (c *ApplicationDiscoveryService) BatchDeleteAgents(input *BatchDeleteAgentsInput) (*BatchDeleteAgentsOutput, error) {
	req, out := c.BatchDeleteAgentsRequest(input)
	return out, req.Send()
}

// BatchDeleteAgentsWithContext is the same as BatchDeleteAgents with the addition of
// the ability to pass a context and additional request options.
//
// See BatchDeleteAgents 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 *ApplicationDiscoveryService) BatchDeleteAgentsWithContext(ctx aws.Context, input *BatchDeleteAgentsInput, opts ...request.Option) (*BatchDeleteAgentsOutput, error) {
	req, out := c.BatchDeleteAgentsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opBatchDeleteImportData = "BatchDeleteImportData"

// BatchDeleteImportDataRequest generates a "aws/request.Request" representing the
// client's request for the BatchDeleteImportData operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See BatchDeleteImportData for more information on using the BatchDeleteImportData
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the BatchDeleteImportDataRequest method.
//	req, resp := client.BatchDeleteImportDataRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/BatchDeleteImportData
func (c *ApplicationDiscoveryService) BatchDeleteImportDataRequest(input *BatchDeleteImportDataInput) (req *request.Request, output *BatchDeleteImportDataOutput) {
	op := &request.Operation{
		Name:       opBatchDeleteImportData,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &BatchDeleteImportDataInput{}
	}

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

// BatchDeleteImportData API operation for AWS Application Discovery Service.
//
// Deletes one or more import tasks, each identified by their import ID. Each
// import task has a number of records that can identify servers or applications.
//
// Amazon Web Services Application Discovery Service has built-in matching logic
// that will identify when discovered servers match existing entries that you've
// previously discovered, the information for the already-existing discovered
// server is updated. When you delete an import task that contains records that
// were used to match, the information in those matched records that comes from
// the deleted records will also be deleted.
//
// 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 AWS Application Discovery Service's
// API operation BatchDeleteImportData for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/BatchDeleteImportData
func (c *ApplicationDiscoveryService) BatchDeleteImportData(input *BatchDeleteImportDataInput) (*BatchDeleteImportDataOutput, error) {
	req, out := c.BatchDeleteImportDataRequest(input)
	return out, req.Send()
}

// BatchDeleteImportDataWithContext is the same as BatchDeleteImportData with the addition of
// the ability to pass a context and additional request options.
//
// See BatchDeleteImportData 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 *ApplicationDiscoveryService) BatchDeleteImportDataWithContext(ctx aws.Context, input *BatchDeleteImportDataInput, opts ...request.Option) (*BatchDeleteImportDataOutput, error) {
	req, out := c.BatchDeleteImportDataRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateApplication = "CreateApplication"

// CreateApplicationRequest generates a "aws/request.Request" representing the
// client's request for the CreateApplication operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See CreateApplication for more information on using the CreateApplication
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the CreateApplicationRequest method.
//	req, resp := client.CreateApplicationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/CreateApplication
func (c *ApplicationDiscoveryService) CreateApplicationRequest(input *CreateApplicationInput) (req *request.Request, output *CreateApplicationOutput) {
	op := &request.Operation{
		Name:       opCreateApplication,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateApplicationInput{}
	}

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

// CreateApplication API operation for AWS Application Discovery Service.
//
// Creates an application with the given name and description.
//
// 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 AWS Application Discovery Service's
// API operation CreateApplication for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/CreateApplication
func (c *ApplicationDiscoveryService) CreateApplication(input *CreateApplicationInput) (*CreateApplicationOutput, error) {
	req, out := c.CreateApplicationRequest(input)
	return out, req.Send()
}

// CreateApplicationWithContext is the same as CreateApplication with the addition of
// the ability to pass a context and additional request options.
//
// See CreateApplication 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 *ApplicationDiscoveryService) CreateApplicationWithContext(ctx aws.Context, input *CreateApplicationInput, opts ...request.Option) (*CreateApplicationOutput, error) {
	req, out := c.CreateApplicationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateTags = "CreateTags"

// CreateTagsRequest generates a "aws/request.Request" representing the
// client's request for the CreateTags operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See CreateTags for more information on using the CreateTags
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the CreateTagsRequest method.
//	req, resp := client.CreateTagsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/CreateTags
func (c *ApplicationDiscoveryService) CreateTagsRequest(input *CreateTagsInput) (req *request.Request, output *CreateTagsOutput) {
	op := &request.Operation{
		Name:       opCreateTags,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateTagsInput{}
	}

	output = &CreateTagsOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// CreateTags API operation for AWS Application Discovery Service.
//
// Creates one or more tags for configuration items. Tags are metadata that
// help you categorize IT assets. This API accepts a list of multiple configuration
// items.
//
// Do not store sensitive information (like personal data) in tags.
//
// 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 AWS Application Discovery Service's
// API operation CreateTags for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - ResourceNotFoundException
//     The specified configuration ID was not located. Verify the configuration
//     ID and try again.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/CreateTags
func (c *ApplicationDiscoveryService) CreateTags(input *CreateTagsInput) (*CreateTagsOutput, error) {
	req, out := c.CreateTagsRequest(input)
	return out, req.Send()
}

// CreateTagsWithContext is the same as CreateTags with the addition of
// the ability to pass a context and additional request options.
//
// See CreateTags 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 *ApplicationDiscoveryService) CreateTagsWithContext(ctx aws.Context, input *CreateTagsInput, opts ...request.Option) (*CreateTagsOutput, error) {
	req, out := c.CreateTagsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteApplications = "DeleteApplications"

// DeleteApplicationsRequest generates a "aws/request.Request" representing the
// client's request for the DeleteApplications operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeleteApplications for more information on using the DeleteApplications
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeleteApplicationsRequest method.
//	req, resp := client.DeleteApplicationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/DeleteApplications
func (c *ApplicationDiscoveryService) DeleteApplicationsRequest(input *DeleteApplicationsInput) (req *request.Request, output *DeleteApplicationsOutput) {
	op := &request.Operation{
		Name:       opDeleteApplications,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteApplicationsInput{}
	}

	output = &DeleteApplicationsOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// DeleteApplications API operation for AWS Application Discovery Service.
//
// Deletes a list of applications and their associations with configuration
// items.
//
// 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 AWS Application Discovery Service's
// API operation DeleteApplications for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/DeleteApplications
func (c *ApplicationDiscoveryService) DeleteApplications(input *DeleteApplicationsInput) (*DeleteApplicationsOutput, error) {
	req, out := c.DeleteApplicationsRequest(input)
	return out, req.Send()
}

// DeleteApplicationsWithContext is the same as DeleteApplications with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteApplications 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 *ApplicationDiscoveryService) DeleteApplicationsWithContext(ctx aws.Context, input *DeleteApplicationsInput, opts ...request.Option) (*DeleteApplicationsOutput, error) {
	req, out := c.DeleteApplicationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteTags = "DeleteTags"

// DeleteTagsRequest generates a "aws/request.Request" representing the
// client's request for the DeleteTags operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeleteTags for more information on using the DeleteTags
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeleteTagsRequest method.
//	req, resp := client.DeleteTagsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/DeleteTags
func (c *ApplicationDiscoveryService) DeleteTagsRequest(input *DeleteTagsInput) (req *request.Request, output *DeleteTagsOutput) {
	op := &request.Operation{
		Name:       opDeleteTags,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteTagsInput{}
	}

	output = &DeleteTagsOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// DeleteTags API operation for AWS Application Discovery Service.
//
// Deletes the association between configuration items and one or more tags.
// This API accepts a list of multiple configuration items.
//
// 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 AWS Application Discovery Service's
// API operation DeleteTags for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - ResourceNotFoundException
//     The specified configuration ID was not located. Verify the configuration
//     ID and try again.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/DeleteTags
func (c *ApplicationDiscoveryService) DeleteTags(input *DeleteTagsInput) (*DeleteTagsOutput, error) {
	req, out := c.DeleteTagsRequest(input)
	return out, req.Send()
}

// DeleteTagsWithContext is the same as DeleteTags with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteTags 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 *ApplicationDiscoveryService) DeleteTagsWithContext(ctx aws.Context, input *DeleteTagsInput, opts ...request.Option) (*DeleteTagsOutput, error) {
	req, out := c.DeleteTagsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeAgents = "DescribeAgents"

// DescribeAgentsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeAgents operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DescribeAgents for more information on using the DescribeAgents
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DescribeAgentsRequest method.
//	req, resp := client.DescribeAgentsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/DescribeAgents
func (c *ApplicationDiscoveryService) DescribeAgentsRequest(input *DescribeAgentsInput) (req *request.Request, output *DescribeAgentsOutput) {
	op := &request.Operation{
		Name:       opDescribeAgents,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeAgentsInput{}
	}

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

// DescribeAgents API operation for AWS Application Discovery Service.
//
// Lists agents or collectors as specified by ID or other filters. All agents/collectors
// associated with your user can be listed if you call DescribeAgents as is
// without passing any parameters.
//
// 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 AWS Application Discovery Service's
// API operation DescribeAgents for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/DescribeAgents
func (c *ApplicationDiscoveryService) DescribeAgents(input *DescribeAgentsInput) (*DescribeAgentsOutput, error) {
	req, out := c.DescribeAgentsRequest(input)
	return out, req.Send()
}

// DescribeAgentsWithContext is the same as DescribeAgents with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeAgents 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 *ApplicationDiscoveryService) DescribeAgentsWithContext(ctx aws.Context, input *DescribeAgentsInput, opts ...request.Option) (*DescribeAgentsOutput, error) {
	req, out := c.DescribeAgentsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// DescribeAgentsPages iterates over the pages of a DescribeAgents operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeAgents 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 DescribeAgents operation.
//	pageNum := 0
//	err := client.DescribeAgentsPages(params,
//	    func(page *applicationdiscoveryservice.DescribeAgentsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *ApplicationDiscoveryService) DescribeAgentsPages(input *DescribeAgentsInput, fn func(*DescribeAgentsOutput, bool) bool) error {
	return c.DescribeAgentsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeAgentsPagesWithContext same as DescribeAgentsPages 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 *ApplicationDiscoveryService) DescribeAgentsPagesWithContext(ctx aws.Context, input *DescribeAgentsInput, fn func(*DescribeAgentsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeAgentsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeAgentsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	for p.Next() {
		if !fn(p.Page().(*DescribeAgentsOutput), !p.HasNextPage()) {
			break
		}
	}

	return p.Err()
}

const opDescribeBatchDeleteConfigurationTask = "DescribeBatchDeleteConfigurationTask"

// DescribeBatchDeleteConfigurationTaskRequest generates a "aws/request.Request" representing the
// client's request for the DescribeBatchDeleteConfigurationTask operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DescribeBatchDeleteConfigurationTask for more information on using the DescribeBatchDeleteConfigurationTask
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DescribeBatchDeleteConfigurationTaskRequest method.
//	req, resp := client.DescribeBatchDeleteConfigurationTaskRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/DescribeBatchDeleteConfigurationTask
func (c *ApplicationDiscoveryService) DescribeBatchDeleteConfigurationTaskRequest(input *DescribeBatchDeleteConfigurationTaskInput) (req *request.Request, output *DescribeBatchDeleteConfigurationTaskOutput) {
	op := &request.Operation{
		Name:       opDescribeBatchDeleteConfigurationTask,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeBatchDeleteConfigurationTaskInput{}
	}

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

// DescribeBatchDeleteConfigurationTask API operation for AWS Application Discovery Service.
//
// Takes a unique deletion task identifier as input and returns metadata about
// a configuration deletion task.
//
// 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 AWS Application Discovery Service's
// API operation DescribeBatchDeleteConfigurationTask for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/DescribeBatchDeleteConfigurationTask
func (c *ApplicationDiscoveryService) DescribeBatchDeleteConfigurationTask(input *DescribeBatchDeleteConfigurationTaskInput) (*DescribeBatchDeleteConfigurationTaskOutput, error) {
	req, out := c.DescribeBatchDeleteConfigurationTaskRequest(input)
	return out, req.Send()
}

// DescribeBatchDeleteConfigurationTaskWithContext is the same as DescribeBatchDeleteConfigurationTask with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeBatchDeleteConfigurationTask 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 *ApplicationDiscoveryService) DescribeBatchDeleteConfigurationTaskWithContext(ctx aws.Context, input *DescribeBatchDeleteConfigurationTaskInput, opts ...request.Option) (*DescribeBatchDeleteConfigurationTaskOutput, error) {
	req, out := c.DescribeBatchDeleteConfigurationTaskRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeConfigurations = "DescribeConfigurations"

// DescribeConfigurationsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeConfigurations operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DescribeConfigurations for more information on using the DescribeConfigurations
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DescribeConfigurationsRequest method.
//	req, resp := client.DescribeConfigurationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/DescribeConfigurations
func (c *ApplicationDiscoveryService) DescribeConfigurationsRequest(input *DescribeConfigurationsInput) (req *request.Request, output *DescribeConfigurationsOutput) {
	op := &request.Operation{
		Name:       opDescribeConfigurations,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeConfigurationsInput{}
	}

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

// DescribeConfigurations API operation for AWS Application Discovery Service.
//
// Retrieves attributes for a list of configuration item IDs.
//
// All of the supplied IDs must be for the same asset type from one of the following:
//
//   - server
//
//   - application
//
//   - process
//
//   - connection
//
// Output fields are specific to the asset type specified. For example, the
// output for a server configuration item includes a list of attributes about
// the server, such as host name, operating system, number of network cards,
// etc.
//
// For a complete list of outputs for each asset type, see Using the DescribeConfigurations
// Action (https://docs.aws.amazon.com/application-discovery/latest/userguide/discovery-api-queries.html#DescribeConfigurations)
// in the Amazon Web Services Application Discovery Service 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 AWS Application Discovery Service's
// API operation DescribeConfigurations for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/DescribeConfigurations
func (c *ApplicationDiscoveryService) DescribeConfigurations(input *DescribeConfigurationsInput) (*DescribeConfigurationsOutput, error) {
	req, out := c.DescribeConfigurationsRequest(input)
	return out, req.Send()
}

// DescribeConfigurationsWithContext is the same as DescribeConfigurations with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeConfigurations 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 *ApplicationDiscoveryService) DescribeConfigurationsWithContext(ctx aws.Context, input *DescribeConfigurationsInput, opts ...request.Option) (*DescribeConfigurationsOutput, error) {
	req, out := c.DescribeConfigurationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeContinuousExports = "DescribeContinuousExports"

// DescribeContinuousExportsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeContinuousExports operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DescribeContinuousExports for more information on using the DescribeContinuousExports
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DescribeContinuousExportsRequest method.
//	req, resp := client.DescribeContinuousExportsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/DescribeContinuousExports
func (c *ApplicationDiscoveryService) DescribeContinuousExportsRequest(input *DescribeContinuousExportsInput) (req *request.Request, output *DescribeContinuousExportsOutput) {
	op := &request.Operation{
		Name:       opDescribeContinuousExports,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeContinuousExportsInput{}
	}

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

// DescribeContinuousExports API operation for AWS Application Discovery Service.
//
// Lists exports as specified by ID. All continuous exports associated with
// your user can be listed if you call DescribeContinuousExports as is without
// passing any parameters.
//
// 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 AWS Application Discovery Service's
// API operation DescribeContinuousExports for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - OperationNotPermittedException
//     This operation is not permitted.
//
//   - ResourceNotFoundException
//     The specified configuration ID was not located. Verify the configuration
//     ID and try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/DescribeContinuousExports
func (c *ApplicationDiscoveryService) DescribeContinuousExports(input *DescribeContinuousExportsInput) (*DescribeContinuousExportsOutput, error) {
	req, out := c.DescribeContinuousExportsRequest(input)
	return out, req.Send()
}

// DescribeContinuousExportsWithContext is the same as DescribeContinuousExports with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeContinuousExports 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 *ApplicationDiscoveryService) DescribeContinuousExportsWithContext(ctx aws.Context, input *DescribeContinuousExportsInput, opts ...request.Option) (*DescribeContinuousExportsOutput, error) {
	req, out := c.DescribeContinuousExportsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// DescribeContinuousExportsPages iterates over the pages of a DescribeContinuousExports operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeContinuousExports 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 DescribeContinuousExports operation.
//	pageNum := 0
//	err := client.DescribeContinuousExportsPages(params,
//	    func(page *applicationdiscoveryservice.DescribeContinuousExportsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *ApplicationDiscoveryService) DescribeContinuousExportsPages(input *DescribeContinuousExportsInput, fn func(*DescribeContinuousExportsOutput, bool) bool) error {
	return c.DescribeContinuousExportsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeContinuousExportsPagesWithContext same as DescribeContinuousExportsPages 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 *ApplicationDiscoveryService) DescribeContinuousExportsPagesWithContext(ctx aws.Context, input *DescribeContinuousExportsInput, fn func(*DescribeContinuousExportsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeContinuousExportsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeContinuousExportsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	for p.Next() {
		if !fn(p.Page().(*DescribeContinuousExportsOutput), !p.HasNextPage()) {
			break
		}
	}

	return p.Err()
}

const opDescribeExportConfigurations = "DescribeExportConfigurations"

// DescribeExportConfigurationsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeExportConfigurations operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DescribeExportConfigurations for more information on using the DescribeExportConfigurations
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DescribeExportConfigurationsRequest method.
//	req, resp := client.DescribeExportConfigurationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/DescribeExportConfigurations
//
// Deprecated: DescribeExportConfigurations has been deprecated
func (c *ApplicationDiscoveryService) DescribeExportConfigurationsRequest(input *DescribeExportConfigurationsInput) (req *request.Request, output *DescribeExportConfigurationsOutput) {
	if c.Client.Config.Logger != nil {
		c.Client.Config.Logger.Log("This operation, DescribeExportConfigurations, has been deprecated")
	}
	op := &request.Operation{
		Name:       opDescribeExportConfigurations,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeExportConfigurationsInput{}
	}

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

// DescribeExportConfigurations API operation for AWS Application Discovery Service.
//
// DescribeExportConfigurations is deprecated. Use DescribeExportTasks (https://docs.aws.amazon.com/application-discovery/latest/APIReference/API_DescribeExportTasks.html),
// instead.
//
// 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 AWS Application Discovery Service's
// API operation DescribeExportConfigurations for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - ResourceNotFoundException
//     The specified configuration ID was not located. Verify the configuration
//     ID and try again.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/DescribeExportConfigurations
//
// Deprecated: DescribeExportConfigurations has been deprecated
func (c *ApplicationDiscoveryService) DescribeExportConfigurations(input *DescribeExportConfigurationsInput) (*DescribeExportConfigurationsOutput, error) {
	req, out := c.DescribeExportConfigurationsRequest(input)
	return out, req.Send()
}

// DescribeExportConfigurationsWithContext is the same as DescribeExportConfigurations with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeExportConfigurations 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.
//
// Deprecated: DescribeExportConfigurationsWithContext has been deprecated
func (c *ApplicationDiscoveryService) DescribeExportConfigurationsWithContext(ctx aws.Context, input *DescribeExportConfigurationsInput, opts ...request.Option) (*DescribeExportConfigurationsOutput, error) {
	req, out := c.DescribeExportConfigurationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// DescribeExportConfigurationsPages iterates over the pages of a DescribeExportConfigurations operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeExportConfigurations 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 DescribeExportConfigurations operation.
//	pageNum := 0
//	err := client.DescribeExportConfigurationsPages(params,
//	    func(page *applicationdiscoveryservice.DescribeExportConfigurationsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
//
// Deprecated: DescribeExportConfigurationsPages has been deprecated
func (c *ApplicationDiscoveryService) DescribeExportConfigurationsPages(input *DescribeExportConfigurationsInput, fn func(*DescribeExportConfigurationsOutput, bool) bool) error {
	return c.DescribeExportConfigurationsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeExportConfigurationsPagesWithContext same as DescribeExportConfigurationsPages 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.
//
// Deprecated: DescribeExportConfigurationsPagesWithContext has been deprecated
func (c *ApplicationDiscoveryService) DescribeExportConfigurationsPagesWithContext(ctx aws.Context, input *DescribeExportConfigurationsInput, fn func(*DescribeExportConfigurationsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeExportConfigurationsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeExportConfigurationsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	for p.Next() {
		if !fn(p.Page().(*DescribeExportConfigurationsOutput), !p.HasNextPage()) {
			break
		}
	}

	return p.Err()
}

const opDescribeExportTasks = "DescribeExportTasks"

// DescribeExportTasksRequest generates a "aws/request.Request" representing the
// client's request for the DescribeExportTasks operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DescribeExportTasks for more information on using the DescribeExportTasks
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DescribeExportTasksRequest method.
//	req, resp := client.DescribeExportTasksRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/DescribeExportTasks
func (c *ApplicationDiscoveryService) DescribeExportTasksRequest(input *DescribeExportTasksInput) (req *request.Request, output *DescribeExportTasksOutput) {
	op := &request.Operation{
		Name:       opDescribeExportTasks,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeExportTasksInput{}
	}

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

// DescribeExportTasks API operation for AWS Application Discovery Service.
//
// Retrieve status of one or more export tasks. You can retrieve the status
// of up to 100 export tasks.
//
// 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 AWS Application Discovery Service's
// API operation DescribeExportTasks for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/DescribeExportTasks
func (c *ApplicationDiscoveryService) DescribeExportTasks(input *DescribeExportTasksInput) (*DescribeExportTasksOutput, error) {
	req, out := c.DescribeExportTasksRequest(input)
	return out, req.Send()
}

// DescribeExportTasksWithContext is the same as DescribeExportTasks with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeExportTasks 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 *ApplicationDiscoveryService) DescribeExportTasksWithContext(ctx aws.Context, input *DescribeExportTasksInput, opts ...request.Option) (*DescribeExportTasksOutput, error) {
	req, out := c.DescribeExportTasksRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// DescribeExportTasksPages iterates over the pages of a DescribeExportTasks operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeExportTasks 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 DescribeExportTasks operation.
//	pageNum := 0
//	err := client.DescribeExportTasksPages(params,
//	    func(page *applicationdiscoveryservice.DescribeExportTasksOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *ApplicationDiscoveryService) DescribeExportTasksPages(input *DescribeExportTasksInput, fn func(*DescribeExportTasksOutput, bool) bool) error {
	return c.DescribeExportTasksPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeExportTasksPagesWithContext same as DescribeExportTasksPages 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 *ApplicationDiscoveryService) DescribeExportTasksPagesWithContext(ctx aws.Context, input *DescribeExportTasksInput, fn func(*DescribeExportTasksOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeExportTasksInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeExportTasksRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	for p.Next() {
		if !fn(p.Page().(*DescribeExportTasksOutput), !p.HasNextPage()) {
			break
		}
	}

	return p.Err()
}

const opDescribeImportTasks = "DescribeImportTasks"

// DescribeImportTasksRequest generates a "aws/request.Request" representing the
// client's request for the DescribeImportTasks operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DescribeImportTasks for more information on using the DescribeImportTasks
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DescribeImportTasksRequest method.
//	req, resp := client.DescribeImportTasksRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/DescribeImportTasks
func (c *ApplicationDiscoveryService) DescribeImportTasksRequest(input *DescribeImportTasksInput) (req *request.Request, output *DescribeImportTasksOutput) {
	op := &request.Operation{
		Name:       opDescribeImportTasks,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeImportTasksInput{}
	}

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

// DescribeImportTasks API operation for AWS Application Discovery Service.
//
// Returns an array of import tasks for your account, including status information,
// times, IDs, the Amazon S3 Object URL for the import file, and more.
//
// 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 AWS Application Discovery Service's
// API operation DescribeImportTasks for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/DescribeImportTasks
func (c *ApplicationDiscoveryService) DescribeImportTasks(input *DescribeImportTasksInput) (*DescribeImportTasksOutput, error) {
	req, out := c.DescribeImportTasksRequest(input)
	return out, req.Send()
}

// DescribeImportTasksWithContext is the same as DescribeImportTasks with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeImportTasks 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 *ApplicationDiscoveryService) DescribeImportTasksWithContext(ctx aws.Context, input *DescribeImportTasksInput, opts ...request.Option) (*DescribeImportTasksOutput, error) {
	req, out := c.DescribeImportTasksRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// DescribeImportTasksPages iterates over the pages of a DescribeImportTasks operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeImportTasks 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 DescribeImportTasks operation.
//	pageNum := 0
//	err := client.DescribeImportTasksPages(params,
//	    func(page *applicationdiscoveryservice.DescribeImportTasksOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *ApplicationDiscoveryService) DescribeImportTasksPages(input *DescribeImportTasksInput, fn func(*DescribeImportTasksOutput, bool) bool) error {
	return c.DescribeImportTasksPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeImportTasksPagesWithContext same as DescribeImportTasksPages 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 *ApplicationDiscoveryService) DescribeImportTasksPagesWithContext(ctx aws.Context, input *DescribeImportTasksInput, fn func(*DescribeImportTasksOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeImportTasksInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeImportTasksRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	for p.Next() {
		if !fn(p.Page().(*DescribeImportTasksOutput), !p.HasNextPage()) {
			break
		}
	}

	return p.Err()
}

const opDescribeTags = "DescribeTags"

// DescribeTagsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeTags operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DescribeTags for more information on using the DescribeTags
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DescribeTagsRequest method.
//	req, resp := client.DescribeTagsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/DescribeTags
func (c *ApplicationDiscoveryService) DescribeTagsRequest(input *DescribeTagsInput) (req *request.Request, output *DescribeTagsOutput) {
	op := &request.Operation{
		Name:       opDescribeTags,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeTagsInput{}
	}

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

// DescribeTags API operation for AWS Application Discovery Service.
//
// Retrieves a list of configuration items that have tags as specified by the
// key-value pairs, name and value, passed to the optional parameter filters.
//
// There are three valid tag filter names:
//
//   - tagKey
//
//   - tagValue
//
//   - configurationId
//
// Also, all configuration items associated with your user that have tags can
// be listed if you call DescribeTags as is without passing any parameters.
//
// 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 AWS Application Discovery Service's
// API operation DescribeTags for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - ResourceNotFoundException
//     The specified configuration ID was not located. Verify the configuration
//     ID and try again.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/DescribeTags
func (c *ApplicationDiscoveryService) DescribeTags(input *DescribeTagsInput) (*DescribeTagsOutput, error) {
	req, out := c.DescribeTagsRequest(input)
	return out, req.Send()
}

// DescribeTagsWithContext is the same as DescribeTags with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeTags 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 *ApplicationDiscoveryService) DescribeTagsWithContext(ctx aws.Context, input *DescribeTagsInput, opts ...request.Option) (*DescribeTagsOutput, error) {
	req, out := c.DescribeTagsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// DescribeTagsPages iterates over the pages of a DescribeTags operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeTags 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 DescribeTags operation.
//	pageNum := 0
//	err := client.DescribeTagsPages(params,
//	    func(page *applicationdiscoveryservice.DescribeTagsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *ApplicationDiscoveryService) DescribeTagsPages(input *DescribeTagsInput, fn func(*DescribeTagsOutput, bool) bool) error {
	return c.DescribeTagsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeTagsPagesWithContext same as DescribeTagsPages 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 *ApplicationDiscoveryService) DescribeTagsPagesWithContext(ctx aws.Context, input *DescribeTagsInput, fn func(*DescribeTagsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeTagsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeTagsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	for p.Next() {
		if !fn(p.Page().(*DescribeTagsOutput), !p.HasNextPage()) {
			break
		}
	}

	return p.Err()
}

const opDisassociateConfigurationItemsFromApplication = "DisassociateConfigurationItemsFromApplication"

// DisassociateConfigurationItemsFromApplicationRequest generates a "aws/request.Request" representing the
// client's request for the DisassociateConfigurationItemsFromApplication operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DisassociateConfigurationItemsFromApplication for more information on using the DisassociateConfigurationItemsFromApplication
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DisassociateConfigurationItemsFromApplicationRequest method.
//	req, resp := client.DisassociateConfigurationItemsFromApplicationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/DisassociateConfigurationItemsFromApplication
func (c *ApplicationDiscoveryService) DisassociateConfigurationItemsFromApplicationRequest(input *DisassociateConfigurationItemsFromApplicationInput) (req *request.Request, output *DisassociateConfigurationItemsFromApplicationOutput) {
	op := &request.Operation{
		Name:       opDisassociateConfigurationItemsFromApplication,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DisassociateConfigurationItemsFromApplicationInput{}
	}

	output = &DisassociateConfigurationItemsFromApplicationOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// DisassociateConfigurationItemsFromApplication API operation for AWS Application Discovery Service.
//
// Disassociates one or more configuration items from an application.
//
// 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 AWS Application Discovery Service's
// API operation DisassociateConfigurationItemsFromApplication for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/DisassociateConfigurationItemsFromApplication
func (c *ApplicationDiscoveryService) DisassociateConfigurationItemsFromApplication(input *DisassociateConfigurationItemsFromApplicationInput) (*DisassociateConfigurationItemsFromApplicationOutput, error) {
	req, out := c.DisassociateConfigurationItemsFromApplicationRequest(input)
	return out, req.Send()
}

// DisassociateConfigurationItemsFromApplicationWithContext is the same as DisassociateConfigurationItemsFromApplication with the addition of
// the ability to pass a context and additional request options.
//
// See DisassociateConfigurationItemsFromApplication 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 *ApplicationDiscoveryService) DisassociateConfigurationItemsFromApplicationWithContext(ctx aws.Context, input *DisassociateConfigurationItemsFromApplicationInput, opts ...request.Option) (*DisassociateConfigurationItemsFromApplicationOutput, error) {
	req, out := c.DisassociateConfigurationItemsFromApplicationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opExportConfigurations = "ExportConfigurations"

// ExportConfigurationsRequest generates a "aws/request.Request" representing the
// client's request for the ExportConfigurations operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See ExportConfigurations for more information on using the ExportConfigurations
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the ExportConfigurationsRequest method.
//	req, resp := client.ExportConfigurationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/ExportConfigurations
//
// Deprecated: ExportConfigurations has been deprecated
func (c *ApplicationDiscoveryService) ExportConfigurationsRequest(input *ExportConfigurationsInput) (req *request.Request, output *ExportConfigurationsOutput) {
	if c.Client.Config.Logger != nil {
		c.Client.Config.Logger.Log("This operation, ExportConfigurations, has been deprecated")
	}
	op := &request.Operation{
		Name:       opExportConfigurations,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ExportConfigurationsInput{}
	}

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

// ExportConfigurations API operation for AWS Application Discovery Service.
//
// Deprecated. Use StartExportTask instead.
//
// Exports all discovered configuration data to an Amazon S3 bucket or an application
// that enables you to view and evaluate the data. Data includes tags and tag
// associations, processes, connections, servers, and system performance. This
// API returns an export ID that you can query using the DescribeExportConfigurations
// API. The system imposes a limit of two configuration exports in six hours.
//
// 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 AWS Application Discovery Service's
// API operation ExportConfigurations for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - OperationNotPermittedException
//     This operation is not permitted.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/ExportConfigurations
//
// Deprecated: ExportConfigurations has been deprecated
func (c *ApplicationDiscoveryService) ExportConfigurations(input *ExportConfigurationsInput) (*ExportConfigurationsOutput, error) {
	req, out := c.ExportConfigurationsRequest(input)
	return out, req.Send()
}

// ExportConfigurationsWithContext is the same as ExportConfigurations with the addition of
// the ability to pass a context and additional request options.
//
// See ExportConfigurations 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.
//
// Deprecated: ExportConfigurationsWithContext has been deprecated
func (c *ApplicationDiscoveryService) ExportConfigurationsWithContext(ctx aws.Context, input *ExportConfigurationsInput, opts ...request.Option) (*ExportConfigurationsOutput, error) {
	req, out := c.ExportConfigurationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetDiscoverySummary = "GetDiscoverySummary"

// GetDiscoverySummaryRequest generates a "aws/request.Request" representing the
// client's request for the GetDiscoverySummary operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See GetDiscoverySummary for more information on using the GetDiscoverySummary
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the GetDiscoverySummaryRequest method.
//	req, resp := client.GetDiscoverySummaryRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/GetDiscoverySummary
func (c *ApplicationDiscoveryService) GetDiscoverySummaryRequest(input *GetDiscoverySummaryInput) (req *request.Request, output *GetDiscoverySummaryOutput) {
	op := &request.Operation{
		Name:       opGetDiscoverySummary,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetDiscoverySummaryInput{}
	}

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

// GetDiscoverySummary API operation for AWS Application Discovery Service.
//
// Retrieves a short summary of discovered assets.
//
// This API operation takes no request parameters and is called as is at the
// command prompt as shown in the example.
//
// 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 AWS Application Discovery Service's
// API operation GetDiscoverySummary for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/GetDiscoverySummary
func (c *ApplicationDiscoveryService) GetDiscoverySummary(input *GetDiscoverySummaryInput) (*GetDiscoverySummaryOutput, error) {
	req, out := c.GetDiscoverySummaryRequest(input)
	return out, req.Send()
}

// GetDiscoverySummaryWithContext is the same as GetDiscoverySummary with the addition of
// the ability to pass a context and additional request options.
//
// See GetDiscoverySummary 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 *ApplicationDiscoveryService) GetDiscoverySummaryWithContext(ctx aws.Context, input *GetDiscoverySummaryInput, opts ...request.Option) (*GetDiscoverySummaryOutput, error) {
	req, out := c.GetDiscoverySummaryRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opListConfigurations = "ListConfigurations"

// ListConfigurationsRequest generates a "aws/request.Request" representing the
// client's request for the ListConfigurations operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See ListConfigurations for more information on using the ListConfigurations
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the ListConfigurationsRequest method.
//	req, resp := client.ListConfigurationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/ListConfigurations
func (c *ApplicationDiscoveryService) ListConfigurationsRequest(input *ListConfigurationsInput) (req *request.Request, output *ListConfigurationsOutput) {
	op := &request.Operation{
		Name:       opListConfigurations,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListConfigurationsInput{}
	}

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

// ListConfigurations API operation for AWS Application Discovery Service.
//
// Retrieves a list of configuration items as specified by the value passed
// to the required parameter configurationType. Optional filtering may be applied
// to refine search results.
//
// 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 AWS Application Discovery Service's
// API operation ListConfigurations for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - ResourceNotFoundException
//     The specified configuration ID was not located. Verify the configuration
//     ID and try again.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/ListConfigurations
func (c *ApplicationDiscoveryService) ListConfigurations(input *ListConfigurationsInput) (*ListConfigurationsOutput, error) {
	req, out := c.ListConfigurationsRequest(input)
	return out, req.Send()
}

// ListConfigurationsWithContext is the same as ListConfigurations with the addition of
// the ability to pass a context and additional request options.
//
// See ListConfigurations 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 *ApplicationDiscoveryService) ListConfigurationsWithContext(ctx aws.Context, input *ListConfigurationsInput, opts ...request.Option) (*ListConfigurationsOutput, error) {
	req, out := c.ListConfigurationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListConfigurationsPages iterates over the pages of a ListConfigurations operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListConfigurations 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 ListConfigurations operation.
//	pageNum := 0
//	err := client.ListConfigurationsPages(params,
//	    func(page *applicationdiscoveryservice.ListConfigurationsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *ApplicationDiscoveryService) ListConfigurationsPages(input *ListConfigurationsInput, fn func(*ListConfigurationsOutput, bool) bool) error {
	return c.ListConfigurationsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListConfigurationsPagesWithContext same as ListConfigurationsPages 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 *ApplicationDiscoveryService) ListConfigurationsPagesWithContext(ctx aws.Context, input *ListConfigurationsInput, fn func(*ListConfigurationsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListConfigurationsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListConfigurationsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	for p.Next() {
		if !fn(p.Page().(*ListConfigurationsOutput), !p.HasNextPage()) {
			break
		}
	}

	return p.Err()
}

const opListServerNeighbors = "ListServerNeighbors"

// ListServerNeighborsRequest generates a "aws/request.Request" representing the
// client's request for the ListServerNeighbors operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See ListServerNeighbors for more information on using the ListServerNeighbors
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the ListServerNeighborsRequest method.
//	req, resp := client.ListServerNeighborsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/ListServerNeighbors
func (c *ApplicationDiscoveryService) ListServerNeighborsRequest(input *ListServerNeighborsInput) (req *request.Request, output *ListServerNeighborsOutput) {
	op := &request.Operation{
		Name:       opListServerNeighbors,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ListServerNeighborsInput{}
	}

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

// ListServerNeighbors API operation for AWS Application Discovery Service.
//
// Retrieves a list of servers that are one network hop away from a specified
// server.
//
// 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 AWS Application Discovery Service's
// API operation ListServerNeighbors for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/ListServerNeighbors
func (c *ApplicationDiscoveryService) ListServerNeighbors(input *ListServerNeighborsInput) (*ListServerNeighborsOutput, error) {
	req, out := c.ListServerNeighborsRequest(input)
	return out, req.Send()
}

// ListServerNeighborsWithContext is the same as ListServerNeighbors with the addition of
// the ability to pass a context and additional request options.
//
// See ListServerNeighbors 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 *ApplicationDiscoveryService) ListServerNeighborsWithContext(ctx aws.Context, input *ListServerNeighborsInput, opts ...request.Option) (*ListServerNeighborsOutput, error) {
	req, out := c.ListServerNeighborsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opStartBatchDeleteConfigurationTask = "StartBatchDeleteConfigurationTask"

// StartBatchDeleteConfigurationTaskRequest generates a "aws/request.Request" representing the
// client's request for the StartBatchDeleteConfigurationTask operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See StartBatchDeleteConfigurationTask for more information on using the StartBatchDeleteConfigurationTask
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the StartBatchDeleteConfigurationTaskRequest method.
//	req, resp := client.StartBatchDeleteConfigurationTaskRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/StartBatchDeleteConfigurationTask
func (c *ApplicationDiscoveryService) StartBatchDeleteConfigurationTaskRequest(input *StartBatchDeleteConfigurationTaskInput) (req *request.Request, output *StartBatchDeleteConfigurationTaskOutput) {
	op := &request.Operation{
		Name:       opStartBatchDeleteConfigurationTask,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartBatchDeleteConfigurationTaskInput{}
	}

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

// StartBatchDeleteConfigurationTask API operation for AWS Application Discovery Service.
//
// Takes a list of configurationId as input and starts an asynchronous deletion
// task to remove the configurationItems. Returns a unique deletion task identifier.
//
// 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 AWS Application Discovery Service's
// API operation StartBatchDeleteConfigurationTask for usage and error information.
//
// Returned Error Types:
//
//   - LimitExceededException
//     The limit of 200 configuration IDs per request has been exceeded.
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
//   - OperationNotPermittedException
//     This operation is not permitted.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/StartBatchDeleteConfigurationTask
func (c *ApplicationDiscoveryService) StartBatchDeleteConfigurationTask(input *StartBatchDeleteConfigurationTaskInput) (*StartBatchDeleteConfigurationTaskOutput, error) {
	req, out := c.StartBatchDeleteConfigurationTaskRequest(input)
	return out, req.Send()
}

// StartBatchDeleteConfigurationTaskWithContext is the same as StartBatchDeleteConfigurationTask with the addition of
// the ability to pass a context and additional request options.
//
// See StartBatchDeleteConfigurationTask 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 *ApplicationDiscoveryService) StartBatchDeleteConfigurationTaskWithContext(ctx aws.Context, input *StartBatchDeleteConfigurationTaskInput, opts ...request.Option) (*StartBatchDeleteConfigurationTaskOutput, error) {
	req, out := c.StartBatchDeleteConfigurationTaskRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opStartContinuousExport = "StartContinuousExport"

// StartContinuousExportRequest generates a "aws/request.Request" representing the
// client's request for the StartContinuousExport operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See StartContinuousExport for more information on using the StartContinuousExport
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the StartContinuousExportRequest method.
//	req, resp := client.StartContinuousExportRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/StartContinuousExport
func (c *ApplicationDiscoveryService) StartContinuousExportRequest(input *StartContinuousExportInput) (req *request.Request, output *StartContinuousExportOutput) {
	op := &request.Operation{
		Name:       opStartContinuousExport,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartContinuousExportInput{}
	}

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

// StartContinuousExport API operation for AWS Application Discovery Service.
//
// Start the continuous flow of agent's discovered data into Amazon Athena.
//
// 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 AWS Application Discovery Service's
// API operation StartContinuousExport for usage and error information.
//
// Returned Error Types:
//
//   - ConflictErrorException
//     Conflict error.
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - OperationNotPermittedException
//     This operation is not permitted.
//
//   - ResourceInUseException
//     This issue occurs when the same clientRequestToken is used with the StartImportTask
//     action, but with different parameters. For example, you use the same request
//     token but have two different import URLs, you can encounter this issue. If
//     the import tasks are meant to be different, use a different clientRequestToken,
//     and try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/StartContinuousExport
func (c *ApplicationDiscoveryService) StartContinuousExport(input *StartContinuousExportInput) (*StartContinuousExportOutput, error) {
	req, out := c.StartContinuousExportRequest(input)
	return out, req.Send()
}

// StartContinuousExportWithContext is the same as StartContinuousExport with the addition of
// the ability to pass a context and additional request options.
//
// See StartContinuousExport 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 *ApplicationDiscoveryService) StartContinuousExportWithContext(ctx aws.Context, input *StartContinuousExportInput, opts ...request.Option) (*StartContinuousExportOutput, error) {
	req, out := c.StartContinuousExportRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opStartDataCollectionByAgentIds = "StartDataCollectionByAgentIds"

// StartDataCollectionByAgentIdsRequest generates a "aws/request.Request" representing the
// client's request for the StartDataCollectionByAgentIds operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See StartDataCollectionByAgentIds for more information on using the StartDataCollectionByAgentIds
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the StartDataCollectionByAgentIdsRequest method.
//	req, resp := client.StartDataCollectionByAgentIdsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/StartDataCollectionByAgentIds
func (c *ApplicationDiscoveryService) StartDataCollectionByAgentIdsRequest(input *StartDataCollectionByAgentIdsInput) (req *request.Request, output *StartDataCollectionByAgentIdsOutput) {
	op := &request.Operation{
		Name:       opStartDataCollectionByAgentIds,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartDataCollectionByAgentIdsInput{}
	}

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

// StartDataCollectionByAgentIds API operation for AWS Application Discovery Service.
//
// Instructs the specified agents to start collecting data.
//
// 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 AWS Application Discovery Service's
// API operation StartDataCollectionByAgentIds for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/StartDataCollectionByAgentIds
func (c *ApplicationDiscoveryService) StartDataCollectionByAgentIds(input *StartDataCollectionByAgentIdsInput) (*StartDataCollectionByAgentIdsOutput, error) {
	req, out := c.StartDataCollectionByAgentIdsRequest(input)
	return out, req.Send()
}

// StartDataCollectionByAgentIdsWithContext is the same as StartDataCollectionByAgentIds with the addition of
// the ability to pass a context and additional request options.
//
// See StartDataCollectionByAgentIds 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 *ApplicationDiscoveryService) StartDataCollectionByAgentIdsWithContext(ctx aws.Context, input *StartDataCollectionByAgentIdsInput, opts ...request.Option) (*StartDataCollectionByAgentIdsOutput, error) {
	req, out := c.StartDataCollectionByAgentIdsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opStartExportTask = "StartExportTask"

// StartExportTaskRequest generates a "aws/request.Request" representing the
// client's request for the StartExportTask operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See StartExportTask for more information on using the StartExportTask
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the StartExportTaskRequest method.
//	req, resp := client.StartExportTaskRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/StartExportTask
func (c *ApplicationDiscoveryService) StartExportTaskRequest(input *StartExportTaskInput) (req *request.Request, output *StartExportTaskOutput) {
	op := &request.Operation{
		Name:       opStartExportTask,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartExportTaskInput{}
	}

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

// StartExportTask API operation for AWS Application Discovery Service.
//
// Begins the export of a discovered data report to an Amazon S3 bucket managed
// by Amazon Web Services.
//
// Exports might provide an estimate of fees and savings based on certain information
// that you provide. Fee estimates do not include any taxes that might apply.
// Your actual fees and savings depend on a variety of factors, including your
// actual usage of Amazon Web Services services, which might vary from the estimates
// provided in this report.
//
// If you do not specify preferences or agentIds in the filter, a summary of
// all servers, applications, tags, and performance is generated. This data
// is an aggregation of all server data collected through on-premises tooling,
// file import, application grouping and applying tags.
//
// If you specify agentIds in a filter, the task exports up to 72 hours of detailed
// data collected by the identified Application Discovery Agent, including network,
// process, and performance details. A time range for exported agent data may
// be set by using startTime and endTime. Export of detailed agent data is limited
// to five concurrently running exports. Export of detailed agent data is limited
// to two exports per day.
//
// If you enable ec2RecommendationsPreferences in preferences , an Amazon EC2
// instance matching the characteristics of each server in Application Discovery
// Service is generated. Changing the attributes of the ec2RecommendationsPreferences
// changes the criteria of the recommendation.
//
// 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 AWS Application Discovery Service's
// API operation StartExportTask for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - OperationNotPermittedException
//     This operation is not permitted.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/StartExportTask
func (c *ApplicationDiscoveryService) StartExportTask(input *StartExportTaskInput) (*StartExportTaskOutput, error) {
	req, out := c.StartExportTaskRequest(input)
	return out, req.Send()
}

// StartExportTaskWithContext is the same as StartExportTask with the addition of
// the ability to pass a context and additional request options.
//
// See StartExportTask 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 *ApplicationDiscoveryService) StartExportTaskWithContext(ctx aws.Context, input *StartExportTaskInput, opts ...request.Option) (*StartExportTaskOutput, error) {
	req, out := c.StartExportTaskRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opStartImportTask = "StartImportTask"

// StartImportTaskRequest generates a "aws/request.Request" representing the
// client's request for the StartImportTask operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See StartImportTask for more information on using the StartImportTask
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the StartImportTaskRequest method.
//	req, resp := client.StartImportTaskRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/StartImportTask
func (c *ApplicationDiscoveryService) StartImportTaskRequest(input *StartImportTaskInput) (req *request.Request, output *StartImportTaskOutput) {
	op := &request.Operation{
		Name:       opStartImportTask,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartImportTaskInput{}
	}

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

// StartImportTask API operation for AWS Application Discovery Service.
//
// Starts an import task, which allows you to import details of your on-premises
// environment directly into Amazon Web Services Migration Hub without having
// to use the Amazon Web Services Application Discovery Service (Application
// Discovery Service) tools such as the Amazon Web Services Application Discovery
// Service Agentless Collector or Application Discovery Agent. This gives you
// the option to perform migration assessment and planning directly from your
// imported data, including the ability to group your devices as applications
// and track their migration status.
//
// To start an import request, do this:
//
// Download the specially formatted comma separated value (CSV) import template,
// which you can find here: https://s3.us-west-2.amazonaws.com/templates-7cffcf56-bd96-4b1c-b45b-a5b42f282e46/import_template.csv
// (https://s3.us-west-2.amazonaws.com/templates-7cffcf56-bd96-4b1c-b45b-a5b42f282e46/import_template.csv).
//
// Fill out the template with your server and application data.
//
// Upload your import file to an Amazon S3 bucket, and make a note of it's Object
// URL. Your import file must be in the CSV format.
//
// Use the console or the StartImportTask command with the Amazon Web Services
// CLI or one of the Amazon Web Services SDKs to import the records from your
// file.
//
// For more information, including step-by-step procedures, see Migration Hub
// Import (https://docs.aws.amazon.com/application-discovery/latest/userguide/discovery-import.html)
// in the Amazon Web Services Application Discovery Service User Guide.
//
// There are limits to the number of import tasks you can create (and delete)
// in an Amazon Web Services account. For more information, see Amazon Web Services
// Application Discovery Service Limits (https://docs.aws.amazon.com/application-discovery/latest/userguide/ads_service_limits.html)
// in the Amazon Web Services Application Discovery Service 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 AWS Application Discovery Service's
// API operation StartImportTask for usage and error information.
//
// Returned Error Types:
//
//   - ResourceInUseException
//     This issue occurs when the same clientRequestToken is used with the StartImportTask
//     action, but with different parameters. For example, you use the same request
//     token but have two different import URLs, you can encounter this issue. If
//     the import tasks are meant to be different, use a different clientRequestToken,
//     and try again.
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/StartImportTask
func (c *ApplicationDiscoveryService) StartImportTask(input *StartImportTaskInput) (*StartImportTaskOutput, error) {
	req, out := c.StartImportTaskRequest(input)
	return out, req.Send()
}

// StartImportTaskWithContext is the same as StartImportTask with the addition of
// the ability to pass a context and additional request options.
//
// See StartImportTask 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 *ApplicationDiscoveryService) StartImportTaskWithContext(ctx aws.Context, input *StartImportTaskInput, opts ...request.Option) (*StartImportTaskOutput, error) {
	req, out := c.StartImportTaskRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opStopContinuousExport = "StopContinuousExport"

// StopContinuousExportRequest generates a "aws/request.Request" representing the
// client's request for the StopContinuousExport operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See StopContinuousExport for more information on using the StopContinuousExport
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the StopContinuousExportRequest method.
//	req, resp := client.StopContinuousExportRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/StopContinuousExport
func (c *ApplicationDiscoveryService) StopContinuousExportRequest(input *StopContinuousExportInput) (req *request.Request, output *StopContinuousExportOutput) {
	op := &request.Operation{
		Name:       opStopContinuousExport,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StopContinuousExportInput{}
	}

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

// StopContinuousExport API operation for AWS Application Discovery Service.
//
// Stop the continuous flow of agent's discovered data into Amazon Athena.
//
// 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 AWS Application Discovery Service's
// API operation StopContinuousExport for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - OperationNotPermittedException
//     This operation is not permitted.
//
//   - ResourceNotFoundException
//     The specified configuration ID was not located. Verify the configuration
//     ID and try again.
//
//   - ResourceInUseException
//     This issue occurs when the same clientRequestToken is used with the StartImportTask
//     action, but with different parameters. For example, you use the same request
//     token but have two different import URLs, you can encounter this issue. If
//     the import tasks are meant to be different, use a different clientRequestToken,
//     and try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/StopContinuousExport
func (c *ApplicationDiscoveryService) StopContinuousExport(input *StopContinuousExportInput) (*StopContinuousExportOutput, error) {
	req, out := c.StopContinuousExportRequest(input)
	return out, req.Send()
}

// StopContinuousExportWithContext is the same as StopContinuousExport with the addition of
// the ability to pass a context and additional request options.
//
// See StopContinuousExport 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 *ApplicationDiscoveryService) StopContinuousExportWithContext(ctx aws.Context, input *StopContinuousExportInput, opts ...request.Option) (*StopContinuousExportOutput, error) {
	req, out := c.StopContinuousExportRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opStopDataCollectionByAgentIds = "StopDataCollectionByAgentIds"

// StopDataCollectionByAgentIdsRequest generates a "aws/request.Request" representing the
// client's request for the StopDataCollectionByAgentIds operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See StopDataCollectionByAgentIds for more information on using the StopDataCollectionByAgentIds
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the StopDataCollectionByAgentIdsRequest method.
//	req, resp := client.StopDataCollectionByAgentIdsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/StopDataCollectionByAgentIds
func (c *ApplicationDiscoveryService) StopDataCollectionByAgentIdsRequest(input *StopDataCollectionByAgentIdsInput) (req *request.Request, output *StopDataCollectionByAgentIdsOutput) {
	op := &request.Operation{
		Name:       opStopDataCollectionByAgentIds,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StopDataCollectionByAgentIdsInput{}
	}

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

// StopDataCollectionByAgentIds API operation for AWS Application Discovery Service.
//
// Instructs the specified agents to stop collecting data.
//
// 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 AWS Application Discovery Service's
// API operation StopDataCollectionByAgentIds for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/StopDataCollectionByAgentIds
func (c *ApplicationDiscoveryService) StopDataCollectionByAgentIds(input *StopDataCollectionByAgentIdsInput) (*StopDataCollectionByAgentIdsOutput, error) {
	req, out := c.StopDataCollectionByAgentIdsRequest(input)
	return out, req.Send()
}

// StopDataCollectionByAgentIdsWithContext is the same as StopDataCollectionByAgentIds with the addition of
// the ability to pass a context and additional request options.
//
// See StopDataCollectionByAgentIds 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 *ApplicationDiscoveryService) StopDataCollectionByAgentIdsWithContext(ctx aws.Context, input *StopDataCollectionByAgentIdsInput, opts ...request.Option) (*StopDataCollectionByAgentIdsOutput, error) {
	req, out := c.StopDataCollectionByAgentIdsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateApplication = "UpdateApplication"

// UpdateApplicationRequest generates a "aws/request.Request" representing the
// client's request for the UpdateApplication operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateApplication for more information on using the UpdateApplication
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateApplicationRequest method.
//	req, resp := client.UpdateApplicationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/UpdateApplication
func (c *ApplicationDiscoveryService) UpdateApplicationRequest(input *UpdateApplicationInput) (req *request.Request, output *UpdateApplicationOutput) {
	op := &request.Operation{
		Name:       opUpdateApplication,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateApplicationInput{}
	}

	output = &UpdateApplicationOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateApplication API operation for AWS Application Discovery Service.
//
// Updates metadata about an application.
//
// 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 AWS Application Discovery Service's
// API operation UpdateApplication for usage and error information.
//
// Returned Error Types:
//
//   - AuthorizationErrorException
//     The user does not have permission to perform the action. Check the IAM policy
//     associated with this user.
//
//   - InvalidParameterException
//     One or more parameters are not valid. Verify the parameters and try again.
//
//   - InvalidParameterValueException
//     The value of one or more parameters are either invalid or out of range. Verify
//     the parameter values and try again.
//
//   - ServerInternalErrorException
//     The server experienced an internal error. Try again.
//
//   - HomeRegionNotSetException
//     The home Region is not set. Set the home Region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/discovery-2015-11-01/UpdateApplication
func (c *ApplicationDiscoveryService) UpdateApplication(input *UpdateApplicationInput) (*UpdateApplicationOutput, error) {
	req, out := c.UpdateApplicationRequest(input)
	return out, req.Send()
}

// UpdateApplicationWithContext is the same as UpdateApplication with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateApplication 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 *ApplicationDiscoveryService) UpdateApplicationWithContext(ctx aws.Context, input *UpdateApplicationInput, opts ...request.Option) (*UpdateApplicationOutput, error) {
	req, out := c.UpdateApplicationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// Information about agents that were instructed to start collecting data. Information
// includes the agent ID, a description of the operation, and whether the agent
// configuration was updated.
type AgentConfigurationStatus struct {
	_ struct{} `type:"structure"`

	// The agent ID.
	AgentId *string `locationName:"agentId" type:"string"`

	// A description of the operation performed.
	Description *string `locationName:"description" type:"string"`

	// Information about the status of the StartDataCollection and StopDataCollection
	// operations. The system has recorded the data collection operation. The agent
	// receives this command the next time it polls for a new command.
	OperationSucceeded *bool `locationName:"operationSucceeded" type:"boolean"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AgentConfigurationStatus) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AgentConfigurationStatus) GoString() string {
	return s.String()
}

// SetAgentId sets the AgentId field's value.
func (s *AgentConfigurationStatus) SetAgentId(v string) *AgentConfigurationStatus {
	s.AgentId = &v
	return s
}

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

// SetOperationSucceeded sets the OperationSucceeded field's value.
func (s *AgentConfigurationStatus) SetOperationSucceeded(v bool) *AgentConfigurationStatus {
	s.OperationSucceeded = &v
	return s
}

// Information about agents associated with the user’s Amazon Web Services
// account. Information includes agent IDs, IP addresses, media access control
// (MAC) addresses, agent or collector status, hostname where the agent resides,
// and agent version for each agent.
type AgentInfo struct {
	_ struct{} `type:"structure"`

	// The agent or collector ID.
	AgentId *string `locationName:"agentId" min:"10" type:"string"`

	// Network details about the host where the agent or collector resides.
	AgentNetworkInfoList []*AgentNetworkInfo `locationName:"agentNetworkInfoList" type:"list" sensitive:"true"`

	// Type of agent.
	AgentType *string `locationName:"agentType" type:"string"`

	// Status of the collection process for an agent.
	CollectionStatus *string `locationName:"collectionStatus" type:"string"`

	// The ID of the connector.
	ConnectorId *string `locationName:"connectorId" type:"string"`

	// The health of the agent.
	Health *string `locationName:"health" type:"string" enum:"AgentStatus"`

	// The name of the host where the agent or collector resides. The host can be
	// a server or virtual machine.
	HostName *string `locationName:"hostName" type:"string"`

	// Time since agent health was reported.
	LastHealthPingTime *string `locationName:"lastHealthPingTime" type:"string"`

	// Agent's first registration timestamp in UTC.
	RegisteredTime *string `locationName:"registeredTime" type:"string"`

	// The agent or collector version.
	Version *string `locationName:"version" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AgentInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AgentInfo) GoString() string {
	return s.String()
}

// SetAgentId sets the AgentId field's value.
func (s *AgentInfo) SetAgentId(v string) *AgentInfo {
	s.AgentId = &v
	return s
}

// SetAgentNetworkInfoList sets the AgentNetworkInfoList field's value.
func (s *AgentInfo) SetAgentNetworkInfoList(v []*AgentNetworkInfo) *AgentInfo {
	s.AgentNetworkInfoList = v
	return s
}

// SetAgentType sets the AgentType field's value.
func (s *AgentInfo) SetAgentType(v string) *AgentInfo {
	s.AgentType = &v
	return s
}

// SetCollectionStatus sets the CollectionStatus field's value.
func (s *AgentInfo) SetCollectionStatus(v string) *AgentInfo {
	s.CollectionStatus = &v
	return s
}

// SetConnectorId sets the ConnectorId field's value.
func (s *AgentInfo) SetConnectorId(v string) *AgentInfo {
	s.ConnectorId = &v
	return s
}

// SetHealth sets the Health field's value.
func (s *AgentInfo) SetHealth(v string) *AgentInfo {
	s.Health = &v
	return s
}

// SetHostName sets the HostName field's value.
func (s *AgentInfo) SetHostName(v string) *AgentInfo {
	s.HostName = &v
	return s
}

// SetLastHealthPingTime sets the LastHealthPingTime field's value.
func (s *AgentInfo) SetLastHealthPingTime(v string) *AgentInfo {
	s.LastHealthPingTime = &v
	return s
}

// SetRegisteredTime sets the RegisteredTime field's value.
func (s *AgentInfo) SetRegisteredTime(v string) *AgentInfo {
	s.RegisteredTime = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *AgentInfo) SetVersion(v string) *AgentInfo {
	s.Version = &v
	return s
}

// Network details about the host where the agent/collector resides.
type AgentNetworkInfo struct {
	_ struct{} `type:"structure" sensitive:"true"`

	// The IP address for the host where the agent/collector resides.
	IpAddress *string `locationName:"ipAddress" type:"string"`

	// The MAC address for the host where the agent/collector resides.
	MacAddress *string `locationName:"macAddress" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AgentNetworkInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AgentNetworkInfo) GoString() string {
	return s.String()
}

// SetIpAddress sets the IpAddress field's value.
func (s *AgentNetworkInfo) SetIpAddress(v string) *AgentNetworkInfo {
	s.IpAddress = &v
	return s
}

// SetMacAddress sets the MacAddress field's value.
func (s *AgentNetworkInfo) SetMacAddress(v string) *AgentNetworkInfo {
	s.MacAddress = &v
	return s
}

type AssociateConfigurationItemsToApplicationInput struct {
	_ struct{} `type:"structure"`

	// The configuration ID of an application with which items are to be associated.
	//
	// ApplicationConfigurationId is a required field
	ApplicationConfigurationId *string `locationName:"applicationConfigurationId" type:"string" required:"true"`

	// The ID of each configuration item to be associated with an application.
	//
	// ConfigurationIds is a required field
	ConfigurationIds []*string `locationName:"configurationIds" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateConfigurationItemsToApplicationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateConfigurationItemsToApplicationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AssociateConfigurationItemsToApplicationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AssociateConfigurationItemsToApplicationInput"}
	if s.ApplicationConfigurationId == nil {
		invalidParams.Add(request.NewErrParamRequired("ApplicationConfigurationId"))
	}
	if s.ConfigurationIds == nil {
		invalidParams.Add(request.NewErrParamRequired("ConfigurationIds"))
	}

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

// SetApplicationConfigurationId sets the ApplicationConfigurationId field's value.
func (s *AssociateConfigurationItemsToApplicationInput) SetApplicationConfigurationId(v string) *AssociateConfigurationItemsToApplicationInput {
	s.ApplicationConfigurationId = &v
	return s
}

// SetConfigurationIds sets the ConfigurationIds field's value.
func (s *AssociateConfigurationItemsToApplicationInput) SetConfigurationIds(v []*string) *AssociateConfigurationItemsToApplicationInput {
	s.ConfigurationIds = v
	return s
}

type AssociateConfigurationItemsToApplicationOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateConfigurationItemsToApplicationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateConfigurationItemsToApplicationOutput) GoString() string {
	return s.String()
}

// The user does not have permission to perform the action. Check the IAM policy
// associated with this user.
type AuthorizationErrorException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AuthorizationErrorException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AuthorizationErrorException) GoString() string {
	return s.String()
}

func newErrorAuthorizationErrorException(v protocol.ResponseMetadata) error {
	return &AuthorizationErrorException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *AuthorizationErrorException) Code() string {
	return "AuthorizationErrorException"
}

// Message returns the exception's message.
func (s *AuthorizationErrorException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *AuthorizationErrorException) OrigErr() error {
	return nil
}

func (s *AuthorizationErrorException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *AuthorizationErrorException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *AuthorizationErrorException) RequestID() string {
	return s.RespMetadata.RequestID
}

// An object representing the agent or data collector that failed to delete,
// each containing agentId, errorMessage, and errorCode.
type BatchDeleteAgentError struct {
	_ struct{} `type:"structure"`

	// The ID of the agent or data collector to delete.
	//
	// AgentId is a required field
	AgentId *string `locationName:"agentId" min:"10" type:"string" required:"true"`

	// The type of error that occurred for the delete failed agent. Valid status
	// are: AGENT_IN_USE | NOT_FOUND | INTERNAL_SERVER_ERROR.
	//
	// ErrorCode is a required field
	ErrorCode *string `locationName:"errorCode" type:"string" required:"true" enum:"DeleteAgentErrorCode"`

	// The description of the error that occurred for the delete failed agent.
	//
	// ErrorMessage is a required field
	ErrorMessage *string `locationName:"errorMessage" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchDeleteAgentError) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchDeleteAgentError) GoString() string {
	return s.String()
}

// SetAgentId sets the AgentId field's value.
func (s *BatchDeleteAgentError) SetAgentId(v string) *BatchDeleteAgentError {
	s.AgentId = &v
	return s
}

// SetErrorCode sets the ErrorCode field's value.
func (s *BatchDeleteAgentError) SetErrorCode(v string) *BatchDeleteAgentError {
	s.ErrorCode = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *BatchDeleteAgentError) SetErrorMessage(v string) *BatchDeleteAgentError {
	s.ErrorMessage = &v
	return s
}

type BatchDeleteAgentsInput struct {
	_ struct{} `type:"structure"`

	// The list of agents to delete.
	//
	// DeleteAgents is a required field
	DeleteAgents []*DeleteAgent `locationName:"deleteAgents" min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchDeleteAgentsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchDeleteAgentsInput) GoString() string {
	return s.String()
}

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

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

// SetDeleteAgents sets the DeleteAgents field's value.
func (s *BatchDeleteAgentsInput) SetDeleteAgents(v []*DeleteAgent) *BatchDeleteAgentsInput {
	s.DeleteAgents = v
	return s
}

type BatchDeleteAgentsOutput struct {
	_ struct{} `type:"structure"`

	// A list of agent IDs that failed to delete during the deletion task, each
	// paired with an error message.
	Errors []*BatchDeleteAgentError `locationName:"errors" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchDeleteAgentsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchDeleteAgentsOutput) GoString() string {
	return s.String()
}

// SetErrors sets the Errors field's value.
func (s *BatchDeleteAgentsOutput) SetErrors(v []*BatchDeleteAgentError) *BatchDeleteAgentsOutput {
	s.Errors = v
	return s
}

// A metadata object that represents the deletion task being executed.
type BatchDeleteConfigurationTask struct {
	_ struct{} `type:"structure"`

	// The type of configuration item to delete. Supported types are: SERVER.
	ConfigurationType *string `locationName:"configurationType" type:"string" enum:"DeletionConfigurationItemType"`

	// The list of configuration IDs that were successfully deleted by the deletion
	// task.
	DeletedConfigurations []*string `locationName:"deletedConfigurations" type:"list"`

	// A list of configuration IDs that produced warnings regarding their deletion,
	// paired with a warning message.
	DeletionWarnings []*DeletionWarning `locationName:"deletionWarnings" type:"list"`

	// An epoch seconds timestamp (UTC) of when the deletion task was completed
	// or failed.
	EndTime *time.Time `locationName:"endTime" type:"timestamp"`

	// A list of configuration IDs that failed to delete during the deletion task,
	// each paired with an error message.
	FailedConfigurations []*FailedConfiguration `locationName:"failedConfigurations" type:"list"`

	// The list of configuration IDs that were originally requested to be deleted
	// by the deletion task.
	RequestedConfigurations []*string `locationName:"requestedConfigurations" type:"list"`

	// An epoch seconds timestamp (UTC) of when the deletion task was started.
	StartTime *time.Time `locationName:"startTime" type:"timestamp"`

	// The current execution status of the deletion task. Valid status are: INITIALIZING
	// | VALIDATING | DELETING | COMPLETED | FAILED.
	Status *string `locationName:"status" type:"string" enum:"BatchDeleteConfigurationTaskStatus"`

	// The deletion task's unique identifier.
	TaskId *string `locationName:"taskId" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchDeleteConfigurationTask) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchDeleteConfigurationTask) GoString() string {
	return s.String()
}

// SetConfigurationType sets the ConfigurationType field's value.
func (s *BatchDeleteConfigurationTask) SetConfigurationType(v string) *BatchDeleteConfigurationTask {
	s.ConfigurationType = &v
	return s
}

// SetDeletedConfigurations sets the DeletedConfigurations field's value.
func (s *BatchDeleteConfigurationTask) SetDeletedConfigurations(v []*string) *BatchDeleteConfigurationTask {
	s.DeletedConfigurations = v
	return s
}

// SetDeletionWarnings sets the DeletionWarnings field's value.
func (s *BatchDeleteConfigurationTask) SetDeletionWarnings(v []*DeletionWarning) *BatchDeleteConfigurationTask {
	s.DeletionWarnings = v
	return s
}

// SetEndTime sets the EndTime field's value.
func (s *BatchDeleteConfigurationTask) SetEndTime(v time.Time) *BatchDeleteConfigurationTask {
	s.EndTime = &v
	return s
}

// SetFailedConfigurations sets the FailedConfigurations field's value.
func (s *BatchDeleteConfigurationTask) SetFailedConfigurations(v []*FailedConfiguration) *BatchDeleteConfigurationTask {
	s.FailedConfigurations = v
	return s
}

// SetRequestedConfigurations sets the RequestedConfigurations field's value.
func (s *BatchDeleteConfigurationTask) SetRequestedConfigurations(v []*string) *BatchDeleteConfigurationTask {
	s.RequestedConfigurations = v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *BatchDeleteConfigurationTask) SetStartTime(v time.Time) *BatchDeleteConfigurationTask {
	s.StartTime = &v
	return s
}

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

// SetTaskId sets the TaskId field's value.
func (s *BatchDeleteConfigurationTask) SetTaskId(v string) *BatchDeleteConfigurationTask {
	s.TaskId = &v
	return s
}

// Error messages returned for each import task that you deleted as a response
// for this command.
type BatchDeleteImportDataError struct {
	_ struct{} `type:"structure"`

	// The type of error that occurred for a specific import task.
	ErrorCode *string `locationName:"errorCode" type:"string" enum:"BatchDeleteImportDataErrorCode"`

	// The description of the error that occurred for a specific import task.
	ErrorDescription *string `locationName:"errorDescription" type:"string"`

	// The unique import ID associated with the error that occurred.
	ImportTaskId *string `locationName:"importTaskId" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchDeleteImportDataError) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchDeleteImportDataError) GoString() string {
	return s.String()
}

// SetErrorCode sets the ErrorCode field's value.
func (s *BatchDeleteImportDataError) SetErrorCode(v string) *BatchDeleteImportDataError {
	s.ErrorCode = &v
	return s
}

// SetErrorDescription sets the ErrorDescription field's value.
func (s *BatchDeleteImportDataError) SetErrorDescription(v string) *BatchDeleteImportDataError {
	s.ErrorDescription = &v
	return s
}

// SetImportTaskId sets the ImportTaskId field's value.
func (s *BatchDeleteImportDataError) SetImportTaskId(v string) *BatchDeleteImportDataError {
	s.ImportTaskId = &v
	return s
}

type BatchDeleteImportDataInput struct {
	_ struct{} `type:"structure"`

	// Set to true to remove the deleted import task from DescribeImportTasks.
	DeleteHistory *bool `locationName:"deleteHistory" type:"boolean"`

	// The IDs for the import tasks that you want to delete.
	//
	// ImportTaskIds is a required field
	ImportTaskIds []*string `locationName:"importTaskIds" min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchDeleteImportDataInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchDeleteImportDataInput) GoString() string {
	return s.String()
}

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

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

// SetDeleteHistory sets the DeleteHistory field's value.
func (s *BatchDeleteImportDataInput) SetDeleteHistory(v bool) *BatchDeleteImportDataInput {
	s.DeleteHistory = &v
	return s
}

// SetImportTaskIds sets the ImportTaskIds field's value.
func (s *BatchDeleteImportDataInput) SetImportTaskIds(v []*string) *BatchDeleteImportDataInput {
	s.ImportTaskIds = v
	return s
}

type BatchDeleteImportDataOutput struct {
	_ struct{} `type:"structure"`

	// Error messages returned for each import task that you deleted as a response
	// for this command.
	Errors []*BatchDeleteImportDataError `locationName:"errors" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchDeleteImportDataOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchDeleteImportDataOutput) GoString() string {
	return s.String()
}

// SetErrors sets the Errors field's value.
func (s *BatchDeleteImportDataOutput) SetErrors(v []*BatchDeleteImportDataError) *BatchDeleteImportDataOutput {
	s.Errors = v
	return s
}

// Tags for a configuration item. Tags are metadata that help you categorize
// IT assets.
type ConfigurationTag struct {
	_ struct{} `type:"structure"`

	// The configuration ID for the item to tag. You can specify a list of keys
	// and values.
	ConfigurationId *string `locationName:"configurationId" type:"string"`

	// A type of IT asset to tag.
	ConfigurationType *string `locationName:"configurationType" type:"string" enum:"ConfigurationItemType"`

	// A type of tag on which to filter. For example, serverType.
	Key *string `locationName:"key" type:"string"`

	// The time the configuration tag was created in Coordinated Universal Time
	// (UTC).
	TimeOfCreation *time.Time `locationName:"timeOfCreation" type:"timestamp"`

	// A value on which to filter. For example key = serverType and value = web
	// server.
	Value *string `locationName:"value" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConfigurationTag) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConfigurationTag) GoString() string {
	return s.String()
}

// SetConfigurationId sets the ConfigurationId field's value.
func (s *ConfigurationTag) SetConfigurationId(v string) *ConfigurationTag {
	s.ConfigurationId = &v
	return s
}

// SetConfigurationType sets the ConfigurationType field's value.
func (s *ConfigurationTag) SetConfigurationType(v string) *ConfigurationTag {
	s.ConfigurationType = &v
	return s
}

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

// SetTimeOfCreation sets the TimeOfCreation field's value.
func (s *ConfigurationTag) SetTimeOfCreation(v time.Time) *ConfigurationTag {
	s.TimeOfCreation = &v
	return s
}

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

// Conflict error.
type ConflictErrorException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConflictErrorException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConflictErrorException) GoString() string {
	return s.String()
}

func newErrorConflictErrorException(v protocol.ResponseMetadata) error {
	return &ConflictErrorException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ConflictErrorException) Code() string {
	return "ConflictErrorException"
}

// Message returns the exception's message.
func (s *ConflictErrorException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ConflictErrorException) OrigErr() error {
	return nil
}

func (s *ConflictErrorException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ConflictErrorException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ConflictErrorException) RequestID() string {
	return s.RespMetadata.RequestID
}

// A list of continuous export descriptions.
type ContinuousExportDescription struct {
	_ struct{} `type:"structure"`

	// The type of data collector used to gather this data (currently only offered
	// for AGENT).
	DataSource *string `locationName:"dataSource" type:"string" enum:"DataSource"`

	// The unique ID assigned to this export.
	ExportId *string `locationName:"exportId" type:"string"`

	// The name of the s3 bucket where the export data parquet files are stored.
	S3Bucket *string `locationName:"s3Bucket" type:"string"`

	// An object which describes how the data is stored.
	//
	//    * databaseName - the name of the Glue database used to store the schema.
	SchemaStorageConfig map[string]*string `locationName:"schemaStorageConfig" type:"map"`

	// The timestamp representing when the continuous export was started.
	StartTime *time.Time `locationName:"startTime" type:"timestamp"`

	// Describes the status of the export. Can be one of the following values:
	//
	//    * START_IN_PROGRESS - setting up resources to start continuous export.
	//
	//    * START_FAILED - an error occurred setting up continuous export. To recover,
	//    call start-continuous-export again.
	//
	//    * ACTIVE - data is being exported to the customer bucket.
	//
	//    * ERROR - an error occurred during export. To fix the issue, call stop-continuous-export
	//    and start-continuous-export.
	//
	//    * STOP_IN_PROGRESS - stopping the export.
	//
	//    * STOP_FAILED - an error occurred stopping the export. To recover, call
	//    stop-continuous-export again.
	//
	//    * INACTIVE - the continuous export has been stopped. Data is no longer
	//    being exported to the customer bucket.
	Status *string `locationName:"status" type:"string" enum:"ContinuousExportStatus"`

	// Contains information about any errors that have occurred. This data type
	// can have the following values:
	//
	//    * ACCESS_DENIED - You don’t have permission to start Data Exploration
	//    in Amazon Athena. Contact your Amazon Web Services administrator for help.
	//    For more information, see Setting Up Amazon Web Services Application Discovery
	//    Service (http://docs.aws.amazon.com/application-discovery/latest/userguide/setting-up.html)
	//    in the Application Discovery Service User Guide.
	//
	//    * DELIVERY_STREAM_LIMIT_FAILURE - You reached the limit for Amazon Kinesis
	//    Data Firehose delivery streams. Reduce the number of streams or request
	//    a limit increase and try again. For more information, see Kinesis Data
	//    Streams Limits (http://docs.aws.amazon.com/streams/latest/dev/service-sizes-and-limits.html)
	//    in the Amazon Kinesis Data Streams Developer Guide.
	//
	//    * FIREHOSE_ROLE_MISSING - The Data Exploration feature is in an error
	//    state because your user is missing the Amazon Web ServicesApplicationDiscoveryServiceFirehose
	//    role. Turn on Data Exploration in Amazon Athena and try again. For more
	//    information, see Creating the Amazon Web ServicesApplicationDiscoveryServiceFirehose
	//    Role (https://docs.aws.amazon.com/application-discovery/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-create-firehose-role)
	//    in the Application Discovery Service User Guide.
	//
	//    * FIREHOSE_STREAM_DOES_NOT_EXIST - The Data Exploration feature is in
	//    an error state because your user is missing one or more of the Kinesis
	//    data delivery streams.
	//
	//    * INTERNAL_FAILURE - The Data Exploration feature is in an error state
	//    because of an internal failure. Try again later. If this problem persists,
	//    contact Amazon Web Services Support.
	//
	//    * LAKE_FORMATION_ACCESS_DENIED - You don't have sufficient lake formation
	//    permissions to start continuous export. For more information, see Upgrading
	//    Amazon Web Services Glue Data Permissions to the Amazon Web Services Lake
	//    Formation Model (http://docs.aws.amazon.com/lake-formation/latest/dg/upgrade-glue-lake-formation.html)
	//    in the Amazon Web Services Lake Formation Developer Guide. You can use
	//    one of the following two ways to resolve this issue. If you don’t want
	//    to use the Lake Formation permission model, you can change the default
	//    Data Catalog settings to use only Amazon Web Services Identity and Access
	//    Management (IAM) access control for new databases. For more information,
	//    see Change Data Catalog Settings (https://docs.aws.amazon.com/lake-formation/latest/dg/getting-started-setup.html#setup-change-cat-settings)
	//    in the Lake Formation Developer Guide. You can give the service-linked
	//    IAM roles AWSServiceRoleForApplicationDiscoveryServiceContinuousExport
	//    and AWSApplicationDiscoveryServiceFirehose the required Lake Formation
	//    permissions. For more information, see Granting Database Permissions (https://docs.aws.amazon.com/lake-formation/latest/dg/granting-database-permissions.html)
	//    in the Lake Formation Developer Guide. AWSServiceRoleForApplicationDiscoveryServiceContinuousExport
	//    - Grant database creator permissions, which gives the role database creation
	//    ability and implicit permissions for any created tables. For more information,
	//    see Implicit Lake Formation Permissions (https://docs.aws.amazon.com/lake-formation/latest/dg/implicit-permissions.html)
	//    in the Lake Formation Developer Guide. AWSApplicationDiscoveryServiceFirehose
	//    - Grant describe permissions for all tables in the database.
	//
	//    * S3_BUCKET_LIMIT_FAILURE - You reached the limit for Amazon S3 buckets.
	//    Reduce the number of S3 buckets or request a limit increase and try again.
	//    For more information, see Bucket Restrictions and Limitations (http://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html)
	//    in the Amazon Simple Storage Service Developer Guide.
	//
	//    * S3_NOT_SIGNED_UP - Your account is not signed up for the Amazon S3 service.
	//    You must sign up before you can use Amazon S3. You can sign up at the
	//    following URL: https://aws.amazon.com/s3 (https://aws.amazon.com/s3).
	StatusDetail *string `locationName:"statusDetail" min:"1" type:"string"`

	// The timestamp that represents when this continuous export was stopped.
	StopTime *time.Time `locationName:"stopTime" type:"timestamp"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContinuousExportDescription) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContinuousExportDescription) GoString() string {
	return s.String()
}

// SetDataSource sets the DataSource field's value.
func (s *ContinuousExportDescription) SetDataSource(v string) *ContinuousExportDescription {
	s.DataSource = &v
	return s
}

// SetExportId sets the ExportId field's value.
func (s *ContinuousExportDescription) SetExportId(v string) *ContinuousExportDescription {
	s.ExportId = &v
	return s
}

// SetS3Bucket sets the S3Bucket field's value.
func (s *ContinuousExportDescription) SetS3Bucket(v string) *ContinuousExportDescription {
	s.S3Bucket = &v
	return s
}

// SetSchemaStorageConfig sets the SchemaStorageConfig field's value.
func (s *ContinuousExportDescription) SetSchemaStorageConfig(v map[string]*string) *ContinuousExportDescription {
	s.SchemaStorageConfig = v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *ContinuousExportDescription) SetStartTime(v time.Time) *ContinuousExportDescription {
	s.StartTime = &v
	return s
}

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

// SetStatusDetail sets the StatusDetail field's value.
func (s *ContinuousExportDescription) SetStatusDetail(v string) *ContinuousExportDescription {
	s.StatusDetail = &v
	return s
}

// SetStopTime sets the StopTime field's value.
func (s *ContinuousExportDescription) SetStopTime(v time.Time) *ContinuousExportDescription {
	s.StopTime = &v
	return s
}

type CreateApplicationInput struct {
	_ struct{} `type:"structure"`

	// Description of the application to be created.
	Description *string `locationName:"description" type:"string"`

	// Name of the application to be created.
	//
	// Name is a required field
	Name *string `locationName:"name" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateApplicationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateApplicationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateApplicationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateApplicationInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}

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

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

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

type CreateApplicationOutput struct {
	_ struct{} `type:"structure"`

	// Configuration ID of an application to be created.
	ConfigurationId *string `locationName:"configurationId" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateApplicationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateApplicationOutput) GoString() string {
	return s.String()
}

// SetConfigurationId sets the ConfigurationId field's value.
func (s *CreateApplicationOutput) SetConfigurationId(v string) *CreateApplicationOutput {
	s.ConfigurationId = &v
	return s
}

type CreateTagsInput struct {
	_ struct{} `type:"structure"`

	// A list of configuration items that you want to tag.
	//
	// ConfigurationIds is a required field
	ConfigurationIds []*string `locationName:"configurationIds" type:"list" required:"true"`

	// Tags that you want to associate with one or more configuration items. Specify
	// the tags that you want to create in a key-value format. For example:
	//
	// {"key": "serverType", "value": "webServer"}
	//
	// Tags is a required field
	Tags []*Tag `locationName:"tags" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateTagsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateTagsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateTagsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateTagsInput"}
	if s.ConfigurationIds == nil {
		invalidParams.Add(request.NewErrParamRequired("ConfigurationIds"))
	}
	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
}

// SetConfigurationIds sets the ConfigurationIds field's value.
func (s *CreateTagsInput) SetConfigurationIds(v []*string) *CreateTagsInput {
	s.ConfigurationIds = v
	return s
}

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

type CreateTagsOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateTagsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateTagsOutput) GoString() string {
	return s.String()
}

// Inventory data for installed discovery agents.
type CustomerAgentInfo struct {
	_ struct{} `type:"structure"`

	// Number of active discovery agents.
	//
	// ActiveAgents is a required field
	ActiveAgents *int64 `locationName:"activeAgents" type:"integer" required:"true"`

	// Number of blacklisted discovery agents.
	//
	// BlackListedAgents is a required field
	BlackListedAgents *int64 `locationName:"blackListedAgents" type:"integer" required:"true"`

	// Number of healthy discovery agents
	//
	// HealthyAgents is a required field
	HealthyAgents *int64 `locationName:"healthyAgents" type:"integer" required:"true"`

	// Number of discovery agents with status SHUTDOWN.
	//
	// ShutdownAgents is a required field
	ShutdownAgents *int64 `locationName:"shutdownAgents" type:"integer" required:"true"`

	// Total number of discovery agents.
	//
	// TotalAgents is a required field
	TotalAgents *int64 `locationName:"totalAgents" type:"integer" required:"true"`

	// Number of unhealthy discovery agents.
	//
	// UnhealthyAgents is a required field
	UnhealthyAgents *int64 `locationName:"unhealthyAgents" type:"integer" required:"true"`

	// Number of unknown discovery agents.
	//
	// UnknownAgents is a required field
	UnknownAgents *int64 `locationName:"unknownAgents" type:"integer" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CustomerAgentInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CustomerAgentInfo) GoString() string {
	return s.String()
}

// SetActiveAgents sets the ActiveAgents field's value.
func (s *CustomerAgentInfo) SetActiveAgents(v int64) *CustomerAgentInfo {
	s.ActiveAgents = &v
	return s
}

// SetBlackListedAgents sets the BlackListedAgents field's value.
func (s *CustomerAgentInfo) SetBlackListedAgents(v int64) *CustomerAgentInfo {
	s.BlackListedAgents = &v
	return s
}

// SetHealthyAgents sets the HealthyAgents field's value.
func (s *CustomerAgentInfo) SetHealthyAgents(v int64) *CustomerAgentInfo {
	s.HealthyAgents = &v
	return s
}

// SetShutdownAgents sets the ShutdownAgents field's value.
func (s *CustomerAgentInfo) SetShutdownAgents(v int64) *CustomerAgentInfo {
	s.ShutdownAgents = &v
	return s
}

// SetTotalAgents sets the TotalAgents field's value.
func (s *CustomerAgentInfo) SetTotalAgents(v int64) *CustomerAgentInfo {
	s.TotalAgents = &v
	return s
}

// SetUnhealthyAgents sets the UnhealthyAgents field's value.
func (s *CustomerAgentInfo) SetUnhealthyAgents(v int64) *CustomerAgentInfo {
	s.UnhealthyAgents = &v
	return s
}

// SetUnknownAgents sets the UnknownAgents field's value.
func (s *CustomerAgentInfo) SetUnknownAgents(v int64) *CustomerAgentInfo {
	s.UnknownAgents = &v
	return s
}

// The inventory data for installed Agentless Collector collectors.
type CustomerAgentlessCollectorInfo struct {
	_ struct{} `type:"structure"`

	// The number of active Agentless Collector collectors.
	//
	// ActiveAgentlessCollectors is a required field
	ActiveAgentlessCollectors *int64 `locationName:"activeAgentlessCollectors" type:"integer" required:"true"`

	// The number of deny-listed Agentless Collector collectors.
	//
	// DenyListedAgentlessCollectors is a required field
	DenyListedAgentlessCollectors *int64 `locationName:"denyListedAgentlessCollectors" type:"integer" required:"true"`

	// The number of healthy Agentless Collector collectors.
	//
	// HealthyAgentlessCollectors is a required field
	HealthyAgentlessCollectors *int64 `locationName:"healthyAgentlessCollectors" type:"integer" required:"true"`

	// The number of Agentless Collector collectors with SHUTDOWN status.
	//
	// ShutdownAgentlessCollectors is a required field
	ShutdownAgentlessCollectors *int64 `locationName:"shutdownAgentlessCollectors" type:"integer" required:"true"`

	// The total number of Agentless Collector collectors.
	//
	// TotalAgentlessCollectors is a required field
	TotalAgentlessCollectors *int64 `locationName:"totalAgentlessCollectors" type:"integer" required:"true"`

	// The number of unhealthy Agentless Collector collectors.
	//
	// UnhealthyAgentlessCollectors is a required field
	UnhealthyAgentlessCollectors *int64 `locationName:"unhealthyAgentlessCollectors" type:"integer" required:"true"`

	// The number of unknown Agentless Collector collectors.
	//
	// UnknownAgentlessCollectors is a required field
	UnknownAgentlessCollectors *int64 `locationName:"unknownAgentlessCollectors" type:"integer" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CustomerAgentlessCollectorInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CustomerAgentlessCollectorInfo) GoString() string {
	return s.String()
}

// SetActiveAgentlessCollectors sets the ActiveAgentlessCollectors field's value.
func (s *CustomerAgentlessCollectorInfo) SetActiveAgentlessCollectors(v int64) *CustomerAgentlessCollectorInfo {
	s.ActiveAgentlessCollectors = &v
	return s
}

// SetDenyListedAgentlessCollectors sets the DenyListedAgentlessCollectors field's value.
func (s *CustomerAgentlessCollectorInfo) SetDenyListedAgentlessCollectors(v int64) *CustomerAgentlessCollectorInfo {
	s.DenyListedAgentlessCollectors = &v
	return s
}

// SetHealthyAgentlessCollectors sets the HealthyAgentlessCollectors field's value.
func (s *CustomerAgentlessCollectorInfo) SetHealthyAgentlessCollectors(v int64) *CustomerAgentlessCollectorInfo {
	s.HealthyAgentlessCollectors = &v
	return s
}

// SetShutdownAgentlessCollectors sets the ShutdownAgentlessCollectors field's value.
func (s *CustomerAgentlessCollectorInfo) SetShutdownAgentlessCollectors(v int64) *CustomerAgentlessCollectorInfo {
	s.ShutdownAgentlessCollectors = &v
	return s
}

// SetTotalAgentlessCollectors sets the TotalAgentlessCollectors field's value.
func (s *CustomerAgentlessCollectorInfo) SetTotalAgentlessCollectors(v int64) *CustomerAgentlessCollectorInfo {
	s.TotalAgentlessCollectors = &v
	return s
}

// SetUnhealthyAgentlessCollectors sets the UnhealthyAgentlessCollectors field's value.
func (s *CustomerAgentlessCollectorInfo) SetUnhealthyAgentlessCollectors(v int64) *CustomerAgentlessCollectorInfo {
	s.UnhealthyAgentlessCollectors = &v
	return s
}

// SetUnknownAgentlessCollectors sets the UnknownAgentlessCollectors field's value.
func (s *CustomerAgentlessCollectorInfo) SetUnknownAgentlessCollectors(v int64) *CustomerAgentlessCollectorInfo {
	s.UnknownAgentlessCollectors = &v
	return s
}

// Inventory data for installed discovery connectors.
type CustomerConnectorInfo struct {
	_ struct{} `type:"structure"`

	// Number of active discovery connectors.
	//
	// ActiveConnectors is a required field
	ActiveConnectors *int64 `locationName:"activeConnectors" type:"integer" required:"true"`

	// Number of blacklisted discovery connectors.
	//
	// BlackListedConnectors is a required field
	BlackListedConnectors *int64 `locationName:"blackListedConnectors" type:"integer" required:"true"`

	// Number of healthy discovery connectors.
	//
	// HealthyConnectors is a required field
	HealthyConnectors *int64 `locationName:"healthyConnectors" type:"integer" required:"true"`

	// Number of discovery connectors with status SHUTDOWN,
	//
	// ShutdownConnectors is a required field
	ShutdownConnectors *int64 `locationName:"shutdownConnectors" type:"integer" required:"true"`

	// Total number of discovery connectors.
	//
	// TotalConnectors is a required field
	TotalConnectors *int64 `locationName:"totalConnectors" type:"integer" required:"true"`

	// Number of unhealthy discovery connectors.
	//
	// UnhealthyConnectors is a required field
	UnhealthyConnectors *int64 `locationName:"unhealthyConnectors" type:"integer" required:"true"`

	// Number of unknown discovery connectors.
	//
	// UnknownConnectors is a required field
	UnknownConnectors *int64 `locationName:"unknownConnectors" type:"integer" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CustomerConnectorInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CustomerConnectorInfo) GoString() string {
	return s.String()
}

// SetActiveConnectors sets the ActiveConnectors field's value.
func (s *CustomerConnectorInfo) SetActiveConnectors(v int64) *CustomerConnectorInfo {
	s.ActiveConnectors = &v
	return s
}

// SetBlackListedConnectors sets the BlackListedConnectors field's value.
func (s *CustomerConnectorInfo) SetBlackListedConnectors(v int64) *CustomerConnectorInfo {
	s.BlackListedConnectors = &v
	return s
}

// SetHealthyConnectors sets the HealthyConnectors field's value.
func (s *CustomerConnectorInfo) SetHealthyConnectors(v int64) *CustomerConnectorInfo {
	s.HealthyConnectors = &v
	return s
}

// SetShutdownConnectors sets the ShutdownConnectors field's value.
func (s *CustomerConnectorInfo) SetShutdownConnectors(v int64) *CustomerConnectorInfo {
	s.ShutdownConnectors = &v
	return s
}

// SetTotalConnectors sets the TotalConnectors field's value.
func (s *CustomerConnectorInfo) SetTotalConnectors(v int64) *CustomerConnectorInfo {
	s.TotalConnectors = &v
	return s
}

// SetUnhealthyConnectors sets the UnhealthyConnectors field's value.
func (s *CustomerConnectorInfo) SetUnhealthyConnectors(v int64) *CustomerConnectorInfo {
	s.UnhealthyConnectors = &v
	return s
}

// SetUnknownConnectors sets the UnknownConnectors field's value.
func (s *CustomerConnectorInfo) SetUnknownConnectors(v int64) *CustomerConnectorInfo {
	s.UnknownConnectors = &v
	return s
}

// The inventory data for installed Migration Evaluator collectors.
type CustomerMeCollectorInfo struct {
	_ struct{} `type:"structure"`

	// The number of active Migration Evaluator collectors.
	//
	// ActiveMeCollectors is a required field
	ActiveMeCollectors *int64 `locationName:"activeMeCollectors" type:"integer" required:"true"`

	// The number of deny-listed Migration Evaluator collectors.
	//
	// DenyListedMeCollectors is a required field
	DenyListedMeCollectors *int64 `locationName:"denyListedMeCollectors" type:"integer" required:"true"`

	// The number of healthy Migration Evaluator collectors.
	//
	// HealthyMeCollectors is a required field
	HealthyMeCollectors *int64 `locationName:"healthyMeCollectors" type:"integer" required:"true"`

	// The number of Migration Evaluator collectors with SHUTDOWN status.
	//
	// ShutdownMeCollectors is a required field
	ShutdownMeCollectors *int64 `locationName:"shutdownMeCollectors" type:"integer" required:"true"`

	// The total number of Migration Evaluator collectors.
	//
	// TotalMeCollectors is a required field
	TotalMeCollectors *int64 `locationName:"totalMeCollectors" type:"integer" required:"true"`

	// The number of unhealthy Migration Evaluator collectors.
	//
	// UnhealthyMeCollectors is a required field
	UnhealthyMeCollectors *int64 `locationName:"unhealthyMeCollectors" type:"integer" required:"true"`

	// The number of unknown Migration Evaluator collectors.
	//
	// UnknownMeCollectors is a required field
	UnknownMeCollectors *int64 `locationName:"unknownMeCollectors" type:"integer" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CustomerMeCollectorInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CustomerMeCollectorInfo) GoString() string {
	return s.String()
}

// SetActiveMeCollectors sets the ActiveMeCollectors field's value.
func (s *CustomerMeCollectorInfo) SetActiveMeCollectors(v int64) *CustomerMeCollectorInfo {
	s.ActiveMeCollectors = &v
	return s
}

// SetDenyListedMeCollectors sets the DenyListedMeCollectors field's value.
func (s *CustomerMeCollectorInfo) SetDenyListedMeCollectors(v int64) *CustomerMeCollectorInfo {
	s.DenyListedMeCollectors = &v
	return s
}

// SetHealthyMeCollectors sets the HealthyMeCollectors field's value.
func (s *CustomerMeCollectorInfo) SetHealthyMeCollectors(v int64) *CustomerMeCollectorInfo {
	s.HealthyMeCollectors = &v
	return s
}

// SetShutdownMeCollectors sets the ShutdownMeCollectors field's value.
func (s *CustomerMeCollectorInfo) SetShutdownMeCollectors(v int64) *CustomerMeCollectorInfo {
	s.ShutdownMeCollectors = &v
	return s
}

// SetTotalMeCollectors sets the TotalMeCollectors field's value.
func (s *CustomerMeCollectorInfo) SetTotalMeCollectors(v int64) *CustomerMeCollectorInfo {
	s.TotalMeCollectors = &v
	return s
}

// SetUnhealthyMeCollectors sets the UnhealthyMeCollectors field's value.
func (s *CustomerMeCollectorInfo) SetUnhealthyMeCollectors(v int64) *CustomerMeCollectorInfo {
	s.UnhealthyMeCollectors = &v
	return s
}

// SetUnknownMeCollectors sets the UnknownMeCollectors field's value.
func (s *CustomerMeCollectorInfo) SetUnknownMeCollectors(v int64) *CustomerMeCollectorInfo {
	s.UnknownMeCollectors = &v
	return s
}

// An object representing the agent or data collector to be deleted along with
// the optional configurations for error handling.
type DeleteAgent struct {
	_ struct{} `type:"structure"`

	// The ID of the agent or data collector to delete.
	//
	// AgentId is a required field
	AgentId *string `locationName:"agentId" min:"10" type:"string" required:"true"`

	// Optional flag used to force delete an agent or data collector. It is needed
	// to delete any agent in HEALTHY/UNHEALTHY/RUNNING status. Note that deleting
	// an agent that is actively reporting health causes it to be re-registered
	// with a different agent ID after data collector re-connects with Amazon Web
	// Services.
	Force *bool `locationName:"force" type:"boolean"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteAgent) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteAgent) GoString() string {
	return s.String()
}

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

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

// SetAgentId sets the AgentId field's value.
func (s *DeleteAgent) SetAgentId(v string) *DeleteAgent {
	s.AgentId = &v
	return s
}

// SetForce sets the Force field's value.
func (s *DeleteAgent) SetForce(v bool) *DeleteAgent {
	s.Force = &v
	return s
}

type DeleteApplicationsInput struct {
	_ struct{} `type:"structure"`

	// Configuration ID of an application to be deleted.
	//
	// ConfigurationIds is a required field
	ConfigurationIds []*string `locationName:"configurationIds" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteApplicationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteApplicationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteApplicationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteApplicationsInput"}
	if s.ConfigurationIds == nil {
		invalidParams.Add(request.NewErrParamRequired("ConfigurationIds"))
	}

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

// SetConfigurationIds sets the ConfigurationIds field's value.
func (s *DeleteApplicationsInput) SetConfigurationIds(v []*string) *DeleteApplicationsInput {
	s.ConfigurationIds = v
	return s
}

type DeleteApplicationsOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteApplicationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteApplicationsOutput) GoString() string {
	return s.String()
}

type DeleteTagsInput struct {
	_ struct{} `type:"structure"`

	// A list of configuration items with tags that you want to delete.
	//
	// ConfigurationIds is a required field
	ConfigurationIds []*string `locationName:"configurationIds" type:"list" required:"true"`

	// Tags that you want to delete from one or more configuration items. Specify
	// the tags that you want to delete in a key-value format. For example:
	//
	// {"key": "serverType", "value": "webServer"}
	Tags []*Tag `locationName:"tags" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteTagsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteTagsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteTagsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteTagsInput"}
	if s.ConfigurationIds == nil {
		invalidParams.Add(request.NewErrParamRequired("ConfigurationIds"))
	}
	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
}

// SetConfigurationIds sets the ConfigurationIds field's value.
func (s *DeleteTagsInput) SetConfigurationIds(v []*string) *DeleteTagsInput {
	s.ConfigurationIds = v
	return s
}

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

type DeleteTagsOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteTagsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteTagsOutput) GoString() string {
	return s.String()
}

// A configuration ID paired with a warning message.
type DeletionWarning struct {
	_ struct{} `type:"structure"`

	// The unique identifier of the configuration that produced a warning.
	ConfigurationId *string `locationName:"configurationId" type:"string"`

	// The integer warning code associated with the warning message.
	WarningCode *int64 `locationName:"warningCode" type:"integer"`

	// A descriptive message of the warning the associated configuration ID produced.
	WarningText *string `locationName:"warningText" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeletionWarning) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeletionWarning) GoString() string {
	return s.String()
}

// SetConfigurationId sets the ConfigurationId field's value.
func (s *DeletionWarning) SetConfigurationId(v string) *DeletionWarning {
	s.ConfigurationId = &v
	return s
}

// SetWarningCode sets the WarningCode field's value.
func (s *DeletionWarning) SetWarningCode(v int64) *DeletionWarning {
	s.WarningCode = &v
	return s
}

// SetWarningText sets the WarningText field's value.
func (s *DeletionWarning) SetWarningText(v string) *DeletionWarning {
	s.WarningText = &v
	return s
}

type DescribeAgentsInput struct {
	_ struct{} `type:"structure"`

	// The agent or the collector IDs for which you want information. If you specify
	// no IDs, the system returns information about all agents/collectors associated
	// with your user.
	AgentIds []*string `locationName:"agentIds" type:"list"`

	// You can filter the request using various logical operators and a key-value
	// format. For example:
	//
	// {"key": "collectionStatus", "value": "STARTED"}
	Filters []*Filter `locationName:"filters" type:"list"`

	// The total number of agents/collectors to return in a single page of output.
	// The maximum value is 100.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// Token to retrieve the next set of results. For example, if you previously
	// specified 100 IDs for DescribeAgentsRequest$agentIds but set DescribeAgentsRequest$maxResults
	// to 10, you received a set of 10 results along with a token. Use that token
	// in this query to get the next set of 10.
	NextToken *string `locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeAgentsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeAgentsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeAgentsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeAgentsInput"}
	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
}

// SetAgentIds sets the AgentIds field's value.
func (s *DescribeAgentsInput) SetAgentIds(v []*string) *DescribeAgentsInput {
	s.AgentIds = v
	return s
}

// SetFilters sets the Filters field's value.
func (s *DescribeAgentsInput) SetFilters(v []*Filter) *DescribeAgentsInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeAgentsInput) SetMaxResults(v int64) *DescribeAgentsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeAgentsInput) SetNextToken(v string) *DescribeAgentsInput {
	s.NextToken = &v
	return s
}

type DescribeAgentsOutput struct {
	_ struct{} `type:"structure"`

	// Lists agents or the collector by ID or lists all agents/collectors associated
	// with your user, if you did not specify an agent/collector ID. The output
	// includes agent/collector IDs, IP addresses, media access control (MAC) addresses,
	// agent/collector health, host name where the agent/collector resides, and
	// the version number of each agent/collector.
	AgentsInfo []*AgentInfo `locationName:"agentsInfo" type:"list"`

	// Token to retrieve the next set of results. For example, if you specified
	// 100 IDs for DescribeAgentsRequest$agentIds but set DescribeAgentsRequest$maxResults
	// to 10, you received a set of 10 results along with this token. Use this token
	// in the next query to retrieve the next set of 10.
	NextToken *string `locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeAgentsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeAgentsOutput) GoString() string {
	return s.String()
}

// SetAgentsInfo sets the AgentsInfo field's value.
func (s *DescribeAgentsOutput) SetAgentsInfo(v []*AgentInfo) *DescribeAgentsOutput {
	s.AgentsInfo = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeAgentsOutput) SetNextToken(v string) *DescribeAgentsOutput {
	s.NextToken = &v
	return s
}

type DescribeBatchDeleteConfigurationTaskInput struct {
	_ struct{} `type:"structure"`

	// The ID of the task to delete.
	//
	// TaskId is a required field
	TaskId *string `locationName:"taskId" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeBatchDeleteConfigurationTaskInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeBatchDeleteConfigurationTaskInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeBatchDeleteConfigurationTaskInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeBatchDeleteConfigurationTaskInput"}
	if s.TaskId == nil {
		invalidParams.Add(request.NewErrParamRequired("TaskId"))
	}

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

// SetTaskId sets the TaskId field's value.
func (s *DescribeBatchDeleteConfigurationTaskInput) SetTaskId(v string) *DescribeBatchDeleteConfigurationTaskInput {
	s.TaskId = &v
	return s
}

type DescribeBatchDeleteConfigurationTaskOutput struct {
	_ struct{} `type:"structure"`

	// The BatchDeleteConfigurationTask that represents the deletion task being
	// executed.
	Task *BatchDeleteConfigurationTask `locationName:"task" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeBatchDeleteConfigurationTaskOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeBatchDeleteConfigurationTaskOutput) GoString() string {
	return s.String()
}

// SetTask sets the Task field's value.
func (s *DescribeBatchDeleteConfigurationTaskOutput) SetTask(v *BatchDeleteConfigurationTask) *DescribeBatchDeleteConfigurationTaskOutput {
	s.Task = v
	return s
}

type DescribeConfigurationsInput struct {
	_ struct{} `type:"structure"`

	// One or more configuration IDs.
	//
	// ConfigurationIds is a required field
	ConfigurationIds []*string `locationName:"configurationIds" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeConfigurationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeConfigurationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeConfigurationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeConfigurationsInput"}
	if s.ConfigurationIds == nil {
		invalidParams.Add(request.NewErrParamRequired("ConfigurationIds"))
	}

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

// SetConfigurationIds sets the ConfigurationIds field's value.
func (s *DescribeConfigurationsInput) SetConfigurationIds(v []*string) *DescribeConfigurationsInput {
	s.ConfigurationIds = v
	return s
}

type DescribeConfigurationsOutput struct {
	_ struct{} `type:"structure"`

	// A key in the response map. The value is an array of data.
	Configurations []map[string]*string `locationName:"configurations" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeConfigurationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeConfigurationsOutput) GoString() string {
	return s.String()
}

// SetConfigurations sets the Configurations field's value.
func (s *DescribeConfigurationsOutput) SetConfigurations(v []map[string]*string) *DescribeConfigurationsOutput {
	s.Configurations = v
	return s
}

type DescribeContinuousExportsInput struct {
	_ struct{} `type:"structure"`

	// The unique IDs assigned to the exports.
	ExportIds []*string `locationName:"exportIds" type:"list"`

	// A number between 1 and 100 specifying the maximum number of continuous export
	// descriptions returned.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// The token from the previous call to DescribeExportTasks.
	NextToken *string `locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeContinuousExportsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeContinuousExportsInput) GoString() string {
	return s.String()
}

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

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

// SetExportIds sets the ExportIds field's value.
func (s *DescribeContinuousExportsInput) SetExportIds(v []*string) *DescribeContinuousExportsInput {
	s.ExportIds = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeContinuousExportsInput) SetMaxResults(v int64) *DescribeContinuousExportsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeContinuousExportsInput) SetNextToken(v string) *DescribeContinuousExportsInput {
	s.NextToken = &v
	return s
}

type DescribeContinuousExportsOutput struct {
	_ struct{} `type:"structure"`

	// A list of continuous export descriptions.
	Descriptions []*ContinuousExportDescription `locationName:"descriptions" type:"list"`

	// The token from the previous call to DescribeExportTasks.
	NextToken *string `locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeContinuousExportsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeContinuousExportsOutput) GoString() string {
	return s.String()
}

// SetDescriptions sets the Descriptions field's value.
func (s *DescribeContinuousExportsOutput) SetDescriptions(v []*ContinuousExportDescription) *DescribeContinuousExportsOutput {
	s.Descriptions = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeContinuousExportsOutput) SetNextToken(v string) *DescribeContinuousExportsOutput {
	s.NextToken = &v
	return s
}

type DescribeExportConfigurationsInput struct {
	_ struct{} `type:"structure"`

	// A list of continuous export IDs to search for.
	ExportIds []*string `locationName:"exportIds" type:"list"`

	// A number between 1 and 100 specifying the maximum number of continuous export
	// descriptions returned.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The token from the previous call to describe-export-tasks.
	NextToken *string `locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeExportConfigurationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeExportConfigurationsInput) GoString() string {
	return s.String()
}

// SetExportIds sets the ExportIds field's value.
func (s *DescribeExportConfigurationsInput) SetExportIds(v []*string) *DescribeExportConfigurationsInput {
	s.ExportIds = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeExportConfigurationsInput) SetMaxResults(v int64) *DescribeExportConfigurationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeExportConfigurationsInput) SetNextToken(v string) *DescribeExportConfigurationsInput {
	s.NextToken = &v
	return s
}

type DescribeExportConfigurationsOutput struct {
	_ struct{} `type:"structure"`

	ExportsInfo []*ExportInfo `locationName:"exportsInfo" type:"list"`

	// The token from the previous call to describe-export-tasks.
	NextToken *string `locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeExportConfigurationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeExportConfigurationsOutput) GoString() string {
	return s.String()
}

// SetExportsInfo sets the ExportsInfo field's value.
func (s *DescribeExportConfigurationsOutput) SetExportsInfo(v []*ExportInfo) *DescribeExportConfigurationsOutput {
	s.ExportsInfo = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeExportConfigurationsOutput) SetNextToken(v string) *DescribeExportConfigurationsOutput {
	s.NextToken = &v
	return s
}

type DescribeExportTasksInput struct {
	_ struct{} `type:"structure"`

	// One or more unique identifiers used to query the status of an export request.
	ExportIds []*string `locationName:"exportIds" type:"list"`

	// One or more filters.
	//
	//    * AgentId - ID of the agent whose collected data will be exported
	Filters []*ExportFilter `locationName:"filters" type:"list"`

	// The maximum number of volume results returned by DescribeExportTasks in paginated
	// output. When this parameter is used, DescribeExportTasks only returns maxResults
	// results in a single page along with a nextToken response element.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The nextToken value returned from a previous paginated DescribeExportTasks
	// request where maxResults was used and the results exceeded the value of that
	// parameter. Pagination continues from the end of the previous results that
	// returned the nextToken value. This value is null when there are no more results
	// to return.
	NextToken *string `locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeExportTasksInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeExportTasksInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeExportTasksInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeExportTasksInput"}
	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
}

// SetExportIds sets the ExportIds field's value.
func (s *DescribeExportTasksInput) SetExportIds(v []*string) *DescribeExportTasksInput {
	s.ExportIds = v
	return s
}

// SetFilters sets the Filters field's value.
func (s *DescribeExportTasksInput) SetFilters(v []*ExportFilter) *DescribeExportTasksInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeExportTasksInput) SetMaxResults(v int64) *DescribeExportTasksInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeExportTasksInput) SetNextToken(v string) *DescribeExportTasksInput {
	s.NextToken = &v
	return s
}

type DescribeExportTasksOutput struct {
	_ struct{} `type:"structure"`

	// Contains one or more sets of export request details. When the status of a
	// request is SUCCEEDED, the response includes a URL for an Amazon S3 bucket
	// where you can view the data in a CSV file.
	ExportsInfo []*ExportInfo `locationName:"exportsInfo" type:"list"`

	// The nextToken value to include in a future DescribeExportTasks request. When
	// the results of a DescribeExportTasks request exceed maxResults, this value
	// can be used to retrieve the next page of results. This value is null when
	// there are no more results to return.
	NextToken *string `locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeExportTasksOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeExportTasksOutput) GoString() string {
	return s.String()
}

// SetExportsInfo sets the ExportsInfo field's value.
func (s *DescribeExportTasksOutput) SetExportsInfo(v []*ExportInfo) *DescribeExportTasksOutput {
	s.ExportsInfo = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeExportTasksOutput) SetNextToken(v string) *DescribeExportTasksOutput {
	s.NextToken = &v
	return s
}

type DescribeImportTasksInput struct {
	_ struct{} `type:"structure"`

	// An array of name-value pairs that you provide to filter the results for the
	// DescribeImportTask request to a specific subset of results. Currently, wildcard
	// values aren't supported for filters.
	Filters []*ImportTaskFilter `locationName:"filters" type:"list"`

	// The maximum number of results that you want this request to return, up to
	// 100.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// The token to request a specific page of results.
	NextToken *string `locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeImportTasksInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeImportTasksInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeImportTasksInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeImportTasksInput"}
	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 *DescribeImportTasksInput) SetFilters(v []*ImportTaskFilter) *DescribeImportTasksInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeImportTasksInput) SetMaxResults(v int64) *DescribeImportTasksInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeImportTasksInput) SetNextToken(v string) *DescribeImportTasksInput {
	s.NextToken = &v
	return s
}

type DescribeImportTasksOutput struct {
	_ struct{} `type:"structure"`

	// The token to request the next page of results.
	NextToken *string `locationName:"nextToken" type:"string"`

	// A returned array of import tasks that match any applied filters, up to the
	// specified number of maximum results.
	Tasks []*ImportTask `locationName:"tasks" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeImportTasksOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeImportTasksOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeImportTasksOutput) SetNextToken(v string) *DescribeImportTasksOutput {
	s.NextToken = &v
	return s
}

// SetTasks sets the Tasks field's value.
func (s *DescribeImportTasksOutput) SetTasks(v []*ImportTask) *DescribeImportTasksOutput {
	s.Tasks = v
	return s
}

type DescribeTagsInput struct {
	_ struct{} `type:"structure"`

	// You can filter the list using a key-value format. You can separate these
	// items by using logical operators. Allowed filters include tagKey, tagValue,
	// and configurationId.
	Filters []*TagFilter `locationName:"filters" type:"list"`

	// The total number of items to return in a single page of output. The maximum
	// value is 100.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// A token to start the list. Use this token to get the next set of results.
	NextToken *string `locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeTagsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeTagsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeTagsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeTagsInput"}
	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 *DescribeTagsInput) SetFilters(v []*TagFilter) *DescribeTagsInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeTagsInput) SetMaxResults(v int64) *DescribeTagsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeTagsInput) SetNextToken(v string) *DescribeTagsInput {
	s.NextToken = &v
	return s
}

type DescribeTagsOutput struct {
	_ struct{} `type:"structure"`

	// The call returns a token. Use this token to get the next set of results.
	NextToken *string `locationName:"nextToken" type:"string"`

	// Depending on the input, this is a list of configuration items tagged with
	// a specific tag, or a list of tags for a specific configuration item.
	Tags []*ConfigurationTag `locationName:"tags" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeTagsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeTagsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeTagsOutput) SetNextToken(v string) *DescribeTagsOutput {
	s.NextToken = &v
	return s
}

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

type DisassociateConfigurationItemsFromApplicationInput struct {
	_ struct{} `type:"structure"`

	// Configuration ID of an application from which each item is disassociated.
	//
	// ApplicationConfigurationId is a required field
	ApplicationConfigurationId *string `locationName:"applicationConfigurationId" type:"string" required:"true"`

	// Configuration ID of each item to be disassociated from an application.
	//
	// ConfigurationIds is a required field
	ConfigurationIds []*string `locationName:"configurationIds" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateConfigurationItemsFromApplicationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateConfigurationItemsFromApplicationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DisassociateConfigurationItemsFromApplicationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DisassociateConfigurationItemsFromApplicationInput"}
	if s.ApplicationConfigurationId == nil {
		invalidParams.Add(request.NewErrParamRequired("ApplicationConfigurationId"))
	}
	if s.ConfigurationIds == nil {
		invalidParams.Add(request.NewErrParamRequired("ConfigurationIds"))
	}

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

// SetApplicationConfigurationId sets the ApplicationConfigurationId field's value.
func (s *DisassociateConfigurationItemsFromApplicationInput) SetApplicationConfigurationId(v string) *DisassociateConfigurationItemsFromApplicationInput {
	s.ApplicationConfigurationId = &v
	return s
}

// SetConfigurationIds sets the ConfigurationIds field's value.
func (s *DisassociateConfigurationItemsFromApplicationInput) SetConfigurationIds(v []*string) *DisassociateConfigurationItemsFromApplicationInput {
	s.ConfigurationIds = v
	return s
}

type DisassociateConfigurationItemsFromApplicationOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateConfigurationItemsFromApplicationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateConfigurationItemsFromApplicationOutput) GoString() string {
	return s.String()
}

// Indicates that the exported data must include EC2 instance type matches for
// on-premises servers that are discovered through Amazon Web Services Application
// Discovery Service.
type Ec2RecommendationsExportPreferences struct {
	_ struct{} `type:"structure"`

	// The recommended EC2 instance type that matches the CPU usage metric of server
	// performance data.
	CpuPerformanceMetricBasis *UsageMetricBasis `locationName:"cpuPerformanceMetricBasis" type:"structure"`

	// If set to true, the export preferences (https://docs.aws.amazon.com/application-discovery/latest/APIReference/API_StartExportTask.html#API_StartExportTask_RequestSyntax)
	// is set to Ec2RecommendationsExportPreferences.
	Enabled *bool `locationName:"enabled" type:"boolean"`

	// An array of instance types to exclude from recommendations.
	ExcludedInstanceTypes []*string `locationName:"excludedInstanceTypes" type:"list"`

	// The target Amazon Web Services Region for the recommendations. You can use
	// any of the Region codes available for the chosen service, as listed in Amazon
	// Web Services service endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html)
	// in the Amazon Web Services General Reference.
	PreferredRegion *string `locationName:"preferredRegion" min:"1" type:"string"`

	// The recommended EC2 instance type that matches the Memory usage metric of
	// server performance data.
	RamPerformanceMetricBasis *UsageMetricBasis `locationName:"ramPerformanceMetricBasis" type:"structure"`

	// The contract type for a reserved instance. If blank, we assume an On-Demand
	// instance is preferred.
	ReservedInstanceOptions *ReservedInstanceOptions `locationName:"reservedInstanceOptions" type:"structure"`

	// The target tenancy to use for your recommended EC2 instances.
	Tenancy *string `locationName:"tenancy" type:"string" enum:"Tenancy"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Ec2RecommendationsExportPreferences) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Ec2RecommendationsExportPreferences) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Ec2RecommendationsExportPreferences) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Ec2RecommendationsExportPreferences"}
	if s.PreferredRegion != nil && len(*s.PreferredRegion) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PreferredRegion", 1))
	}
	if s.ReservedInstanceOptions != nil {
		if err := s.ReservedInstanceOptions.Validate(); err != nil {
			invalidParams.AddNested("ReservedInstanceOptions", err.(request.ErrInvalidParams))
		}
	}

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

// SetCpuPerformanceMetricBasis sets the CpuPerformanceMetricBasis field's value.
func (s *Ec2RecommendationsExportPreferences) SetCpuPerformanceMetricBasis(v *UsageMetricBasis) *Ec2RecommendationsExportPreferences {
	s.CpuPerformanceMetricBasis = v
	return s
}

// SetEnabled sets the Enabled field's value.
func (s *Ec2RecommendationsExportPreferences) SetEnabled(v bool) *Ec2RecommendationsExportPreferences {
	s.Enabled = &v
	return s
}

// SetExcludedInstanceTypes sets the ExcludedInstanceTypes field's value.
func (s *Ec2RecommendationsExportPreferences) SetExcludedInstanceTypes(v []*string) *Ec2RecommendationsExportPreferences {
	s.ExcludedInstanceTypes = v
	return s
}

// SetPreferredRegion sets the PreferredRegion field's value.
func (s *Ec2RecommendationsExportPreferences) SetPreferredRegion(v string) *Ec2RecommendationsExportPreferences {
	s.PreferredRegion = &v
	return s
}

// SetRamPerformanceMetricBasis sets the RamPerformanceMetricBasis field's value.
func (s *Ec2RecommendationsExportPreferences) SetRamPerformanceMetricBasis(v *UsageMetricBasis) *Ec2RecommendationsExportPreferences {
	s.RamPerformanceMetricBasis = v
	return s
}

// SetReservedInstanceOptions sets the ReservedInstanceOptions field's value.
func (s *Ec2RecommendationsExportPreferences) SetReservedInstanceOptions(v *ReservedInstanceOptions) *Ec2RecommendationsExportPreferences {
	s.ReservedInstanceOptions = v
	return s
}

// SetTenancy sets the Tenancy field's value.
func (s *Ec2RecommendationsExportPreferences) SetTenancy(v string) *Ec2RecommendationsExportPreferences {
	s.Tenancy = &v
	return s
}

type ExportConfigurationsInput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportConfigurationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportConfigurationsInput) GoString() string {
	return s.String()
}

type ExportConfigurationsOutput struct {
	_ struct{} `type:"structure"`

	// A unique identifier that you can use to query the export status.
	ExportId *string `locationName:"exportId" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportConfigurationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportConfigurationsOutput) GoString() string {
	return s.String()
}

// SetExportId sets the ExportId field's value.
func (s *ExportConfigurationsOutput) SetExportId(v string) *ExportConfigurationsOutput {
	s.ExportId = &v
	return s
}

// Used to select which agent's data is to be exported. A single agent ID may
// be selected for export using the StartExportTask (http://docs.aws.amazon.com/application-discovery/latest/APIReference/API_StartExportTask.html)
// action.
type ExportFilter struct {
	_ struct{} `type:"structure"`

	// Supported condition: EQUALS
	//
	// Condition is a required field
	Condition *string `locationName:"condition" type:"string" required:"true"`

	// A single ExportFilter name. Supported filters: agentIds.
	//
	// Name is a required field
	Name *string `locationName:"name" type:"string" required:"true"`

	// A single agent ID for a Discovery Agent. An agent ID can be found using the
	// DescribeAgents (http://docs.aws.amazon.com/application-discovery/latest/APIReference/API_DescribeAgents.html)
	// action. Typically an ADS agent ID is in the form o-0123456789abcdef0.
	//
	// Values is a required field
	Values []*string `locationName:"values" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ExportFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ExportFilter"}
	if s.Condition == nil {
		invalidParams.Add(request.NewErrParamRequired("Condition"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Values == nil {
		invalidParams.Add(request.NewErrParamRequired("Values"))
	}

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

// SetCondition sets the Condition field's value.
func (s *ExportFilter) SetCondition(v string) *ExportFilter {
	s.Condition = &v
	return s
}

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

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

// Information regarding the export status of discovered data. The value is
// an array of objects.
type ExportInfo struct {
	_ struct{} `type:"structure"`

	// A URL for an Amazon S3 bucket where you can review the exported data. The
	// URL is displayed only if the export succeeded.
	ConfigurationsDownloadUrl *string `locationName:"configurationsDownloadUrl" type:"string"`

	// A unique identifier used to query an export.
	//
	// ExportId is a required field
	ExportId *string `locationName:"exportId" type:"string" required:"true"`

	// The time that the data export was initiated.
	//
	// ExportRequestTime is a required field
	ExportRequestTime *time.Time `locationName:"exportRequestTime" type:"timestamp" required:"true"`

	// The status of the data export job.
	//
	// ExportStatus is a required field
	ExportStatus *string `locationName:"exportStatus" type:"string" required:"true" enum:"ExportStatus"`

	// If true, the export of agent information exceeded the size limit for a single
	// export and the exported data is incomplete for the requested time range.
	// To address this, select a smaller time range for the export by using startDate
	// and endDate.
	IsTruncated *bool `locationName:"isTruncated" type:"boolean"`

	// The endTime used in the StartExportTask request. If no endTime was requested,
	// this result does not appear in ExportInfo.
	RequestedEndTime *time.Time `locationName:"requestedEndTime" type:"timestamp"`

	// The value of startTime parameter in the StartExportTask request. If no startTime
	// was requested, this result does not appear in ExportInfo.
	RequestedStartTime *time.Time `locationName:"requestedStartTime" type:"timestamp"`

	// A status message provided for API callers.
	//
	// StatusMessage is a required field
	StatusMessage *string `locationName:"statusMessage" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportInfo) GoString() string {
	return s.String()
}

// SetConfigurationsDownloadUrl sets the ConfigurationsDownloadUrl field's value.
func (s *ExportInfo) SetConfigurationsDownloadUrl(v string) *ExportInfo {
	s.ConfigurationsDownloadUrl = &v
	return s
}

// SetExportId sets the ExportId field's value.
func (s *ExportInfo) SetExportId(v string) *ExportInfo {
	s.ExportId = &v
	return s
}

// SetExportRequestTime sets the ExportRequestTime field's value.
func (s *ExportInfo) SetExportRequestTime(v time.Time) *ExportInfo {
	s.ExportRequestTime = &v
	return s
}

// SetExportStatus sets the ExportStatus field's value.
func (s *ExportInfo) SetExportStatus(v string) *ExportInfo {
	s.ExportStatus = &v
	return s
}

// SetIsTruncated sets the IsTruncated field's value.
func (s *ExportInfo) SetIsTruncated(v bool) *ExportInfo {
	s.IsTruncated = &v
	return s
}

// SetRequestedEndTime sets the RequestedEndTime field's value.
func (s *ExportInfo) SetRequestedEndTime(v time.Time) *ExportInfo {
	s.RequestedEndTime = &v
	return s
}

// SetRequestedStartTime sets the RequestedStartTime field's value.
func (s *ExportInfo) SetRequestedStartTime(v time.Time) *ExportInfo {
	s.RequestedStartTime = &v
	return s
}

// SetStatusMessage sets the StatusMessage field's value.
func (s *ExportInfo) SetStatusMessage(v string) *ExportInfo {
	s.StatusMessage = &v
	return s
}

// Indicates the type of data that is being exported. Only one ExportPreferences
// can be enabled for a StartExportTask (https://docs.aws.amazon.com/application-discovery/latest/APIReference/API_StartExportTask.html)
// action.
type ExportPreferences struct {
	_ struct{} `type:"structure"`

	// If enabled, exported data includes EC2 instance type matches for on-premises
	// servers discovered through Amazon Web Services Application Discovery Service.
	Ec2RecommendationsPreferences *Ec2RecommendationsExportPreferences `locationName:"ec2RecommendationsPreferences" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportPreferences) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportPreferences) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ExportPreferences) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ExportPreferences"}
	if s.Ec2RecommendationsPreferences != nil {
		if err := s.Ec2RecommendationsPreferences.Validate(); err != nil {
			invalidParams.AddNested("Ec2RecommendationsPreferences", err.(request.ErrInvalidParams))
		}
	}

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

// SetEc2RecommendationsPreferences sets the Ec2RecommendationsPreferences field's value.
func (s *ExportPreferences) SetEc2RecommendationsPreferences(v *Ec2RecommendationsExportPreferences) *ExportPreferences {
	s.Ec2RecommendationsPreferences = v
	return s
}

// A configuration ID paired with an error message.
type FailedConfiguration struct {
	_ struct{} `type:"structure"`

	// The unique identifier of the configuration the failed to delete.
	ConfigurationId *string `locationName:"configurationId" type:"string"`

	// A descriptive message indicating why the associated configuration failed
	// to delete.
	ErrorMessage *string `locationName:"errorMessage" type:"string"`

	// The integer error code associated with the error message.
	ErrorStatusCode *int64 `locationName:"errorStatusCode" type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FailedConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FailedConfiguration) GoString() string {
	return s.String()
}

// SetConfigurationId sets the ConfigurationId field's value.
func (s *FailedConfiguration) SetConfigurationId(v string) *FailedConfiguration {
	s.ConfigurationId = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *FailedConfiguration) SetErrorMessage(v string) *FailedConfiguration {
	s.ErrorMessage = &v
	return s
}

// SetErrorStatusCode sets the ErrorStatusCode field's value.
func (s *FailedConfiguration) SetErrorStatusCode(v int64) *FailedConfiguration {
	s.ErrorStatusCode = &v
	return s
}

// A filter that can use conditional operators.
//
// For more information about filters, see Querying Discovered Configuration
// Items (https://docs.aws.amazon.com/application-discovery/latest/userguide/discovery-api-queries.html)
// in the Amazon Web Services Application Discovery Service User Guide.
type Filter struct {
	_ struct{} `type:"structure"`

	// A conditional operator. The following operators are valid: EQUALS, NOT_EQUALS,
	// CONTAINS, NOT_CONTAINS. If you specify multiple filters, the system utilizes
	// all filters as though concatenated by AND. If you specify multiple values
	// for a particular filter, the system differentiates the values using OR. Calling
	// either DescribeConfigurations or ListConfigurations returns attributes of
	// matching configuration items.
	//
	// Condition is a required field
	Condition *string `locationName:"condition" type:"string" required:"true"`

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

	// A string value on which to filter. For example, if you choose the destinationServer.osVersion
	// filter name, you could specify Ubuntu for the value.
	//
	// Values is a required field
	Values []*string `locationName:"values" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Filter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Filter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Filter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Filter"}
	if s.Condition == nil {
		invalidParams.Add(request.NewErrParamRequired("Condition"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Values == nil {
		invalidParams.Add(request.NewErrParamRequired("Values"))
	}

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

// SetCondition sets the Condition field's value.
func (s *Filter) SetCondition(v string) *Filter {
	s.Condition = &v
	return s
}

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

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

type GetDiscoverySummaryInput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDiscoverySummaryInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDiscoverySummaryInput) GoString() string {
	return s.String()
}

type GetDiscoverySummaryOutput struct {
	_ struct{} `type:"structure"`

	// Details about discovered agents, including agent status and health.
	AgentSummary *CustomerAgentInfo `locationName:"agentSummary" type:"structure"`

	// Details about Agentless Collector collectors, including status.
	AgentlessCollectorSummary *CustomerAgentlessCollectorInfo `locationName:"agentlessCollectorSummary" type:"structure"`

	// The number of applications discovered.
	Applications *int64 `locationName:"applications" type:"long"`

	// Details about discovered connectors, including connector status and health.
	ConnectorSummary *CustomerConnectorInfo `locationName:"connectorSummary" type:"structure"`

	// Details about Migration Evaluator collectors, including collector status
	// and health.
	MeCollectorSummary *CustomerMeCollectorInfo `locationName:"meCollectorSummary" type:"structure"`

	// The number of servers discovered.
	Servers *int64 `locationName:"servers" type:"long"`

	// The number of servers mapped to applications.
	ServersMappedToApplications *int64 `locationName:"serversMappedToApplications" type:"long"`

	// The number of servers mapped to tags.
	ServersMappedtoTags *int64 `locationName:"serversMappedtoTags" type:"long"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDiscoverySummaryOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDiscoverySummaryOutput) GoString() string {
	return s.String()
}

// SetAgentSummary sets the AgentSummary field's value.
func (s *GetDiscoverySummaryOutput) SetAgentSummary(v *CustomerAgentInfo) *GetDiscoverySummaryOutput {
	s.AgentSummary = v
	return s
}

// SetAgentlessCollectorSummary sets the AgentlessCollectorSummary field's value.
func (s *GetDiscoverySummaryOutput) SetAgentlessCollectorSummary(v *CustomerAgentlessCollectorInfo) *GetDiscoverySummaryOutput {
	s.AgentlessCollectorSummary = v
	return s
}

// SetApplications sets the Applications field's value.
func (s *GetDiscoverySummaryOutput) SetApplications(v int64) *GetDiscoverySummaryOutput {
	s.Applications = &v
	return s
}

// SetConnectorSummary sets the ConnectorSummary field's value.
func (s *GetDiscoverySummaryOutput) SetConnectorSummary(v *CustomerConnectorInfo) *GetDiscoverySummaryOutput {
	s.ConnectorSummary = v
	return s
}

// SetMeCollectorSummary sets the MeCollectorSummary field's value.
func (s *GetDiscoverySummaryOutput) SetMeCollectorSummary(v *CustomerMeCollectorInfo) *GetDiscoverySummaryOutput {
	s.MeCollectorSummary = v
	return s
}

// SetServers sets the Servers field's value.
func (s *GetDiscoverySummaryOutput) SetServers(v int64) *GetDiscoverySummaryOutput {
	s.Servers = &v
	return s
}

// SetServersMappedToApplications sets the ServersMappedToApplications field's value.
func (s *GetDiscoverySummaryOutput) SetServersMappedToApplications(v int64) *GetDiscoverySummaryOutput {
	s.ServersMappedToApplications = &v
	return s
}

// SetServersMappedtoTags sets the ServersMappedtoTags field's value.
func (s *GetDiscoverySummaryOutput) SetServersMappedtoTags(v int64) *GetDiscoverySummaryOutput {
	s.ServersMappedtoTags = &v
	return s
}

// The home Region is not set. Set the home Region to continue.
type HomeRegionNotSetException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HomeRegionNotSetException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HomeRegionNotSetException) GoString() string {
	return s.String()
}

func newErrorHomeRegionNotSetException(v protocol.ResponseMetadata) error {
	return &HomeRegionNotSetException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *HomeRegionNotSetException) Code() string {
	return "HomeRegionNotSetException"
}

// Message returns the exception's message.
func (s *HomeRegionNotSetException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *HomeRegionNotSetException) OrigErr() error {
	return nil
}

func (s *HomeRegionNotSetException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *HomeRegionNotSetException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *HomeRegionNotSetException) RequestID() string {
	return s.RespMetadata.RequestID
}

// An array of information related to the import task request that includes
// status information, times, IDs, the Amazon S3 Object URL for the import file,
// and more.
type ImportTask struct {
	_ struct{} `type:"structure"`

	// The total number of application records in the import file that failed to
	// be imported.
	ApplicationImportFailure *int64 `locationName:"applicationImportFailure" type:"integer"`

	// The total number of application records in the import file that were successfully
	// imported.
	ApplicationImportSuccess *int64 `locationName:"applicationImportSuccess" type:"integer"`

	// A unique token used to prevent the same import request from occurring more
	// than once. If you didn't provide a token, a token was automatically generated
	// when the import task request was sent.
	ClientRequestToken *string `locationName:"clientRequestToken" min:"1" type:"string"`

	// A link to a compressed archive folder (in the ZIP format) that contains an
	// error log and a file of failed records. You can use these two files to quickly
	// identify records that failed, why they failed, and correct those records.
	// Afterward, you can upload the corrected file to your Amazon S3 bucket and
	// create another import task request.
	//
	// This field also includes authorization information so you can confirm the
	// authenticity of the compressed archive before you download it.
	//
	// If some records failed to be imported we recommend that you correct the records
	// in the failed entries file and then imports that failed entries file. This
	// prevents you from having to correct and update the larger original file and
	// attempt importing it again.
	ErrorsAndFailedEntriesZip *string `locationName:"errorsAndFailedEntriesZip" type:"string"`

	// The time that the import task request finished, presented in the Unix time
	// stamp format.
	ImportCompletionTime *time.Time `locationName:"importCompletionTime" type:"timestamp"`

	// The time that the import task request was deleted, presented in the Unix
	// time stamp format.
	ImportDeletedTime *time.Time `locationName:"importDeletedTime" type:"timestamp"`

	// The time that the import task request was made, presented in the Unix time
	// stamp format.
	ImportRequestTime *time.Time `locationName:"importRequestTime" type:"timestamp"`

	// The unique ID for a specific import task. These IDs aren't globally unique,
	// but they are unique within an Amazon Web Services account.
	ImportTaskId *string `locationName:"importTaskId" type:"string"`

	// The URL for your import file that you've uploaded to Amazon S3.
	ImportUrl *string `locationName:"importUrl" min:"1" type:"string"`

	// A descriptive name for an import task. You can use this name to filter future
	// requests related to this import task, such as identifying applications and
	// servers that were included in this import task. We recommend that you use
	// a meaningful name for each import task.
	Name *string `locationName:"name" min:"1" type:"string"`

	// The total number of server records in the import file that failed to be imported.
	ServerImportFailure *int64 `locationName:"serverImportFailure" type:"integer"`

	// The total number of server records in the import file that were successfully
	// imported.
	ServerImportSuccess *int64 `locationName:"serverImportSuccess" type:"integer"`

	// The status of the import task. An import can have the status of IMPORT_COMPLETE
	// and still have some records fail to import from the overall request. More
	// information can be found in the downloadable archive defined in the errorsAndFailedEntriesZip
	// field, or in the Migration Hub management console.
	Status *string `locationName:"status" type:"string" enum:"ImportStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImportTask) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImportTask) GoString() string {
	return s.String()
}

// SetApplicationImportFailure sets the ApplicationImportFailure field's value.
func (s *ImportTask) SetApplicationImportFailure(v int64) *ImportTask {
	s.ApplicationImportFailure = &v
	return s
}

// SetApplicationImportSuccess sets the ApplicationImportSuccess field's value.
func (s *ImportTask) SetApplicationImportSuccess(v int64) *ImportTask {
	s.ApplicationImportSuccess = &v
	return s
}

// SetClientRequestToken sets the ClientRequestToken field's value.
func (s *ImportTask) SetClientRequestToken(v string) *ImportTask {
	s.ClientRequestToken = &v
	return s
}

// SetErrorsAndFailedEntriesZip sets the ErrorsAndFailedEntriesZip field's value.
func (s *ImportTask) SetErrorsAndFailedEntriesZip(v string) *ImportTask {
	s.ErrorsAndFailedEntriesZip = &v
	return s
}

// SetImportCompletionTime sets the ImportCompletionTime field's value.
func (s *ImportTask) SetImportCompletionTime(v time.Time) *ImportTask {
	s.ImportCompletionTime = &v
	return s
}

// SetImportDeletedTime sets the ImportDeletedTime field's value.
func (s *ImportTask) SetImportDeletedTime(v time.Time) *ImportTask {
	s.ImportDeletedTime = &v
	return s
}

// SetImportRequestTime sets the ImportRequestTime field's value.
func (s *ImportTask) SetImportRequestTime(v time.Time) *ImportTask {
	s.ImportRequestTime = &v
	return s
}

// SetImportTaskId sets the ImportTaskId field's value.
func (s *ImportTask) SetImportTaskId(v string) *ImportTask {
	s.ImportTaskId = &v
	return s
}

// SetImportUrl sets the ImportUrl field's value.
func (s *ImportTask) SetImportUrl(v string) *ImportTask {
	s.ImportUrl = &v
	return s
}

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

// SetServerImportFailure sets the ServerImportFailure field's value.
func (s *ImportTask) SetServerImportFailure(v int64) *ImportTask {
	s.ServerImportFailure = &v
	return s
}

// SetServerImportSuccess sets the ServerImportSuccess field's value.
func (s *ImportTask) SetServerImportSuccess(v int64) *ImportTask {
	s.ServerImportSuccess = &v
	return s
}

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

// A name-values pair of elements you can use to filter the results when querying
// your import tasks. Currently, wildcards are not supported for filters.
//
// When filtering by import status, all other filter values are ignored.
type ImportTaskFilter struct {
	_ struct{} `type:"structure"`

	// The name, status, or import task ID for a specific import task.
	Name *string `locationName:"name" type:"string" enum:"ImportTaskFilterName"`

	// An array of strings that you can provide to match against a specific name,
	// status, or import task ID to filter the results for your import task queries.
	Values []*string `locationName:"values" min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImportTaskFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImportTaskFilter) GoString() string {
	return s.String()
}

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

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

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

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

// One or more parameters are not valid. Verify the parameters and try again.
type InvalidParameterException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidParameterException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidParameterException) GoString() string {
	return s.String()
}

func newErrorInvalidParameterException(v protocol.ResponseMetadata) error {
	return &InvalidParameterException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InvalidParameterException) Code() string {
	return "InvalidParameterException"
}

// Message returns the exception's message.
func (s *InvalidParameterException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InvalidParameterException) OrigErr() error {
	return nil
}

func (s *InvalidParameterException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *InvalidParameterException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InvalidParameterException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The value of one or more parameters are either invalid or out of range. Verify
// the parameter values and try again.
type InvalidParameterValueException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidParameterValueException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidParameterValueException) GoString() string {
	return s.String()
}

func newErrorInvalidParameterValueException(v protocol.ResponseMetadata) error {
	return &InvalidParameterValueException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InvalidParameterValueException) Code() string {
	return "InvalidParameterValueException"
}

// Message returns the exception's message.
func (s *InvalidParameterValueException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InvalidParameterValueException) OrigErr() error {
	return nil
}

func (s *InvalidParameterValueException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *InvalidParameterValueException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InvalidParameterValueException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The limit of 200 configuration IDs per request has been exceeded.
type LimitExceededException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LimitExceededException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LimitExceededException) GoString() string {
	return s.String()
}

func newErrorLimitExceededException(v protocol.ResponseMetadata) error {
	return &LimitExceededException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *LimitExceededException) Code() string {
	return "LimitExceededException"
}

// Message returns the exception's message.
func (s *LimitExceededException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *LimitExceededException) OrigErr() error {
	return nil
}

func (s *LimitExceededException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *LimitExceededException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *LimitExceededException) RequestID() string {
	return s.RespMetadata.RequestID
}

type ListConfigurationsInput struct {
	_ struct{} `type:"structure"`

	// A valid configuration identified by Application Discovery Service.
	//
	// ConfigurationType is a required field
	ConfigurationType *string `locationName:"configurationType" type:"string" required:"true" enum:"ConfigurationItemType"`

	// You can filter the request using various logical operators and a key-value
	// format. For example:
	//
	// {"key": "serverType", "value": "webServer"}
	//
	// For a complete list of filter options and guidance about using them with
	// this action, see Using the ListConfigurations Action (https://docs.aws.amazon.com/application-discovery/latest/userguide/discovery-api-queries.html#ListConfigurations)
	// in the Amazon Web Services Application Discovery Service User Guide.
	Filters []*Filter `locationName:"filters" type:"list"`

	// The total number of items to return. The maximum value is 100.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// Token to retrieve the next set of results. For example, if a previous call
	// to ListConfigurations returned 100 items, but you set ListConfigurationsRequest$maxResults
	// to 10, you received a set of 10 results along with a token. Use that token
	// in this query to get the next set of 10.
	NextToken *string `locationName:"nextToken" type:"string"`

	// Certain filter criteria return output that can be sorted in ascending or
	// descending order. For a list of output characteristics for each filter, see
	// Using the ListConfigurations Action (https://docs.aws.amazon.com/application-discovery/latest/userguide/discovery-api-queries.html#ListConfigurations)
	// in the Amazon Web Services Application Discovery Service User Guide.
	OrderBy []*OrderByElement `locationName:"orderBy" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListConfigurationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListConfigurationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListConfigurationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListConfigurationsInput"}
	if s.ConfigurationType == nil {
		invalidParams.Add(request.NewErrParamRequired("ConfigurationType"))
	}
	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.OrderBy != nil {
		for i, v := range s.OrderBy {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "OrderBy", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetConfigurationType sets the ConfigurationType field's value.
func (s *ListConfigurationsInput) SetConfigurationType(v string) *ListConfigurationsInput {
	s.ConfigurationType = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *ListConfigurationsInput) SetFilters(v []*Filter) *ListConfigurationsInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListConfigurationsInput) SetMaxResults(v int64) *ListConfigurationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListConfigurationsInput) SetNextToken(v string) *ListConfigurationsInput {
	s.NextToken = &v
	return s
}

// SetOrderBy sets the OrderBy field's value.
func (s *ListConfigurationsInput) SetOrderBy(v []*OrderByElement) *ListConfigurationsInput {
	s.OrderBy = v
	return s
}

type ListConfigurationsOutput struct {
	_ struct{} `type:"structure"`

	// Returns configuration details, including the configuration ID, attribute
	// names, and attribute values.
	Configurations []map[string]*string `locationName:"configurations" type:"list"`

	// Token to retrieve the next set of results. For example, if your call to ListConfigurations
	// returned 100 items, but you set ListConfigurationsRequest$maxResults to 10,
	// you received a set of 10 results along with this token. Use this token in
	// the next query to retrieve the next set of 10.
	NextToken *string `locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListConfigurationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListConfigurationsOutput) GoString() string {
	return s.String()
}

// SetConfigurations sets the Configurations field's value.
func (s *ListConfigurationsOutput) SetConfigurations(v []map[string]*string) *ListConfigurationsOutput {
	s.Configurations = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListConfigurationsOutput) SetNextToken(v string) *ListConfigurationsOutput {
	s.NextToken = &v
	return s
}

type ListServerNeighborsInput struct {
	_ struct{} `type:"structure"`

	// Configuration ID of the server for which neighbors are being listed.
	//
	// ConfigurationId is a required field
	ConfigurationId *string `locationName:"configurationId" type:"string" required:"true"`

	// Maximum number of results to return in a single page of output.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// List of configuration IDs to test for one-hop-away.
	NeighborConfigurationIds []*string `locationName:"neighborConfigurationIds" type:"list"`

	// Token to retrieve the next set of results. For example, if you previously
	// specified 100 IDs for ListServerNeighborsRequest$neighborConfigurationIds
	// but set ListServerNeighborsRequest$maxResults to 10, you received a set of
	// 10 results along with a token. Use that token in this query to get the next
	// set of 10.
	NextToken *string `locationName:"nextToken" type:"string"`

	// Flag to indicate if port and protocol information is needed as part of the
	// response.
	PortInformationNeeded *bool `locationName:"portInformationNeeded" type:"boolean"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListServerNeighborsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListServerNeighborsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListServerNeighborsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListServerNeighborsInput"}
	if s.ConfigurationId == nil {
		invalidParams.Add(request.NewErrParamRequired("ConfigurationId"))
	}

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

// SetConfigurationId sets the ConfigurationId field's value.
func (s *ListServerNeighborsInput) SetConfigurationId(v string) *ListServerNeighborsInput {
	s.ConfigurationId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListServerNeighborsInput) SetMaxResults(v int64) *ListServerNeighborsInput {
	s.MaxResults = &v
	return s
}

// SetNeighborConfigurationIds sets the NeighborConfigurationIds field's value.
func (s *ListServerNeighborsInput) SetNeighborConfigurationIds(v []*string) *ListServerNeighborsInput {
	s.NeighborConfigurationIds = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListServerNeighborsInput) SetNextToken(v string) *ListServerNeighborsInput {
	s.NextToken = &v
	return s
}

// SetPortInformationNeeded sets the PortInformationNeeded field's value.
func (s *ListServerNeighborsInput) SetPortInformationNeeded(v bool) *ListServerNeighborsInput {
	s.PortInformationNeeded = &v
	return s
}

type ListServerNeighborsOutput struct {
	_ struct{} `type:"structure"`

	// Count of distinct servers that are one hop away from the given server.
	KnownDependencyCount *int64 `locationName:"knownDependencyCount" type:"long"`

	// List of distinct servers that are one hop away from the given server.
	//
	// Neighbors is a required field
	Neighbors []*NeighborConnectionDetail `locationName:"neighbors" type:"list" required:"true"`

	// Token to retrieve the next set of results. For example, if you specified
	// 100 IDs for ListServerNeighborsRequest$neighborConfigurationIds but set ListServerNeighborsRequest$maxResults
	// to 10, you received a set of 10 results along with this token. Use this token
	// in the next query to retrieve the next set of 10.
	NextToken *string `locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListServerNeighborsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListServerNeighborsOutput) GoString() string {
	return s.String()
}

// SetKnownDependencyCount sets the KnownDependencyCount field's value.
func (s *ListServerNeighborsOutput) SetKnownDependencyCount(v int64) *ListServerNeighborsOutput {
	s.KnownDependencyCount = &v
	return s
}

// SetNeighbors sets the Neighbors field's value.
func (s *ListServerNeighborsOutput) SetNeighbors(v []*NeighborConnectionDetail) *ListServerNeighborsOutput {
	s.Neighbors = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListServerNeighborsOutput) SetNextToken(v string) *ListServerNeighborsOutput {
	s.NextToken = &v
	return s
}

// Details about neighboring servers.
type NeighborConnectionDetail struct {
	_ struct{} `type:"structure"`

	// The number of open network connections with the neighboring server.
	//
	// ConnectionsCount is a required field
	ConnectionsCount *int64 `locationName:"connectionsCount" type:"long" required:"true"`

	// The destination network port for the connection.
	DestinationPort *int64 `locationName:"destinationPort" type:"integer"`

	// The ID of the server that accepted the network connection.
	//
	// DestinationServerId is a required field
	DestinationServerId *string `locationName:"destinationServerId" type:"string" required:"true"`

	// The ID of the server that opened the network connection.
	//
	// SourceServerId is a required field
	SourceServerId *string `locationName:"sourceServerId" type:"string" required:"true"`

	// The network protocol used for the connection.
	TransportProtocol *string `locationName:"transportProtocol" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NeighborConnectionDetail) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NeighborConnectionDetail) GoString() string {
	return s.String()
}

// SetConnectionsCount sets the ConnectionsCount field's value.
func (s *NeighborConnectionDetail) SetConnectionsCount(v int64) *NeighborConnectionDetail {
	s.ConnectionsCount = &v
	return s
}

// SetDestinationPort sets the DestinationPort field's value.
func (s *NeighborConnectionDetail) SetDestinationPort(v int64) *NeighborConnectionDetail {
	s.DestinationPort = &v
	return s
}

// SetDestinationServerId sets the DestinationServerId field's value.
func (s *NeighborConnectionDetail) SetDestinationServerId(v string) *NeighborConnectionDetail {
	s.DestinationServerId = &v
	return s
}

// SetSourceServerId sets the SourceServerId field's value.
func (s *NeighborConnectionDetail) SetSourceServerId(v string) *NeighborConnectionDetail {
	s.SourceServerId = &v
	return s
}

// SetTransportProtocol sets the TransportProtocol field's value.
func (s *NeighborConnectionDetail) SetTransportProtocol(v string) *NeighborConnectionDetail {
	s.TransportProtocol = &v
	return s
}

// This operation is not permitted.
type OperationNotPermittedException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OperationNotPermittedException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OperationNotPermittedException) GoString() string {
	return s.String()
}

func newErrorOperationNotPermittedException(v protocol.ResponseMetadata) error {
	return &OperationNotPermittedException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *OperationNotPermittedException) Code() string {
	return "OperationNotPermittedException"
}

// Message returns the exception's message.
func (s *OperationNotPermittedException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *OperationNotPermittedException) OrigErr() error {
	return nil
}

func (s *OperationNotPermittedException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *OperationNotPermittedException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *OperationNotPermittedException) RequestID() string {
	return s.RespMetadata.RequestID
}

// A field and direction for ordered output.
type OrderByElement struct {
	_ struct{} `type:"structure"`

	// The field on which to order.
	//
	// FieldName is a required field
	FieldName *string `locationName:"fieldName" type:"string" required:"true"`

	// Ordering direction.
	SortOrder *string `locationName:"sortOrder" type:"string" enum:"OrderString"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrderByElement) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrderByElement) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *OrderByElement) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "OrderByElement"}
	if s.FieldName == nil {
		invalidParams.Add(request.NewErrParamRequired("FieldName"))
	}

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

// SetFieldName sets the FieldName field's value.
func (s *OrderByElement) SetFieldName(v string) *OrderByElement {
	s.FieldName = &v
	return s
}

// SetSortOrder sets the SortOrder field's value.
func (s *OrderByElement) SetSortOrder(v string) *OrderByElement {
	s.SortOrder = &v
	return s
}

// Used to provide Reserved Instance preferences for the recommendation.
type ReservedInstanceOptions struct {
	_ struct{} `type:"structure"`

	// The flexibility to change the instance types needed for your Reserved Instance.
	//
	// OfferingClass is a required field
	OfferingClass *string `locationName:"offeringClass" type:"string" required:"true" enum:"OfferingClass"`

	// The payment plan to use for your Reserved Instance.
	//
	// PurchasingOption is a required field
	PurchasingOption *string `locationName:"purchasingOption" type:"string" required:"true" enum:"PurchasingOption"`

	// The preferred duration of the Reserved Instance term.
	//
	// TermLength is a required field
	TermLength *string `locationName:"termLength" type:"string" required:"true" enum:"TermLength"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ReservedInstanceOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ReservedInstanceOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ReservedInstanceOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ReservedInstanceOptions"}
	if s.OfferingClass == nil {
		invalidParams.Add(request.NewErrParamRequired("OfferingClass"))
	}
	if s.PurchasingOption == nil {
		invalidParams.Add(request.NewErrParamRequired("PurchasingOption"))
	}
	if s.TermLength == nil {
		invalidParams.Add(request.NewErrParamRequired("TermLength"))
	}

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

// SetOfferingClass sets the OfferingClass field's value.
func (s *ReservedInstanceOptions) SetOfferingClass(v string) *ReservedInstanceOptions {
	s.OfferingClass = &v
	return s
}

// SetPurchasingOption sets the PurchasingOption field's value.
func (s *ReservedInstanceOptions) SetPurchasingOption(v string) *ReservedInstanceOptions {
	s.PurchasingOption = &v
	return s
}

// SetTermLength sets the TermLength field's value.
func (s *ReservedInstanceOptions) SetTermLength(v string) *ReservedInstanceOptions {
	s.TermLength = &v
	return s
}

// This issue occurs when the same clientRequestToken is used with the StartImportTask
// action, but with different parameters. For example, you use the same request
// token but have two different import URLs, you can encounter this issue. If
// the import tasks are meant to be different, use a different clientRequestToken,
// and try again.
type ResourceInUseException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceInUseException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceInUseException) GoString() string {
	return s.String()
}

func newErrorResourceInUseException(v protocol.ResponseMetadata) error {
	return &ResourceInUseException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ResourceInUseException) Code() string {
	return "ResourceInUseException"
}

// Message returns the exception's message.
func (s *ResourceInUseException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ResourceInUseException) OrigErr() error {
	return nil
}

func (s *ResourceInUseException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ResourceInUseException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ResourceInUseException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The specified configuration ID was not located. Verify the configuration
// ID and try again.
type ResourceNotFoundException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceNotFoundException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceNotFoundException) GoString() string {
	return s.String()
}

func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {
	return &ResourceNotFoundException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ResourceNotFoundException) Code() string {
	return "ResourceNotFoundException"
}

// Message returns the exception's message.
func (s *ResourceNotFoundException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ResourceNotFoundException) OrigErr() error {
	return nil
}

func (s *ResourceNotFoundException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ResourceNotFoundException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ResourceNotFoundException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The server experienced an internal error. Try again.
type ServerInternalErrorException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ServerInternalErrorException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ServerInternalErrorException) GoString() string {
	return s.String()
}

func newErrorServerInternalErrorException(v protocol.ResponseMetadata) error {
	return &ServerInternalErrorException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ServerInternalErrorException) Code() string {
	return "ServerInternalErrorException"
}

// Message returns the exception's message.
func (s *ServerInternalErrorException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ServerInternalErrorException) OrigErr() error {
	return nil
}

func (s *ServerInternalErrorException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ServerInternalErrorException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ServerInternalErrorException) RequestID() string {
	return s.RespMetadata.RequestID
}

type StartBatchDeleteConfigurationTaskInput struct {
	_ struct{} `type:"structure"`

	// The list of configuration IDs that will be deleted by the task.
	//
	// ConfigurationIds is a required field
	ConfigurationIds []*string `locationName:"configurationIds" type:"list" required:"true"`

	// The type of configuration item to delete. Supported types are: SERVER.
	//
	// ConfigurationType is a required field
	ConfigurationType *string `locationName:"configurationType" type:"string" required:"true" enum:"DeletionConfigurationItemType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartBatchDeleteConfigurationTaskInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartBatchDeleteConfigurationTaskInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartBatchDeleteConfigurationTaskInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartBatchDeleteConfigurationTaskInput"}
	if s.ConfigurationIds == nil {
		invalidParams.Add(request.NewErrParamRequired("ConfigurationIds"))
	}
	if s.ConfigurationType == nil {
		invalidParams.Add(request.NewErrParamRequired("ConfigurationType"))
	}

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

// SetConfigurationIds sets the ConfigurationIds field's value.
func (s *StartBatchDeleteConfigurationTaskInput) SetConfigurationIds(v []*string) *StartBatchDeleteConfigurationTaskInput {
	s.ConfigurationIds = v
	return s
}

// SetConfigurationType sets the ConfigurationType field's value.
func (s *StartBatchDeleteConfigurationTaskInput) SetConfigurationType(v string) *StartBatchDeleteConfigurationTaskInput {
	s.ConfigurationType = &v
	return s
}

type StartBatchDeleteConfigurationTaskOutput struct {
	_ struct{} `type:"structure"`

	// The unique identifier associated with the newly started deletion task.
	TaskId *string `locationName:"taskId" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartBatchDeleteConfigurationTaskOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartBatchDeleteConfigurationTaskOutput) GoString() string {
	return s.String()
}

// SetTaskId sets the TaskId field's value.
func (s *StartBatchDeleteConfigurationTaskOutput) SetTaskId(v string) *StartBatchDeleteConfigurationTaskOutput {
	s.TaskId = &v
	return s
}

type StartContinuousExportInput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartContinuousExportInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartContinuousExportInput) GoString() string {
	return s.String()
}

type StartContinuousExportOutput struct {
	_ struct{} `type:"structure"`

	// The type of data collector used to gather this data (currently only offered
	// for AGENT).
	DataSource *string `locationName:"dataSource" type:"string" enum:"DataSource"`

	// The unique ID assigned to this export.
	ExportId *string `locationName:"exportId" type:"string"`

	// The name of the s3 bucket where the export data parquet files are stored.
	S3Bucket *string `locationName:"s3Bucket" type:"string"`

	// A dictionary which describes how the data is stored.
	//
	//    * databaseName - the name of the Glue database used to store the schema.
	SchemaStorageConfig map[string]*string `locationName:"schemaStorageConfig" type:"map"`

	// The timestamp representing when the continuous export was started.
	StartTime *time.Time `locationName:"startTime" type:"timestamp"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartContinuousExportOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartContinuousExportOutput) GoString() string {
	return s.String()
}

// SetDataSource sets the DataSource field's value.
func (s *StartContinuousExportOutput) SetDataSource(v string) *StartContinuousExportOutput {
	s.DataSource = &v
	return s
}

// SetExportId sets the ExportId field's value.
func (s *StartContinuousExportOutput) SetExportId(v string) *StartContinuousExportOutput {
	s.ExportId = &v
	return s
}

// SetS3Bucket sets the S3Bucket field's value.
func (s *StartContinuousExportOutput) SetS3Bucket(v string) *StartContinuousExportOutput {
	s.S3Bucket = &v
	return s
}

// SetSchemaStorageConfig sets the SchemaStorageConfig field's value.
func (s *StartContinuousExportOutput) SetSchemaStorageConfig(v map[string]*string) *StartContinuousExportOutput {
	s.SchemaStorageConfig = v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *StartContinuousExportOutput) SetStartTime(v time.Time) *StartContinuousExportOutput {
	s.StartTime = &v
	return s
}

type StartDataCollectionByAgentIdsInput struct {
	_ struct{} `type:"structure"`

	// The IDs of the agents from which to start collecting data. If you send a
	// request to an agent ID that you do not have permission to contact, according
	// to your Amazon Web Services account, the service does not throw an exception.
	// Instead, it returns the error in the Description field. If you send a request
	// to multiple agents and you do not have permission to contact some of those
	// agents, the system does not throw an exception. Instead, the system shows
	// Failed in the Description field.
	//
	// AgentIds is a required field
	AgentIds []*string `locationName:"agentIds" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartDataCollectionByAgentIdsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartDataCollectionByAgentIdsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartDataCollectionByAgentIdsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartDataCollectionByAgentIdsInput"}
	if s.AgentIds == nil {
		invalidParams.Add(request.NewErrParamRequired("AgentIds"))
	}

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

// SetAgentIds sets the AgentIds field's value.
func (s *StartDataCollectionByAgentIdsInput) SetAgentIds(v []*string) *StartDataCollectionByAgentIdsInput {
	s.AgentIds = v
	return s
}

type StartDataCollectionByAgentIdsOutput struct {
	_ struct{} `type:"structure"`

	// Information about agents that were instructed to start collecting data. Information
	// includes the agent ID, a description of the operation performed, and whether
	// the agent configuration was updated.
	AgentsConfigurationStatus []*AgentConfigurationStatus `locationName:"agentsConfigurationStatus" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartDataCollectionByAgentIdsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartDataCollectionByAgentIdsOutput) GoString() string {
	return s.String()
}

// SetAgentsConfigurationStatus sets the AgentsConfigurationStatus field's value.
func (s *StartDataCollectionByAgentIdsOutput) SetAgentsConfigurationStatus(v []*AgentConfigurationStatus) *StartDataCollectionByAgentIdsOutput {
	s.AgentsConfigurationStatus = v
	return s
}

type StartExportTaskInput struct {
	_ struct{} `type:"structure"`

	// The end timestamp for exported data from the single Application Discovery
	// Agent selected in the filters. If no value is specified, exported data includes
	// the most recent data collected by the agent.
	EndTime *time.Time `locationName:"endTime" type:"timestamp"`

	// The file format for the returned export data. Default value is CSV. Note:
	// The GRAPHML option has been deprecated.
	ExportDataFormat []*string `locationName:"exportDataFormat" type:"list" enum:"ExportDataFormat"`

	// If a filter is present, it selects the single agentId of the Application
	// Discovery Agent for which data is exported. The agentId can be found in the
	// results of the DescribeAgents API or CLI. If no filter is present, startTime
	// and endTime are ignored and exported data includes both Amazon Web Services
	// Application Discovery Service Agentless Collector collectors data and summary
	// data from Application Discovery Agent agents.
	Filters []*ExportFilter `locationName:"filters" type:"list"`

	// Indicates the type of data that needs to be exported. Only one ExportPreferences
	// (https://docs.aws.amazon.com/application-discovery/latest/APIReference/API_ExportPreferences.html)
	// can be enabled at any time.
	Preferences *ExportPreferences `locationName:"preferences" type:"structure"`

	// The start timestamp for exported data from the single Application Discovery
	// Agent selected in the filters. If no value is specified, data is exported
	// starting from the first data collected by the agent.
	StartTime *time.Time `locationName:"startTime" type:"timestamp"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartExportTaskInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartExportTaskInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartExportTaskInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartExportTaskInput"}
	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.Preferences != nil {
		if err := s.Preferences.Validate(); err != nil {
			invalidParams.AddNested("Preferences", err.(request.ErrInvalidParams))
		}
	}

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

// SetEndTime sets the EndTime field's value.
func (s *StartExportTaskInput) SetEndTime(v time.Time) *StartExportTaskInput {
	s.EndTime = &v
	return s
}

// SetExportDataFormat sets the ExportDataFormat field's value.
func (s *StartExportTaskInput) SetExportDataFormat(v []*string) *StartExportTaskInput {
	s.ExportDataFormat = v
	return s
}

// SetFilters sets the Filters field's value.
func (s *StartExportTaskInput) SetFilters(v []*ExportFilter) *StartExportTaskInput {
	s.Filters = v
	return s
}

// SetPreferences sets the Preferences field's value.
func (s *StartExportTaskInput) SetPreferences(v *ExportPreferences) *StartExportTaskInput {
	s.Preferences = v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *StartExportTaskInput) SetStartTime(v time.Time) *StartExportTaskInput {
	s.StartTime = &v
	return s
}

type StartExportTaskOutput struct {
	_ struct{} `type:"structure"`

	// A unique identifier used to query the status of an export request.
	ExportId *string `locationName:"exportId" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartExportTaskOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartExportTaskOutput) GoString() string {
	return s.String()
}

// SetExportId sets the ExportId field's value.
func (s *StartExportTaskOutput) SetExportId(v string) *StartExportTaskOutput {
	s.ExportId = &v
	return s
}

type StartImportTaskInput struct {
	_ struct{} `type:"structure"`

	// Optional. A unique token that you can provide to prevent the same import
	// request from occurring more than once. If you don't provide a token, a token
	// is automatically generated.
	//
	// Sending more than one StartImportTask request with the same client request
	// token will return information about the original import task with that client
	// request token.
	ClientRequestToken *string `locationName:"clientRequestToken" min:"1" type:"string" idempotencyToken:"true"`

	// The URL for your import file that you've uploaded to Amazon S3.
	//
	// If you're using the Amazon Web Services CLI, this URL is structured as follows:
	// s3://BucketName/ImportFileName.CSV
	//
	// ImportUrl is a required field
	ImportUrl *string `locationName:"importUrl" min:"1" type:"string" required:"true"`

	// A descriptive name for this request. You can use this name to filter future
	// requests related to this import task, such as identifying applications and
	// servers that were included in this import task. We recommend that you use
	// a meaningful name for each import task.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartImportTaskInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartImportTaskInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartImportTaskInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartImportTaskInput"}
	if s.ClientRequestToken != nil && len(*s.ClientRequestToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientRequestToken", 1))
	}
	if s.ImportUrl == nil {
		invalidParams.Add(request.NewErrParamRequired("ImportUrl"))
	}
	if s.ImportUrl != nil && len(*s.ImportUrl) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ImportUrl", 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
}

// SetClientRequestToken sets the ClientRequestToken field's value.
func (s *StartImportTaskInput) SetClientRequestToken(v string) *StartImportTaskInput {
	s.ClientRequestToken = &v
	return s
}

// SetImportUrl sets the ImportUrl field's value.
func (s *StartImportTaskInput) SetImportUrl(v string) *StartImportTaskInput {
	s.ImportUrl = &v
	return s
}

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

type StartImportTaskOutput struct {
	_ struct{} `type:"structure"`

	// An array of information related to the import task request including status
	// information, times, IDs, the Amazon S3 Object URL for the import file, and
	// more.
	Task *ImportTask `locationName:"task" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartImportTaskOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartImportTaskOutput) GoString() string {
	return s.String()
}

// SetTask sets the Task field's value.
func (s *StartImportTaskOutput) SetTask(v *ImportTask) *StartImportTaskOutput {
	s.Task = v
	return s
}

type StopContinuousExportInput struct {
	_ struct{} `type:"structure"`

	// The unique ID assigned to this export.
	//
	// ExportId is a required field
	ExportId *string `locationName:"exportId" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopContinuousExportInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopContinuousExportInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StopContinuousExportInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StopContinuousExportInput"}
	if s.ExportId == nil {
		invalidParams.Add(request.NewErrParamRequired("ExportId"))
	}

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

// SetExportId sets the ExportId field's value.
func (s *StopContinuousExportInput) SetExportId(v string) *StopContinuousExportInput {
	s.ExportId = &v
	return s
}

type StopContinuousExportOutput struct {
	_ struct{} `type:"structure"`

	// Timestamp that represents when this continuous export started collecting
	// data.
	StartTime *time.Time `locationName:"startTime" type:"timestamp"`

	// Timestamp that represents when this continuous export was stopped.
	StopTime *time.Time `locationName:"stopTime" type:"timestamp"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopContinuousExportOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopContinuousExportOutput) GoString() string {
	return s.String()
}

// SetStartTime sets the StartTime field's value.
func (s *StopContinuousExportOutput) SetStartTime(v time.Time) *StopContinuousExportOutput {
	s.StartTime = &v
	return s
}

// SetStopTime sets the StopTime field's value.
func (s *StopContinuousExportOutput) SetStopTime(v time.Time) *StopContinuousExportOutput {
	s.StopTime = &v
	return s
}

type StopDataCollectionByAgentIdsInput struct {
	_ struct{} `type:"structure"`

	// The IDs of the agents from which to stop collecting data.
	//
	// AgentIds is a required field
	AgentIds []*string `locationName:"agentIds" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopDataCollectionByAgentIdsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopDataCollectionByAgentIdsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StopDataCollectionByAgentIdsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StopDataCollectionByAgentIdsInput"}
	if s.AgentIds == nil {
		invalidParams.Add(request.NewErrParamRequired("AgentIds"))
	}

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

// SetAgentIds sets the AgentIds field's value.
func (s *StopDataCollectionByAgentIdsInput) SetAgentIds(v []*string) *StopDataCollectionByAgentIdsInput {
	s.AgentIds = v
	return s
}

type StopDataCollectionByAgentIdsOutput struct {
	_ struct{} `type:"structure"`

	// Information about the agents that were instructed to stop collecting data.
	// Information includes the agent ID, a description of the operation performed,
	// and whether the agent configuration was updated.
	AgentsConfigurationStatus []*AgentConfigurationStatus `locationName:"agentsConfigurationStatus" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopDataCollectionByAgentIdsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopDataCollectionByAgentIdsOutput) GoString() string {
	return s.String()
}

// SetAgentsConfigurationStatus sets the AgentsConfigurationStatus field's value.
func (s *StopDataCollectionByAgentIdsOutput) SetAgentsConfigurationStatus(v []*AgentConfigurationStatus) *StopDataCollectionByAgentIdsOutput {
	s.AgentsConfigurationStatus = v
	return s
}

// Metadata that help you categorize IT assets.
//
// Do not store sensitive information (like personal data) in tags.
type Tag struct {
	_ struct{} `type:"structure"`

	// The type of tag on which to filter.
	//
	// Key is a required field
	Key *string `locationName:"key" type:"string" required:"true"`

	// A value for a tag key on which to filter.
	//
	// Value is a required field
	Value *string `locationName:"value" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Tag) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
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.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}

	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
}

// The tag filter. Valid names are: tagKey, tagValue, configurationId.
type TagFilter struct {
	_ struct{} `type:"structure"`

	// A name of the tag filter.
	//
	// Name is a required field
	Name *string `locationName:"name" type:"string" required:"true"`

	// Values for the tag filter.
	//
	// Values is a required field
	Values []*string `locationName:"values" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TagFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TagFilter"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Values == nil {
		invalidParams.Add(request.NewErrParamRequired("Values"))
	}

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

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

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

type UpdateApplicationInput struct {
	_ struct{} `type:"structure"`

	// Configuration ID of the application to be updated.
	//
	// ConfigurationId is a required field
	ConfigurationId *string `locationName:"configurationId" type:"string" required:"true"`

	// New description of the application to be updated.
	Description *string `locationName:"description" type:"string"`

	// New name of the application to be updated.
	Name *string `locationName:"name" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateApplicationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateApplicationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateApplicationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateApplicationInput"}
	if s.ConfigurationId == nil {
		invalidParams.Add(request.NewErrParamRequired("ConfigurationId"))
	}

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

// SetConfigurationId sets the ConfigurationId field's value.
func (s *UpdateApplicationInput) SetConfigurationId(v string) *UpdateApplicationInput {
	s.ConfigurationId = &v
	return s
}

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

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

type UpdateApplicationOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateApplicationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateApplicationOutput) GoString() string {
	return s.String()
}

// Specifies the performance metrics to use for the server that is used for
// recommendations.
type UsageMetricBasis struct {
	_ struct{} `type:"structure"`

	// A utilization metric that is used by the recommendations.
	Name *string `locationName:"name" type:"string"`

	// Specifies the percentage of the specified utilization metric that is used
	// by the recommendations.
	PercentageAdjust *float64 `locationName:"percentageAdjust" type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UsageMetricBasis) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UsageMetricBasis) GoString() string {
	return s.String()
}

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

// SetPercentageAdjust sets the PercentageAdjust field's value.
func (s *UsageMetricBasis) SetPercentageAdjust(v float64) *UsageMetricBasis {
	s.PercentageAdjust = &v
	return s
}

const (
	// AgentStatusHealthy is a AgentStatus enum value
	AgentStatusHealthy = "HEALTHY"

	// AgentStatusUnhealthy is a AgentStatus enum value
	AgentStatusUnhealthy = "UNHEALTHY"

	// AgentStatusRunning is a AgentStatus enum value
	AgentStatusRunning = "RUNNING"

	// AgentStatusUnknown is a AgentStatus enum value
	AgentStatusUnknown = "UNKNOWN"

	// AgentStatusBlacklisted is a AgentStatus enum value
	AgentStatusBlacklisted = "BLACKLISTED"

	// AgentStatusShutdown is a AgentStatus enum value
	AgentStatusShutdown = "SHUTDOWN"
)

// AgentStatus_Values returns all elements of the AgentStatus enum
func AgentStatus_Values() []string {
	return []string{
		AgentStatusHealthy,
		AgentStatusUnhealthy,
		AgentStatusRunning,
		AgentStatusUnknown,
		AgentStatusBlacklisted,
		AgentStatusShutdown,
	}
}

const (
	// BatchDeleteConfigurationTaskStatusInitializing is a BatchDeleteConfigurationTaskStatus enum value
	BatchDeleteConfigurationTaskStatusInitializing = "INITIALIZING"

	// BatchDeleteConfigurationTaskStatusValidating is a BatchDeleteConfigurationTaskStatus enum value
	BatchDeleteConfigurationTaskStatusValidating = "VALIDATING"

	// BatchDeleteConfigurationTaskStatusDeleting is a BatchDeleteConfigurationTaskStatus enum value
	BatchDeleteConfigurationTaskStatusDeleting = "DELETING"

	// BatchDeleteConfigurationTaskStatusCompleted is a BatchDeleteConfigurationTaskStatus enum value
	BatchDeleteConfigurationTaskStatusCompleted = "COMPLETED"

	// BatchDeleteConfigurationTaskStatusFailed is a BatchDeleteConfigurationTaskStatus enum value
	BatchDeleteConfigurationTaskStatusFailed = "FAILED"
)

// BatchDeleteConfigurationTaskStatus_Values returns all elements of the BatchDeleteConfigurationTaskStatus enum
func BatchDeleteConfigurationTaskStatus_Values() []string {
	return []string{
		BatchDeleteConfigurationTaskStatusInitializing,
		BatchDeleteConfigurationTaskStatusValidating,
		BatchDeleteConfigurationTaskStatusDeleting,
		BatchDeleteConfigurationTaskStatusCompleted,
		BatchDeleteConfigurationTaskStatusFailed,
	}
}

const (
	// BatchDeleteImportDataErrorCodeNotFound is a BatchDeleteImportDataErrorCode enum value
	BatchDeleteImportDataErrorCodeNotFound = "NOT_FOUND"

	// BatchDeleteImportDataErrorCodeInternalServerError is a BatchDeleteImportDataErrorCode enum value
	BatchDeleteImportDataErrorCodeInternalServerError = "INTERNAL_SERVER_ERROR"

	// BatchDeleteImportDataErrorCodeOverLimit is a BatchDeleteImportDataErrorCode enum value
	BatchDeleteImportDataErrorCodeOverLimit = "OVER_LIMIT"
)

// BatchDeleteImportDataErrorCode_Values returns all elements of the BatchDeleteImportDataErrorCode enum
func BatchDeleteImportDataErrorCode_Values() []string {
	return []string{
		BatchDeleteImportDataErrorCodeNotFound,
		BatchDeleteImportDataErrorCodeInternalServerError,
		BatchDeleteImportDataErrorCodeOverLimit,
	}
}

const (
	// ConfigurationItemTypeServer is a ConfigurationItemType enum value
	ConfigurationItemTypeServer = "SERVER"

	// ConfigurationItemTypeProcess is a ConfigurationItemType enum value
	ConfigurationItemTypeProcess = "PROCESS"

	// ConfigurationItemTypeConnection is a ConfigurationItemType enum value
	ConfigurationItemTypeConnection = "CONNECTION"

	// ConfigurationItemTypeApplication is a ConfigurationItemType enum value
	ConfigurationItemTypeApplication = "APPLICATION"
)

// ConfigurationItemType_Values returns all elements of the ConfigurationItemType enum
func ConfigurationItemType_Values() []string {
	return []string{
		ConfigurationItemTypeServer,
		ConfigurationItemTypeProcess,
		ConfigurationItemTypeConnection,
		ConfigurationItemTypeApplication,
	}
}

const (
	// ContinuousExportStatusStartInProgress is a ContinuousExportStatus enum value
	ContinuousExportStatusStartInProgress = "START_IN_PROGRESS"

	// ContinuousExportStatusStartFailed is a ContinuousExportStatus enum value
	ContinuousExportStatusStartFailed = "START_FAILED"

	// ContinuousExportStatusActive is a ContinuousExportStatus enum value
	ContinuousExportStatusActive = "ACTIVE"

	// ContinuousExportStatusError is a ContinuousExportStatus enum value
	ContinuousExportStatusError = "ERROR"

	// ContinuousExportStatusStopInProgress is a ContinuousExportStatus enum value
	ContinuousExportStatusStopInProgress = "STOP_IN_PROGRESS"

	// ContinuousExportStatusStopFailed is a ContinuousExportStatus enum value
	ContinuousExportStatusStopFailed = "STOP_FAILED"

	// ContinuousExportStatusInactive is a ContinuousExportStatus enum value
	ContinuousExportStatusInactive = "INACTIVE"
)

// ContinuousExportStatus_Values returns all elements of the ContinuousExportStatus enum
func ContinuousExportStatus_Values() []string {
	return []string{
		ContinuousExportStatusStartInProgress,
		ContinuousExportStatusStartFailed,
		ContinuousExportStatusActive,
		ContinuousExportStatusError,
		ContinuousExportStatusStopInProgress,
		ContinuousExportStatusStopFailed,
		ContinuousExportStatusInactive,
	}
}

const (
	// DataSourceAgent is a DataSource enum value
	DataSourceAgent = "AGENT"
)

// DataSource_Values returns all elements of the DataSource enum
func DataSource_Values() []string {
	return []string{
		DataSourceAgent,
	}
}

const (
	// DeleteAgentErrorCodeNotFound is a DeleteAgentErrorCode enum value
	DeleteAgentErrorCodeNotFound = "NOT_FOUND"

	// DeleteAgentErrorCodeInternalServerError is a DeleteAgentErrorCode enum value
	DeleteAgentErrorCodeInternalServerError = "INTERNAL_SERVER_ERROR"

	// DeleteAgentErrorCodeAgentInUse is a DeleteAgentErrorCode enum value
	DeleteAgentErrorCodeAgentInUse = "AGENT_IN_USE"
)

// DeleteAgentErrorCode_Values returns all elements of the DeleteAgentErrorCode enum
func DeleteAgentErrorCode_Values() []string {
	return []string{
		DeleteAgentErrorCodeNotFound,
		DeleteAgentErrorCodeInternalServerError,
		DeleteAgentErrorCodeAgentInUse,
	}
}

const (
	// DeletionConfigurationItemTypeServer is a DeletionConfigurationItemType enum value
	DeletionConfigurationItemTypeServer = "SERVER"
)

// DeletionConfigurationItemType_Values returns all elements of the DeletionConfigurationItemType enum
func DeletionConfigurationItemType_Values() []string {
	return []string{
		DeletionConfigurationItemTypeServer,
	}
}

const (
	// ExportDataFormatCsv is a ExportDataFormat enum value
	ExportDataFormatCsv = "CSV"
)

// ExportDataFormat_Values returns all elements of the ExportDataFormat enum
func ExportDataFormat_Values() []string {
	return []string{
		ExportDataFormatCsv,
	}
}

const (
	// ExportStatusFailed is a ExportStatus enum value
	ExportStatusFailed = "FAILED"

	// ExportStatusSucceeded is a ExportStatus enum value
	ExportStatusSucceeded = "SUCCEEDED"

	// ExportStatusInProgress is a ExportStatus enum value
	ExportStatusInProgress = "IN_PROGRESS"
)

// ExportStatus_Values returns all elements of the ExportStatus enum
func ExportStatus_Values() []string {
	return []string{
		ExportStatusFailed,
		ExportStatusSucceeded,
		ExportStatusInProgress,
	}
}

const (
	// ImportStatusImportInProgress is a ImportStatus enum value
	ImportStatusImportInProgress = "IMPORT_IN_PROGRESS"

	// ImportStatusImportComplete is a ImportStatus enum value
	ImportStatusImportComplete = "IMPORT_COMPLETE"

	// ImportStatusImportCompleteWithErrors is a ImportStatus enum value
	ImportStatusImportCompleteWithErrors = "IMPORT_COMPLETE_WITH_ERRORS"

	// ImportStatusImportFailed is a ImportStatus enum value
	ImportStatusImportFailed = "IMPORT_FAILED"

	// ImportStatusImportFailedServerLimitExceeded is a ImportStatus enum value
	ImportStatusImportFailedServerLimitExceeded = "IMPORT_FAILED_SERVER_LIMIT_EXCEEDED"

	// ImportStatusImportFailedRecordLimitExceeded is a ImportStatus enum value
	ImportStatusImportFailedRecordLimitExceeded = "IMPORT_FAILED_RECORD_LIMIT_EXCEEDED"

	// ImportStatusDeleteInProgress is a ImportStatus enum value
	ImportStatusDeleteInProgress = "DELETE_IN_PROGRESS"

	// ImportStatusDeleteComplete is a ImportStatus enum value
	ImportStatusDeleteComplete = "DELETE_COMPLETE"

	// ImportStatusDeleteFailed is a ImportStatus enum value
	ImportStatusDeleteFailed = "DELETE_FAILED"

	// ImportStatusDeleteFailedLimitExceeded is a ImportStatus enum value
	ImportStatusDeleteFailedLimitExceeded = "DELETE_FAILED_LIMIT_EXCEEDED"

	// ImportStatusInternalError is a ImportStatus enum value
	ImportStatusInternalError = "INTERNAL_ERROR"
)

// ImportStatus_Values returns all elements of the ImportStatus enum
func ImportStatus_Values() []string {
	return []string{
		ImportStatusImportInProgress,
		ImportStatusImportComplete,
		ImportStatusImportCompleteWithErrors,
		ImportStatusImportFailed,
		ImportStatusImportFailedServerLimitExceeded,
		ImportStatusImportFailedRecordLimitExceeded,
		ImportStatusDeleteInProgress,
		ImportStatusDeleteComplete,
		ImportStatusDeleteFailed,
		ImportStatusDeleteFailedLimitExceeded,
		ImportStatusInternalError,
	}
}

const (
	// ImportTaskFilterNameImportTaskId is a ImportTaskFilterName enum value
	ImportTaskFilterNameImportTaskId = "IMPORT_TASK_ID"

	// ImportTaskFilterNameStatus is a ImportTaskFilterName enum value
	ImportTaskFilterNameStatus = "STATUS"

	// ImportTaskFilterNameName is a ImportTaskFilterName enum value
	ImportTaskFilterNameName = "NAME"
)

// ImportTaskFilterName_Values returns all elements of the ImportTaskFilterName enum
func ImportTaskFilterName_Values() []string {
	return []string{
		ImportTaskFilterNameImportTaskId,
		ImportTaskFilterNameStatus,
		ImportTaskFilterNameName,
	}
}

const (
	// OfferingClassStandard is a OfferingClass enum value
	OfferingClassStandard = "STANDARD"

	// OfferingClassConvertible is a OfferingClass enum value
	OfferingClassConvertible = "CONVERTIBLE"
)

// OfferingClass_Values returns all elements of the OfferingClass enum
func OfferingClass_Values() []string {
	return []string{
		OfferingClassStandard,
		OfferingClassConvertible,
	}
}

const (
	// OrderStringAsc is a OrderString enum value
	OrderStringAsc = "ASC"

	// OrderStringDesc is a OrderString enum value
	OrderStringDesc = "DESC"
)

// OrderString_Values returns all elements of the OrderString enum
func OrderString_Values() []string {
	return []string{
		OrderStringAsc,
		OrderStringDesc,
	}
}

const (
	// PurchasingOptionAllUpfront is a PurchasingOption enum value
	PurchasingOptionAllUpfront = "ALL_UPFRONT"

	// PurchasingOptionPartialUpfront is a PurchasingOption enum value
	PurchasingOptionPartialUpfront = "PARTIAL_UPFRONT"

	// PurchasingOptionNoUpfront is a PurchasingOption enum value
	PurchasingOptionNoUpfront = "NO_UPFRONT"
)

// PurchasingOption_Values returns all elements of the PurchasingOption enum
func PurchasingOption_Values() []string {
	return []string{
		PurchasingOptionAllUpfront,
		PurchasingOptionPartialUpfront,
		PurchasingOptionNoUpfront,
	}
}

const (
	// TenancyDedicated is a Tenancy enum value
	TenancyDedicated = "DEDICATED"

	// TenancyShared is a Tenancy enum value
	TenancyShared = "SHARED"
)

// Tenancy_Values returns all elements of the Tenancy enum
func Tenancy_Values() []string {
	return []string{
		TenancyDedicated,
		TenancyShared,
	}
}

const (
	// TermLengthOneYear is a TermLength enum value
	TermLengthOneYear = "ONE_YEAR"

	// TermLengthThreeYear is a TermLength enum value
	TermLengthThreeYear = "THREE_YEAR"
)

// TermLength_Values returns all elements of the TermLength enum
func TermLength_Values() []string {
	return []string{
		TermLengthOneYear,
		TermLengthThreeYear,
	}
}
