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: 93.127.173.37
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 migrationhub

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 opAssociateCreatedArtifact = "AssociateCreatedArtifact"

// AssociateCreatedArtifactRequest generates a "aws/request.Request" representing the
// client's request for the AssociateCreatedArtifact 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 AssociateCreatedArtifact for more information on using the AssociateCreatedArtifact
// 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 AssociateCreatedArtifactRequest method.
//	req, resp := client.AssociateCreatedArtifactRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/AssociateCreatedArtifact
func (c *MigrationHub) AssociateCreatedArtifactRequest(input *AssociateCreatedArtifactInput) (req *request.Request, output *AssociateCreatedArtifactOutput) {
	op := &request.Operation{
		Name:       opAssociateCreatedArtifact,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &AssociateCreatedArtifactInput{}
	}

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

// AssociateCreatedArtifact API operation for AWS Migration Hub.
//
// Associates a created artifact of an AWS cloud resource, the target receiving
// the migration, with the migration task performed by a migration tool. This
// API has the following traits:
//
//   - Migration tools can call the AssociateCreatedArtifact operation to indicate
//     which AWS artifact is associated with a migration task.
//
//   - The created artifact name must be provided in ARN (Amazon Resource Name)
//     format which will contain information about type and region; for example:
//     arn:aws:ec2:us-east-1:488216288981:image/ami-6d0ba87b.
//
//   - Examples of the AWS resource behind the created artifact are, AMI's,
//     EC2 instance, or DMS endpoint, etc.
//
// 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 Migration Hub's
// API operation AssociateCreatedArtifact for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServerError
//     Exception raised when an internal, configuration, or dependency error is
//     encountered.
//
//   - ServiceUnavailableException
//     Exception raised when there is an internal, configuration, or dependency
//     error encountered.
//
//   - DryRunOperation
//     Exception raised to indicate a successfully authorized action when the DryRun
//     flag is set to "true".
//
//   - UnauthorizedOperation
//     Exception raised to indicate a request was not authorized when the DryRun
//     flag is set to "true".
//
//   - InvalidInputException
//     Exception raised when the provided input violates a policy constraint or
//     is entered in the wrong format or data type.
//
//   - ResourceNotFoundException
//     Exception raised when the request references a resource (Application Discovery
//     Service configuration, update stream, migration task, etc.) that does not
//     exist in Application Discovery Service (Application Discovery Service) or
//     in Migration Hub's repository.
//
//   - HomeRegionNotSetException
//     The home region is not set. Set the home region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/AssociateCreatedArtifact
func (c *MigrationHub) AssociateCreatedArtifact(input *AssociateCreatedArtifactInput) (*AssociateCreatedArtifactOutput, error) {
	req, out := c.AssociateCreatedArtifactRequest(input)
	return out, req.Send()
}

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

const opAssociateDiscoveredResource = "AssociateDiscoveredResource"

// AssociateDiscoveredResourceRequest generates a "aws/request.Request" representing the
// client's request for the AssociateDiscoveredResource 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 AssociateDiscoveredResource for more information on using the AssociateDiscoveredResource
// 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 AssociateDiscoveredResourceRequest method.
//	req, resp := client.AssociateDiscoveredResourceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/AssociateDiscoveredResource
func (c *MigrationHub) AssociateDiscoveredResourceRequest(input *AssociateDiscoveredResourceInput) (req *request.Request, output *AssociateDiscoveredResourceOutput) {
	op := &request.Operation{
		Name:       opAssociateDiscoveredResource,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &AssociateDiscoveredResourceInput{}
	}

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

// AssociateDiscoveredResource API operation for AWS Migration Hub.
//
// Associates a discovered resource ID from Application Discovery Service with
// a migration 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 Migration Hub's
// API operation AssociateDiscoveredResource for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServerError
//     Exception raised when an internal, configuration, or dependency error is
//     encountered.
//
//   - ServiceUnavailableException
//     Exception raised when there is an internal, configuration, or dependency
//     error encountered.
//
//   - DryRunOperation
//     Exception raised to indicate a successfully authorized action when the DryRun
//     flag is set to "true".
//
//   - UnauthorizedOperation
//     Exception raised to indicate a request was not authorized when the DryRun
//     flag is set to "true".
//
//   - InvalidInputException
//     Exception raised when the provided input violates a policy constraint or
//     is entered in the wrong format or data type.
//
//   - PolicyErrorException
//     Exception raised when there are problems accessing Application Discovery
//     Service (Application Discovery Service); most likely due to a misconfigured
//     policy or the migrationhub-discovery role is missing or not configured correctly.
//
//   - ResourceNotFoundException
//     Exception raised when the request references a resource (Application Discovery
//     Service configuration, update stream, migration task, etc.) that does not
//     exist in Application Discovery Service (Application Discovery Service) or
//     in Migration Hub's repository.
//
//   - HomeRegionNotSetException
//     The home region is not set. Set the home region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/AssociateDiscoveredResource
func (c *MigrationHub) AssociateDiscoveredResource(input *AssociateDiscoveredResourceInput) (*AssociateDiscoveredResourceOutput, error) {
	req, out := c.AssociateDiscoveredResourceRequest(input)
	return out, req.Send()
}

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

const opCreateProgressUpdateStream = "CreateProgressUpdateStream"

// CreateProgressUpdateStreamRequest generates a "aws/request.Request" representing the
// client's request for the CreateProgressUpdateStream 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 CreateProgressUpdateStream for more information on using the CreateProgressUpdateStream
// 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 CreateProgressUpdateStreamRequest method.
//	req, resp := client.CreateProgressUpdateStreamRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/CreateProgressUpdateStream
func (c *MigrationHub) CreateProgressUpdateStreamRequest(input *CreateProgressUpdateStreamInput) (req *request.Request, output *CreateProgressUpdateStreamOutput) {
	op := &request.Operation{
		Name:       opCreateProgressUpdateStream,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateProgressUpdateStreamInput{}
	}

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

// CreateProgressUpdateStream API operation for AWS Migration Hub.
//
// Creates a progress update stream which is an AWS resource used for access
// control as well as a namespace for migration task names that is implicitly
// linked to your AWS account. It must uniquely identify the migration tool
// as it is used for all updates made by the tool; however, it does not need
// to be unique for each AWS account because it is scoped to the AWS account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Migration Hub's
// API operation CreateProgressUpdateStream for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServerError
//     Exception raised when an internal, configuration, or dependency error is
//     encountered.
//
//   - ServiceUnavailableException
//     Exception raised when there is an internal, configuration, or dependency
//     error encountered.
//
//   - DryRunOperation
//     Exception raised to indicate a successfully authorized action when the DryRun
//     flag is set to "true".
//
//   - UnauthorizedOperation
//     Exception raised to indicate a request was not authorized when the DryRun
//     flag is set to "true".
//
//   - InvalidInputException
//     Exception raised when the provided input violates a policy constraint or
//     is entered in the wrong format or data type.
//
//   - HomeRegionNotSetException
//     The home region is not set. Set the home region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/CreateProgressUpdateStream
func (c *MigrationHub) CreateProgressUpdateStream(input *CreateProgressUpdateStreamInput) (*CreateProgressUpdateStreamOutput, error) {
	req, out := c.CreateProgressUpdateStreamRequest(input)
	return out, req.Send()
}

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

const opDeleteProgressUpdateStream = "DeleteProgressUpdateStream"

// DeleteProgressUpdateStreamRequest generates a "aws/request.Request" representing the
// client's request for the DeleteProgressUpdateStream 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 DeleteProgressUpdateStream for more information on using the DeleteProgressUpdateStream
// 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 DeleteProgressUpdateStreamRequest method.
//	req, resp := client.DeleteProgressUpdateStreamRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/DeleteProgressUpdateStream
func (c *MigrationHub) DeleteProgressUpdateStreamRequest(input *DeleteProgressUpdateStreamInput) (req *request.Request, output *DeleteProgressUpdateStreamOutput) {
	op := &request.Operation{
		Name:       opDeleteProgressUpdateStream,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteProgressUpdateStreamInput{}
	}

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

// DeleteProgressUpdateStream API operation for AWS Migration Hub.
//
// Deletes a progress update stream, including all of its tasks, which was previously
// created as an AWS resource used for access control. This API has the following
// traits:
//
//   - The only parameter needed for DeleteProgressUpdateStream is the stream
//     name (same as a CreateProgressUpdateStream call).
//
//   - The call will return, and a background process will asynchronously delete
//     the stream and all of its resources (tasks, associated resources, resource
//     attributes, created artifacts).
//
//   - If the stream takes time to be deleted, it might still show up on a
//     ListProgressUpdateStreams call.
//
//   - CreateProgressUpdateStream, ImportMigrationTask, NotifyMigrationTaskState,
//     and all Associate[*] APIs related to the tasks belonging to the stream
//     will throw "InvalidInputException" if the stream of the same name is in
//     the process of being deleted.
//
//   - Once the stream and all of its resources are deleted, CreateProgressUpdateStream
//     for a stream of the same name will succeed, and that stream will be an
//     entirely new logical resource (without any resources associated with the
//     old stream).
//
// 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 Migration Hub's
// API operation DeleteProgressUpdateStream for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServerError
//     Exception raised when an internal, configuration, or dependency error is
//     encountered.
//
//   - ServiceUnavailableException
//     Exception raised when there is an internal, configuration, or dependency
//     error encountered.
//
//   - DryRunOperation
//     Exception raised to indicate a successfully authorized action when the DryRun
//     flag is set to "true".
//
//   - UnauthorizedOperation
//     Exception raised to indicate a request was not authorized when the DryRun
//     flag is set to "true".
//
//   - InvalidInputException
//     Exception raised when the provided input violates a policy constraint or
//     is entered in the wrong format or data type.
//
//   - ResourceNotFoundException
//     Exception raised when the request references a resource (Application Discovery
//     Service configuration, update stream, migration task, etc.) that does not
//     exist in Application Discovery Service (Application Discovery Service) or
//     in Migration Hub's repository.
//
//   - HomeRegionNotSetException
//     The home region is not set. Set the home region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/DeleteProgressUpdateStream
func (c *MigrationHub) DeleteProgressUpdateStream(input *DeleteProgressUpdateStreamInput) (*DeleteProgressUpdateStreamOutput, error) {
	req, out := c.DeleteProgressUpdateStreamRequest(input)
	return out, req.Send()
}

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

const opDescribeApplicationState = "DescribeApplicationState"

// DescribeApplicationStateRequest generates a "aws/request.Request" representing the
// client's request for the DescribeApplicationState 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 DescribeApplicationState for more information on using the DescribeApplicationState
// 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 DescribeApplicationStateRequest method.
//	req, resp := client.DescribeApplicationStateRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/DescribeApplicationState
func (c *MigrationHub) DescribeApplicationStateRequest(input *DescribeApplicationStateInput) (req *request.Request, output *DescribeApplicationStateOutput) {
	op := &request.Operation{
		Name:       opDescribeApplicationState,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeApplicationStateInput{}
	}

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

// DescribeApplicationState API operation for AWS Migration Hub.
//
// Gets the migration status of 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 Migration Hub's
// API operation DescribeApplicationState for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServerError
//     Exception raised when an internal, configuration, or dependency error is
//     encountered.
//
//   - ServiceUnavailableException
//     Exception raised when there is an internal, configuration, or dependency
//     error encountered.
//
//   - InvalidInputException
//     Exception raised when the provided input violates a policy constraint or
//     is entered in the wrong format or data type.
//
//   - PolicyErrorException
//     Exception raised when there are problems accessing Application Discovery
//     Service (Application Discovery Service); most likely due to a misconfigured
//     policy or the migrationhub-discovery role is missing or not configured correctly.
//
//   - ResourceNotFoundException
//     Exception raised when the request references a resource (Application Discovery
//     Service configuration, update stream, migration task, etc.) that does not
//     exist in Application Discovery Service (Application Discovery Service) or
//     in Migration Hub's repository.
//
//   - HomeRegionNotSetException
//     The home region is not set. Set the home region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/DescribeApplicationState
func (c *MigrationHub) DescribeApplicationState(input *DescribeApplicationStateInput) (*DescribeApplicationStateOutput, error) {
	req, out := c.DescribeApplicationStateRequest(input)
	return out, req.Send()
}

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

const opDescribeMigrationTask = "DescribeMigrationTask"

// DescribeMigrationTaskRequest generates a "aws/request.Request" representing the
// client's request for the DescribeMigrationTask 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 DescribeMigrationTask for more information on using the DescribeMigrationTask
// 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 DescribeMigrationTaskRequest method.
//	req, resp := client.DescribeMigrationTaskRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/DescribeMigrationTask
func (c *MigrationHub) DescribeMigrationTaskRequest(input *DescribeMigrationTaskInput) (req *request.Request, output *DescribeMigrationTaskOutput) {
	op := &request.Operation{
		Name:       opDescribeMigrationTask,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeMigrationTaskInput{}
	}

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

// DescribeMigrationTask API operation for AWS Migration Hub.
//
// Retrieves a list of all attributes associated with a specific migration 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 Migration Hub's
// API operation DescribeMigrationTask for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServerError
//     Exception raised when an internal, configuration, or dependency error is
//     encountered.
//
//   - ServiceUnavailableException
//     Exception raised when there is an internal, configuration, or dependency
//     error encountered.
//
//   - InvalidInputException
//     Exception raised when the provided input violates a policy constraint or
//     is entered in the wrong format or data type.
//
//   - ResourceNotFoundException
//     Exception raised when the request references a resource (Application Discovery
//     Service configuration, update stream, migration task, etc.) that does not
//     exist in Application Discovery Service (Application Discovery Service) or
//     in Migration Hub's repository.
//
//   - HomeRegionNotSetException
//     The home region is not set. Set the home region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/DescribeMigrationTask
func (c *MigrationHub) DescribeMigrationTask(input *DescribeMigrationTaskInput) (*DescribeMigrationTaskOutput, error) {
	req, out := c.DescribeMigrationTaskRequest(input)
	return out, req.Send()
}

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

const opDisassociateCreatedArtifact = "DisassociateCreatedArtifact"

// DisassociateCreatedArtifactRequest generates a "aws/request.Request" representing the
// client's request for the DisassociateCreatedArtifact 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 DisassociateCreatedArtifact for more information on using the DisassociateCreatedArtifact
// 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 DisassociateCreatedArtifactRequest method.
//	req, resp := client.DisassociateCreatedArtifactRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/DisassociateCreatedArtifact
func (c *MigrationHub) DisassociateCreatedArtifactRequest(input *DisassociateCreatedArtifactInput) (req *request.Request, output *DisassociateCreatedArtifactOutput) {
	op := &request.Operation{
		Name:       opDisassociateCreatedArtifact,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DisassociateCreatedArtifactInput{}
	}

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

// DisassociateCreatedArtifact API operation for AWS Migration Hub.
//
// Disassociates a created artifact of an AWS resource with a migration task
// performed by a migration tool that was previously associated. This API has
// the following traits:
//
//   - A migration user can call the DisassociateCreatedArtifacts operation
//     to disassociate a created AWS Artifact from a migration task.
//
//   - The created artifact name must be provided in ARN (Amazon Resource Name)
//     format which will contain information about type and region; for example:
//     arn:aws:ec2:us-east-1:488216288981:image/ami-6d0ba87b.
//
//   - Examples of the AWS resource behind the created artifact are, AMI's,
//     EC2 instance, or RDS instance, etc.
//
// 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 Migration Hub's
// API operation DisassociateCreatedArtifact for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServerError
//     Exception raised when an internal, configuration, or dependency error is
//     encountered.
//
//   - ServiceUnavailableException
//     Exception raised when there is an internal, configuration, or dependency
//     error encountered.
//
//   - DryRunOperation
//     Exception raised to indicate a successfully authorized action when the DryRun
//     flag is set to "true".
//
//   - UnauthorizedOperation
//     Exception raised to indicate a request was not authorized when the DryRun
//     flag is set to "true".
//
//   - InvalidInputException
//     Exception raised when the provided input violates a policy constraint or
//     is entered in the wrong format or data type.
//
//   - ResourceNotFoundException
//     Exception raised when the request references a resource (Application Discovery
//     Service configuration, update stream, migration task, etc.) that does not
//     exist in Application Discovery Service (Application Discovery Service) or
//     in Migration Hub's repository.
//
//   - HomeRegionNotSetException
//     The home region is not set. Set the home region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/DisassociateCreatedArtifact
func (c *MigrationHub) DisassociateCreatedArtifact(input *DisassociateCreatedArtifactInput) (*DisassociateCreatedArtifactOutput, error) {
	req, out := c.DisassociateCreatedArtifactRequest(input)
	return out, req.Send()
}

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

const opDisassociateDiscoveredResource = "DisassociateDiscoveredResource"

// DisassociateDiscoveredResourceRequest generates a "aws/request.Request" representing the
// client's request for the DisassociateDiscoveredResource 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 DisassociateDiscoveredResource for more information on using the DisassociateDiscoveredResource
// 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 DisassociateDiscoveredResourceRequest method.
//	req, resp := client.DisassociateDiscoveredResourceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/DisassociateDiscoveredResource
func (c *MigrationHub) DisassociateDiscoveredResourceRequest(input *DisassociateDiscoveredResourceInput) (req *request.Request, output *DisassociateDiscoveredResourceOutput) {
	op := &request.Operation{
		Name:       opDisassociateDiscoveredResource,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DisassociateDiscoveredResourceInput{}
	}

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

// DisassociateDiscoveredResource API operation for AWS Migration Hub.
//
// Disassociate an Application Discovery Service discovered resource from a
// migration 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 Migration Hub's
// API operation DisassociateDiscoveredResource for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServerError
//     Exception raised when an internal, configuration, or dependency error is
//     encountered.
//
//   - ServiceUnavailableException
//     Exception raised when there is an internal, configuration, or dependency
//     error encountered.
//
//   - DryRunOperation
//     Exception raised to indicate a successfully authorized action when the DryRun
//     flag is set to "true".
//
//   - UnauthorizedOperation
//     Exception raised to indicate a request was not authorized when the DryRun
//     flag is set to "true".
//
//   - InvalidInputException
//     Exception raised when the provided input violates a policy constraint or
//     is entered in the wrong format or data type.
//
//   - ResourceNotFoundException
//     Exception raised when the request references a resource (Application Discovery
//     Service configuration, update stream, migration task, etc.) that does not
//     exist in Application Discovery Service (Application Discovery Service) or
//     in Migration Hub's repository.
//
//   - HomeRegionNotSetException
//     The home region is not set. Set the home region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/DisassociateDiscoveredResource
func (c *MigrationHub) DisassociateDiscoveredResource(input *DisassociateDiscoveredResourceInput) (*DisassociateDiscoveredResourceOutput, error) {
	req, out := c.DisassociateDiscoveredResourceRequest(input)
	return out, req.Send()
}

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

const opImportMigrationTask = "ImportMigrationTask"

// ImportMigrationTaskRequest generates a "aws/request.Request" representing the
// client's request for the ImportMigrationTask 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 ImportMigrationTask for more information on using the ImportMigrationTask
// 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 ImportMigrationTaskRequest method.
//	req, resp := client.ImportMigrationTaskRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/ImportMigrationTask
func (c *MigrationHub) ImportMigrationTaskRequest(input *ImportMigrationTaskInput) (req *request.Request, output *ImportMigrationTaskOutput) {
	op := &request.Operation{
		Name:       opImportMigrationTask,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ImportMigrationTaskInput{}
	}

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

// ImportMigrationTask API operation for AWS Migration Hub.
//
// Registers a new migration task which represents a server, database, etc.,
// being migrated to AWS by a migration tool.
//
// This API is a prerequisite to calling the NotifyMigrationTaskState API as
// the migration tool must first register the migration task with Migration
// Hub.
//
// 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 Migration Hub's
// API operation ImportMigrationTask for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServerError
//     Exception raised when an internal, configuration, or dependency error is
//     encountered.
//
//   - ServiceUnavailableException
//     Exception raised when there is an internal, configuration, or dependency
//     error encountered.
//
//   - DryRunOperation
//     Exception raised to indicate a successfully authorized action when the DryRun
//     flag is set to "true".
//
//   - UnauthorizedOperation
//     Exception raised to indicate a request was not authorized when the DryRun
//     flag is set to "true".
//
//   - InvalidInputException
//     Exception raised when the provided input violates a policy constraint or
//     is entered in the wrong format or data type.
//
//   - ResourceNotFoundException
//     Exception raised when the request references a resource (Application Discovery
//     Service configuration, update stream, migration task, etc.) that does not
//     exist in Application Discovery Service (Application Discovery Service) or
//     in Migration Hub's repository.
//
//   - HomeRegionNotSetException
//     The home region is not set. Set the home region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/ImportMigrationTask
func (c *MigrationHub) ImportMigrationTask(input *ImportMigrationTaskInput) (*ImportMigrationTaskOutput, error) {
	req, out := c.ImportMigrationTaskRequest(input)
	return out, req.Send()
}

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

const opListApplicationStates = "ListApplicationStates"

// ListApplicationStatesRequest generates a "aws/request.Request" representing the
// client's request for the ListApplicationStates 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 ListApplicationStates for more information on using the ListApplicationStates
// 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 ListApplicationStatesRequest method.
//	req, resp := client.ListApplicationStatesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/ListApplicationStates
func (c *MigrationHub) ListApplicationStatesRequest(input *ListApplicationStatesInput) (req *request.Request, output *ListApplicationStatesOutput) {
	op := &request.Operation{
		Name:       opListApplicationStates,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListApplicationStatesInput{}
	}

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

// ListApplicationStates API operation for AWS Migration Hub.
//
// Lists all the migration statuses for your applications. If you use the optional
// ApplicationIds parameter, only the migration statuses for those applications
// will be returned.
//
// 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 Migration Hub's
// API operation ListApplicationStates for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServerError
//     Exception raised when an internal, configuration, or dependency error is
//     encountered.
//
//   - ServiceUnavailableException
//     Exception raised when there is an internal, configuration, or dependency
//     error encountered.
//
//   - InvalidInputException
//     Exception raised when the provided input violates a policy constraint or
//     is entered in the wrong format or data type.
//
//   - HomeRegionNotSetException
//     The home region is not set. Set the home region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/ListApplicationStates
func (c *MigrationHub) ListApplicationStates(input *ListApplicationStatesInput) (*ListApplicationStatesOutput, error) {
	req, out := c.ListApplicationStatesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListCreatedArtifacts = "ListCreatedArtifacts"

// ListCreatedArtifactsRequest generates a "aws/request.Request" representing the
// client's request for the ListCreatedArtifacts 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 ListCreatedArtifacts for more information on using the ListCreatedArtifacts
// 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 ListCreatedArtifactsRequest method.
//	req, resp := client.ListCreatedArtifactsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/ListCreatedArtifacts
func (c *MigrationHub) ListCreatedArtifactsRequest(input *ListCreatedArtifactsInput) (req *request.Request, output *ListCreatedArtifactsOutput) {
	op := &request.Operation{
		Name:       opListCreatedArtifacts,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListCreatedArtifactsInput{}
	}

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

// ListCreatedArtifacts API operation for AWS Migration Hub.
//
// Lists the created artifacts attached to a given migration task in an update
// stream. This API has the following traits:
//
//   - Gets the list of the created artifacts while migration is taking place.
//
//   - Shows the artifacts created by the migration tool that was associated
//     by the AssociateCreatedArtifact API.
//
//   - Lists created artifacts in a paginated interface.
//
// 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 Migration Hub's
// API operation ListCreatedArtifacts for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServerError
//     Exception raised when an internal, configuration, or dependency error is
//     encountered.
//
//   - ServiceUnavailableException
//     Exception raised when there is an internal, configuration, or dependency
//     error encountered.
//
//   - InvalidInputException
//     Exception raised when the provided input violates a policy constraint or
//     is entered in the wrong format or data type.
//
//   - ResourceNotFoundException
//     Exception raised when the request references a resource (Application Discovery
//     Service configuration, update stream, migration task, etc.) that does not
//     exist in Application Discovery Service (Application Discovery Service) or
//     in Migration Hub's repository.
//
//   - HomeRegionNotSetException
//     The home region is not set. Set the home region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/ListCreatedArtifacts
func (c *MigrationHub) ListCreatedArtifacts(input *ListCreatedArtifactsInput) (*ListCreatedArtifactsOutput, error) {
	req, out := c.ListCreatedArtifactsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListDiscoveredResources = "ListDiscoveredResources"

// ListDiscoveredResourcesRequest generates a "aws/request.Request" representing the
// client's request for the ListDiscoveredResources 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 ListDiscoveredResources for more information on using the ListDiscoveredResources
// 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 ListDiscoveredResourcesRequest method.
//	req, resp := client.ListDiscoveredResourcesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/ListDiscoveredResources
func (c *MigrationHub) ListDiscoveredResourcesRequest(input *ListDiscoveredResourcesInput) (req *request.Request, output *ListDiscoveredResourcesOutput) {
	op := &request.Operation{
		Name:       opListDiscoveredResources,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListDiscoveredResourcesInput{}
	}

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

// ListDiscoveredResources API operation for AWS Migration Hub.
//
// Lists discovered resources associated with the given MigrationTask.
//
// 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 Migration Hub's
// API operation ListDiscoveredResources for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServerError
//     Exception raised when an internal, configuration, or dependency error is
//     encountered.
//
//   - ServiceUnavailableException
//     Exception raised when there is an internal, configuration, or dependency
//     error encountered.
//
//   - InvalidInputException
//     Exception raised when the provided input violates a policy constraint or
//     is entered in the wrong format or data type.
//
//   - ResourceNotFoundException
//     Exception raised when the request references a resource (Application Discovery
//     Service configuration, update stream, migration task, etc.) that does not
//     exist in Application Discovery Service (Application Discovery Service) or
//     in Migration Hub's repository.
//
//   - HomeRegionNotSetException
//     The home region is not set. Set the home region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/ListDiscoveredResources
func (c *MigrationHub) ListDiscoveredResources(input *ListDiscoveredResourcesInput) (*ListDiscoveredResourcesOutput, error) {
	req, out := c.ListDiscoveredResourcesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListMigrationTasks = "ListMigrationTasks"

// ListMigrationTasksRequest generates a "aws/request.Request" representing the
// client's request for the ListMigrationTasks 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 ListMigrationTasks for more information on using the ListMigrationTasks
// 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 ListMigrationTasksRequest method.
//	req, resp := client.ListMigrationTasksRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/ListMigrationTasks
func (c *MigrationHub) ListMigrationTasksRequest(input *ListMigrationTasksInput) (req *request.Request, output *ListMigrationTasksOutput) {
	op := &request.Operation{
		Name:       opListMigrationTasks,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListMigrationTasksInput{}
	}

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

// ListMigrationTasks API operation for AWS Migration Hub.
//
// Lists all, or filtered by resource name, migration tasks associated with
// the user account making this call. This API has the following traits:
//
//   - Can show a summary list of the most recent migration tasks.
//
//   - Can show a summary list of migration tasks associated with a given discovered
//     resource.
//
//   - Lists migration tasks in a paginated interface.
//
// 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 Migration Hub's
// API operation ListMigrationTasks for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServerError
//     Exception raised when an internal, configuration, or dependency error is
//     encountered.
//
//   - ServiceUnavailableException
//     Exception raised when there is an internal, configuration, or dependency
//     error encountered.
//
//   - InvalidInputException
//     Exception raised when the provided input violates a policy constraint or
//     is entered in the wrong format or data type.
//
//   - PolicyErrorException
//     Exception raised when there are problems accessing Application Discovery
//     Service (Application Discovery Service); most likely due to a misconfigured
//     policy or the migrationhub-discovery role is missing or not configured correctly.
//
//   - ResourceNotFoundException
//     Exception raised when the request references a resource (Application Discovery
//     Service configuration, update stream, migration task, etc.) that does not
//     exist in Application Discovery Service (Application Discovery Service) or
//     in Migration Hub's repository.
//
//   - HomeRegionNotSetException
//     The home region is not set. Set the home region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/ListMigrationTasks
func (c *MigrationHub) ListMigrationTasks(input *ListMigrationTasksInput) (*ListMigrationTasksOutput, error) {
	req, out := c.ListMigrationTasksRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListProgressUpdateStreams = "ListProgressUpdateStreams"

// ListProgressUpdateStreamsRequest generates a "aws/request.Request" representing the
// client's request for the ListProgressUpdateStreams 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 ListProgressUpdateStreams for more information on using the ListProgressUpdateStreams
// 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 ListProgressUpdateStreamsRequest method.
//	req, resp := client.ListProgressUpdateStreamsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/ListProgressUpdateStreams
func (c *MigrationHub) ListProgressUpdateStreamsRequest(input *ListProgressUpdateStreamsInput) (req *request.Request, output *ListProgressUpdateStreamsOutput) {
	op := &request.Operation{
		Name:       opListProgressUpdateStreams,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListProgressUpdateStreamsInput{}
	}

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

// ListProgressUpdateStreams API operation for AWS Migration Hub.
//
// Lists progress update streams associated with the user account making this
// call.
//
// 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 Migration Hub's
// API operation ListProgressUpdateStreams for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServerError
//     Exception raised when an internal, configuration, or dependency error is
//     encountered.
//
//   - ServiceUnavailableException
//     Exception raised when there is an internal, configuration, or dependency
//     error encountered.
//
//   - InvalidInputException
//     Exception raised when the provided input violates a policy constraint or
//     is entered in the wrong format or data type.
//
//   - HomeRegionNotSetException
//     The home region is not set. Set the home region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/ListProgressUpdateStreams
func (c *MigrationHub) ListProgressUpdateStreams(input *ListProgressUpdateStreamsInput) (*ListProgressUpdateStreamsOutput, error) {
	req, out := c.ListProgressUpdateStreamsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opNotifyApplicationState = "NotifyApplicationState"

// NotifyApplicationStateRequest generates a "aws/request.Request" representing the
// client's request for the NotifyApplicationState 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 NotifyApplicationState for more information on using the NotifyApplicationState
// 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 NotifyApplicationStateRequest method.
//	req, resp := client.NotifyApplicationStateRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/NotifyApplicationState
func (c *MigrationHub) NotifyApplicationStateRequest(input *NotifyApplicationStateInput) (req *request.Request, output *NotifyApplicationStateOutput) {
	op := &request.Operation{
		Name:       opNotifyApplicationState,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &NotifyApplicationStateInput{}
	}

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

// NotifyApplicationState API operation for AWS Migration Hub.
//
// Sets the migration state of an application. For a given application identified
// by the value passed to ApplicationId, its status is set or updated by passing
// one of three values to Status: NOT_STARTED | IN_PROGRESS | COMPLETED.
//
// 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 Migration Hub's
// API operation NotifyApplicationState for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServerError
//     Exception raised when an internal, configuration, or dependency error is
//     encountered.
//
//   - ServiceUnavailableException
//     Exception raised when there is an internal, configuration, or dependency
//     error encountered.
//
//   - DryRunOperation
//     Exception raised to indicate a successfully authorized action when the DryRun
//     flag is set to "true".
//
//   - UnauthorizedOperation
//     Exception raised to indicate a request was not authorized when the DryRun
//     flag is set to "true".
//
//   - InvalidInputException
//     Exception raised when the provided input violates a policy constraint or
//     is entered in the wrong format or data type.
//
//   - PolicyErrorException
//     Exception raised when there are problems accessing Application Discovery
//     Service (Application Discovery Service); most likely due to a misconfigured
//     policy or the migrationhub-discovery role is missing or not configured correctly.
//
//   - ResourceNotFoundException
//     Exception raised when the request references a resource (Application Discovery
//     Service configuration, update stream, migration task, etc.) that does not
//     exist in Application Discovery Service (Application Discovery Service) or
//     in Migration Hub's repository.
//
//   - HomeRegionNotSetException
//     The home region is not set. Set the home region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/NotifyApplicationState
func (c *MigrationHub) NotifyApplicationState(input *NotifyApplicationStateInput) (*NotifyApplicationStateOutput, error) {
	req, out := c.NotifyApplicationStateRequest(input)
	return out, req.Send()
}

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

const opNotifyMigrationTaskState = "NotifyMigrationTaskState"

// NotifyMigrationTaskStateRequest generates a "aws/request.Request" representing the
// client's request for the NotifyMigrationTaskState 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 NotifyMigrationTaskState for more information on using the NotifyMigrationTaskState
// 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 NotifyMigrationTaskStateRequest method.
//	req, resp := client.NotifyMigrationTaskStateRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/NotifyMigrationTaskState
func (c *MigrationHub) NotifyMigrationTaskStateRequest(input *NotifyMigrationTaskStateInput) (req *request.Request, output *NotifyMigrationTaskStateOutput) {
	op := &request.Operation{
		Name:       opNotifyMigrationTaskState,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &NotifyMigrationTaskStateInput{}
	}

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

// NotifyMigrationTaskState API operation for AWS Migration Hub.
//
// Notifies Migration Hub of the current status, progress, or other detail regarding
// a migration task. This API has the following traits:
//
//   - Migration tools will call the NotifyMigrationTaskState API to share
//     the latest progress and status.
//
//   - MigrationTaskName is used for addressing updates to the correct target.
//
//   - ProgressUpdateStream is used for access control and to provide a namespace
//     for each migration tool.
//
// 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 Migration Hub's
// API operation NotifyMigrationTaskState for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServerError
//     Exception raised when an internal, configuration, or dependency error is
//     encountered.
//
//   - ServiceUnavailableException
//     Exception raised when there is an internal, configuration, or dependency
//     error encountered.
//
//   - DryRunOperation
//     Exception raised to indicate a successfully authorized action when the DryRun
//     flag is set to "true".
//
//   - UnauthorizedOperation
//     Exception raised to indicate a request was not authorized when the DryRun
//     flag is set to "true".
//
//   - InvalidInputException
//     Exception raised when the provided input violates a policy constraint or
//     is entered in the wrong format or data type.
//
//   - ResourceNotFoundException
//     Exception raised when the request references a resource (Application Discovery
//     Service configuration, update stream, migration task, etc.) that does not
//     exist in Application Discovery Service (Application Discovery Service) or
//     in Migration Hub's repository.
//
//   - HomeRegionNotSetException
//     The home region is not set. Set the home region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/NotifyMigrationTaskState
func (c *MigrationHub) NotifyMigrationTaskState(input *NotifyMigrationTaskStateInput) (*NotifyMigrationTaskStateOutput, error) {
	req, out := c.NotifyMigrationTaskStateRequest(input)
	return out, req.Send()
}

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

const opPutResourceAttributes = "PutResourceAttributes"

// PutResourceAttributesRequest generates a "aws/request.Request" representing the
// client's request for the PutResourceAttributes 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 PutResourceAttributes for more information on using the PutResourceAttributes
// 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 PutResourceAttributesRequest method.
//	req, resp := client.PutResourceAttributesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/PutResourceAttributes
func (c *MigrationHub) PutResourceAttributesRequest(input *PutResourceAttributesInput) (req *request.Request, output *PutResourceAttributesOutput) {
	op := &request.Operation{
		Name:       opPutResourceAttributes,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &PutResourceAttributesInput{}
	}

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

// PutResourceAttributes API operation for AWS Migration Hub.
//
// Provides identifying details of the resource being migrated so that it can
// be associated in the Application Discovery Service repository. This association
// occurs asynchronously after PutResourceAttributes returns.
//
//   - Keep in mind that subsequent calls to PutResourceAttributes will override
//     previously stored attributes. For example, if it is first called with
//     a MAC address, but later, it is desired to add an IP address, it will
//     then be required to call it with both the IP and MAC addresses to prevent
//     overriding the MAC address.
//
//   - Note the instructions regarding the special use case of the ResourceAttributeList
//     (https://docs.aws.amazon.com/migrationhub/latest/ug/API_PutResourceAttributes.html#migrationhub-PutResourceAttributes-request-ResourceAttributeList)
//     parameter when specifying any "VM" related value.
//
// Because this is an asynchronous call, it will always return 200, whether
// an association occurs or not. To confirm if an association was found based
// on the provided details, call ListDiscoveredResources.
//
// 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 Migration Hub's
// API operation PutResourceAttributes for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - InternalServerError
//     Exception raised when an internal, configuration, or dependency error is
//     encountered.
//
//   - ServiceUnavailableException
//     Exception raised when there is an internal, configuration, or dependency
//     error encountered.
//
//   - DryRunOperation
//     Exception raised to indicate a successfully authorized action when the DryRun
//     flag is set to "true".
//
//   - UnauthorizedOperation
//     Exception raised to indicate a request was not authorized when the DryRun
//     flag is set to "true".
//
//   - InvalidInputException
//     Exception raised when the provided input violates a policy constraint or
//     is entered in the wrong format or data type.
//
//   - ResourceNotFoundException
//     Exception raised when the request references a resource (Application Discovery
//     Service configuration, update stream, migration task, etc.) that does not
//     exist in Application Discovery Service (Application Discovery Service) or
//     in Migration Hub's repository.
//
//   - HomeRegionNotSetException
//     The home region is not set. Set the home region to continue.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/PutResourceAttributes
func (c *MigrationHub) PutResourceAttributes(input *PutResourceAttributesInput) (*PutResourceAttributesOutput, error) {
	req, out := c.PutResourceAttributesRequest(input)
	return out, req.Send()
}

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

// You do not have sufficient access to perform this action.
type AccessDeniedException 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 AccessDeniedException) 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 AccessDeniedException) GoString() string {
	return s.String()
}

func newErrorAccessDeniedException(v protocol.ResponseMetadata) error {
	return &AccessDeniedException{
		RespMetadata: v,
	}
}

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

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

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

func (s *AccessDeniedException) 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 *AccessDeniedException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

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

// The state of an application discovered through Migration Hub import, the
// AWS Agentless Discovery Connector, or the AWS Application Discovery Agent.
type ApplicationState struct {
	_ struct{} `type:"structure"`

	// The configurationId from the Application Discovery Service that uniquely
	// identifies an application.
	ApplicationId *string `min:"1" type:"string"`

	// The current status of an application.
	ApplicationStatus *string `type:"string" enum:"ApplicationStatus"`

	// The timestamp when the application status was last updated.
	LastUpdatedTime *time.Time `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 ApplicationState) 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 ApplicationState) GoString() string {
	return s.String()
}

// SetApplicationId sets the ApplicationId field's value.
func (s *ApplicationState) SetApplicationId(v string) *ApplicationState {
	s.ApplicationId = &v
	return s
}

// SetApplicationStatus sets the ApplicationStatus field's value.
func (s *ApplicationState) SetApplicationStatus(v string) *ApplicationState {
	s.ApplicationStatus = &v
	return s
}

// SetLastUpdatedTime sets the LastUpdatedTime field's value.
func (s *ApplicationState) SetLastUpdatedTime(v time.Time) *ApplicationState {
	s.LastUpdatedTime = &v
	return s
}

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

	// An ARN of the AWS resource related to the migration (e.g., AMI, EC2 instance,
	// RDS instance, etc.)
	//
	// CreatedArtifact is a required field
	CreatedArtifact *CreatedArtifact `type:"structure" required:"true"`

	// Optional boolean flag to indicate whether any effect should take place. Used
	// to test if the caller has permission to make the call.
	DryRun *bool `type:"boolean"`

	// Unique identifier that references the migration task. Do not store personal
	// data in this field.
	//
	// MigrationTaskName is a required field
	MigrationTaskName *string `min:"1" type:"string" required:"true"`

	// The name of the ProgressUpdateStream.
	//
	// ProgressUpdateStream is a required field
	ProgressUpdateStream *string `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 AssociateCreatedArtifactInput) 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 AssociateCreatedArtifactInput) GoString() string {
	return s.String()
}

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

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

// SetCreatedArtifact sets the CreatedArtifact field's value.
func (s *AssociateCreatedArtifactInput) SetCreatedArtifact(v *CreatedArtifact) *AssociateCreatedArtifactInput {
	s.CreatedArtifact = v
	return s
}

// SetDryRun sets the DryRun field's value.
func (s *AssociateCreatedArtifactInput) SetDryRun(v bool) *AssociateCreatedArtifactInput {
	s.DryRun = &v
	return s
}

// SetMigrationTaskName sets the MigrationTaskName field's value.
func (s *AssociateCreatedArtifactInput) SetMigrationTaskName(v string) *AssociateCreatedArtifactInput {
	s.MigrationTaskName = &v
	return s
}

// SetProgressUpdateStream sets the ProgressUpdateStream field's value.
func (s *AssociateCreatedArtifactInput) SetProgressUpdateStream(v string) *AssociateCreatedArtifactInput {
	s.ProgressUpdateStream = &v
	return s
}

type AssociateCreatedArtifactOutput 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 AssociateCreatedArtifactOutput) 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 AssociateCreatedArtifactOutput) GoString() string {
	return s.String()
}

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

	// Object representing a Resource.
	//
	// DiscoveredResource is a required field
	DiscoveredResource *DiscoveredResource `type:"structure" required:"true"`

	// Optional boolean flag to indicate whether any effect should take place. Used
	// to test if the caller has permission to make the call.
	DryRun *bool `type:"boolean"`

	// The identifier given to the MigrationTask. Do not store personal data in
	// this field.
	//
	// MigrationTaskName is a required field
	MigrationTaskName *string `min:"1" type:"string" required:"true"`

	// The name of the ProgressUpdateStream.
	//
	// ProgressUpdateStream is a required field
	ProgressUpdateStream *string `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 AssociateDiscoveredResourceInput) 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 AssociateDiscoveredResourceInput) GoString() string {
	return s.String()
}

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

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

// SetDiscoveredResource sets the DiscoveredResource field's value.
func (s *AssociateDiscoveredResourceInput) SetDiscoveredResource(v *DiscoveredResource) *AssociateDiscoveredResourceInput {
	s.DiscoveredResource = v
	return s
}

// SetDryRun sets the DryRun field's value.
func (s *AssociateDiscoveredResourceInput) SetDryRun(v bool) *AssociateDiscoveredResourceInput {
	s.DryRun = &v
	return s
}

// SetMigrationTaskName sets the MigrationTaskName field's value.
func (s *AssociateDiscoveredResourceInput) SetMigrationTaskName(v string) *AssociateDiscoveredResourceInput {
	s.MigrationTaskName = &v
	return s
}

// SetProgressUpdateStream sets the ProgressUpdateStream field's value.
func (s *AssociateDiscoveredResourceInput) SetProgressUpdateStream(v string) *AssociateDiscoveredResourceInput {
	s.ProgressUpdateStream = &v
	return s
}

type AssociateDiscoveredResourceOutput 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 AssociateDiscoveredResourceOutput) 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 AssociateDiscoveredResourceOutput) GoString() string {
	return s.String()
}

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

	// Optional boolean flag to indicate whether any effect should take place. Used
	// to test if the caller has permission to make the call.
	DryRun *bool `type:"boolean"`

	// The name of the ProgressUpdateStream. Do not store personal data in this
	// field.
	//
	// ProgressUpdateStreamName is a required field
	ProgressUpdateStreamName *string `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 CreateProgressUpdateStreamInput) 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 CreateProgressUpdateStreamInput) GoString() string {
	return s.String()
}

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

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

// SetDryRun sets the DryRun field's value.
func (s *CreateProgressUpdateStreamInput) SetDryRun(v bool) *CreateProgressUpdateStreamInput {
	s.DryRun = &v
	return s
}

// SetProgressUpdateStreamName sets the ProgressUpdateStreamName field's value.
func (s *CreateProgressUpdateStreamInput) SetProgressUpdateStreamName(v string) *CreateProgressUpdateStreamInput {
	s.ProgressUpdateStreamName = &v
	return s
}

type CreateProgressUpdateStreamOutput 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 CreateProgressUpdateStreamOutput) 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 CreateProgressUpdateStreamOutput) GoString() string {
	return s.String()
}

// An ARN of the AWS cloud resource target receiving the migration (e.g., AMI,
// EC2 instance, RDS instance, etc.).
type CreatedArtifact struct {
	_ struct{} `type:"structure"`

	// A description that can be free-form text to record additional detail about
	// the artifact for clarity or for later reference.
	Description *string `type:"string"`

	// An ARN that uniquely identifies the result of a migration task.
	//
	// Name is a required field
	Name *string `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 CreatedArtifact) 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 CreatedArtifact) GoString() string {
	return s.String()
}

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

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

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

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

	// Optional boolean flag to indicate whether any effect should take place. Used
	// to test if the caller has permission to make the call.
	DryRun *bool `type:"boolean"`

	// The name of the ProgressUpdateStream. Do not store personal data in this
	// field.
	//
	// ProgressUpdateStreamName is a required field
	ProgressUpdateStreamName *string `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 DeleteProgressUpdateStreamInput) 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 DeleteProgressUpdateStreamInput) GoString() string {
	return s.String()
}

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

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

// SetDryRun sets the DryRun field's value.
func (s *DeleteProgressUpdateStreamInput) SetDryRun(v bool) *DeleteProgressUpdateStreamInput {
	s.DryRun = &v
	return s
}

// SetProgressUpdateStreamName sets the ProgressUpdateStreamName field's value.
func (s *DeleteProgressUpdateStreamInput) SetProgressUpdateStreamName(v string) *DeleteProgressUpdateStreamInput {
	s.ProgressUpdateStreamName = &v
	return s
}

type DeleteProgressUpdateStreamOutput 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 DeleteProgressUpdateStreamOutput) 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 DeleteProgressUpdateStreamOutput) GoString() string {
	return s.String()
}

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

	// The configurationId in Application Discovery Service that uniquely identifies
	// the grouped application.
	//
	// ApplicationId is a required field
	ApplicationId *string `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 DescribeApplicationStateInput) 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 DescribeApplicationStateInput) GoString() string {
	return s.String()
}

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

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

// SetApplicationId sets the ApplicationId field's value.
func (s *DescribeApplicationStateInput) SetApplicationId(v string) *DescribeApplicationStateInput {
	s.ApplicationId = &v
	return s
}

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

	// Status of the application - Not Started, In-Progress, Complete.
	ApplicationStatus *string `type:"string" enum:"ApplicationStatus"`

	// The timestamp when the application status was last updated.
	LastUpdatedTime *time.Time `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 DescribeApplicationStateOutput) 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 DescribeApplicationStateOutput) GoString() string {
	return s.String()
}

// SetApplicationStatus sets the ApplicationStatus field's value.
func (s *DescribeApplicationStateOutput) SetApplicationStatus(v string) *DescribeApplicationStateOutput {
	s.ApplicationStatus = &v
	return s
}

// SetLastUpdatedTime sets the LastUpdatedTime field's value.
func (s *DescribeApplicationStateOutput) SetLastUpdatedTime(v time.Time) *DescribeApplicationStateOutput {
	s.LastUpdatedTime = &v
	return s
}

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

	// The identifier given to the MigrationTask. Do not store personal data in
	// this field.
	//
	// MigrationTaskName is a required field
	MigrationTaskName *string `min:"1" type:"string" required:"true"`

	// The name of the ProgressUpdateStream.
	//
	// ProgressUpdateStream is a required field
	ProgressUpdateStream *string `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 DescribeMigrationTaskInput) 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 DescribeMigrationTaskInput) GoString() string {
	return s.String()
}

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

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

// SetMigrationTaskName sets the MigrationTaskName field's value.
func (s *DescribeMigrationTaskInput) SetMigrationTaskName(v string) *DescribeMigrationTaskInput {
	s.MigrationTaskName = &v
	return s
}

// SetProgressUpdateStream sets the ProgressUpdateStream field's value.
func (s *DescribeMigrationTaskInput) SetProgressUpdateStream(v string) *DescribeMigrationTaskInput {
	s.ProgressUpdateStream = &v
	return s
}

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

	// Object encapsulating information about the migration task.
	MigrationTask *MigrationTask `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 DescribeMigrationTaskOutput) 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 DescribeMigrationTaskOutput) GoString() string {
	return s.String()
}

// SetMigrationTask sets the MigrationTask field's value.
func (s *DescribeMigrationTaskOutput) SetMigrationTask(v *MigrationTask) *DescribeMigrationTaskOutput {
	s.MigrationTask = v
	return s
}

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

	// An ARN of the AWS resource related to the migration (e.g., AMI, EC2 instance,
	// RDS instance, etc.)
	//
	// CreatedArtifactName is a required field
	CreatedArtifactName *string `min:"1" type:"string" required:"true"`

	// Optional boolean flag to indicate whether any effect should take place. Used
	// to test if the caller has permission to make the call.
	DryRun *bool `type:"boolean"`

	// Unique identifier that references the migration task to be disassociated
	// with the artifact. Do not store personal data in this field.
	//
	// MigrationTaskName is a required field
	MigrationTaskName *string `min:"1" type:"string" required:"true"`

	// The name of the ProgressUpdateStream.
	//
	// ProgressUpdateStream is a required field
	ProgressUpdateStream *string `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 DisassociateCreatedArtifactInput) 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 DisassociateCreatedArtifactInput) GoString() string {
	return s.String()
}

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

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

// SetCreatedArtifactName sets the CreatedArtifactName field's value.
func (s *DisassociateCreatedArtifactInput) SetCreatedArtifactName(v string) *DisassociateCreatedArtifactInput {
	s.CreatedArtifactName = &v
	return s
}

// SetDryRun sets the DryRun field's value.
func (s *DisassociateCreatedArtifactInput) SetDryRun(v bool) *DisassociateCreatedArtifactInput {
	s.DryRun = &v
	return s
}

// SetMigrationTaskName sets the MigrationTaskName field's value.
func (s *DisassociateCreatedArtifactInput) SetMigrationTaskName(v string) *DisassociateCreatedArtifactInput {
	s.MigrationTaskName = &v
	return s
}

// SetProgressUpdateStream sets the ProgressUpdateStream field's value.
func (s *DisassociateCreatedArtifactInput) SetProgressUpdateStream(v string) *DisassociateCreatedArtifactInput {
	s.ProgressUpdateStream = &v
	return s
}

type DisassociateCreatedArtifactOutput 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 DisassociateCreatedArtifactOutput) 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 DisassociateCreatedArtifactOutput) GoString() string {
	return s.String()
}

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

	// ConfigurationId of the Application Discovery Service resource to be disassociated.
	//
	// ConfigurationId is a required field
	ConfigurationId *string `min:"1" type:"string" required:"true"`

	// Optional boolean flag to indicate whether any effect should take place. Used
	// to test if the caller has permission to make the call.
	DryRun *bool `type:"boolean"`

	// The identifier given to the MigrationTask. Do not store personal data in
	// this field.
	//
	// MigrationTaskName is a required field
	MigrationTaskName *string `min:"1" type:"string" required:"true"`

	// The name of the ProgressUpdateStream.
	//
	// ProgressUpdateStream is a required field
	ProgressUpdateStream *string `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 DisassociateDiscoveredResourceInput) 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 DisassociateDiscoveredResourceInput) GoString() string {
	return s.String()
}

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

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

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

// SetDryRun sets the DryRun field's value.
func (s *DisassociateDiscoveredResourceInput) SetDryRun(v bool) *DisassociateDiscoveredResourceInput {
	s.DryRun = &v
	return s
}

// SetMigrationTaskName sets the MigrationTaskName field's value.
func (s *DisassociateDiscoveredResourceInput) SetMigrationTaskName(v string) *DisassociateDiscoveredResourceInput {
	s.MigrationTaskName = &v
	return s
}

// SetProgressUpdateStream sets the ProgressUpdateStream field's value.
func (s *DisassociateDiscoveredResourceInput) SetProgressUpdateStream(v string) *DisassociateDiscoveredResourceInput {
	s.ProgressUpdateStream = &v
	return s
}

type DisassociateDiscoveredResourceOutput 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 DisassociateDiscoveredResourceOutput) 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 DisassociateDiscoveredResourceOutput) GoString() string {
	return s.String()
}

// Object representing the on-premises resource being migrated.
type DiscoveredResource struct {
	_ struct{} `type:"structure"`

	// The configurationId in Application Discovery Service that uniquely identifies
	// the on-premise resource.
	//
	// ConfigurationId is a required field
	ConfigurationId *string `min:"1" type:"string" required:"true"`

	// A description that can be free-form text to record additional detail about
	// the discovered resource for clarity or later reference.
	Description *string `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 DiscoveredResource) 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 DiscoveredResource) GoString() string {
	return s.String()
}

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

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

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

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

// Exception raised to indicate a successfully authorized action when the DryRun
// flag is set to "true".
type DryRunOperation 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 DryRunOperation) 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 DryRunOperation) GoString() string {
	return s.String()
}

func newErrorDryRunOperation(v protocol.ResponseMetadata) error {
	return &DryRunOperation{
		RespMetadata: v,
	}
}

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

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

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

func (s *DryRunOperation) 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 *DryRunOperation) StatusCode() int {
	return s.RespMetadata.StatusCode
}

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

// 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
}

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

	// Optional boolean flag to indicate whether any effect should take place. Used
	// to test if the caller has permission to make the call.
	DryRun *bool `type:"boolean"`

	// Unique identifier that references the migration task. Do not store personal
	// data in this field.
	//
	// MigrationTaskName is a required field
	MigrationTaskName *string `min:"1" type:"string" required:"true"`

	// The name of the ProgressUpdateStream. >
	//
	// ProgressUpdateStream is a required field
	ProgressUpdateStream *string `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 ImportMigrationTaskInput) 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 ImportMigrationTaskInput) GoString() string {
	return s.String()
}

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

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

// SetDryRun sets the DryRun field's value.
func (s *ImportMigrationTaskInput) SetDryRun(v bool) *ImportMigrationTaskInput {
	s.DryRun = &v
	return s
}

// SetMigrationTaskName sets the MigrationTaskName field's value.
func (s *ImportMigrationTaskInput) SetMigrationTaskName(v string) *ImportMigrationTaskInput {
	s.MigrationTaskName = &v
	return s
}

// SetProgressUpdateStream sets the ProgressUpdateStream field's value.
func (s *ImportMigrationTaskInput) SetProgressUpdateStream(v string) *ImportMigrationTaskInput {
	s.ProgressUpdateStream = &v
	return s
}

type ImportMigrationTaskOutput 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 ImportMigrationTaskOutput) 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 ImportMigrationTaskOutput) GoString() string {
	return s.String()
}

// Exception raised when an internal, configuration, or dependency error is
// encountered.
type InternalServerError 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 InternalServerError) 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 InternalServerError) GoString() string {
	return s.String()
}

func newErrorInternalServerError(v protocol.ResponseMetadata) error {
	return &InternalServerError{
		RespMetadata: v,
	}
}

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

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

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

func (s *InternalServerError) 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 *InternalServerError) StatusCode() int {
	return s.RespMetadata.StatusCode
}

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

// Exception raised when the provided input violates a policy constraint or
// is entered in the wrong format or data type.
type InvalidInputException 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 InvalidInputException) 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 InvalidInputException) GoString() string {
	return s.String()
}

func newErrorInvalidInputException(v protocol.ResponseMetadata) error {
	return &InvalidInputException{
		RespMetadata: v,
	}
}

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

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

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

func (s *InvalidInputException) 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 *InvalidInputException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

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

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

	// The configurationIds from the Application Discovery Service that uniquely
	// identifies your applications.
	ApplicationIds []*string `min:"1" type:"list"`

	// Maximum number of results to be returned per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// If a NextToken was returned by a previous call, there are more results available.
	// To retrieve the next page of results, make the call again using the returned
	// token in NextToken.
	NextToken *string `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 ListApplicationStatesInput) 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 ListApplicationStatesInput) GoString() string {
	return s.String()
}

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

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

// SetApplicationIds sets the ApplicationIds field's value.
func (s *ListApplicationStatesInput) SetApplicationIds(v []*string) *ListApplicationStatesInput {
	s.ApplicationIds = v
	return s
}

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

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

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

	// A list of Applications that exist in Application Discovery Service.
	ApplicationStateList []*ApplicationState `type:"list"`

	// If a NextToken was returned by a previous call, there are more results available.
	// To retrieve the next page of results, make the call again using the returned
	// token in NextToken.
	NextToken *string `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 ListApplicationStatesOutput) 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 ListApplicationStatesOutput) GoString() string {
	return s.String()
}

// SetApplicationStateList sets the ApplicationStateList field's value.
func (s *ListApplicationStatesOutput) SetApplicationStateList(v []*ApplicationState) *ListApplicationStatesOutput {
	s.ApplicationStateList = v
	return s
}

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

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

	// Maximum number of results to be returned per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// Unique identifier that references the migration task. Do not store personal
	// data in this field.
	//
	// MigrationTaskName is a required field
	MigrationTaskName *string `min:"1" type:"string" required:"true"`

	// If a NextToken was returned by a previous call, there are more results available.
	// To retrieve the next page of results, make the call again using the returned
	// token in NextToken.
	NextToken *string `type:"string"`

	// The name of the ProgressUpdateStream.
	//
	// ProgressUpdateStream is a required field
	ProgressUpdateStream *string `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 ListCreatedArtifactsInput) 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 ListCreatedArtifactsInput) GoString() string {
	return s.String()
}

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

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

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

// SetMigrationTaskName sets the MigrationTaskName field's value.
func (s *ListCreatedArtifactsInput) SetMigrationTaskName(v string) *ListCreatedArtifactsInput {
	s.MigrationTaskName = &v
	return s
}

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

// SetProgressUpdateStream sets the ProgressUpdateStream field's value.
func (s *ListCreatedArtifactsInput) SetProgressUpdateStream(v string) *ListCreatedArtifactsInput {
	s.ProgressUpdateStream = &v
	return s
}

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

	// List of created artifacts up to the maximum number of results specified in
	// the request.
	CreatedArtifactList []*CreatedArtifact `type:"list"`

	// If there are more created artifacts than the max result, return the next
	// token to be passed to the next call as a bookmark of where to start from.
	NextToken *string `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 ListCreatedArtifactsOutput) 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 ListCreatedArtifactsOutput) GoString() string {
	return s.String()
}

// SetCreatedArtifactList sets the CreatedArtifactList field's value.
func (s *ListCreatedArtifactsOutput) SetCreatedArtifactList(v []*CreatedArtifact) *ListCreatedArtifactsOutput {
	s.CreatedArtifactList = v
	return s
}

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

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

	// The maximum number of results returned per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// The name of the MigrationTask. Do not store personal data in this field.
	//
	// MigrationTaskName is a required field
	MigrationTaskName *string `min:"1" type:"string" required:"true"`

	// If a NextToken was returned by a previous call, there are more results available.
	// To retrieve the next page of results, make the call again using the returned
	// token in NextToken.
	NextToken *string `type:"string"`

	// The name of the ProgressUpdateStream.
	//
	// ProgressUpdateStream is a required field
	ProgressUpdateStream *string `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 ListDiscoveredResourcesInput) 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 ListDiscoveredResourcesInput) GoString() string {
	return s.String()
}

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

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

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

// SetMigrationTaskName sets the MigrationTaskName field's value.
func (s *ListDiscoveredResourcesInput) SetMigrationTaskName(v string) *ListDiscoveredResourcesInput {
	s.MigrationTaskName = &v
	return s
}

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

// SetProgressUpdateStream sets the ProgressUpdateStream field's value.
func (s *ListDiscoveredResourcesInput) SetProgressUpdateStream(v string) *ListDiscoveredResourcesInput {
	s.ProgressUpdateStream = &v
	return s
}

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

	// Returned list of discovered resources associated with the given MigrationTask.
	DiscoveredResourceList []*DiscoveredResource `type:"list"`

	// If there are more discovered resources than the max result, return the next
	// token to be passed to the next call as a bookmark of where to start from.
	NextToken *string `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 ListDiscoveredResourcesOutput) 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 ListDiscoveredResourcesOutput) GoString() string {
	return s.String()
}

// SetDiscoveredResourceList sets the DiscoveredResourceList field's value.
func (s *ListDiscoveredResourcesOutput) SetDiscoveredResourceList(v []*DiscoveredResource) *ListDiscoveredResourcesOutput {
	s.DiscoveredResourceList = v
	return s
}

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

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

	// Value to specify how many results are returned per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// If a NextToken was returned by a previous call, there are more results available.
	// To retrieve the next page of results, make the call again using the returned
	// token in NextToken.
	NextToken *string `type:"string"`

	// Filter migration tasks by discovered resource name.
	ResourceName *string `min:"1" 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 ListMigrationTasksInput) 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 ListMigrationTasksInput) GoString() string {
	return s.String()
}

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

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

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

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

// SetResourceName sets the ResourceName field's value.
func (s *ListMigrationTasksInput) SetResourceName(v string) *ListMigrationTasksInput {
	s.ResourceName = &v
	return s
}

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

	// Lists the migration task's summary which includes: MigrationTaskName, ProgressPercent,
	// ProgressUpdateStream, Status, and the UpdateDateTime for each task.
	MigrationTaskSummaryList []*MigrationTaskSummary `type:"list"`

	// If there are more migration tasks than the max result, return the next token
	// to be passed to the next call as a bookmark of where to start from.
	NextToken *string `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 ListMigrationTasksOutput) 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 ListMigrationTasksOutput) GoString() string {
	return s.String()
}

// SetMigrationTaskSummaryList sets the MigrationTaskSummaryList field's value.
func (s *ListMigrationTasksOutput) SetMigrationTaskSummaryList(v []*MigrationTaskSummary) *ListMigrationTasksOutput {
	s.MigrationTaskSummaryList = v
	return s
}

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

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

	// Filter to limit the maximum number of results to list per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// If a NextToken was returned by a previous call, there are more results available.
	// To retrieve the next page of results, make the call again using the returned
	// token in NextToken.
	NextToken *string `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 ListProgressUpdateStreamsInput) 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 ListProgressUpdateStreamsInput) GoString() string {
	return s.String()
}

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

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

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

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

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

	// If there are more streams created than the max result, return the next token
	// to be passed to the next call as a bookmark of where to start from.
	NextToken *string `type:"string"`

	// List of progress update streams up to the max number of results passed in
	// the input.
	ProgressUpdateStreamSummaryList []*ProgressUpdateStreamSummary `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 ListProgressUpdateStreamsOutput) 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 ListProgressUpdateStreamsOutput) GoString() string {
	return s.String()
}

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

// SetProgressUpdateStreamSummaryList sets the ProgressUpdateStreamSummaryList field's value.
func (s *ListProgressUpdateStreamsOutput) SetProgressUpdateStreamSummaryList(v []*ProgressUpdateStreamSummary) *ListProgressUpdateStreamsOutput {
	s.ProgressUpdateStreamSummaryList = v
	return s
}

// Represents a migration task in a migration tool.
type MigrationTask struct {
	_ struct{} `type:"structure"`

	// Unique identifier that references the migration task. Do not store personal
	// data in this field.
	MigrationTaskName *string `min:"1" type:"string"`

	// A name that identifies the vendor of the migration tool being used.
	ProgressUpdateStream *string `min:"1" type:"string"`

	// Information about the resource that is being migrated. This data will be
	// used to map the task to a resource in the Application Discovery Service repository.
	ResourceAttributeList []*ResourceAttribute `type:"list"`

	// Task object encapsulating task information.
	Task *Task `type:"structure"`

	// The timestamp when the task was gathered.
	UpdateDateTime *time.Time `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 MigrationTask) 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 MigrationTask) GoString() string {
	return s.String()
}

// SetMigrationTaskName sets the MigrationTaskName field's value.
func (s *MigrationTask) SetMigrationTaskName(v string) *MigrationTask {
	s.MigrationTaskName = &v
	return s
}

// SetProgressUpdateStream sets the ProgressUpdateStream field's value.
func (s *MigrationTask) SetProgressUpdateStream(v string) *MigrationTask {
	s.ProgressUpdateStream = &v
	return s
}

// SetResourceAttributeList sets the ResourceAttributeList field's value.
func (s *MigrationTask) SetResourceAttributeList(v []*ResourceAttribute) *MigrationTask {
	s.ResourceAttributeList = v
	return s
}

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

// SetUpdateDateTime sets the UpdateDateTime field's value.
func (s *MigrationTask) SetUpdateDateTime(v time.Time) *MigrationTask {
	s.UpdateDateTime = &v
	return s
}

// MigrationTaskSummary includes MigrationTaskName, ProgressPercent, ProgressUpdateStream,
// Status, and UpdateDateTime for each task.
type MigrationTaskSummary struct {
	_ struct{} `type:"structure"`

	// Unique identifier that references the migration task. Do not store personal
	// data in this field.
	MigrationTaskName *string `min:"1" type:"string"`

	// Indication of the percentage completion of the task.
	ProgressPercent *int64 `type:"integer"`

	// An AWS resource used for access control. It should uniquely identify the
	// migration tool as it is used for all updates made by the tool.
	ProgressUpdateStream *string `min:"1" type:"string"`

	// Status of the task.
	Status *string `type:"string" enum:"Status"`

	// Detail information of what is being done within the overall status state.
	StatusDetail *string `type:"string"`

	// The timestamp when the task was gathered.
	UpdateDateTime *time.Time `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 MigrationTaskSummary) 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 MigrationTaskSummary) GoString() string {
	return s.String()
}

// SetMigrationTaskName sets the MigrationTaskName field's value.
func (s *MigrationTaskSummary) SetMigrationTaskName(v string) *MigrationTaskSummary {
	s.MigrationTaskName = &v
	return s
}

// SetProgressPercent sets the ProgressPercent field's value.
func (s *MigrationTaskSummary) SetProgressPercent(v int64) *MigrationTaskSummary {
	s.ProgressPercent = &v
	return s
}

// SetProgressUpdateStream sets the ProgressUpdateStream field's value.
func (s *MigrationTaskSummary) SetProgressUpdateStream(v string) *MigrationTaskSummary {
	s.ProgressUpdateStream = &v
	return s
}

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

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

// SetUpdateDateTime sets the UpdateDateTime field's value.
func (s *MigrationTaskSummary) SetUpdateDateTime(v time.Time) *MigrationTaskSummary {
	s.UpdateDateTime = &v
	return s
}

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

	// The configurationId in Application Discovery Service that uniquely identifies
	// the grouped application.
	//
	// ApplicationId is a required field
	ApplicationId *string `min:"1" type:"string" required:"true"`

	// Optional boolean flag to indicate whether any effect should take place. Used
	// to test if the caller has permission to make the call.
	DryRun *bool `type:"boolean"`

	// Status of the application - Not Started, In-Progress, Complete.
	//
	// Status is a required field
	Status *string `type:"string" required:"true" enum:"ApplicationStatus"`

	// The timestamp when the application state changed.
	UpdateDateTime *time.Time `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 NotifyApplicationStateInput) 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 NotifyApplicationStateInput) GoString() string {
	return s.String()
}

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

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

// SetApplicationId sets the ApplicationId field's value.
func (s *NotifyApplicationStateInput) SetApplicationId(v string) *NotifyApplicationStateInput {
	s.ApplicationId = &v
	return s
}

// SetDryRun sets the DryRun field's value.
func (s *NotifyApplicationStateInput) SetDryRun(v bool) *NotifyApplicationStateInput {
	s.DryRun = &v
	return s
}

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

// SetUpdateDateTime sets the UpdateDateTime field's value.
func (s *NotifyApplicationStateInput) SetUpdateDateTime(v time.Time) *NotifyApplicationStateInput {
	s.UpdateDateTime = &v
	return s
}

type NotifyApplicationStateOutput 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 NotifyApplicationStateOutput) 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 NotifyApplicationStateOutput) GoString() string {
	return s.String()
}

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

	// Optional boolean flag to indicate whether any effect should take place. Used
	// to test if the caller has permission to make the call.
	DryRun *bool `type:"boolean"`

	// Unique identifier that references the migration task. Do not store personal
	// data in this field.
	//
	// MigrationTaskName is a required field
	MigrationTaskName *string `min:"1" type:"string" required:"true"`

	// Number of seconds after the UpdateDateTime within which the Migration Hub
	// can expect an update. If Migration Hub does not receive an update within
	// the specified interval, then the migration task will be considered stale.
	//
	// NextUpdateSeconds is a required field
	NextUpdateSeconds *int64 `type:"integer" required:"true"`

	// The name of the ProgressUpdateStream.
	//
	// ProgressUpdateStream is a required field
	ProgressUpdateStream *string `min:"1" type:"string" required:"true"`

	// Information about the task's progress and status.
	//
	// Task is a required field
	Task *Task `type:"structure" required:"true"`

	// The timestamp when the task was gathered.
	//
	// UpdateDateTime is a required field
	UpdateDateTime *time.Time `type:"timestamp" 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 NotifyMigrationTaskStateInput) 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 NotifyMigrationTaskStateInput) GoString() string {
	return s.String()
}

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

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

// SetDryRun sets the DryRun field's value.
func (s *NotifyMigrationTaskStateInput) SetDryRun(v bool) *NotifyMigrationTaskStateInput {
	s.DryRun = &v
	return s
}

// SetMigrationTaskName sets the MigrationTaskName field's value.
func (s *NotifyMigrationTaskStateInput) SetMigrationTaskName(v string) *NotifyMigrationTaskStateInput {
	s.MigrationTaskName = &v
	return s
}

// SetNextUpdateSeconds sets the NextUpdateSeconds field's value.
func (s *NotifyMigrationTaskStateInput) SetNextUpdateSeconds(v int64) *NotifyMigrationTaskStateInput {
	s.NextUpdateSeconds = &v
	return s
}

// SetProgressUpdateStream sets the ProgressUpdateStream field's value.
func (s *NotifyMigrationTaskStateInput) SetProgressUpdateStream(v string) *NotifyMigrationTaskStateInput {
	s.ProgressUpdateStream = &v
	return s
}

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

// SetUpdateDateTime sets the UpdateDateTime field's value.
func (s *NotifyMigrationTaskStateInput) SetUpdateDateTime(v time.Time) *NotifyMigrationTaskStateInput {
	s.UpdateDateTime = &v
	return s
}

type NotifyMigrationTaskStateOutput 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 NotifyMigrationTaskStateOutput) 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 NotifyMigrationTaskStateOutput) GoString() string {
	return s.String()
}

// Exception raised when there are problems accessing Application Discovery
// Service (Application Discovery Service); most likely due to a misconfigured
// policy or the migrationhub-discovery role is missing or not configured correctly.
type PolicyErrorException 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 PolicyErrorException) 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 PolicyErrorException) GoString() string {
	return s.String()
}

func newErrorPolicyErrorException(v protocol.ResponseMetadata) error {
	return &PolicyErrorException{
		RespMetadata: v,
	}
}

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

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

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

func (s *PolicyErrorException) 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 *PolicyErrorException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

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

// Summary of the AWS resource used for access control that is implicitly linked
// to your AWS account.
type ProgressUpdateStreamSummary struct {
	_ struct{} `type:"structure"`

	// The name of the ProgressUpdateStream. Do not store personal data in this
	// field.
	ProgressUpdateStreamName *string `min:"1" 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 ProgressUpdateStreamSummary) 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 ProgressUpdateStreamSummary) GoString() string {
	return s.String()
}

// SetProgressUpdateStreamName sets the ProgressUpdateStreamName field's value.
func (s *ProgressUpdateStreamSummary) SetProgressUpdateStreamName(v string) *ProgressUpdateStreamSummary {
	s.ProgressUpdateStreamName = &v
	return s
}

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

	// Optional boolean flag to indicate whether any effect should take place. Used
	// to test if the caller has permission to make the call.
	DryRun *bool `type:"boolean"`

	// Unique identifier that references the migration task. Do not store personal
	// data in this field.
	//
	// MigrationTaskName is a required field
	MigrationTaskName *string `min:"1" type:"string" required:"true"`

	// The name of the ProgressUpdateStream.
	//
	// ProgressUpdateStream is a required field
	ProgressUpdateStream *string `min:"1" type:"string" required:"true"`

	// Information about the resource that is being migrated. This data will be
	// used to map the task to a resource in the Application Discovery Service repository.
	//
	// Takes the object array of ResourceAttribute where the Type field is reserved
	// for the following values: IPV4_ADDRESS | IPV6_ADDRESS | MAC_ADDRESS | FQDN
	// | VM_MANAGER_ID | VM_MANAGED_OBJECT_REFERENCE | VM_NAME | VM_PATH | BIOS_ID
	// | MOTHERBOARD_SERIAL_NUMBER where the identifying value can be a string up
	// to 256 characters.
	//
	//    * If any "VM" related value is set for a ResourceAttribute object, it
	//    is required that VM_MANAGER_ID, as a minimum, is always set. If VM_MANAGER_ID
	//    is not set, then all "VM" fields will be discarded and "VM" fields will
	//    not be used for matching the migration task to a server in Application
	//    Discovery Service repository. See the Example (https://docs.aws.amazon.com/migrationhub/latest/ug/API_PutResourceAttributes.html#API_PutResourceAttributes_Examples)
	//    section below for a use case of specifying "VM" related values.
	//
	//    * If a server you are trying to match has multiple IP or MAC addresses,
	//    you should provide as many as you know in separate type/value pairs passed
	//    to the ResourceAttributeList parameter to maximize the chances of matching.
	//
	// ResourceAttributeList is a required field
	ResourceAttributeList []*ResourceAttribute `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 PutResourceAttributesInput) 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 PutResourceAttributesInput) GoString() string {
	return s.String()
}

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

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

// SetDryRun sets the DryRun field's value.
func (s *PutResourceAttributesInput) SetDryRun(v bool) *PutResourceAttributesInput {
	s.DryRun = &v
	return s
}

// SetMigrationTaskName sets the MigrationTaskName field's value.
func (s *PutResourceAttributesInput) SetMigrationTaskName(v string) *PutResourceAttributesInput {
	s.MigrationTaskName = &v
	return s
}

// SetProgressUpdateStream sets the ProgressUpdateStream field's value.
func (s *PutResourceAttributesInput) SetProgressUpdateStream(v string) *PutResourceAttributesInput {
	s.ProgressUpdateStream = &v
	return s
}

// SetResourceAttributeList sets the ResourceAttributeList field's value.
func (s *PutResourceAttributesInput) SetResourceAttributeList(v []*ResourceAttribute) *PutResourceAttributesInput {
	s.ResourceAttributeList = v
	return s
}

type PutResourceAttributesOutput 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 PutResourceAttributesOutput) 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 PutResourceAttributesOutput) GoString() string {
	return s.String()
}

// Attribute associated with a resource.
//
// Note the corresponding format required per type listed below:
//
// # IPV4
//
// x.x.x.x
//
// where x is an integer in the range [0,255]
//
// # IPV6
//
// y : y : y : y : y : y : y : y
//
// where y is a hexadecimal between 0 and FFFF. [0, FFFF]
//
// MAC_ADDRESS
//
// ^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$
//
// # FQDN
//
// ^[^<>{}\\\\/?,=\\p{Cntrl}]{1,256}$
type ResourceAttribute struct {
	_ struct{} `type:"structure"`

	// Type of resource.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"ResourceAttributeType"`

	// Value of the resource type.
	//
	// Value is a required field
	Value *string `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 ResourceAttribute) 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 ResourceAttribute) GoString() string {
	return s.String()
}

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

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

// SetType sets the Type field's value.
func (s *ResourceAttribute) SetType(v string) *ResourceAttribute {
	s.Type = &v
	return s
}

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

// Exception raised when the request references a resource (Application Discovery
// Service configuration, update stream, migration task, etc.) that does not
// exist in Application Discovery Service (Application Discovery Service) or
// in Migration Hub's repository.
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
}

// Exception raised when there is an internal, configuration, or dependency
// error encountered.
type ServiceUnavailableException 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 ServiceUnavailableException) 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 ServiceUnavailableException) GoString() string {
	return s.String()
}

func newErrorServiceUnavailableException(v protocol.ResponseMetadata) error {
	return &ServiceUnavailableException{
		RespMetadata: v,
	}
}

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

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

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

func (s *ServiceUnavailableException) 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 *ServiceUnavailableException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

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

// Task object encapsulating task information.
type Task struct {
	_ struct{} `type:"structure"`

	// Indication of the percentage completion of the task.
	ProgressPercent *int64 `type:"integer"`

	// Status of the task - Not Started, In-Progress, Complete.
	//
	// Status is a required field
	Status *string `type:"string" required:"true" enum:"Status"`

	// Details of task status as notified by a migration tool. A tool might use
	// this field to provide clarifying information about the status that is unique
	// to that tool or that explains an error state.
	StatusDetail *string `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 Task) 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 Task) GoString() string {
	return s.String()
}

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

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

// SetProgressPercent sets the ProgressPercent field's value.
func (s *Task) SetProgressPercent(v int64) *Task {
	s.ProgressPercent = &v
	return s
}

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

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

// The request was denied due to request throttling.
type ThrottlingException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message that provides information about the exception.
	Message_ *string `locationName:"Message" type:"string"`

	// The number of seconds the caller should wait before retrying.
	RetryAfterSeconds *int64 `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 ThrottlingException) 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 ThrottlingException) GoString() string {
	return s.String()
}

func newErrorThrottlingException(v protocol.ResponseMetadata) error {
	return &ThrottlingException{
		RespMetadata: v,
	}
}

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

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

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

func (s *ThrottlingException) Error() string {
	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
}

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

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

// Exception raised to indicate a request was not authorized when the DryRun
// flag is set to "true".
type UnauthorizedOperation 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 UnauthorizedOperation) 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 UnauthorizedOperation) GoString() string {
	return s.String()
}

func newErrorUnauthorizedOperation(v protocol.ResponseMetadata) error {
	return &UnauthorizedOperation{
		RespMetadata: v,
	}
}

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

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

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

func (s *UnauthorizedOperation) 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 *UnauthorizedOperation) StatusCode() int {
	return s.RespMetadata.StatusCode
}

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

const (
	// ApplicationStatusNotStarted is a ApplicationStatus enum value
	ApplicationStatusNotStarted = "NOT_STARTED"

	// ApplicationStatusInProgress is a ApplicationStatus enum value
	ApplicationStatusInProgress = "IN_PROGRESS"

	// ApplicationStatusCompleted is a ApplicationStatus enum value
	ApplicationStatusCompleted = "COMPLETED"
)

// ApplicationStatus_Values returns all elements of the ApplicationStatus enum
func ApplicationStatus_Values() []string {
	return []string{
		ApplicationStatusNotStarted,
		ApplicationStatusInProgress,
		ApplicationStatusCompleted,
	}
}

const (
	// ResourceAttributeTypeIpv4Address is a ResourceAttributeType enum value
	ResourceAttributeTypeIpv4Address = "IPV4_ADDRESS"

	// ResourceAttributeTypeIpv6Address is a ResourceAttributeType enum value
	ResourceAttributeTypeIpv6Address = "IPV6_ADDRESS"

	// ResourceAttributeTypeMacAddress is a ResourceAttributeType enum value
	ResourceAttributeTypeMacAddress = "MAC_ADDRESS"

	// ResourceAttributeTypeFqdn is a ResourceAttributeType enum value
	ResourceAttributeTypeFqdn = "FQDN"

	// ResourceAttributeTypeVmManagerId is a ResourceAttributeType enum value
	ResourceAttributeTypeVmManagerId = "VM_MANAGER_ID"

	// ResourceAttributeTypeVmManagedObjectReference is a ResourceAttributeType enum value
	ResourceAttributeTypeVmManagedObjectReference = "VM_MANAGED_OBJECT_REFERENCE"

	// ResourceAttributeTypeVmName is a ResourceAttributeType enum value
	ResourceAttributeTypeVmName = "VM_NAME"

	// ResourceAttributeTypeVmPath is a ResourceAttributeType enum value
	ResourceAttributeTypeVmPath = "VM_PATH"

	// ResourceAttributeTypeBiosId is a ResourceAttributeType enum value
	ResourceAttributeTypeBiosId = "BIOS_ID"

	// ResourceAttributeTypeMotherboardSerialNumber is a ResourceAttributeType enum value
	ResourceAttributeTypeMotherboardSerialNumber = "MOTHERBOARD_SERIAL_NUMBER"
)

// ResourceAttributeType_Values returns all elements of the ResourceAttributeType enum
func ResourceAttributeType_Values() []string {
	return []string{
		ResourceAttributeTypeIpv4Address,
		ResourceAttributeTypeIpv6Address,
		ResourceAttributeTypeMacAddress,
		ResourceAttributeTypeFqdn,
		ResourceAttributeTypeVmManagerId,
		ResourceAttributeTypeVmManagedObjectReference,
		ResourceAttributeTypeVmName,
		ResourceAttributeTypeVmPath,
		ResourceAttributeTypeBiosId,
		ResourceAttributeTypeMotherboardSerialNumber,
	}
}

const (
	// StatusNotStarted is a Status enum value
	StatusNotStarted = "NOT_STARTED"

	// StatusInProgress is a Status enum value
	StatusInProgress = "IN_PROGRESS"

	// StatusFailed is a Status enum value
	StatusFailed = "FAILED"

	// StatusCompleted is a Status enum value
	StatusCompleted = "COMPLETED"
)

// Status_Values returns all elements of the Status enum
func Status_Values() []string {
	return []string{
		StatusNotStarted,
		StatusInProgress,
		StatusFailed,
		StatusCompleted,
	}
}
© 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