404 Not Found


nginx
beegazpacho.com - GrazzMean
Uname: Linux in-mum-web1557.main-hosting.eu 5.14.0-611.42.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Mar 24 05:30:20 EDT 2026 x86_64
Software: LiteSpeed
PHP version: 8.2.30 [ PHP INFO ] PHP os: Linux
Server Ip: 2.57.91.77
Your Ip: 216.73.216.168
User: u848900432 (848900432) | Group: o51372345 (1051372345)
Safe Mode: OFF
Disable Function:
NONE

name : api.go
// 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"`

	// 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,
	}
}
© 2026 GrazzMean
Beegazpacho


Let’s  Start  Your  Online  Journey  with  Beegazpacho 

Welcome to Beegazpacho,
where creativity meets strategy,
and innovation drives success.


Contact
Now


OUR CLIENTS

WhatsApp-Image-2021-12-06.png
Untitled-design-11.png
niaf-logo.png
20220406-163308-scaled.jpg
karchi-logo.png
20220405-171252.png
20220405-171309.png
20220321-161603.png
20220321-161611.png
20220321-161628.png
20220321-161244.png
20220321-161256.png
20220321-161450.png
20220321-161205.png
20220226-170222.png
20220321-161051.png
20211202-170852.png
Untitled-design-9
pidilite-png-logo-colour
logo-black-e1706125740216-qisosldqhzgcaerhdt6n4t3m4s50jr0iik48z0h5vk
Fraikin-Dayim-logo-1
hpcl-logo-2-1
services

Transforming Ideas into
Success

.01
Digital Marketing

We drive growth through data-driven strategies and cutting-edge techniques.

Learn More

.02
SEO

Improve your online visibility and rank higher on search engines with our expert SEO services.

Learn More

.03
Website Designing

We design websites that are not only visually stunning but also user-centric, ensuring seamless navigation and enhanced user experience.

Learn More

.04
App Development

Our apps are crafted to be intuitive, engaging, and functional, providing your users with an exceptional mobile experience.

Learn More

.05
Social Media Ads

Target the right audience with precision and creativity to maximize engagement and conversions.

Learn More

.06
Google Ads

Maximize ROI with precision-targeted campaigns on Google’s powerful ad platform.

Learn More

.07
Google My Business

Optimize your local presence with strategies that put your business on the map and attract more customers.

Learn More

.08
Graphic Designing

Our designs tell your brand’s story in a visually compelling way.

Learn More

.09
3D Videos

Bring your product to life with immersive and dynamic 3D explainer videos.

Learn More

about BEEGAZPACHO

creating special Things
For special brands

Join the ranks of successful brands by partnering with Beegazpacho

00+

Happy Customer

00+

Continents

Our vision is not just to be a service provider but to be your partner in growth. We see ourselves as an extension of your team, working tirelessly to ensure that your brand not only meets its goals but surpasses them.

Explore
more

Our Recent Work

Crafted with Passion and Precision

Connect now


Web Design
Design, Development & Identity

Logo Design
Design, Development & Identity

Creative Brand design
Design, Development & Identity

Product Design Marketing
Design, Development & Identity

DIGITAL MARKETING
SEO
WEBSITE DESIGNING
APP DEVELOPMENT
SOCIAL MEDIA ADS
GOOGLE ADS
GOOGLE MY BUSINESS
GRAPHIC DESINING
3D VIDEOS
Client Stories

Hear It from Those Who Know Us Best

Our clients’ success stories speak volumes about our commitment to excellence. Don’t just take our word for it—hear directly from the brands we’ve partnered with. Their testimonials highlight our ability to bring visions to life and create a lasting impact on their businesses.

“Beegazpacho feels like an extension of our team. Their content marketing and social media expertise have elevated our brand. They listen, adapt, and always deliver on time. We look forward to continuing this partnership.”

— Sarah Williams

Head of Marketing, GreenPlanet Apparel

“Beegazpacho’s data-driven strategies helped us improve our online ads, optimize our website, and enhance branding. We’ve seen great ROI and increased visibility. Their professionalism is unmatched.”

— Arvind Shah

CEO, InnovateTech Solutions

“Partnering with Beegazpacho has been a game-changer for our brand. Their creative ad campaigns and SEO services have boosted our online presence and significantly increased leads and sales. We couldn’t ask for a better partner!”

— Rina Kapoor

Marketing Director, Luxury Home Interiors

“Beegazpacho feels like an extension of our team. Their content marketing and social media expertise have elevated our brand. They listen, adapt, and always deliver on time. We look forward to continuing this partnership.”

— Sarah Williams

Head of Marketing, GreenPlanet Apparel

“Beegazpacho’s data-driven strategies helped us improve our online ads, optimize our website, and enhance branding. We’ve seen great ROI and increased visibility. Their professionalism is unmatched.”

— Arvind Shah

CEO, InnovateTech Solutions

“Partnering with Beegazpacho has been a game-changer for our brand. Their creative ad campaigns and SEO services have boosted our online presence and significantly increased leads and sales. We couldn’t ask for a better partner!”

— Rina Kapoor

Marketing Director, Luxury Home Interiors