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

package imagebuilder

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/restjson"
)

const opCancelImageCreation = "CancelImageCreation"

// CancelImageCreationRequest generates a "aws/request.Request" representing the
// client's request for the CancelImageCreation 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 CancelImageCreation for more information on using the CancelImageCreation
// 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 CancelImageCreationRequest method.
//	req, resp := client.CancelImageCreationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/CancelImageCreation
func (c *Imagebuilder) CancelImageCreationRequest(input *CancelImageCreationInput) (req *request.Request, output *CancelImageCreationOutput) {
	op := &request.Operation{
		Name:       opCancelImageCreation,
		HTTPMethod: "PUT",
		HTTPPath:   "/CancelImageCreation",
	}

	if input == nil {
		input = &CancelImageCreationInput{}
	}

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

// CancelImageCreation API operation for EC2 Image Builder.
//
// CancelImageCreation cancels the creation of Image. This operation can only
// be used on images in a non-terminal state.
//
// 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 EC2 Image Builder's
// API operation CancelImageCreation for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - IdempotentParameterMismatchException
//     You have specified a client token for an operation using parameter values
//     that differ from a previous request that used the same client token.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - ResourceInUseException
//     The resource that you are trying to operate on is currently in use. Review
//     the message details and retry later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/CancelImageCreation
func (c *Imagebuilder) CancelImageCreation(input *CancelImageCreationInput) (*CancelImageCreationOutput, error) {
	req, out := c.CancelImageCreationRequest(input)
	return out, req.Send()
}

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

const opCancelLifecycleExecution = "CancelLifecycleExecution"

// CancelLifecycleExecutionRequest generates a "aws/request.Request" representing the
// client's request for the CancelLifecycleExecution 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 CancelLifecycleExecution for more information on using the CancelLifecycleExecution
// 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 CancelLifecycleExecutionRequest method.
//	req, resp := client.CancelLifecycleExecutionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/CancelLifecycleExecution
func (c *Imagebuilder) CancelLifecycleExecutionRequest(input *CancelLifecycleExecutionInput) (req *request.Request, output *CancelLifecycleExecutionOutput) {
	op := &request.Operation{
		Name:       opCancelLifecycleExecution,
		HTTPMethod: "PUT",
		HTTPPath:   "/CancelLifecycleExecution",
	}

	if input == nil {
		input = &CancelLifecycleExecutionInput{}
	}

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

// CancelLifecycleExecution API operation for EC2 Image Builder.
//
// Cancel a specific image lifecycle policy runtime instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for EC2 Image Builder's
// API operation CancelLifecycleExecution for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - IdempotentParameterMismatchException
//     You have specified a client token for an operation using parameter values
//     that differ from a previous request that used the same client token.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - ResourceInUseException
//     The resource that you are trying to operate on is currently in use. Review
//     the message details and retry later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/CancelLifecycleExecution
func (c *Imagebuilder) CancelLifecycleExecution(input *CancelLifecycleExecutionInput) (*CancelLifecycleExecutionOutput, error) {
	req, out := c.CancelLifecycleExecutionRequest(input)
	return out, req.Send()
}

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

const opCreateComponent = "CreateComponent"

// CreateComponentRequest generates a "aws/request.Request" representing the
// client's request for the CreateComponent 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 CreateComponent for more information on using the CreateComponent
// 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 CreateComponentRequest method.
//	req, resp := client.CreateComponentRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/CreateComponent
func (c *Imagebuilder) CreateComponentRequest(input *CreateComponentInput) (req *request.Request, output *CreateComponentOutput) {
	op := &request.Operation{
		Name:       opCreateComponent,
		HTTPMethod: "PUT",
		HTTPPath:   "/CreateComponent",
	}

	if input == nil {
		input = &CreateComponentInput{}
	}

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

// CreateComponent API operation for EC2 Image Builder.
//
// Creates a new component that can be used to build, validate, test, and assess
// your image. The component is based on a YAML document that you specify using
// exactly one of the following methods:
//
//   - Inline, using the data property in the request body.
//
//   - A URL that points to a YAML document file stored in Amazon S3, using
//     the uri property in the request body.
//
// 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 EC2 Image Builder's
// API operation CreateComponent for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - IdempotentParameterMismatchException
//     You have specified a client token for an operation using parameter values
//     that differ from a previous request that used the same client token.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - InvalidVersionNumberException
//     Your version number is out of bounds or does not follow the required syntax.
//
//   - ResourceInUseException
//     The resource that you are trying to operate on is currently in use. Review
//     the message details and retry later.
//
//   - InvalidParameterCombinationException
//     You have specified two or more mutually exclusive parameters. Review the
//     error message for details.
//
//   - ServiceQuotaExceededException
//     You have exceeded the number of permitted resources or operations for this
//     service. For service quotas, see EC2 Image Builder endpoints and quotas (https://docs.aws.amazon.com/general/latest/gr/imagebuilder.html#limits_imagebuilder).
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/CreateComponent
func (c *Imagebuilder) CreateComponent(input *CreateComponentInput) (*CreateComponentOutput, error) {
	req, out := c.CreateComponentRequest(input)
	return out, req.Send()
}

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

const opCreateContainerRecipe = "CreateContainerRecipe"

// CreateContainerRecipeRequest generates a "aws/request.Request" representing the
// client's request for the CreateContainerRecipe 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 CreateContainerRecipe for more information on using the CreateContainerRecipe
// 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 CreateContainerRecipeRequest method.
//	req, resp := client.CreateContainerRecipeRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/CreateContainerRecipe
func (c *Imagebuilder) CreateContainerRecipeRequest(input *CreateContainerRecipeInput) (req *request.Request, output *CreateContainerRecipeOutput) {
	op := &request.Operation{
		Name:       opCreateContainerRecipe,
		HTTPMethod: "PUT",
		HTTPPath:   "/CreateContainerRecipe",
	}

	if input == nil {
		input = &CreateContainerRecipeInput{}
	}

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

// CreateContainerRecipe API operation for EC2 Image Builder.
//
// Creates a new container recipe. Container recipes define how images are configured,
// tested, and assessed.
//
// 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 EC2 Image Builder's
// API operation CreateContainerRecipe for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - IdempotentParameterMismatchException
//     You have specified a client token for an operation using parameter values
//     that differ from a previous request that used the same client token.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - InvalidVersionNumberException
//     Your version number is out of bounds or does not follow the required syntax.
//
//   - ResourceInUseException
//     The resource that you are trying to operate on is currently in use. Review
//     the message details and retry later.
//
//   - ResourceAlreadyExistsException
//     The resource that you are trying to create already exists.
//
//   - ServiceQuotaExceededException
//     You have exceeded the number of permitted resources or operations for this
//     service. For service quotas, see EC2 Image Builder endpoints and quotas (https://docs.aws.amazon.com/general/latest/gr/imagebuilder.html#limits_imagebuilder).
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/CreateContainerRecipe
func (c *Imagebuilder) CreateContainerRecipe(input *CreateContainerRecipeInput) (*CreateContainerRecipeOutput, error) {
	req, out := c.CreateContainerRecipeRequest(input)
	return out, req.Send()
}

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

const opCreateDistributionConfiguration = "CreateDistributionConfiguration"

// CreateDistributionConfigurationRequest generates a "aws/request.Request" representing the
// client's request for the CreateDistributionConfiguration 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 CreateDistributionConfiguration for more information on using the CreateDistributionConfiguration
// 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 CreateDistributionConfigurationRequest method.
//	req, resp := client.CreateDistributionConfigurationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/CreateDistributionConfiguration
func (c *Imagebuilder) CreateDistributionConfigurationRequest(input *CreateDistributionConfigurationInput) (req *request.Request, output *CreateDistributionConfigurationOutput) {
	op := &request.Operation{
		Name:       opCreateDistributionConfiguration,
		HTTPMethod: "PUT",
		HTTPPath:   "/CreateDistributionConfiguration",
	}

	if input == nil {
		input = &CreateDistributionConfigurationInput{}
	}

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

// CreateDistributionConfiguration API operation for EC2 Image Builder.
//
// Creates a new distribution configuration. Distribution configurations define
// and configure the outputs of your pipeline.
//
// 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 EC2 Image Builder's
// API operation CreateDistributionConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - IdempotentParameterMismatchException
//     You have specified a client token for an operation using parameter values
//     that differ from a previous request that used the same client token.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - ResourceInUseException
//     The resource that you are trying to operate on is currently in use. Review
//     the message details and retry later.
//
//   - ResourceAlreadyExistsException
//     The resource that you are trying to create already exists.
//
//   - InvalidParameterCombinationException
//     You have specified two or more mutually exclusive parameters. Review the
//     error message for details.
//
//   - ServiceQuotaExceededException
//     You have exceeded the number of permitted resources or operations for this
//     service. For service quotas, see EC2 Image Builder endpoints and quotas (https://docs.aws.amazon.com/general/latest/gr/imagebuilder.html#limits_imagebuilder).
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/CreateDistributionConfiguration
func (c *Imagebuilder) CreateDistributionConfiguration(input *CreateDistributionConfigurationInput) (*CreateDistributionConfigurationOutput, error) {
	req, out := c.CreateDistributionConfigurationRequest(input)
	return out, req.Send()
}

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

const opCreateImage = "CreateImage"

// CreateImageRequest generates a "aws/request.Request" representing the
// client's request for the CreateImage 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 CreateImage for more information on using the CreateImage
// 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 CreateImageRequest method.
//	req, resp := client.CreateImageRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/CreateImage
func (c *Imagebuilder) CreateImageRequest(input *CreateImageInput) (req *request.Request, output *CreateImageOutput) {
	op := &request.Operation{
		Name:       opCreateImage,
		HTTPMethod: "PUT",
		HTTPPath:   "/CreateImage",
	}

	if input == nil {
		input = &CreateImageInput{}
	}

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

// CreateImage API operation for EC2 Image Builder.
//
// Creates a new image. This request will create a new image along with all
// of the configured output resources defined in the distribution configuration.
// You must specify exactly one recipe for your image, using either a ContainerRecipeArn
// or an ImageRecipeArn.
//
// 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 EC2 Image Builder's
// API operation CreateImage for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - IdempotentParameterMismatchException
//     You have specified a client token for an operation using parameter values
//     that differ from a previous request that used the same client token.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - ResourceInUseException
//     The resource that you are trying to operate on is currently in use. Review
//     the message details and retry later.
//
//   - ServiceQuotaExceededException
//     You have exceeded the number of permitted resources or operations for this
//     service. For service quotas, see EC2 Image Builder endpoints and quotas (https://docs.aws.amazon.com/general/latest/gr/imagebuilder.html#limits_imagebuilder).
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/CreateImage
func (c *Imagebuilder) CreateImage(input *CreateImageInput) (*CreateImageOutput, error) {
	req, out := c.CreateImageRequest(input)
	return out, req.Send()
}

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

const opCreateImagePipeline = "CreateImagePipeline"

// CreateImagePipelineRequest generates a "aws/request.Request" representing the
// client's request for the CreateImagePipeline 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 CreateImagePipeline for more information on using the CreateImagePipeline
// 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 CreateImagePipelineRequest method.
//	req, resp := client.CreateImagePipelineRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/CreateImagePipeline
func (c *Imagebuilder) CreateImagePipelineRequest(input *CreateImagePipelineInput) (req *request.Request, output *CreateImagePipelineOutput) {
	op := &request.Operation{
		Name:       opCreateImagePipeline,
		HTTPMethod: "PUT",
		HTTPPath:   "/CreateImagePipeline",
	}

	if input == nil {
		input = &CreateImagePipelineInput{}
	}

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

// CreateImagePipeline API operation for EC2 Image Builder.
//
// Creates a new image pipeline. Image pipelines enable you to automate the
// creation and distribution of images.
//
// 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 EC2 Image Builder's
// API operation CreateImagePipeline for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - IdempotentParameterMismatchException
//     You have specified a client token for an operation using parameter values
//     that differ from a previous request that used the same client token.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - ResourceInUseException
//     The resource that you are trying to operate on is currently in use. Review
//     the message details and retry later.
//
//   - ResourceAlreadyExistsException
//     The resource that you are trying to create already exists.
//
//   - ServiceQuotaExceededException
//     You have exceeded the number of permitted resources or operations for this
//     service. For service quotas, see EC2 Image Builder endpoints and quotas (https://docs.aws.amazon.com/general/latest/gr/imagebuilder.html#limits_imagebuilder).
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/CreateImagePipeline
func (c *Imagebuilder) CreateImagePipeline(input *CreateImagePipelineInput) (*CreateImagePipelineOutput, error) {
	req, out := c.CreateImagePipelineRequest(input)
	return out, req.Send()
}

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

const opCreateImageRecipe = "CreateImageRecipe"

// CreateImageRecipeRequest generates a "aws/request.Request" representing the
// client's request for the CreateImageRecipe 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 CreateImageRecipe for more information on using the CreateImageRecipe
// 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 CreateImageRecipeRequest method.
//	req, resp := client.CreateImageRecipeRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/CreateImageRecipe
func (c *Imagebuilder) CreateImageRecipeRequest(input *CreateImageRecipeInput) (req *request.Request, output *CreateImageRecipeOutput) {
	op := &request.Operation{
		Name:       opCreateImageRecipe,
		HTTPMethod: "PUT",
		HTTPPath:   "/CreateImageRecipe",
	}

	if input == nil {
		input = &CreateImageRecipeInput{}
	}

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

// CreateImageRecipe API operation for EC2 Image Builder.
//
// Creates a new image recipe. Image recipes define how images are configured,
// tested, and assessed.
//
// 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 EC2 Image Builder's
// API operation CreateImageRecipe for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - IdempotentParameterMismatchException
//     You have specified a client token for an operation using parameter values
//     that differ from a previous request that used the same client token.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - InvalidVersionNumberException
//     Your version number is out of bounds or does not follow the required syntax.
//
//   - ResourceInUseException
//     The resource that you are trying to operate on is currently in use. Review
//     the message details and retry later.
//
//   - ResourceAlreadyExistsException
//     The resource that you are trying to create already exists.
//
//   - ServiceQuotaExceededException
//     You have exceeded the number of permitted resources or operations for this
//     service. For service quotas, see EC2 Image Builder endpoints and quotas (https://docs.aws.amazon.com/general/latest/gr/imagebuilder.html#limits_imagebuilder).
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/CreateImageRecipe
func (c *Imagebuilder) CreateImageRecipe(input *CreateImageRecipeInput) (*CreateImageRecipeOutput, error) {
	req, out := c.CreateImageRecipeRequest(input)
	return out, req.Send()
}

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

const opCreateInfrastructureConfiguration = "CreateInfrastructureConfiguration"

// CreateInfrastructureConfigurationRequest generates a "aws/request.Request" representing the
// client's request for the CreateInfrastructureConfiguration 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 CreateInfrastructureConfiguration for more information on using the CreateInfrastructureConfiguration
// 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 CreateInfrastructureConfigurationRequest method.
//	req, resp := client.CreateInfrastructureConfigurationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/CreateInfrastructureConfiguration
func (c *Imagebuilder) CreateInfrastructureConfigurationRequest(input *CreateInfrastructureConfigurationInput) (req *request.Request, output *CreateInfrastructureConfigurationOutput) {
	op := &request.Operation{
		Name:       opCreateInfrastructureConfiguration,
		HTTPMethod: "PUT",
		HTTPPath:   "/CreateInfrastructureConfiguration",
	}

	if input == nil {
		input = &CreateInfrastructureConfigurationInput{}
	}

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

// CreateInfrastructureConfiguration API operation for EC2 Image Builder.
//
// Creates a new infrastructure configuration. An infrastructure configuration
// defines the environment in which your image will be built and tested.
//
// 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 EC2 Image Builder's
// API operation CreateInfrastructureConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - IdempotentParameterMismatchException
//     You have specified a client token for an operation using parameter values
//     that differ from a previous request that used the same client token.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - ResourceInUseException
//     The resource that you are trying to operate on is currently in use. Review
//     the message details and retry later.
//
//   - ResourceAlreadyExistsException
//     The resource that you are trying to create already exists.
//
//   - ServiceQuotaExceededException
//     You have exceeded the number of permitted resources or operations for this
//     service. For service quotas, see EC2 Image Builder endpoints and quotas (https://docs.aws.amazon.com/general/latest/gr/imagebuilder.html#limits_imagebuilder).
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/CreateInfrastructureConfiguration
func (c *Imagebuilder) CreateInfrastructureConfiguration(input *CreateInfrastructureConfigurationInput) (*CreateInfrastructureConfigurationOutput, error) {
	req, out := c.CreateInfrastructureConfigurationRequest(input)
	return out, req.Send()
}

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

const opCreateLifecyclePolicy = "CreateLifecyclePolicy"

// CreateLifecyclePolicyRequest generates a "aws/request.Request" representing the
// client's request for the CreateLifecyclePolicy 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 CreateLifecyclePolicy for more information on using the CreateLifecyclePolicy
// 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 CreateLifecyclePolicyRequest method.
//	req, resp := client.CreateLifecyclePolicyRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/CreateLifecyclePolicy
func (c *Imagebuilder) CreateLifecyclePolicyRequest(input *CreateLifecyclePolicyInput) (req *request.Request, output *CreateLifecyclePolicyOutput) {
	op := &request.Operation{
		Name:       opCreateLifecyclePolicy,
		HTTPMethod: "PUT",
		HTTPPath:   "/CreateLifecyclePolicy",
	}

	if input == nil {
		input = &CreateLifecyclePolicyInput{}
	}

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

// CreateLifecyclePolicy API operation for EC2 Image Builder.
//
// Create a lifecycle policy resource.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for EC2 Image Builder's
// API operation CreateLifecyclePolicy for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - IdempotentParameterMismatchException
//     You have specified a client token for an operation using parameter values
//     that differ from a previous request that used the same client token.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - ResourceInUseException
//     The resource that you are trying to operate on is currently in use. Review
//     the message details and retry later.
//
//   - ResourceAlreadyExistsException
//     The resource that you are trying to create already exists.
//
//   - ServiceQuotaExceededException
//     You have exceeded the number of permitted resources or operations for this
//     service. For service quotas, see EC2 Image Builder endpoints and quotas (https://docs.aws.amazon.com/general/latest/gr/imagebuilder.html#limits_imagebuilder).
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/CreateLifecyclePolicy
func (c *Imagebuilder) CreateLifecyclePolicy(input *CreateLifecyclePolicyInput) (*CreateLifecyclePolicyOutput, error) {
	req, out := c.CreateLifecyclePolicyRequest(input)
	return out, req.Send()
}

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

const opCreateWorkflow = "CreateWorkflow"

// CreateWorkflowRequest generates a "aws/request.Request" representing the
// client's request for the CreateWorkflow 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 CreateWorkflow for more information on using the CreateWorkflow
// 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 CreateWorkflowRequest method.
//	req, resp := client.CreateWorkflowRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/CreateWorkflow
func (c *Imagebuilder) CreateWorkflowRequest(input *CreateWorkflowInput) (req *request.Request, output *CreateWorkflowOutput) {
	op := &request.Operation{
		Name:       opCreateWorkflow,
		HTTPMethod: "PUT",
		HTTPPath:   "/CreateWorkflow",
	}

	if input == nil {
		input = &CreateWorkflowInput{}
	}

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

// CreateWorkflow API operation for EC2 Image Builder.
//
// Create a new workflow or a new version of an existing workflow.
//
// 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 EC2 Image Builder's
// API operation CreateWorkflow for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - IdempotentParameterMismatchException
//     You have specified a client token for an operation using parameter values
//     that differ from a previous request that used the same client token.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - InvalidVersionNumberException
//     Your version number is out of bounds or does not follow the required syntax.
//
//   - ResourceInUseException
//     The resource that you are trying to operate on is currently in use. Review
//     the message details and retry later.
//
//   - InvalidParameterCombinationException
//     You have specified two or more mutually exclusive parameters. Review the
//     error message for details.
//
//   - ServiceQuotaExceededException
//     You have exceeded the number of permitted resources or operations for this
//     service. For service quotas, see EC2 Image Builder endpoints and quotas (https://docs.aws.amazon.com/general/latest/gr/imagebuilder.html#limits_imagebuilder).
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/CreateWorkflow
func (c *Imagebuilder) CreateWorkflow(input *CreateWorkflowInput) (*CreateWorkflowOutput, error) {
	req, out := c.CreateWorkflowRequest(input)
	return out, req.Send()
}

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

const opDeleteComponent = "DeleteComponent"

// DeleteComponentRequest generates a "aws/request.Request" representing the
// client's request for the DeleteComponent 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 DeleteComponent for more information on using the DeleteComponent
// 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 DeleteComponentRequest method.
//	req, resp := client.DeleteComponentRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/DeleteComponent
func (c *Imagebuilder) DeleteComponentRequest(input *DeleteComponentInput) (req *request.Request, output *DeleteComponentOutput) {
	op := &request.Operation{
		Name:       opDeleteComponent,
		HTTPMethod: "DELETE",
		HTTPPath:   "/DeleteComponent",
	}

	if input == nil {
		input = &DeleteComponentInput{}
	}

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

// DeleteComponent API operation for EC2 Image Builder.
//
// Deletes a component build version.
//
// 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 EC2 Image Builder's
// API operation DeleteComponent for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - ResourceDependencyException
//     You have attempted to mutate or delete a resource with a dependency that
//     prohibits this action. See the error message for more details.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/DeleteComponent
func (c *Imagebuilder) DeleteComponent(input *DeleteComponentInput) (*DeleteComponentOutput, error) {
	req, out := c.DeleteComponentRequest(input)
	return out, req.Send()
}

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

const opDeleteContainerRecipe = "DeleteContainerRecipe"

// DeleteContainerRecipeRequest generates a "aws/request.Request" representing the
// client's request for the DeleteContainerRecipe 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 DeleteContainerRecipe for more information on using the DeleteContainerRecipe
// 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 DeleteContainerRecipeRequest method.
//	req, resp := client.DeleteContainerRecipeRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/DeleteContainerRecipe
func (c *Imagebuilder) DeleteContainerRecipeRequest(input *DeleteContainerRecipeInput) (req *request.Request, output *DeleteContainerRecipeOutput) {
	op := &request.Operation{
		Name:       opDeleteContainerRecipe,
		HTTPMethod: "DELETE",
		HTTPPath:   "/DeleteContainerRecipe",
	}

	if input == nil {
		input = &DeleteContainerRecipeInput{}
	}

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

// DeleteContainerRecipe API operation for EC2 Image Builder.
//
// Deletes a container recipe.
//
// 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 EC2 Image Builder's
// API operation DeleteContainerRecipe for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - ResourceDependencyException
//     You have attempted to mutate or delete a resource with a dependency that
//     prohibits this action. See the error message for more details.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/DeleteContainerRecipe
func (c *Imagebuilder) DeleteContainerRecipe(input *DeleteContainerRecipeInput) (*DeleteContainerRecipeOutput, error) {
	req, out := c.DeleteContainerRecipeRequest(input)
	return out, req.Send()
}

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

const opDeleteDistributionConfiguration = "DeleteDistributionConfiguration"

// DeleteDistributionConfigurationRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDistributionConfiguration 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 DeleteDistributionConfiguration for more information on using the DeleteDistributionConfiguration
// 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 DeleteDistributionConfigurationRequest method.
//	req, resp := client.DeleteDistributionConfigurationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/DeleteDistributionConfiguration
func (c *Imagebuilder) DeleteDistributionConfigurationRequest(input *DeleteDistributionConfigurationInput) (req *request.Request, output *DeleteDistributionConfigurationOutput) {
	op := &request.Operation{
		Name:       opDeleteDistributionConfiguration,
		HTTPMethod: "DELETE",
		HTTPPath:   "/DeleteDistributionConfiguration",
	}

	if input == nil {
		input = &DeleteDistributionConfigurationInput{}
	}

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

// DeleteDistributionConfiguration API operation for EC2 Image Builder.
//
// Deletes a distribution configuration.
//
// 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 EC2 Image Builder's
// API operation DeleteDistributionConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - ResourceDependencyException
//     You have attempted to mutate or delete a resource with a dependency that
//     prohibits this action. See the error message for more details.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/DeleteDistributionConfiguration
func (c *Imagebuilder) DeleteDistributionConfiguration(input *DeleteDistributionConfigurationInput) (*DeleteDistributionConfigurationOutput, error) {
	req, out := c.DeleteDistributionConfigurationRequest(input)
	return out, req.Send()
}

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

const opDeleteImage = "DeleteImage"

// DeleteImageRequest generates a "aws/request.Request" representing the
// client's request for the DeleteImage 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 DeleteImage for more information on using the DeleteImage
// 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 DeleteImageRequest method.
//	req, resp := client.DeleteImageRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/DeleteImage
func (c *Imagebuilder) DeleteImageRequest(input *DeleteImageInput) (req *request.Request, output *DeleteImageOutput) {
	op := &request.Operation{
		Name:       opDeleteImage,
		HTTPMethod: "DELETE",
		HTTPPath:   "/DeleteImage",
	}

	if input == nil {
		input = &DeleteImageInput{}
	}

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

// DeleteImage API operation for EC2 Image Builder.
//
// Deletes an Image Builder image resource. This does not delete any EC2 AMIs
// or ECR container images that are created during the image build process.
// You must clean those up separately, using the appropriate Amazon EC2 or Amazon
// ECR console actions, or API or CLI commands.
//
//   - To deregister an EC2 Linux AMI, see Deregister your Linux AMI (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/deregister-ami.html)
//     in the Amazon EC2 User Guide .
//
//   - To deregister an EC2 Windows AMI, see Deregister your Windows AMI (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/deregister-ami.html)
//     in the Amazon EC2 Windows Guide .
//
//   - To delete a container image from Amazon ECR, see Deleting an image (https://docs.aws.amazon.com/AmazonECR/latest/userguide/delete_image.html)
//     in the Amazon ECR User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for EC2 Image Builder's
// API operation DeleteImage for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - ResourceDependencyException
//     You have attempted to mutate or delete a resource with a dependency that
//     prohibits this action. See the error message for more details.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/DeleteImage
func (c *Imagebuilder) DeleteImage(input *DeleteImageInput) (*DeleteImageOutput, error) {
	req, out := c.DeleteImageRequest(input)
	return out, req.Send()
}

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

const opDeleteImagePipeline = "DeleteImagePipeline"

// DeleteImagePipelineRequest generates a "aws/request.Request" representing the
// client's request for the DeleteImagePipeline 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 DeleteImagePipeline for more information on using the DeleteImagePipeline
// 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 DeleteImagePipelineRequest method.
//	req, resp := client.DeleteImagePipelineRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/DeleteImagePipeline
func (c *Imagebuilder) DeleteImagePipelineRequest(input *DeleteImagePipelineInput) (req *request.Request, output *DeleteImagePipelineOutput) {
	op := &request.Operation{
		Name:       opDeleteImagePipeline,
		HTTPMethod: "DELETE",
		HTTPPath:   "/DeleteImagePipeline",
	}

	if input == nil {
		input = &DeleteImagePipelineInput{}
	}

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

// DeleteImagePipeline API operation for EC2 Image Builder.
//
// Deletes an image pipeline.
//
// 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 EC2 Image Builder's
// API operation DeleteImagePipeline for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - ResourceDependencyException
//     You have attempted to mutate or delete a resource with a dependency that
//     prohibits this action. See the error message for more details.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/DeleteImagePipeline
func (c *Imagebuilder) DeleteImagePipeline(input *DeleteImagePipelineInput) (*DeleteImagePipelineOutput, error) {
	req, out := c.DeleteImagePipelineRequest(input)
	return out, req.Send()
}

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

const opDeleteImageRecipe = "DeleteImageRecipe"

// DeleteImageRecipeRequest generates a "aws/request.Request" representing the
// client's request for the DeleteImageRecipe 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 DeleteImageRecipe for more information on using the DeleteImageRecipe
// 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 DeleteImageRecipeRequest method.
//	req, resp := client.DeleteImageRecipeRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/DeleteImageRecipe
func (c *Imagebuilder) DeleteImageRecipeRequest(input *DeleteImageRecipeInput) (req *request.Request, output *DeleteImageRecipeOutput) {
	op := &request.Operation{
		Name:       opDeleteImageRecipe,
		HTTPMethod: "DELETE",
		HTTPPath:   "/DeleteImageRecipe",
	}

	if input == nil {
		input = &DeleteImageRecipeInput{}
	}

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

// DeleteImageRecipe API operation for EC2 Image Builder.
//
// Deletes an image recipe.
//
// 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 EC2 Image Builder's
// API operation DeleteImageRecipe for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - ResourceDependencyException
//     You have attempted to mutate or delete a resource with a dependency that
//     prohibits this action. See the error message for more details.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/DeleteImageRecipe
func (c *Imagebuilder) DeleteImageRecipe(input *DeleteImageRecipeInput) (*DeleteImageRecipeOutput, error) {
	req, out := c.DeleteImageRecipeRequest(input)
	return out, req.Send()
}

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

const opDeleteInfrastructureConfiguration = "DeleteInfrastructureConfiguration"

// DeleteInfrastructureConfigurationRequest generates a "aws/request.Request" representing the
// client's request for the DeleteInfrastructureConfiguration 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 DeleteInfrastructureConfiguration for more information on using the DeleteInfrastructureConfiguration
// 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 DeleteInfrastructureConfigurationRequest method.
//	req, resp := client.DeleteInfrastructureConfigurationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/DeleteInfrastructureConfiguration
func (c *Imagebuilder) DeleteInfrastructureConfigurationRequest(input *DeleteInfrastructureConfigurationInput) (req *request.Request, output *DeleteInfrastructureConfigurationOutput) {
	op := &request.Operation{
		Name:       opDeleteInfrastructureConfiguration,
		HTTPMethod: "DELETE",
		HTTPPath:   "/DeleteInfrastructureConfiguration",
	}

	if input == nil {
		input = &DeleteInfrastructureConfigurationInput{}
	}

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

// DeleteInfrastructureConfiguration API operation for EC2 Image Builder.
//
// Deletes an infrastructure configuration.
//
// 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 EC2 Image Builder's
// API operation DeleteInfrastructureConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - ResourceDependencyException
//     You have attempted to mutate or delete a resource with a dependency that
//     prohibits this action. See the error message for more details.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/DeleteInfrastructureConfiguration
func (c *Imagebuilder) DeleteInfrastructureConfiguration(input *DeleteInfrastructureConfigurationInput) (*DeleteInfrastructureConfigurationOutput, error) {
	req, out := c.DeleteInfrastructureConfigurationRequest(input)
	return out, req.Send()
}

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

const opDeleteLifecyclePolicy = "DeleteLifecyclePolicy"

// DeleteLifecyclePolicyRequest generates a "aws/request.Request" representing the
// client's request for the DeleteLifecyclePolicy 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 DeleteLifecyclePolicy for more information on using the DeleteLifecyclePolicy
// 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 DeleteLifecyclePolicyRequest method.
//	req, resp := client.DeleteLifecyclePolicyRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/DeleteLifecyclePolicy
func (c *Imagebuilder) DeleteLifecyclePolicyRequest(input *DeleteLifecyclePolicyInput) (req *request.Request, output *DeleteLifecyclePolicyOutput) {
	op := &request.Operation{
		Name:       opDeleteLifecyclePolicy,
		HTTPMethod: "DELETE",
		HTTPPath:   "/DeleteLifecyclePolicy",
	}

	if input == nil {
		input = &DeleteLifecyclePolicyInput{}
	}

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

// DeleteLifecyclePolicy API operation for EC2 Image Builder.
//
// Delete the specified lifecycle policy resource.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for EC2 Image Builder's
// API operation DeleteLifecyclePolicy for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - ResourceDependencyException
//     You have attempted to mutate or delete a resource with a dependency that
//     prohibits this action. See the error message for more details.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/DeleteLifecyclePolicy
func (c *Imagebuilder) DeleteLifecyclePolicy(input *DeleteLifecyclePolicyInput) (*DeleteLifecyclePolicyOutput, error) {
	req, out := c.DeleteLifecyclePolicyRequest(input)
	return out, req.Send()
}

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

const opDeleteWorkflow = "DeleteWorkflow"

// DeleteWorkflowRequest generates a "aws/request.Request" representing the
// client's request for the DeleteWorkflow 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 DeleteWorkflow for more information on using the DeleteWorkflow
// 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 DeleteWorkflowRequest method.
//	req, resp := client.DeleteWorkflowRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/DeleteWorkflow
func (c *Imagebuilder) DeleteWorkflowRequest(input *DeleteWorkflowInput) (req *request.Request, output *DeleteWorkflowOutput) {
	op := &request.Operation{
		Name:       opDeleteWorkflow,
		HTTPMethod: "DELETE",
		HTTPPath:   "/DeleteWorkflow",
	}

	if input == nil {
		input = &DeleteWorkflowInput{}
	}

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

// DeleteWorkflow API operation for EC2 Image Builder.
//
// Deletes a specific workflow resource.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for EC2 Image Builder's
// API operation DeleteWorkflow for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - ResourceDependencyException
//     You have attempted to mutate or delete a resource with a dependency that
//     prohibits this action. See the error message for more details.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/DeleteWorkflow
func (c *Imagebuilder) DeleteWorkflow(input *DeleteWorkflowInput) (*DeleteWorkflowOutput, error) {
	req, out := c.DeleteWorkflowRequest(input)
	return out, req.Send()
}

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

const opGetComponent = "GetComponent"

// GetComponentRequest generates a "aws/request.Request" representing the
// client's request for the GetComponent 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 GetComponent for more information on using the GetComponent
// 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 GetComponentRequest method.
//	req, resp := client.GetComponentRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetComponent
func (c *Imagebuilder) GetComponentRequest(input *GetComponentInput) (req *request.Request, output *GetComponentOutput) {
	op := &request.Operation{
		Name:       opGetComponent,
		HTTPMethod: "GET",
		HTTPPath:   "/GetComponent",
	}

	if input == nil {
		input = &GetComponentInput{}
	}

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

// GetComponent API operation for EC2 Image Builder.
//
// Gets a component object.
//
// 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 EC2 Image Builder's
// API operation GetComponent for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetComponent
func (c *Imagebuilder) GetComponent(input *GetComponentInput) (*GetComponentOutput, error) {
	req, out := c.GetComponentRequest(input)
	return out, req.Send()
}

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

const opGetComponentPolicy = "GetComponentPolicy"

// GetComponentPolicyRequest generates a "aws/request.Request" representing the
// client's request for the GetComponentPolicy 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 GetComponentPolicy for more information on using the GetComponentPolicy
// 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 GetComponentPolicyRequest method.
//	req, resp := client.GetComponentPolicyRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetComponentPolicy
func (c *Imagebuilder) GetComponentPolicyRequest(input *GetComponentPolicyInput) (req *request.Request, output *GetComponentPolicyOutput) {
	op := &request.Operation{
		Name:       opGetComponentPolicy,
		HTTPMethod: "GET",
		HTTPPath:   "/GetComponentPolicy",
	}

	if input == nil {
		input = &GetComponentPolicyInput{}
	}

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

// GetComponentPolicy API operation for EC2 Image Builder.
//
// Gets a component policy.
//
// 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 EC2 Image Builder's
// API operation GetComponentPolicy for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - ResourceNotFoundException
//     At least one of the resources referenced by your request does not exist.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetComponentPolicy
func (c *Imagebuilder) GetComponentPolicy(input *GetComponentPolicyInput) (*GetComponentPolicyOutput, error) {
	req, out := c.GetComponentPolicyRequest(input)
	return out, req.Send()
}

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

const opGetContainerRecipe = "GetContainerRecipe"

// GetContainerRecipeRequest generates a "aws/request.Request" representing the
// client's request for the GetContainerRecipe 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 GetContainerRecipe for more information on using the GetContainerRecipe
// 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 GetContainerRecipeRequest method.
//	req, resp := client.GetContainerRecipeRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetContainerRecipe
func (c *Imagebuilder) GetContainerRecipeRequest(input *GetContainerRecipeInput) (req *request.Request, output *GetContainerRecipeOutput) {
	op := &request.Operation{
		Name:       opGetContainerRecipe,
		HTTPMethod: "GET",
		HTTPPath:   "/GetContainerRecipe",
	}

	if input == nil {
		input = &GetContainerRecipeInput{}
	}

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

// GetContainerRecipe API operation for EC2 Image Builder.
//
// Retrieves a container recipe.
//
// 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 EC2 Image Builder's
// API operation GetContainerRecipe for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetContainerRecipe
func (c *Imagebuilder) GetContainerRecipe(input *GetContainerRecipeInput) (*GetContainerRecipeOutput, error) {
	req, out := c.GetContainerRecipeRequest(input)
	return out, req.Send()
}

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

const opGetContainerRecipePolicy = "GetContainerRecipePolicy"

// GetContainerRecipePolicyRequest generates a "aws/request.Request" representing the
// client's request for the GetContainerRecipePolicy 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 GetContainerRecipePolicy for more information on using the GetContainerRecipePolicy
// 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 GetContainerRecipePolicyRequest method.
//	req, resp := client.GetContainerRecipePolicyRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetContainerRecipePolicy
func (c *Imagebuilder) GetContainerRecipePolicyRequest(input *GetContainerRecipePolicyInput) (req *request.Request, output *GetContainerRecipePolicyOutput) {
	op := &request.Operation{
		Name:       opGetContainerRecipePolicy,
		HTTPMethod: "GET",
		HTTPPath:   "/GetContainerRecipePolicy",
	}

	if input == nil {
		input = &GetContainerRecipePolicyInput{}
	}

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

// GetContainerRecipePolicy API operation for EC2 Image Builder.
//
// Retrieves the policy for a container recipe.
//
// 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 EC2 Image Builder's
// API operation GetContainerRecipePolicy for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ResourceNotFoundException
//     At least one of the resources referenced by your request does not exist.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetContainerRecipePolicy
func (c *Imagebuilder) GetContainerRecipePolicy(input *GetContainerRecipePolicyInput) (*GetContainerRecipePolicyOutput, error) {
	req, out := c.GetContainerRecipePolicyRequest(input)
	return out, req.Send()
}

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

const opGetDistributionConfiguration = "GetDistributionConfiguration"

// GetDistributionConfigurationRequest generates a "aws/request.Request" representing the
// client's request for the GetDistributionConfiguration 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 GetDistributionConfiguration for more information on using the GetDistributionConfiguration
// 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 GetDistributionConfigurationRequest method.
//	req, resp := client.GetDistributionConfigurationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetDistributionConfiguration
func (c *Imagebuilder) GetDistributionConfigurationRequest(input *GetDistributionConfigurationInput) (req *request.Request, output *GetDistributionConfigurationOutput) {
	op := &request.Operation{
		Name:       opGetDistributionConfiguration,
		HTTPMethod: "GET",
		HTTPPath:   "/GetDistributionConfiguration",
	}

	if input == nil {
		input = &GetDistributionConfigurationInput{}
	}

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

// GetDistributionConfiguration API operation for EC2 Image Builder.
//
// Gets a distribution configuration.
//
// 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 EC2 Image Builder's
// API operation GetDistributionConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetDistributionConfiguration
func (c *Imagebuilder) GetDistributionConfiguration(input *GetDistributionConfigurationInput) (*GetDistributionConfigurationOutput, error) {
	req, out := c.GetDistributionConfigurationRequest(input)
	return out, req.Send()
}

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

const opGetImage = "GetImage"

// GetImageRequest generates a "aws/request.Request" representing the
// client's request for the GetImage 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 GetImage for more information on using the GetImage
// 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 GetImageRequest method.
//	req, resp := client.GetImageRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetImage
func (c *Imagebuilder) GetImageRequest(input *GetImageInput) (req *request.Request, output *GetImageOutput) {
	op := &request.Operation{
		Name:       opGetImage,
		HTTPMethod: "GET",
		HTTPPath:   "/GetImage",
	}

	if input == nil {
		input = &GetImageInput{}
	}

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

// GetImage API operation for EC2 Image Builder.
//
// Gets an image.
//
// 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 EC2 Image Builder's
// API operation GetImage for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetImage
func (c *Imagebuilder) GetImage(input *GetImageInput) (*GetImageOutput, error) {
	req, out := c.GetImageRequest(input)
	return out, req.Send()
}

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

const opGetImagePipeline = "GetImagePipeline"

// GetImagePipelineRequest generates a "aws/request.Request" representing the
// client's request for the GetImagePipeline 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 GetImagePipeline for more information on using the GetImagePipeline
// 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 GetImagePipelineRequest method.
//	req, resp := client.GetImagePipelineRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetImagePipeline
func (c *Imagebuilder) GetImagePipelineRequest(input *GetImagePipelineInput) (req *request.Request, output *GetImagePipelineOutput) {
	op := &request.Operation{
		Name:       opGetImagePipeline,
		HTTPMethod: "GET",
		HTTPPath:   "/GetImagePipeline",
	}

	if input == nil {
		input = &GetImagePipelineInput{}
	}

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

// GetImagePipeline API operation for EC2 Image Builder.
//
// Gets an image pipeline.
//
// 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 EC2 Image Builder's
// API operation GetImagePipeline for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetImagePipeline
func (c *Imagebuilder) GetImagePipeline(input *GetImagePipelineInput) (*GetImagePipelineOutput, error) {
	req, out := c.GetImagePipelineRequest(input)
	return out, req.Send()
}

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

const opGetImagePolicy = "GetImagePolicy"

// GetImagePolicyRequest generates a "aws/request.Request" representing the
// client's request for the GetImagePolicy 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 GetImagePolicy for more information on using the GetImagePolicy
// 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 GetImagePolicyRequest method.
//	req, resp := client.GetImagePolicyRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetImagePolicy
func (c *Imagebuilder) GetImagePolicyRequest(input *GetImagePolicyInput) (req *request.Request, output *GetImagePolicyOutput) {
	op := &request.Operation{
		Name:       opGetImagePolicy,
		HTTPMethod: "GET",
		HTTPPath:   "/GetImagePolicy",
	}

	if input == nil {
		input = &GetImagePolicyInput{}
	}

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

// GetImagePolicy API operation for EC2 Image Builder.
//
// Gets an image policy.
//
// 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 EC2 Image Builder's
// API operation GetImagePolicy for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - ResourceNotFoundException
//     At least one of the resources referenced by your request does not exist.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetImagePolicy
func (c *Imagebuilder) GetImagePolicy(input *GetImagePolicyInput) (*GetImagePolicyOutput, error) {
	req, out := c.GetImagePolicyRequest(input)
	return out, req.Send()
}

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

const opGetImageRecipe = "GetImageRecipe"

// GetImageRecipeRequest generates a "aws/request.Request" representing the
// client's request for the GetImageRecipe 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 GetImageRecipe for more information on using the GetImageRecipe
// 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 GetImageRecipeRequest method.
//	req, resp := client.GetImageRecipeRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetImageRecipe
func (c *Imagebuilder) GetImageRecipeRequest(input *GetImageRecipeInput) (req *request.Request, output *GetImageRecipeOutput) {
	op := &request.Operation{
		Name:       opGetImageRecipe,
		HTTPMethod: "GET",
		HTTPPath:   "/GetImageRecipe",
	}

	if input == nil {
		input = &GetImageRecipeInput{}
	}

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

// GetImageRecipe API operation for EC2 Image Builder.
//
// Gets an image recipe.
//
// 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 EC2 Image Builder's
// API operation GetImageRecipe for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetImageRecipe
func (c *Imagebuilder) GetImageRecipe(input *GetImageRecipeInput) (*GetImageRecipeOutput, error) {
	req, out := c.GetImageRecipeRequest(input)
	return out, req.Send()
}

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

const opGetImageRecipePolicy = "GetImageRecipePolicy"

// GetImageRecipePolicyRequest generates a "aws/request.Request" representing the
// client's request for the GetImageRecipePolicy 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 GetImageRecipePolicy for more information on using the GetImageRecipePolicy
// 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 GetImageRecipePolicyRequest method.
//	req, resp := client.GetImageRecipePolicyRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetImageRecipePolicy
func (c *Imagebuilder) GetImageRecipePolicyRequest(input *GetImageRecipePolicyInput) (req *request.Request, output *GetImageRecipePolicyOutput) {
	op := &request.Operation{
		Name:       opGetImageRecipePolicy,
		HTTPMethod: "GET",
		HTTPPath:   "/GetImageRecipePolicy",
	}

	if input == nil {
		input = &GetImageRecipePolicyInput{}
	}

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

// GetImageRecipePolicy API operation for EC2 Image Builder.
//
// Gets an image recipe policy.
//
// 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 EC2 Image Builder's
// API operation GetImageRecipePolicy for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ResourceNotFoundException
//     At least one of the resources referenced by your request does not exist.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetImageRecipePolicy
func (c *Imagebuilder) GetImageRecipePolicy(input *GetImageRecipePolicyInput) (*GetImageRecipePolicyOutput, error) {
	req, out := c.GetImageRecipePolicyRequest(input)
	return out, req.Send()
}

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

const opGetInfrastructureConfiguration = "GetInfrastructureConfiguration"

// GetInfrastructureConfigurationRequest generates a "aws/request.Request" representing the
// client's request for the GetInfrastructureConfiguration 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 GetInfrastructureConfiguration for more information on using the GetInfrastructureConfiguration
// 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 GetInfrastructureConfigurationRequest method.
//	req, resp := client.GetInfrastructureConfigurationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetInfrastructureConfiguration
func (c *Imagebuilder) GetInfrastructureConfigurationRequest(input *GetInfrastructureConfigurationInput) (req *request.Request, output *GetInfrastructureConfigurationOutput) {
	op := &request.Operation{
		Name:       opGetInfrastructureConfiguration,
		HTTPMethod: "GET",
		HTTPPath:   "/GetInfrastructureConfiguration",
	}

	if input == nil {
		input = &GetInfrastructureConfigurationInput{}
	}

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

// GetInfrastructureConfiguration API operation for EC2 Image Builder.
//
// Gets an infrastructure configuration.
//
// 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 EC2 Image Builder's
// API operation GetInfrastructureConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetInfrastructureConfiguration
func (c *Imagebuilder) GetInfrastructureConfiguration(input *GetInfrastructureConfigurationInput) (*GetInfrastructureConfigurationOutput, error) {
	req, out := c.GetInfrastructureConfigurationRequest(input)
	return out, req.Send()
}

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

const opGetLifecycleExecution = "GetLifecycleExecution"

// GetLifecycleExecutionRequest generates a "aws/request.Request" representing the
// client's request for the GetLifecycleExecution 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 GetLifecycleExecution for more information on using the GetLifecycleExecution
// 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 GetLifecycleExecutionRequest method.
//	req, resp := client.GetLifecycleExecutionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetLifecycleExecution
func (c *Imagebuilder) GetLifecycleExecutionRequest(input *GetLifecycleExecutionInput) (req *request.Request, output *GetLifecycleExecutionOutput) {
	op := &request.Operation{
		Name:       opGetLifecycleExecution,
		HTTPMethod: "GET",
		HTTPPath:   "/GetLifecycleExecution",
	}

	if input == nil {
		input = &GetLifecycleExecutionInput{}
	}

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

// GetLifecycleExecution API operation for EC2 Image Builder.
//
// Get the runtime information that was logged for a specific runtime instance
// of the lifecycle policy.
//
// 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 EC2 Image Builder's
// API operation GetLifecycleExecution for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetLifecycleExecution
func (c *Imagebuilder) GetLifecycleExecution(input *GetLifecycleExecutionInput) (*GetLifecycleExecutionOutput, error) {
	req, out := c.GetLifecycleExecutionRequest(input)
	return out, req.Send()
}

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

const opGetLifecyclePolicy = "GetLifecyclePolicy"

// GetLifecyclePolicyRequest generates a "aws/request.Request" representing the
// client's request for the GetLifecyclePolicy 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 GetLifecyclePolicy for more information on using the GetLifecyclePolicy
// 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 GetLifecyclePolicyRequest method.
//	req, resp := client.GetLifecyclePolicyRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetLifecyclePolicy
func (c *Imagebuilder) GetLifecyclePolicyRequest(input *GetLifecyclePolicyInput) (req *request.Request, output *GetLifecyclePolicyOutput) {
	op := &request.Operation{
		Name:       opGetLifecyclePolicy,
		HTTPMethod: "GET",
		HTTPPath:   "/GetLifecyclePolicy",
	}

	if input == nil {
		input = &GetLifecyclePolicyInput{}
	}

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

// GetLifecyclePolicy API operation for EC2 Image Builder.
//
// Get details for the specified image lifecycle policy.
//
// 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 EC2 Image Builder's
// API operation GetLifecyclePolicy for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetLifecyclePolicy
func (c *Imagebuilder) GetLifecyclePolicy(input *GetLifecyclePolicyInput) (*GetLifecyclePolicyOutput, error) {
	req, out := c.GetLifecyclePolicyRequest(input)
	return out, req.Send()
}

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

const opGetWorkflow = "GetWorkflow"

// GetWorkflowRequest generates a "aws/request.Request" representing the
// client's request for the GetWorkflow 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 GetWorkflow for more information on using the GetWorkflow
// 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 GetWorkflowRequest method.
//	req, resp := client.GetWorkflowRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetWorkflow
func (c *Imagebuilder) GetWorkflowRequest(input *GetWorkflowInput) (req *request.Request, output *GetWorkflowOutput) {
	op := &request.Operation{
		Name:       opGetWorkflow,
		HTTPMethod: "GET",
		HTTPPath:   "/GetWorkflow",
	}

	if input == nil {
		input = &GetWorkflowInput{}
	}

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

// GetWorkflow API operation for EC2 Image Builder.
//
// Get a workflow resource object.
//
// 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 EC2 Image Builder's
// API operation GetWorkflow for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetWorkflow
func (c *Imagebuilder) GetWorkflow(input *GetWorkflowInput) (*GetWorkflowOutput, error) {
	req, out := c.GetWorkflowRequest(input)
	return out, req.Send()
}

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

const opGetWorkflowExecution = "GetWorkflowExecution"

// GetWorkflowExecutionRequest generates a "aws/request.Request" representing the
// client's request for the GetWorkflowExecution 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 GetWorkflowExecution for more information on using the GetWorkflowExecution
// 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 GetWorkflowExecutionRequest method.
//	req, resp := client.GetWorkflowExecutionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetWorkflowExecution
func (c *Imagebuilder) GetWorkflowExecutionRequest(input *GetWorkflowExecutionInput) (req *request.Request, output *GetWorkflowExecutionOutput) {
	op := &request.Operation{
		Name:       opGetWorkflowExecution,
		HTTPMethod: "GET",
		HTTPPath:   "/GetWorkflowExecution",
	}

	if input == nil {
		input = &GetWorkflowExecutionInput{}
	}

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

// GetWorkflowExecution API operation for EC2 Image Builder.
//
// Get the runtime information that was logged for a specific runtime instance
// of the workflow.
//
// 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 EC2 Image Builder's
// API operation GetWorkflowExecution for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetWorkflowExecution
func (c *Imagebuilder) GetWorkflowExecution(input *GetWorkflowExecutionInput) (*GetWorkflowExecutionOutput, error) {
	req, out := c.GetWorkflowExecutionRequest(input)
	return out, req.Send()
}

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

const opGetWorkflowStepExecution = "GetWorkflowStepExecution"

// GetWorkflowStepExecutionRequest generates a "aws/request.Request" representing the
// client's request for the GetWorkflowStepExecution 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 GetWorkflowStepExecution for more information on using the GetWorkflowStepExecution
// 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 GetWorkflowStepExecutionRequest method.
//	req, resp := client.GetWorkflowStepExecutionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetWorkflowStepExecution
func (c *Imagebuilder) GetWorkflowStepExecutionRequest(input *GetWorkflowStepExecutionInput) (req *request.Request, output *GetWorkflowStepExecutionOutput) {
	op := &request.Operation{
		Name:       opGetWorkflowStepExecution,
		HTTPMethod: "GET",
		HTTPPath:   "/GetWorkflowStepExecution",
	}

	if input == nil {
		input = &GetWorkflowStepExecutionInput{}
	}

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

// GetWorkflowStepExecution API operation for EC2 Image Builder.
//
// Get the runtime information that was logged for a specific runtime instance
// of the workflow step.
//
// 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 EC2 Image Builder's
// API operation GetWorkflowStepExecution for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetWorkflowStepExecution
func (c *Imagebuilder) GetWorkflowStepExecution(input *GetWorkflowStepExecutionInput) (*GetWorkflowStepExecutionOutput, error) {
	req, out := c.GetWorkflowStepExecutionRequest(input)
	return out, req.Send()
}

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

const opImportComponent = "ImportComponent"

// ImportComponentRequest generates a "aws/request.Request" representing the
// client's request for the ImportComponent 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 ImportComponent for more information on using the ImportComponent
// 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 ImportComponentRequest method.
//	req, resp := client.ImportComponentRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ImportComponent
func (c *Imagebuilder) ImportComponentRequest(input *ImportComponentInput) (req *request.Request, output *ImportComponentOutput) {
	op := &request.Operation{
		Name:       opImportComponent,
		HTTPMethod: "PUT",
		HTTPPath:   "/ImportComponent",
	}

	if input == nil {
		input = &ImportComponentInput{}
	}

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

// ImportComponent API operation for EC2 Image Builder.
//
// Imports a component and transforms its data into a component document.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for EC2 Image Builder's
// API operation ImportComponent for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - IdempotentParameterMismatchException
//     You have specified a client token for an operation using parameter values
//     that differ from a previous request that used the same client token.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - InvalidVersionNumberException
//     Your version number is out of bounds or does not follow the required syntax.
//
//   - ResourceInUseException
//     The resource that you are trying to operate on is currently in use. Review
//     the message details and retry later.
//
//   - InvalidParameterCombinationException
//     You have specified two or more mutually exclusive parameters. Review the
//     error message for details.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ImportComponent
func (c *Imagebuilder) ImportComponent(input *ImportComponentInput) (*ImportComponentOutput, error) {
	req, out := c.ImportComponentRequest(input)
	return out, req.Send()
}

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

const opImportVmImage = "ImportVmImage"

// ImportVmImageRequest generates a "aws/request.Request" representing the
// client's request for the ImportVmImage 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 ImportVmImage for more information on using the ImportVmImage
// 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 ImportVmImageRequest method.
//	req, resp := client.ImportVmImageRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ImportVmImage
func (c *Imagebuilder) ImportVmImageRequest(input *ImportVmImageInput) (req *request.Request, output *ImportVmImageOutput) {
	op := &request.Operation{
		Name:       opImportVmImage,
		HTTPMethod: "PUT",
		HTTPPath:   "/ImportVmImage",
	}

	if input == nil {
		input = &ImportVmImageInput{}
	}

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

// ImportVmImage API operation for EC2 Image Builder.
//
// When you export your virtual machine (VM) from its virtualization environment,
// that process creates a set of one or more disk container files that act as
// snapshots of your VM’s environment, settings, and data. The Amazon EC2
// API ImportImage (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImportImage.html)
// action uses those files to import your VM and create an AMI. To import using
// the CLI command, see import-image (https://docs.aws.amazon.com/cli/latest/reference/ec2/import-image.html)
//
// You can reference the task ID from the VM import to pull in the AMI that
// the import created as the base image for your Image Builder recipe.
//
// 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 EC2 Image Builder's
// API operation ImportVmImage for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ImportVmImage
func (c *Imagebuilder) ImportVmImage(input *ImportVmImageInput) (*ImportVmImageOutput, error) {
	req, out := c.ImportVmImageRequest(input)
	return out, req.Send()
}

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

const opListComponentBuildVersions = "ListComponentBuildVersions"

// ListComponentBuildVersionsRequest generates a "aws/request.Request" representing the
// client's request for the ListComponentBuildVersions 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 ListComponentBuildVersions for more information on using the ListComponentBuildVersions
// 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 ListComponentBuildVersionsRequest method.
//	req, resp := client.ListComponentBuildVersionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListComponentBuildVersions
func (c *Imagebuilder) ListComponentBuildVersionsRequest(input *ListComponentBuildVersionsInput) (req *request.Request, output *ListComponentBuildVersionsOutput) {
	op := &request.Operation{
		Name:       opListComponentBuildVersions,
		HTTPMethod: "POST",
		HTTPPath:   "/ListComponentBuildVersions",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListComponentBuildVersionsInput{}
	}

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

// ListComponentBuildVersions API operation for EC2 Image Builder.
//
// Returns the list of component build versions for the specified semantic version.
//
// The semantic version has four nodes: <major>.<minor>.<patch>/<build>. You
// can assign values for the first three, and can filter on all of them.
//
// Filtering: With semantic versioning, you have the flexibility to use wildcards
// (x) to specify the most recent versions or nodes when selecting the base
// image or components for your recipe. When you use a wildcard in any node,
// all nodes to the right of the first wildcard must also be wildcards.
//
// 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 EC2 Image Builder's
// API operation ListComponentBuildVersions for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidPaginationTokenException
//     You have provided an invalid pagination token in your request.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListComponentBuildVersions
func (c *Imagebuilder) ListComponentBuildVersions(input *ListComponentBuildVersionsInput) (*ListComponentBuildVersionsOutput, error) {
	req, out := c.ListComponentBuildVersionsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListComponents = "ListComponents"

// ListComponentsRequest generates a "aws/request.Request" representing the
// client's request for the ListComponents 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 ListComponents for more information on using the ListComponents
// 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 ListComponentsRequest method.
//	req, resp := client.ListComponentsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListComponents
func (c *Imagebuilder) ListComponentsRequest(input *ListComponentsInput) (req *request.Request, output *ListComponentsOutput) {
	op := &request.Operation{
		Name:       opListComponents,
		HTTPMethod: "POST",
		HTTPPath:   "/ListComponents",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListComponentsInput{}
	}

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

// ListComponents API operation for EC2 Image Builder.
//
// Returns the list of components that can be filtered by name, or by using
// the listed filters to streamline results. Newly created components can take
// up to two minutes to appear in the ListComponents API Results.
//
// The semantic version has four nodes: <major>.<minor>.<patch>/<build>. You
// can assign values for the first three, and can filter on all of them.
//
// Filtering: With semantic versioning, you have the flexibility to use wildcards
// (x) to specify the most recent versions or nodes when selecting the base
// image or components for your recipe. When you use a wildcard in any node,
// all nodes to the right of the first wildcard must also be wildcards.
//
// 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 EC2 Image Builder's
// API operation ListComponents for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidPaginationTokenException
//     You have provided an invalid pagination token in your request.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListComponents
func (c *Imagebuilder) ListComponents(input *ListComponentsInput) (*ListComponentsOutput, error) {
	req, out := c.ListComponentsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListContainerRecipes = "ListContainerRecipes"

// ListContainerRecipesRequest generates a "aws/request.Request" representing the
// client's request for the ListContainerRecipes 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 ListContainerRecipes for more information on using the ListContainerRecipes
// 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 ListContainerRecipesRequest method.
//	req, resp := client.ListContainerRecipesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListContainerRecipes
func (c *Imagebuilder) ListContainerRecipesRequest(input *ListContainerRecipesInput) (req *request.Request, output *ListContainerRecipesOutput) {
	op := &request.Operation{
		Name:       opListContainerRecipes,
		HTTPMethod: "POST",
		HTTPPath:   "/ListContainerRecipes",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListContainerRecipesInput{}
	}

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

// ListContainerRecipes API operation for EC2 Image Builder.
//
// Returns a list of container recipes.
//
// 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 EC2 Image Builder's
// API operation ListContainerRecipes for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidPaginationTokenException
//     You have provided an invalid pagination token in your request.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListContainerRecipes
func (c *Imagebuilder) ListContainerRecipes(input *ListContainerRecipesInput) (*ListContainerRecipesOutput, error) {
	req, out := c.ListContainerRecipesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListDistributionConfigurations = "ListDistributionConfigurations"

// ListDistributionConfigurationsRequest generates a "aws/request.Request" representing the
// client's request for the ListDistributionConfigurations 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 ListDistributionConfigurations for more information on using the ListDistributionConfigurations
// 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 ListDistributionConfigurationsRequest method.
//	req, resp := client.ListDistributionConfigurationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListDistributionConfigurations
func (c *Imagebuilder) ListDistributionConfigurationsRequest(input *ListDistributionConfigurationsInput) (req *request.Request, output *ListDistributionConfigurationsOutput) {
	op := &request.Operation{
		Name:       opListDistributionConfigurations,
		HTTPMethod: "POST",
		HTTPPath:   "/ListDistributionConfigurations",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListDistributionConfigurationsInput{}
	}

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

// ListDistributionConfigurations API operation for EC2 Image Builder.
//
// Returns a list of distribution configurations.
//
// 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 EC2 Image Builder's
// API operation ListDistributionConfigurations for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidPaginationTokenException
//     You have provided an invalid pagination token in your request.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListDistributionConfigurations
func (c *Imagebuilder) ListDistributionConfigurations(input *ListDistributionConfigurationsInput) (*ListDistributionConfigurationsOutput, error) {
	req, out := c.ListDistributionConfigurationsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListImageBuildVersions = "ListImageBuildVersions"

// ListImageBuildVersionsRequest generates a "aws/request.Request" representing the
// client's request for the ListImageBuildVersions 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 ListImageBuildVersions for more information on using the ListImageBuildVersions
// 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 ListImageBuildVersionsRequest method.
//	req, resp := client.ListImageBuildVersionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListImageBuildVersions
func (c *Imagebuilder) ListImageBuildVersionsRequest(input *ListImageBuildVersionsInput) (req *request.Request, output *ListImageBuildVersionsOutput) {
	op := &request.Operation{
		Name:       opListImageBuildVersions,
		HTTPMethod: "POST",
		HTTPPath:   "/ListImageBuildVersions",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListImageBuildVersionsInput{}
	}

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

// ListImageBuildVersions API operation for EC2 Image Builder.
//
// Returns a list of image build versions.
//
// 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 EC2 Image Builder's
// API operation ListImageBuildVersions for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidPaginationTokenException
//     You have provided an invalid pagination token in your request.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListImageBuildVersions
func (c *Imagebuilder) ListImageBuildVersions(input *ListImageBuildVersionsInput) (*ListImageBuildVersionsOutput, error) {
	req, out := c.ListImageBuildVersionsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListImagePackages = "ListImagePackages"

// ListImagePackagesRequest generates a "aws/request.Request" representing the
// client's request for the ListImagePackages 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 ListImagePackages for more information on using the ListImagePackages
// 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 ListImagePackagesRequest method.
//	req, resp := client.ListImagePackagesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListImagePackages
func (c *Imagebuilder) ListImagePackagesRequest(input *ListImagePackagesInput) (req *request.Request, output *ListImagePackagesOutput) {
	op := &request.Operation{
		Name:       opListImagePackages,
		HTTPMethod: "POST",
		HTTPPath:   "/ListImagePackages",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListImagePackagesInput{}
	}

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

// ListImagePackages API operation for EC2 Image Builder.
//
// List the Packages that are associated with an Image Build Version, as determined
// by Amazon Web Services Systems Manager Inventory at build time.
//
// 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 EC2 Image Builder's
// API operation ListImagePackages for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidPaginationTokenException
//     You have provided an invalid pagination token in your request.
//
//   - ResourceNotFoundException
//     At least one of the resources referenced by your request does not exist.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListImagePackages
func (c *Imagebuilder) ListImagePackages(input *ListImagePackagesInput) (*ListImagePackagesOutput, error) {
	req, out := c.ListImagePackagesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListImagePipelineImages = "ListImagePipelineImages"

// ListImagePipelineImagesRequest generates a "aws/request.Request" representing the
// client's request for the ListImagePipelineImages 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 ListImagePipelineImages for more information on using the ListImagePipelineImages
// 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 ListImagePipelineImagesRequest method.
//	req, resp := client.ListImagePipelineImagesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListImagePipelineImages
func (c *Imagebuilder) ListImagePipelineImagesRequest(input *ListImagePipelineImagesInput) (req *request.Request, output *ListImagePipelineImagesOutput) {
	op := &request.Operation{
		Name:       opListImagePipelineImages,
		HTTPMethod: "POST",
		HTTPPath:   "/ListImagePipelineImages",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListImagePipelineImagesInput{}
	}

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

// ListImagePipelineImages API operation for EC2 Image Builder.
//
// Returns a list of images created by the specified pipeline.
//
// 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 EC2 Image Builder's
// API operation ListImagePipelineImages for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidPaginationTokenException
//     You have provided an invalid pagination token in your request.
//
//   - ResourceNotFoundException
//     At least one of the resources referenced by your request does not exist.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListImagePipelineImages
func (c *Imagebuilder) ListImagePipelineImages(input *ListImagePipelineImagesInput) (*ListImagePipelineImagesOutput, error) {
	req, out := c.ListImagePipelineImagesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListImagePipelines = "ListImagePipelines"

// ListImagePipelinesRequest generates a "aws/request.Request" representing the
// client's request for the ListImagePipelines 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 ListImagePipelines for more information on using the ListImagePipelines
// 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 ListImagePipelinesRequest method.
//	req, resp := client.ListImagePipelinesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListImagePipelines
func (c *Imagebuilder) ListImagePipelinesRequest(input *ListImagePipelinesInput) (req *request.Request, output *ListImagePipelinesOutput) {
	op := &request.Operation{
		Name:       opListImagePipelines,
		HTTPMethod: "POST",
		HTTPPath:   "/ListImagePipelines",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListImagePipelinesInput{}
	}

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

// ListImagePipelines API operation for EC2 Image Builder.
//
// Returns a list of image pipelines.
//
// 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 EC2 Image Builder's
// API operation ListImagePipelines for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidPaginationTokenException
//     You have provided an invalid pagination token in your request.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListImagePipelines
func (c *Imagebuilder) ListImagePipelines(input *ListImagePipelinesInput) (*ListImagePipelinesOutput, error) {
	req, out := c.ListImagePipelinesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListImageRecipes = "ListImageRecipes"

// ListImageRecipesRequest generates a "aws/request.Request" representing the
// client's request for the ListImageRecipes 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 ListImageRecipes for more information on using the ListImageRecipes
// 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 ListImageRecipesRequest method.
//	req, resp := client.ListImageRecipesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListImageRecipes
func (c *Imagebuilder) ListImageRecipesRequest(input *ListImageRecipesInput) (req *request.Request, output *ListImageRecipesOutput) {
	op := &request.Operation{
		Name:       opListImageRecipes,
		HTTPMethod: "POST",
		HTTPPath:   "/ListImageRecipes",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListImageRecipesInput{}
	}

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

// ListImageRecipes API operation for EC2 Image Builder.
//
// Returns a list of image recipes.
//
// 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 EC2 Image Builder's
// API operation ListImageRecipes for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidPaginationTokenException
//     You have provided an invalid pagination token in your request.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListImageRecipes
func (c *Imagebuilder) ListImageRecipes(input *ListImageRecipesInput) (*ListImageRecipesOutput, error) {
	req, out := c.ListImageRecipesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListImageScanFindingAggregations = "ListImageScanFindingAggregations"

// ListImageScanFindingAggregationsRequest generates a "aws/request.Request" representing the
// client's request for the ListImageScanFindingAggregations 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 ListImageScanFindingAggregations for more information on using the ListImageScanFindingAggregations
// 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 ListImageScanFindingAggregationsRequest method.
//	req, resp := client.ListImageScanFindingAggregationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListImageScanFindingAggregations
func (c *Imagebuilder) ListImageScanFindingAggregationsRequest(input *ListImageScanFindingAggregationsInput) (req *request.Request, output *ListImageScanFindingAggregationsOutput) {
	op := &request.Operation{
		Name:       opListImageScanFindingAggregations,
		HTTPMethod: "POST",
		HTTPPath:   "/ListImageScanFindingAggregations",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListImageScanFindingAggregationsInput{}
	}

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

// ListImageScanFindingAggregations API operation for EC2 Image Builder.
//
// Returns a list of image scan aggregations for your account. You can filter
// by the type of key that Image Builder uses to group results. For example,
// if you want to get a list of findings by severity level for one of your pipelines,
// you might specify your pipeline with the imagePipelineArn filter. If you
// don't specify a filter, Image Builder returns an aggregation for your account.
//
// To streamline results, you can use the following filters in your request:
//
//   - accountId
//
//   - imageBuildVersionArn
//
//   - imagePipelineArn
//
//   - vulnerabilityId
//
// 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 EC2 Image Builder's
// API operation ListImageScanFindingAggregations for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidPaginationTokenException
//     You have provided an invalid pagination token in your request.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListImageScanFindingAggregations
func (c *Imagebuilder) ListImageScanFindingAggregations(input *ListImageScanFindingAggregationsInput) (*ListImageScanFindingAggregationsOutput, error) {
	req, out := c.ListImageScanFindingAggregationsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListImageScanFindings = "ListImageScanFindings"

// ListImageScanFindingsRequest generates a "aws/request.Request" representing the
// client's request for the ListImageScanFindings 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 ListImageScanFindings for more information on using the ListImageScanFindings
// 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 ListImageScanFindingsRequest method.
//	req, resp := client.ListImageScanFindingsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListImageScanFindings
func (c *Imagebuilder) ListImageScanFindingsRequest(input *ListImageScanFindingsInput) (req *request.Request, output *ListImageScanFindingsOutput) {
	op := &request.Operation{
		Name:       opListImageScanFindings,
		HTTPMethod: "POST",
		HTTPPath:   "/ListImageScanFindings",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListImageScanFindingsInput{}
	}

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

// ListImageScanFindings API operation for EC2 Image Builder.
//
// Returns a list of image scan findings for your 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 EC2 Image Builder's
// API operation ListImageScanFindings for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidPaginationTokenException
//     You have provided an invalid pagination token in your request.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListImageScanFindings
func (c *Imagebuilder) ListImageScanFindings(input *ListImageScanFindingsInput) (*ListImageScanFindingsOutput, error) {
	req, out := c.ListImageScanFindingsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListImages = "ListImages"

// ListImagesRequest generates a "aws/request.Request" representing the
// client's request for the ListImages 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 ListImages for more information on using the ListImages
// 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 ListImagesRequest method.
//	req, resp := client.ListImagesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListImages
func (c *Imagebuilder) ListImagesRequest(input *ListImagesInput) (req *request.Request, output *ListImagesOutput) {
	op := &request.Operation{
		Name:       opListImages,
		HTTPMethod: "POST",
		HTTPPath:   "/ListImages",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListImagesInput{}
	}

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

// ListImages API operation for EC2 Image Builder.
//
// Returns the list of images that you have access to. Newly created images
// can take up to two minutes to appear in the ListImages API Results.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for EC2 Image Builder's
// API operation ListImages for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidPaginationTokenException
//     You have provided an invalid pagination token in your request.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListImages
func (c *Imagebuilder) ListImages(input *ListImagesInput) (*ListImagesOutput, error) {
	req, out := c.ListImagesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListInfrastructureConfigurations = "ListInfrastructureConfigurations"

// ListInfrastructureConfigurationsRequest generates a "aws/request.Request" representing the
// client's request for the ListInfrastructureConfigurations 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 ListInfrastructureConfigurations for more information on using the ListInfrastructureConfigurations
// 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 ListInfrastructureConfigurationsRequest method.
//	req, resp := client.ListInfrastructureConfigurationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListInfrastructureConfigurations
func (c *Imagebuilder) ListInfrastructureConfigurationsRequest(input *ListInfrastructureConfigurationsInput) (req *request.Request, output *ListInfrastructureConfigurationsOutput) {
	op := &request.Operation{
		Name:       opListInfrastructureConfigurations,
		HTTPMethod: "POST",
		HTTPPath:   "/ListInfrastructureConfigurations",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListInfrastructureConfigurationsInput{}
	}

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

// ListInfrastructureConfigurations API operation for EC2 Image Builder.
//
// Returns a list of infrastructure configurations.
//
// 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 EC2 Image Builder's
// API operation ListInfrastructureConfigurations for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidPaginationTokenException
//     You have provided an invalid pagination token in your request.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListInfrastructureConfigurations
func (c *Imagebuilder) ListInfrastructureConfigurations(input *ListInfrastructureConfigurationsInput) (*ListInfrastructureConfigurationsOutput, error) {
	req, out := c.ListInfrastructureConfigurationsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListLifecycleExecutionResources = "ListLifecycleExecutionResources"

// ListLifecycleExecutionResourcesRequest generates a "aws/request.Request" representing the
// client's request for the ListLifecycleExecutionResources 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 ListLifecycleExecutionResources for more information on using the ListLifecycleExecutionResources
// 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 ListLifecycleExecutionResourcesRequest method.
//	req, resp := client.ListLifecycleExecutionResourcesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListLifecycleExecutionResources
func (c *Imagebuilder) ListLifecycleExecutionResourcesRequest(input *ListLifecycleExecutionResourcesInput) (req *request.Request, output *ListLifecycleExecutionResourcesOutput) {
	op := &request.Operation{
		Name:       opListLifecycleExecutionResources,
		HTTPMethod: "POST",
		HTTPPath:   "/ListLifecycleExecutionResources",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListLifecycleExecutionResourcesInput{}
	}

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

// ListLifecycleExecutionResources API operation for EC2 Image Builder.
//
// List resources that the runtime instance of the image lifecycle identified
// for lifecycle actions.
//
// 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 EC2 Image Builder's
// API operation ListLifecycleExecutionResources for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidPaginationTokenException
//     You have provided an invalid pagination token in your request.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListLifecycleExecutionResources
func (c *Imagebuilder) ListLifecycleExecutionResources(input *ListLifecycleExecutionResourcesInput) (*ListLifecycleExecutionResourcesOutput, error) {
	req, out := c.ListLifecycleExecutionResourcesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListLifecycleExecutions = "ListLifecycleExecutions"

// ListLifecycleExecutionsRequest generates a "aws/request.Request" representing the
// client's request for the ListLifecycleExecutions 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 ListLifecycleExecutions for more information on using the ListLifecycleExecutions
// 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 ListLifecycleExecutionsRequest method.
//	req, resp := client.ListLifecycleExecutionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListLifecycleExecutions
func (c *Imagebuilder) ListLifecycleExecutionsRequest(input *ListLifecycleExecutionsInput) (req *request.Request, output *ListLifecycleExecutionsOutput) {
	op := &request.Operation{
		Name:       opListLifecycleExecutions,
		HTTPMethod: "POST",
		HTTPPath:   "/ListLifecycleExecutions",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListLifecycleExecutionsInput{}
	}

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

// ListLifecycleExecutions API operation for EC2 Image Builder.
//
// Get the lifecycle runtime history for the specified resource.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for EC2 Image Builder's
// API operation ListLifecycleExecutions for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidPaginationTokenException
//     You have provided an invalid pagination token in your request.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListLifecycleExecutions
func (c *Imagebuilder) ListLifecycleExecutions(input *ListLifecycleExecutionsInput) (*ListLifecycleExecutionsOutput, error) {
	req, out := c.ListLifecycleExecutionsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListLifecyclePolicies = "ListLifecyclePolicies"

// ListLifecyclePoliciesRequest generates a "aws/request.Request" representing the
// client's request for the ListLifecyclePolicies 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 ListLifecyclePolicies for more information on using the ListLifecyclePolicies
// 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 ListLifecyclePoliciesRequest method.
//	req, resp := client.ListLifecyclePoliciesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListLifecyclePolicies
func (c *Imagebuilder) ListLifecyclePoliciesRequest(input *ListLifecyclePoliciesInput) (req *request.Request, output *ListLifecyclePoliciesOutput) {
	op := &request.Operation{
		Name:       opListLifecyclePolicies,
		HTTPMethod: "POST",
		HTTPPath:   "/ListLifecyclePolicies",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListLifecyclePoliciesInput{}
	}

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

// ListLifecyclePolicies API operation for EC2 Image Builder.
//
// Get a list of lifecycle policies in your Amazon Web Services 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 EC2 Image Builder's
// API operation ListLifecyclePolicies for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidPaginationTokenException
//     You have provided an invalid pagination token in your request.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListLifecyclePolicies
func (c *Imagebuilder) ListLifecyclePolicies(input *ListLifecyclePoliciesInput) (*ListLifecyclePoliciesOutput, error) {
	req, out := c.ListLifecyclePoliciesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListTagsForResource = "ListTagsForResource"

// ListTagsForResourceRequest generates a "aws/request.Request" representing the
// client's request for the ListTagsForResource 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 ListTagsForResource for more information on using the ListTagsForResource
// 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 ListTagsForResourceRequest method.
//	req, resp := client.ListTagsForResourceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListTagsForResource
func (c *Imagebuilder) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *ListTagsForResourceOutput) {
	op := &request.Operation{
		Name:       opListTagsForResource,
		HTTPMethod: "GET",
		HTTPPath:   "/tags/{resourceArn}",
	}

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

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

// ListTagsForResource API operation for EC2 Image Builder.
//
// Returns the list of tags for the specified resource.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for EC2 Image Builder's
// API operation ListTagsForResource for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - InvalidParameterException
//     The specified parameter is invalid. Review the available parameters for the
//     API request.
//
//   - ResourceNotFoundException
//     At least one of the resources referenced by your request does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListTagsForResource
func (c *Imagebuilder) ListTagsForResource(input *ListTagsForResourceInput) (*ListTagsForResourceOutput, error) {
	req, out := c.ListTagsForResourceRequest(input)
	return out, req.Send()
}

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

const opListWaitingWorkflowSteps = "ListWaitingWorkflowSteps"

// ListWaitingWorkflowStepsRequest generates a "aws/request.Request" representing the
// client's request for the ListWaitingWorkflowSteps 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 ListWaitingWorkflowSteps for more information on using the ListWaitingWorkflowSteps
// 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 ListWaitingWorkflowStepsRequest method.
//	req, resp := client.ListWaitingWorkflowStepsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListWaitingWorkflowSteps
func (c *Imagebuilder) ListWaitingWorkflowStepsRequest(input *ListWaitingWorkflowStepsInput) (req *request.Request, output *ListWaitingWorkflowStepsOutput) {
	op := &request.Operation{
		Name:       opListWaitingWorkflowSteps,
		HTTPMethod: "POST",
		HTTPPath:   "/ListWaitingWorkflowSteps",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListWaitingWorkflowStepsInput{}
	}

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

// ListWaitingWorkflowSteps API operation for EC2 Image Builder.
//
// Get a list of workflow steps that are waiting for action for workflows in
// your Amazon Web Services 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 EC2 Image Builder's
// API operation ListWaitingWorkflowSteps for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidPaginationTokenException
//     You have provided an invalid pagination token in your request.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListWaitingWorkflowSteps
func (c *Imagebuilder) ListWaitingWorkflowSteps(input *ListWaitingWorkflowStepsInput) (*ListWaitingWorkflowStepsOutput, error) {
	req, out := c.ListWaitingWorkflowStepsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListWorkflowBuildVersions = "ListWorkflowBuildVersions"

// ListWorkflowBuildVersionsRequest generates a "aws/request.Request" representing the
// client's request for the ListWorkflowBuildVersions 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 ListWorkflowBuildVersions for more information on using the ListWorkflowBuildVersions
// 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 ListWorkflowBuildVersionsRequest method.
//	req, resp := client.ListWorkflowBuildVersionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListWorkflowBuildVersions
func (c *Imagebuilder) ListWorkflowBuildVersionsRequest(input *ListWorkflowBuildVersionsInput) (req *request.Request, output *ListWorkflowBuildVersionsOutput) {
	op := &request.Operation{
		Name:       opListWorkflowBuildVersions,
		HTTPMethod: "POST",
		HTTPPath:   "/ListWorkflowBuildVersions",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListWorkflowBuildVersionsInput{}
	}

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

// ListWorkflowBuildVersions API operation for EC2 Image Builder.
//
// Returns a list of build versions for a specific workflow resource.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for EC2 Image Builder's
// API operation ListWorkflowBuildVersions for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidPaginationTokenException
//     You have provided an invalid pagination token in your request.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListWorkflowBuildVersions
func (c *Imagebuilder) ListWorkflowBuildVersions(input *ListWorkflowBuildVersionsInput) (*ListWorkflowBuildVersionsOutput, error) {
	req, out := c.ListWorkflowBuildVersionsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListWorkflowExecutions = "ListWorkflowExecutions"

// ListWorkflowExecutionsRequest generates a "aws/request.Request" representing the
// client's request for the ListWorkflowExecutions 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 ListWorkflowExecutions for more information on using the ListWorkflowExecutions
// 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 ListWorkflowExecutionsRequest method.
//	req, resp := client.ListWorkflowExecutionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListWorkflowExecutions
func (c *Imagebuilder) ListWorkflowExecutionsRequest(input *ListWorkflowExecutionsInput) (req *request.Request, output *ListWorkflowExecutionsOutput) {
	op := &request.Operation{
		Name:       opListWorkflowExecutions,
		HTTPMethod: "POST",
		HTTPPath:   "/ListWorkflowExecutions",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListWorkflowExecutionsInput{}
	}

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

// ListWorkflowExecutions API operation for EC2 Image Builder.
//
// Returns a list of workflow runtime instance metadata objects for a specific
// image build version.
//
// 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 EC2 Image Builder's
// API operation ListWorkflowExecutions for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidPaginationTokenException
//     You have provided an invalid pagination token in your request.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListWorkflowExecutions
func (c *Imagebuilder) ListWorkflowExecutions(input *ListWorkflowExecutionsInput) (*ListWorkflowExecutionsOutput, error) {
	req, out := c.ListWorkflowExecutionsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListWorkflowStepExecutions = "ListWorkflowStepExecutions"

// ListWorkflowStepExecutionsRequest generates a "aws/request.Request" representing the
// client's request for the ListWorkflowStepExecutions 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 ListWorkflowStepExecutions for more information on using the ListWorkflowStepExecutions
// 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 ListWorkflowStepExecutionsRequest method.
//	req, resp := client.ListWorkflowStepExecutionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListWorkflowStepExecutions
func (c *Imagebuilder) ListWorkflowStepExecutionsRequest(input *ListWorkflowStepExecutionsInput) (req *request.Request, output *ListWorkflowStepExecutionsOutput) {
	op := &request.Operation{
		Name:       opListWorkflowStepExecutions,
		HTTPMethod: "POST",
		HTTPPath:   "/ListWorkflowStepExecutions",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListWorkflowStepExecutionsInput{}
	}

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

// ListWorkflowStepExecutions API operation for EC2 Image Builder.
//
// Returns runtime data for each step in a runtime instance of the workflow
// that you specify in the request.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for EC2 Image Builder's
// API operation ListWorkflowStepExecutions for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidPaginationTokenException
//     You have provided an invalid pagination token in your request.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListWorkflowStepExecutions
func (c *Imagebuilder) ListWorkflowStepExecutions(input *ListWorkflowStepExecutionsInput) (*ListWorkflowStepExecutionsOutput, error) {
	req, out := c.ListWorkflowStepExecutionsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListWorkflows = "ListWorkflows"

// ListWorkflowsRequest generates a "aws/request.Request" representing the
// client's request for the ListWorkflows 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 ListWorkflows for more information on using the ListWorkflows
// 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 ListWorkflowsRequest method.
//	req, resp := client.ListWorkflowsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListWorkflows
func (c *Imagebuilder) ListWorkflowsRequest(input *ListWorkflowsInput) (req *request.Request, output *ListWorkflowsOutput) {
	op := &request.Operation{
		Name:       opListWorkflows,
		HTTPMethod: "POST",
		HTTPPath:   "/ListWorkflows",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListWorkflowsInput{}
	}

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

// ListWorkflows API operation for EC2 Image Builder.
//
// Lists workflow build versions based on filtering parameters.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for EC2 Image Builder's
// API operation ListWorkflows for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidPaginationTokenException
//     You have provided an invalid pagination token in your request.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListWorkflows
func (c *Imagebuilder) ListWorkflows(input *ListWorkflowsInput) (*ListWorkflowsOutput, error) {
	req, out := c.ListWorkflowsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opPutComponentPolicy = "PutComponentPolicy"

// PutComponentPolicyRequest generates a "aws/request.Request" representing the
// client's request for the PutComponentPolicy 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 PutComponentPolicy for more information on using the PutComponentPolicy
// 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 PutComponentPolicyRequest method.
//	req, resp := client.PutComponentPolicyRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/PutComponentPolicy
func (c *Imagebuilder) PutComponentPolicyRequest(input *PutComponentPolicyInput) (req *request.Request, output *PutComponentPolicyOutput) {
	op := &request.Operation{
		Name:       opPutComponentPolicy,
		HTTPMethod: "PUT",
		HTTPPath:   "/PutComponentPolicy",
	}

	if input == nil {
		input = &PutComponentPolicyInput{}
	}

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

// PutComponentPolicy API operation for EC2 Image Builder.
//
// Applies a policy to a component. We recommend that you call the RAM API CreateResourceShare
// (https://docs.aws.amazon.com/ram/latest/APIReference/API_CreateResourceShare.html)
// to share resources. If you call the Image Builder API PutComponentPolicy,
// you must also call the RAM API PromoteResourceShareCreatedFromPolicy (https://docs.aws.amazon.com/ram/latest/APIReference/API_PromoteResourceShareCreatedFromPolicy.html)
// in order for the resource to be visible to all principals with whom the resource
// is shared.
//
// 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 EC2 Image Builder's
// API operation PutComponentPolicy for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidParameterValueException
//     The value that you provided for the specified parameter is invalid.
//
//   - ResourceNotFoundException
//     At least one of the resources referenced by your request does not exist.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/PutComponentPolicy
func (c *Imagebuilder) PutComponentPolicy(input *PutComponentPolicyInput) (*PutComponentPolicyOutput, error) {
	req, out := c.PutComponentPolicyRequest(input)
	return out, req.Send()
}

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

const opPutContainerRecipePolicy = "PutContainerRecipePolicy"

// PutContainerRecipePolicyRequest generates a "aws/request.Request" representing the
// client's request for the PutContainerRecipePolicy 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 PutContainerRecipePolicy for more information on using the PutContainerRecipePolicy
// 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 PutContainerRecipePolicyRequest method.
//	req, resp := client.PutContainerRecipePolicyRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/PutContainerRecipePolicy
func (c *Imagebuilder) PutContainerRecipePolicyRequest(input *PutContainerRecipePolicyInput) (req *request.Request, output *PutContainerRecipePolicyOutput) {
	op := &request.Operation{
		Name:       opPutContainerRecipePolicy,
		HTTPMethod: "PUT",
		HTTPPath:   "/PutContainerRecipePolicy",
	}

	if input == nil {
		input = &PutContainerRecipePolicyInput{}
	}

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

// PutContainerRecipePolicy API operation for EC2 Image Builder.
//
// Applies a policy to a container image. We recommend that you call the RAM
// API CreateResourceShare (https://docs.aws.amazon.com//ram/latest/APIReference/API_CreateResourceShare.html)
// to share resources. If you call the Image Builder API PutContainerImagePolicy,
// you must also call the RAM API PromoteResourceShareCreatedFromPolicy (https://docs.aws.amazon.com//ram/latest/APIReference/API_PromoteResourceShareCreatedFromPolicy.html)
// in order for the resource to be visible to all principals with whom the resource
// is shared.
//
// 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 EC2 Image Builder's
// API operation PutContainerRecipePolicy for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidParameterValueException
//     The value that you provided for the specified parameter is invalid.
//
//   - ResourceNotFoundException
//     At least one of the resources referenced by your request does not exist.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/PutContainerRecipePolicy
func (c *Imagebuilder) PutContainerRecipePolicy(input *PutContainerRecipePolicyInput) (*PutContainerRecipePolicyOutput, error) {
	req, out := c.PutContainerRecipePolicyRequest(input)
	return out, req.Send()
}

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

const opPutImagePolicy = "PutImagePolicy"

// PutImagePolicyRequest generates a "aws/request.Request" representing the
// client's request for the PutImagePolicy 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 PutImagePolicy for more information on using the PutImagePolicy
// 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 PutImagePolicyRequest method.
//	req, resp := client.PutImagePolicyRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/PutImagePolicy
func (c *Imagebuilder) PutImagePolicyRequest(input *PutImagePolicyInput) (req *request.Request, output *PutImagePolicyOutput) {
	op := &request.Operation{
		Name:       opPutImagePolicy,
		HTTPMethod: "PUT",
		HTTPPath:   "/PutImagePolicy",
	}

	if input == nil {
		input = &PutImagePolicyInput{}
	}

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

// PutImagePolicy API operation for EC2 Image Builder.
//
// Applies a policy to an image. We recommend that you call the RAM API CreateResourceShare
// (https://docs.aws.amazon.com/ram/latest/APIReference/API_CreateResourceShare.html)
// to share resources. If you call the Image Builder API PutImagePolicy, you
// must also call the RAM API PromoteResourceShareCreatedFromPolicy (https://docs.aws.amazon.com/ram/latest/APIReference/API_PromoteResourceShareCreatedFromPolicy.html)
// in order for the resource to be visible to all principals with whom the resource
// is shared.
//
// 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 EC2 Image Builder's
// API operation PutImagePolicy for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidParameterValueException
//     The value that you provided for the specified parameter is invalid.
//
//   - ResourceNotFoundException
//     At least one of the resources referenced by your request does not exist.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/PutImagePolicy
func (c *Imagebuilder) PutImagePolicy(input *PutImagePolicyInput) (*PutImagePolicyOutput, error) {
	req, out := c.PutImagePolicyRequest(input)
	return out, req.Send()
}

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

const opPutImageRecipePolicy = "PutImageRecipePolicy"

// PutImageRecipePolicyRequest generates a "aws/request.Request" representing the
// client's request for the PutImageRecipePolicy 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 PutImageRecipePolicy for more information on using the PutImageRecipePolicy
// 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 PutImageRecipePolicyRequest method.
//	req, resp := client.PutImageRecipePolicyRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/PutImageRecipePolicy
func (c *Imagebuilder) PutImageRecipePolicyRequest(input *PutImageRecipePolicyInput) (req *request.Request, output *PutImageRecipePolicyOutput) {
	op := &request.Operation{
		Name:       opPutImageRecipePolicy,
		HTTPMethod: "PUT",
		HTTPPath:   "/PutImageRecipePolicy",
	}

	if input == nil {
		input = &PutImageRecipePolicyInput{}
	}

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

// PutImageRecipePolicy API operation for EC2 Image Builder.
//
// Applies a policy to an image recipe. We recommend that you call the RAM API
// CreateResourceShare (https://docs.aws.amazon.com/ram/latest/APIReference/API_CreateResourceShare.html)
// to share resources. If you call the Image Builder API PutImageRecipePolicy,
// you must also call the RAM API PromoteResourceShareCreatedFromPolicy (https://docs.aws.amazon.com/ram/latest/APIReference/API_PromoteResourceShareCreatedFromPolicy.html)
// in order for the resource to be visible to all principals with whom the resource
// is shared.
//
// 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 EC2 Image Builder's
// API operation PutImageRecipePolicy for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidParameterValueException
//     The value that you provided for the specified parameter is invalid.
//
//   - ResourceNotFoundException
//     At least one of the resources referenced by your request does not exist.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/PutImageRecipePolicy
func (c *Imagebuilder) PutImageRecipePolicy(input *PutImageRecipePolicyInput) (*PutImageRecipePolicyOutput, error) {
	req, out := c.PutImageRecipePolicyRequest(input)
	return out, req.Send()
}

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

const opSendWorkflowStepAction = "SendWorkflowStepAction"

// SendWorkflowStepActionRequest generates a "aws/request.Request" representing the
// client's request for the SendWorkflowStepAction 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 SendWorkflowStepAction for more information on using the SendWorkflowStepAction
// 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 SendWorkflowStepActionRequest method.
//	req, resp := client.SendWorkflowStepActionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/SendWorkflowStepAction
func (c *Imagebuilder) SendWorkflowStepActionRequest(input *SendWorkflowStepActionInput) (req *request.Request, output *SendWorkflowStepActionOutput) {
	op := &request.Operation{
		Name:       opSendWorkflowStepAction,
		HTTPMethod: "PUT",
		HTTPPath:   "/SendWorkflowStepAction",
	}

	if input == nil {
		input = &SendWorkflowStepActionInput{}
	}

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

// SendWorkflowStepAction API operation for EC2 Image Builder.
//
// Pauses or resumes image creation when the associated workflow runs a WaitForAction
// step.
//
// 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 EC2 Image Builder's
// API operation SendWorkflowStepAction for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ResourceNotFoundException
//     At least one of the resources referenced by your request does not exist.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - InvalidParameterValueException
//     The value that you provided for the specified parameter is invalid.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - IdempotentParameterMismatchException
//     You have specified a client token for an operation using parameter values
//     that differ from a previous request that used the same client token.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - ResourceInUseException
//     The resource that you are trying to operate on is currently in use. Review
//     the message details and retry later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/SendWorkflowStepAction
func (c *Imagebuilder) SendWorkflowStepAction(input *SendWorkflowStepActionInput) (*SendWorkflowStepActionOutput, error) {
	req, out := c.SendWorkflowStepActionRequest(input)
	return out, req.Send()
}

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

const opStartImagePipelineExecution = "StartImagePipelineExecution"

// StartImagePipelineExecutionRequest generates a "aws/request.Request" representing the
// client's request for the StartImagePipelineExecution 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 StartImagePipelineExecution for more information on using the StartImagePipelineExecution
// 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 StartImagePipelineExecutionRequest method.
//	req, resp := client.StartImagePipelineExecutionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/StartImagePipelineExecution
func (c *Imagebuilder) StartImagePipelineExecutionRequest(input *StartImagePipelineExecutionInput) (req *request.Request, output *StartImagePipelineExecutionOutput) {
	op := &request.Operation{
		Name:       opStartImagePipelineExecution,
		HTTPMethod: "PUT",
		HTTPPath:   "/StartImagePipelineExecution",
	}

	if input == nil {
		input = &StartImagePipelineExecutionInput{}
	}

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

// StartImagePipelineExecution API operation for EC2 Image Builder.
//
// Manually triggers a pipeline to create an image.
//
// 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 EC2 Image Builder's
// API operation StartImagePipelineExecution for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ResourceNotFoundException
//     At least one of the resources referenced by your request does not exist.
//
//   - IdempotentParameterMismatchException
//     You have specified a client token for an operation using parameter values
//     that differ from a previous request that used the same client token.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - ResourceInUseException
//     The resource that you are trying to operate on is currently in use. Review
//     the message details and retry later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/StartImagePipelineExecution
func (c *Imagebuilder) StartImagePipelineExecution(input *StartImagePipelineExecutionInput) (*StartImagePipelineExecutionOutput, error) {
	req, out := c.StartImagePipelineExecutionRequest(input)
	return out, req.Send()
}

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

const opStartResourceStateUpdate = "StartResourceStateUpdate"

// StartResourceStateUpdateRequest generates a "aws/request.Request" representing the
// client's request for the StartResourceStateUpdate 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 StartResourceStateUpdate for more information on using the StartResourceStateUpdate
// 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 StartResourceStateUpdateRequest method.
//	req, resp := client.StartResourceStateUpdateRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/StartResourceStateUpdate
func (c *Imagebuilder) StartResourceStateUpdateRequest(input *StartResourceStateUpdateInput) (req *request.Request, output *StartResourceStateUpdateOutput) {
	op := &request.Operation{
		Name:       opStartResourceStateUpdate,
		HTTPMethod: "PUT",
		HTTPPath:   "/StartResourceStateUpdate",
	}

	if input == nil {
		input = &StartResourceStateUpdateInput{}
	}

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

// StartResourceStateUpdate API operation for EC2 Image Builder.
//
// Begin asynchronous resource state update for lifecycle changes to the specified
// image resources.
//
// 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 EC2 Image Builder's
// API operation StartResourceStateUpdate for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - ResourceNotFoundException
//     At least one of the resources referenced by your request does not exist.
//
//   - IdempotentParameterMismatchException
//     You have specified a client token for an operation using parameter values
//     that differ from a previous request that used the same client token.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - ResourceInUseException
//     The resource that you are trying to operate on is currently in use. Review
//     the message details and retry later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/StartResourceStateUpdate
func (c *Imagebuilder) StartResourceStateUpdate(input *StartResourceStateUpdateInput) (*StartResourceStateUpdateOutput, error) {
	req, out := c.StartResourceStateUpdateRequest(input)
	return out, req.Send()
}

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

const opTagResource = "TagResource"

// TagResourceRequest generates a "aws/request.Request" representing the
// client's request for the TagResource 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 TagResource for more information on using the TagResource
// 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 TagResourceRequest method.
//	req, resp := client.TagResourceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/TagResource
func (c *Imagebuilder) TagResourceRequest(input *TagResourceInput) (req *request.Request, output *TagResourceOutput) {
	op := &request.Operation{
		Name:       opTagResource,
		HTTPMethod: "POST",
		HTTPPath:   "/tags/{resourceArn}",
	}

	if input == nil {
		input = &TagResourceInput{}
	}

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

// TagResource API operation for EC2 Image Builder.
//
// Adds a tag to a resource.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for EC2 Image Builder's
// API operation TagResource for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - InvalidParameterException
//     The specified parameter is invalid. Review the available parameters for the
//     API request.
//
//   - ResourceNotFoundException
//     At least one of the resources referenced by your request does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/TagResource
func (c *Imagebuilder) TagResource(input *TagResourceInput) (*TagResourceOutput, error) {
	req, out := c.TagResourceRequest(input)
	return out, req.Send()
}

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

const opUntagResource = "UntagResource"

// UntagResourceRequest generates a "aws/request.Request" representing the
// client's request for the UntagResource 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 UntagResource for more information on using the UntagResource
// 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 UntagResourceRequest method.
//	req, resp := client.UntagResourceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/UntagResource
func (c *Imagebuilder) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) {
	op := &request.Operation{
		Name:       opUntagResource,
		HTTPMethod: "DELETE",
		HTTPPath:   "/tags/{resourceArn}",
	}

	if input == nil {
		input = &UntagResourceInput{}
	}

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

// UntagResource API operation for EC2 Image Builder.
//
// Removes a tag from a resource.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for EC2 Image Builder's
// API operation UntagResource for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - InvalidParameterException
//     The specified parameter is invalid. Review the available parameters for the
//     API request.
//
//   - ResourceNotFoundException
//     At least one of the resources referenced by your request does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/UntagResource
func (c *Imagebuilder) UntagResource(input *UntagResourceInput) (*UntagResourceOutput, error) {
	req, out := c.UntagResourceRequest(input)
	return out, req.Send()
}

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

const opUpdateDistributionConfiguration = "UpdateDistributionConfiguration"

// UpdateDistributionConfigurationRequest generates a "aws/request.Request" representing the
// client's request for the UpdateDistributionConfiguration 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 UpdateDistributionConfiguration for more information on using the UpdateDistributionConfiguration
// 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 UpdateDistributionConfigurationRequest method.
//	req, resp := client.UpdateDistributionConfigurationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/UpdateDistributionConfiguration
func (c *Imagebuilder) UpdateDistributionConfigurationRequest(input *UpdateDistributionConfigurationInput) (req *request.Request, output *UpdateDistributionConfigurationOutput) {
	op := &request.Operation{
		Name:       opUpdateDistributionConfiguration,
		HTTPMethod: "PUT",
		HTTPPath:   "/UpdateDistributionConfiguration",
	}

	if input == nil {
		input = &UpdateDistributionConfigurationInput{}
	}

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

// UpdateDistributionConfiguration API operation for EC2 Image Builder.
//
// Updates a new distribution configuration. Distribution configurations define
// and configure the outputs of your pipeline.
//
// 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 EC2 Image Builder's
// API operation UpdateDistributionConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - IdempotentParameterMismatchException
//     You have specified a client token for an operation using parameter values
//     that differ from a previous request that used the same client token.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - ResourceInUseException
//     The resource that you are trying to operate on is currently in use. Review
//     the message details and retry later.
//
//   - InvalidParameterCombinationException
//     You have specified two or more mutually exclusive parameters. Review the
//     error message for details.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/UpdateDistributionConfiguration
func (c *Imagebuilder) UpdateDistributionConfiguration(input *UpdateDistributionConfigurationInput) (*UpdateDistributionConfigurationOutput, error) {
	req, out := c.UpdateDistributionConfigurationRequest(input)
	return out, req.Send()
}

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

const opUpdateImagePipeline = "UpdateImagePipeline"

// UpdateImagePipelineRequest generates a "aws/request.Request" representing the
// client's request for the UpdateImagePipeline 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 UpdateImagePipeline for more information on using the UpdateImagePipeline
// 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 UpdateImagePipelineRequest method.
//	req, resp := client.UpdateImagePipelineRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/UpdateImagePipeline
func (c *Imagebuilder) UpdateImagePipelineRequest(input *UpdateImagePipelineInput) (req *request.Request, output *UpdateImagePipelineOutput) {
	op := &request.Operation{
		Name:       opUpdateImagePipeline,
		HTTPMethod: "PUT",
		HTTPPath:   "/UpdateImagePipeline",
	}

	if input == nil {
		input = &UpdateImagePipelineInput{}
	}

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

// UpdateImagePipeline API operation for EC2 Image Builder.
//
// Updates an image pipeline. Image pipelines enable you to automate the creation
// and distribution of images. You must specify exactly one recipe for your
// image, using either a containerRecipeArn or an imageRecipeArn.
//
// UpdateImagePipeline does not support selective updates for the pipeline.
// You must specify all of the required properties in the update request, not
// just the properties that have changed.
//
// 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 EC2 Image Builder's
// API operation UpdateImagePipeline for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - IdempotentParameterMismatchException
//     You have specified a client token for an operation using parameter values
//     that differ from a previous request that used the same client token.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - ResourceInUseException
//     The resource that you are trying to operate on is currently in use. Review
//     the message details and retry later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/UpdateImagePipeline
func (c *Imagebuilder) UpdateImagePipeline(input *UpdateImagePipelineInput) (*UpdateImagePipelineOutput, error) {
	req, out := c.UpdateImagePipelineRequest(input)
	return out, req.Send()
}

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

const opUpdateInfrastructureConfiguration = "UpdateInfrastructureConfiguration"

// UpdateInfrastructureConfigurationRequest generates a "aws/request.Request" representing the
// client's request for the UpdateInfrastructureConfiguration 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 UpdateInfrastructureConfiguration for more information on using the UpdateInfrastructureConfiguration
// 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 UpdateInfrastructureConfigurationRequest method.
//	req, resp := client.UpdateInfrastructureConfigurationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/UpdateInfrastructureConfiguration
func (c *Imagebuilder) UpdateInfrastructureConfigurationRequest(input *UpdateInfrastructureConfigurationInput) (req *request.Request, output *UpdateInfrastructureConfigurationOutput) {
	op := &request.Operation{
		Name:       opUpdateInfrastructureConfiguration,
		HTTPMethod: "PUT",
		HTTPPath:   "/UpdateInfrastructureConfiguration",
	}

	if input == nil {
		input = &UpdateInfrastructureConfigurationInput{}
	}

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

// UpdateInfrastructureConfiguration API operation for EC2 Image Builder.
//
// Updates a new infrastructure configuration. An infrastructure configuration
// defines the environment in which your image will be built and tested.
//
// 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 EC2 Image Builder's
// API operation UpdateInfrastructureConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - IdempotentParameterMismatchException
//     You have specified a client token for an operation using parameter values
//     that differ from a previous request that used the same client token.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - ResourceInUseException
//     The resource that you are trying to operate on is currently in use. Review
//     the message details and retry later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/UpdateInfrastructureConfiguration
func (c *Imagebuilder) UpdateInfrastructureConfiguration(input *UpdateInfrastructureConfigurationInput) (*UpdateInfrastructureConfigurationOutput, error) {
	req, out := c.UpdateInfrastructureConfigurationRequest(input)
	return out, req.Send()
}

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

const opUpdateLifecyclePolicy = "UpdateLifecyclePolicy"

// UpdateLifecyclePolicyRequest generates a "aws/request.Request" representing the
// client's request for the UpdateLifecyclePolicy 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 UpdateLifecyclePolicy for more information on using the UpdateLifecyclePolicy
// 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 UpdateLifecyclePolicyRequest method.
//	req, resp := client.UpdateLifecyclePolicyRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/UpdateLifecyclePolicy
func (c *Imagebuilder) UpdateLifecyclePolicyRequest(input *UpdateLifecyclePolicyInput) (req *request.Request, output *UpdateLifecyclePolicyOutput) {
	op := &request.Operation{
		Name:       opUpdateLifecyclePolicy,
		HTTPMethod: "PUT",
		HTTPPath:   "/UpdateLifecyclePolicy",
	}

	if input == nil {
		input = &UpdateLifecyclePolicyInput{}
	}

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

// UpdateLifecyclePolicy API operation for EC2 Image Builder.
//
// Update the specified lifecycle policy.
//
// 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 EC2 Image Builder's
// API operation UpdateLifecyclePolicy for usage and error information.
//
// Returned Error Types:
//
//   - ServiceException
//     This exception is thrown when the service encounters an unrecoverable exception.
//
//   - ClientException
//     These errors are usually caused by a client action, such as using an action
//     or resource on behalf of a user that doesn't have permissions to use the
//     action or resource, or specifying an invalid resource identifier.
//
//   - ServiceUnavailableException
//     The service is unable to process your request at this time.
//
//   - InvalidRequestException
//     You have requested an action that that the service doesn't support.
//
//   - IdempotentParameterMismatchException
//     You have specified a client token for an operation using parameter values
//     that differ from a previous request that used the same client token.
//
//   - ForbiddenException
//     You are not authorized to perform the requested operation.
//
//   - CallRateLimitExceededException
//     You have exceeded the permitted request rate for the specific operation.
//
//   - ResourceInUseException
//     The resource that you are trying to operate on is currently in use. Review
//     the message details and retry later.
//
//   - InvalidParameterCombinationException
//     You have specified two or more mutually exclusive parameters. Review the
//     error message for details.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/UpdateLifecyclePolicy
func (c *Imagebuilder) UpdateLifecyclePolicy(input *UpdateLifecyclePolicyInput) (*UpdateLifecyclePolicyOutput, error) {
	req, out := c.UpdateLifecyclePolicyRequest(input)
	return out, req.Send()
}

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

// Contains counts of vulnerability findings from image scans that run when
// you create new Image Builder images, or build new versions of existing images.
// The vulnerability counts are grouped by severity level. The counts are aggregated
// across resources to create the final tally for the account that owns them.
type AccountAggregation struct {
	_ struct{} `type:"structure"`

	// Identifies the account that owns the aggregated resource findings.
	AccountId *string `locationName:"accountId" min:"1" type:"string"`

	// Counts by severity level for medium severity and higher level findings, plus
	// a total for all of the findings.
	SeverityCounts *SeverityCounts `locationName:"severityCounts" 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 AccountAggregation) 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 AccountAggregation) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *AccountAggregation) SetAccountId(v string) *AccountAggregation {
	s.AccountId = &v
	return s
}

// SetSeverityCounts sets the SeverityCounts field's value.
func (s *AccountAggregation) SetSeverityCounts(v *SeverityCounts) *AccountAggregation {
	s.SeverityCounts = v
	return s
}

// In addition to your infrastructure configuration, these settings provide
// an extra layer of control over your build instances. You can also specify
// commands to run on launch for all of your build instances.
//
// Image Builder does not automatically install the Systems Manager agent on
// Windows instances. If your base image includes the Systems Manager agent,
// then the AMI that you create will also include the agent. For Linux instances,
// if the base image does not already include the Systems Manager agent, Image
// Builder installs it. For Linux instances where Image Builder installs the
// Systems Manager agent, you can choose whether to keep it for the AMI that
// you create.
type AdditionalInstanceConfiguration struct {
	_ struct{} `type:"structure"`

	// Contains settings for the Systems Manager agent on your build instance.
	SystemsManagerAgent *SystemsManagerAgent `locationName:"systemsManagerAgent" type:"structure"`

	// Use this property to provide commands or a command script to run when you
	// launch your build instance.
	//
	// The userDataOverride property replaces any commands that Image Builder might
	// have added to ensure that Systems Manager is installed on your Linux build
	// instance. If you override the user data, make sure that you add commands
	// to install Systems Manager, if it is not pre-installed on your base image.
	//
	// The user data is always base 64 encoded. For example, the following commands
	// are encoded as IyEvYmluL2Jhc2gKbWtkaXIgLXAgL3Zhci9iYi8KdG91Y2ggL3Zhci$:
	//
	// #!/bin/bash
	//
	// mkdir -p /var/bb/
	//
	// touch /var
	UserDataOverride *string `locationName:"userDataOverride" 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 AdditionalInstanceConfiguration) 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 AdditionalInstanceConfiguration) GoString() string {
	return s.String()
}

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

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

// SetSystemsManagerAgent sets the SystemsManagerAgent field's value.
func (s *AdditionalInstanceConfiguration) SetSystemsManagerAgent(v *SystemsManagerAgent) *AdditionalInstanceConfiguration {
	s.SystemsManagerAgent = v
	return s
}

// SetUserDataOverride sets the UserDataOverride field's value.
func (s *AdditionalInstanceConfiguration) SetUserDataOverride(v string) *AdditionalInstanceConfiguration {
	s.UserDataOverride = &v
	return s
}

// Details of an Amazon EC2 AMI.
type Ami struct {
	_ struct{} `type:"structure"`

	// The account ID of the owner of the AMI.
	AccountId *string `locationName:"accountId" min:"1" type:"string"`

	// The description of the Amazon EC2 AMI. Minimum and maximum length are in
	// characters.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The AMI ID of the Amazon EC2 AMI.
	Image *string `locationName:"image" min:"1" type:"string"`

	// The name of the Amazon EC2 AMI.
	Name *string `locationName:"name" min:"1" type:"string"`

	// The Amazon Web Services Region of the Amazon EC2 AMI.
	Region *string `locationName:"region" min:"1" type:"string"`

	// Image status and the reason for that status.
	State *ImageState `locationName:"state" 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 Ami) 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 Ami) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *Ami) SetAccountId(v string) *Ami {
	s.AccountId = &v
	return s
}

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

// SetImage sets the Image field's value.
func (s *Ami) SetImage(v string) *Ami {
	s.Image = &v
	return s
}

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

// SetRegion sets the Region field's value.
func (s *Ami) SetRegion(v string) *Ami {
	s.Region = &v
	return s
}

// SetState sets the State field's value.
func (s *Ami) SetState(v *ImageState) *Ami {
	s.State = v
	return s
}

// Define and configure the output AMIs of the pipeline.
type AmiDistributionConfiguration struct {
	_ struct{} `type:"structure"`

	// The tags to apply to AMIs distributed to this Region.
	AmiTags map[string]*string `locationName:"amiTags" min:"1" type:"map"`

	// The description of the AMI distribution configuration. Minimum and maximum
	// length are in characters.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The KMS key identifier used to encrypt the distributed image.
	KmsKeyId *string `locationName:"kmsKeyId" min:"1" type:"string"`

	// Launch permissions can be used to configure which Amazon Web Services accounts
	// can use the AMI to launch instances.
	LaunchPermission *LaunchPermissionConfiguration `locationName:"launchPermission" type:"structure"`

	// The name of the output AMI.
	Name *string `locationName:"name" min:"1" type:"string"`

	// The ID of an account to which you want to distribute an image.
	TargetAccountIds []*string `locationName:"targetAccountIds" min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AmiDistributionConfiguration) 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 AmiDistributionConfiguration) GoString() string {
	return s.String()
}

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

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

// SetAmiTags sets the AmiTags field's value.
func (s *AmiDistributionConfiguration) SetAmiTags(v map[string]*string) *AmiDistributionConfiguration {
	s.AmiTags = v
	return s
}

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

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *AmiDistributionConfiguration) SetKmsKeyId(v string) *AmiDistributionConfiguration {
	s.KmsKeyId = &v
	return s
}

// SetLaunchPermission sets the LaunchPermission field's value.
func (s *AmiDistributionConfiguration) SetLaunchPermission(v *LaunchPermissionConfiguration) *AmiDistributionConfiguration {
	s.LaunchPermission = v
	return s
}

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

// SetTargetAccountIds sets the TargetAccountIds field's value.
func (s *AmiDistributionConfiguration) SetTargetAccountIds(v []*string) *AmiDistributionConfiguration {
	s.TargetAccountIds = v
	return s
}

// You have exceeded the permitted request rate for the specific operation.
type CallRateLimitExceededException 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 CallRateLimitExceededException) 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 CallRateLimitExceededException) GoString() string {
	return s.String()
}

func newErrorCallRateLimitExceededException(v protocol.ResponseMetadata) error {
	return &CallRateLimitExceededException{
		RespMetadata: v,
	}
}

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

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

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

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

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

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

	// Unique, case-sensitive identifier you provide to ensure idempotency of the
	// request. For more information, see Ensuring idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)
	// in the Amazon EC2 API Reference.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The Amazon Resource Name (ARN) of the image that you want to cancel creation
	// for.
	//
	// ImageBuildVersionArn is a required field
	ImageBuildVersionArn *string `locationName:"imageBuildVersionArn" 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 CancelImageCreationInput) 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 CancelImageCreationInput) GoString() string {
	return s.String()
}

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

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

// SetClientToken sets the ClientToken field's value.
func (s *CancelImageCreationInput) SetClientToken(v string) *CancelImageCreationInput {
	s.ClientToken = &v
	return s
}

// SetImageBuildVersionArn sets the ImageBuildVersionArn field's value.
func (s *CancelImageCreationInput) SetImageBuildVersionArn(v string) *CancelImageCreationInput {
	s.ImageBuildVersionArn = &v
	return s
}

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

	// The client token that uniquely identifies the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string"`

	// The ARN of the image whose creation this request canceled.
	ImageBuildVersionArn *string `locationName:"imageBuildVersionArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 CancelImageCreationOutput) 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 CancelImageCreationOutput) GoString() string {
	return s.String()
}

// SetClientToken sets the ClientToken field's value.
func (s *CancelImageCreationOutput) SetClientToken(v string) *CancelImageCreationOutput {
	s.ClientToken = &v
	return s
}

// SetImageBuildVersionArn sets the ImageBuildVersionArn field's value.
func (s *CancelImageCreationOutput) SetImageBuildVersionArn(v string) *CancelImageCreationOutput {
	s.ImageBuildVersionArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *CancelImageCreationOutput) SetRequestId(v string) *CancelImageCreationOutput {
	s.RequestId = &v
	return s
}

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

	// Unique, case-sensitive identifier you provide to ensure idempotency of the
	// request. For more information, see Ensuring idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)
	// in the Amazon EC2 API Reference.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// Identifies the specific runtime instance of the image lifecycle to cancel.
	//
	// LifecycleExecutionId is a required field
	LifecycleExecutionId *string `locationName:"lifecycleExecutionId" 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 CancelLifecycleExecutionInput) 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 CancelLifecycleExecutionInput) GoString() string {
	return s.String()
}

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

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

// SetClientToken sets the ClientToken field's value.
func (s *CancelLifecycleExecutionInput) SetClientToken(v string) *CancelLifecycleExecutionInput {
	s.ClientToken = &v
	return s
}

// SetLifecycleExecutionId sets the LifecycleExecutionId field's value.
func (s *CancelLifecycleExecutionInput) SetLifecycleExecutionId(v string) *CancelLifecycleExecutionInput {
	s.LifecycleExecutionId = &v
	return s
}

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

	// The unique identifier for the image lifecycle runtime instance that was canceled.
	LifecycleExecutionId *string `locationName:"lifecycleExecutionId" 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 CancelLifecycleExecutionOutput) 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 CancelLifecycleExecutionOutput) GoString() string {
	return s.String()
}

// SetLifecycleExecutionId sets the LifecycleExecutionId field's value.
func (s *CancelLifecycleExecutionOutput) SetLifecycleExecutionId(v string) *CancelLifecycleExecutionOutput {
	s.LifecycleExecutionId = &v
	return s
}

// These errors are usually caused by a client action, such as using an action
// or resource on behalf of a user that doesn't have permissions to use the
// action or resource, or specifying an invalid resource identifier.
type ClientException 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 ClientException) 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 ClientException) GoString() string {
	return s.String()
}

func newErrorClientException(v protocol.ResponseMetadata) error {
	return &ClientException{
		RespMetadata: v,
	}
}

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

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

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

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

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

// A detailed view of a component.
type Component struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the component.
	Arn *string `locationName:"arn" type:"string"`

	// Describes what change has been made in this version of the component, or
	// what makes this version different from other versions of the component.
	ChangeDescription *string `locationName:"changeDescription" min:"1" type:"string"`

	// Component data contains the YAML document content for the component.
	Data *string `locationName:"data" type:"string"`

	// The date that Image Builder created the component.
	DateCreated *string `locationName:"dateCreated" type:"string"`

	// The description of the component.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The encryption status of the component.
	Encrypted *bool `locationName:"encrypted" type:"boolean"`

	// The KMS key identifier used to encrypt the component.
	KmsKeyId *string `locationName:"kmsKeyId" min:"1" type:"string"`

	// The name of the component.
	Name *string `locationName:"name" type:"string"`

	// Indicates whether component source is hidden from view in the console, and
	// from component detail results for API, CLI, or SDK operations.
	Obfuscate *bool `locationName:"obfuscate" type:"boolean"`

	// The owner of the component.
	Owner *string `locationName:"owner" min:"1" type:"string"`

	// Contains parameter details for each of the parameters that the component
	// document defined for the component.
	Parameters []*ComponentParameterDetail `locationName:"parameters" type:"list"`

	// The operating system platform of the component.
	Platform *string `locationName:"platform" type:"string" enum:"Platform"`

	// Contains the name of the publisher if this is a third-party component. Otherwise,
	// this property is empty.
	Publisher *string `locationName:"publisher" min:"1" type:"string"`

	// Describes the current status of the component. This is used for components
	// that are no longer active.
	State *ComponentState `locationName:"state" type:"structure"`

	// The operating system (OS) version supported by the component. If the OS information
	// is available, Image Builder performs a prefix match against the base image
	// OS version during image recipe creation.
	SupportedOsVersions []*string `locationName:"supportedOsVersions" min:"1" type:"list"`

	// The tags that apply to the component.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`

	// The component type specifies whether Image Builder uses the component to
	// build the image or only to test it.
	Type *string `locationName:"type" type:"string" enum:"ComponentType"`

	// The version of the component.
	Version *string `locationName:"version" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Component) 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 Component) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *Component) SetArn(v string) *Component {
	s.Arn = &v
	return s
}

// SetChangeDescription sets the ChangeDescription field's value.
func (s *Component) SetChangeDescription(v string) *Component {
	s.ChangeDescription = &v
	return s
}

// SetData sets the Data field's value.
func (s *Component) SetData(v string) *Component {
	s.Data = &v
	return s
}

// SetDateCreated sets the DateCreated field's value.
func (s *Component) SetDateCreated(v string) *Component {
	s.DateCreated = &v
	return s
}

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

// SetEncrypted sets the Encrypted field's value.
func (s *Component) SetEncrypted(v bool) *Component {
	s.Encrypted = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *Component) SetKmsKeyId(v string) *Component {
	s.KmsKeyId = &v
	return s
}

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

// SetObfuscate sets the Obfuscate field's value.
func (s *Component) SetObfuscate(v bool) *Component {
	s.Obfuscate = &v
	return s
}

// SetOwner sets the Owner field's value.
func (s *Component) SetOwner(v string) *Component {
	s.Owner = &v
	return s
}

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

// SetPlatform sets the Platform field's value.
func (s *Component) SetPlatform(v string) *Component {
	s.Platform = &v
	return s
}

// SetPublisher sets the Publisher field's value.
func (s *Component) SetPublisher(v string) *Component {
	s.Publisher = &v
	return s
}

// SetState sets the State field's value.
func (s *Component) SetState(v *ComponentState) *Component {
	s.State = v
	return s
}

// SetSupportedOsVersions sets the SupportedOsVersions field's value.
func (s *Component) SetSupportedOsVersions(v []*string) *Component {
	s.SupportedOsVersions = v
	return s
}

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

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

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

// Configuration details of the component.
type ComponentConfiguration struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the component.
	//
	// ComponentArn is a required field
	ComponentArn *string `locationName:"componentArn" type:"string" required:"true"`

	// A group of parameter settings that Image Builder uses to configure the component
	// for a specific recipe.
	Parameters []*ComponentParameter `locationName:"parameters" min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ComponentConfiguration) 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 ComponentConfiguration) GoString() string {
	return s.String()
}

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

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

// SetComponentArn sets the ComponentArn field's value.
func (s *ComponentConfiguration) SetComponentArn(v string) *ComponentConfiguration {
	s.ComponentArn = &v
	return s
}

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

// Contains a key/value pair that sets the named component parameter.
type ComponentParameter struct {
	_ struct{} `type:"structure"`

	// The name of the component parameter to set.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true"`

	// Sets the value for the named component parameter.
	//
	// Value is a required field
	Value []*string `locationName:"value" 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 ComponentParameter) 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 ComponentParameter) GoString() string {
	return s.String()
}

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

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

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

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

// Defines a parameter that is used to provide configuration details for the
// component.
type ComponentParameterDetail struct {
	_ struct{} `type:"structure"`

	// The default value of this parameter if no input is provided.
	DefaultValue []*string `locationName:"defaultValue" type:"list"`

	// Describes this parameter.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The name of this input parameter.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true"`

	// The type of input this parameter provides. The currently supported value
	// is "string".
	//
	// Type is a required field
	Type *string `locationName:"type" 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 ComponentParameterDetail) 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 ComponentParameterDetail) GoString() string {
	return s.String()
}

// SetDefaultValue sets the DefaultValue field's value.
func (s *ComponentParameterDetail) SetDefaultValue(v []*string) *ComponentParameterDetail {
	s.DefaultValue = v
	return s
}

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

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

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

// A group of fields that describe the current status of components.
type ComponentState struct {
	_ struct{} `type:"structure"`

	// Describes how or why the component changed state.
	Reason *string `locationName:"reason" min:"1" type:"string"`

	// The current state of the component.
	Status *string `locationName:"status" type:"string" enum:"ComponentStatus"`
}

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

// SetReason sets the Reason field's value.
func (s *ComponentState) SetReason(v string) *ComponentState {
	s.Reason = &v
	return s
}

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

// A high-level summary of a component.
type ComponentSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the component.
	Arn *string `locationName:"arn" type:"string"`

	// The change description for the current version of the component.
	ChangeDescription *string `locationName:"changeDescription" min:"1" type:"string"`

	// The original creation date of the component.
	DateCreated *string `locationName:"dateCreated" type:"string"`

	// The description of the component.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The name of the component.
	Name *string `locationName:"name" type:"string"`

	// Indicates whether component source is hidden from view in the console, and
	// from component detail results for API, CLI, or SDK operations.
	Obfuscate *bool `locationName:"obfuscate" type:"boolean"`

	// The owner of the component.
	Owner *string `locationName:"owner" min:"1" type:"string"`

	// The operating system platform of the component.
	Platform *string `locationName:"platform" type:"string" enum:"Platform"`

	// Contains the name of the publisher if this is a third-party component. Otherwise,
	// this property is empty.
	Publisher *string `locationName:"publisher" min:"1" type:"string"`

	// Describes the current status of the component.
	State *ComponentState `locationName:"state" type:"structure"`

	// The operating system (OS) version that the component supports. If the OS
	// information is available, Image Builder performs a prefix match against the
	// base image OS version during image recipe creation.
	SupportedOsVersions []*string `locationName:"supportedOsVersions" min:"1" type:"list"`

	// The tags that apply to the component.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`

	// The component type specifies whether Image Builder uses the component to
	// build the image or only to test it.
	Type *string `locationName:"type" type:"string" enum:"ComponentType"`

	// The version of the component.
	Version *string `locationName:"version" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ComponentSummary) 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 ComponentSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *ComponentSummary) SetArn(v string) *ComponentSummary {
	s.Arn = &v
	return s
}

// SetChangeDescription sets the ChangeDescription field's value.
func (s *ComponentSummary) SetChangeDescription(v string) *ComponentSummary {
	s.ChangeDescription = &v
	return s
}

// SetDateCreated sets the DateCreated field's value.
func (s *ComponentSummary) SetDateCreated(v string) *ComponentSummary {
	s.DateCreated = &v
	return s
}

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

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

// SetObfuscate sets the Obfuscate field's value.
func (s *ComponentSummary) SetObfuscate(v bool) *ComponentSummary {
	s.Obfuscate = &v
	return s
}

// SetOwner sets the Owner field's value.
func (s *ComponentSummary) SetOwner(v string) *ComponentSummary {
	s.Owner = &v
	return s
}

// SetPlatform sets the Platform field's value.
func (s *ComponentSummary) SetPlatform(v string) *ComponentSummary {
	s.Platform = &v
	return s
}

// SetPublisher sets the Publisher field's value.
func (s *ComponentSummary) SetPublisher(v string) *ComponentSummary {
	s.Publisher = &v
	return s
}

// SetState sets the State field's value.
func (s *ComponentSummary) SetState(v *ComponentState) *ComponentSummary {
	s.State = v
	return s
}

// SetSupportedOsVersions sets the SupportedOsVersions field's value.
func (s *ComponentSummary) SetSupportedOsVersions(v []*string) *ComponentSummary {
	s.SupportedOsVersions = v
	return s
}

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

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

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

// The defining characteristics of a specific version of an Amazon Web Services
// TOE component.
type ComponentVersion struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the component.
	//
	// Semantic versioning is included in each object's Amazon Resource Name (ARN),
	// at the level that applies to that object as follows:
	//
	// Versionless ARNs and Name ARNs do not include specific values in any of the
	// nodes. The nodes are either left off entirely, or they are specified as wildcards,
	// for example: x.x.x.
	//
	// Version ARNs have only the first three nodes: <major>.<minor>.<patch>
	//
	// Build version ARNs have all four nodes, and point to a specific build for
	// a specific version of an object.
	Arn *string `locationName:"arn" type:"string"`

	// The date that the component was created.
	DateCreated *string `locationName:"dateCreated" type:"string"`

	// The description of the component.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The name of the component.
	Name *string `locationName:"name" type:"string"`

	// The owner of the component.
	Owner *string `locationName:"owner" min:"1" type:"string"`

	// The platform of the component.
	Platform *string `locationName:"platform" type:"string" enum:"Platform"`

	// he operating system (OS) version supported by the component. If the OS information
	// is available, a prefix match is performed against the base image OS version
	// during image recipe creation.
	SupportedOsVersions []*string `locationName:"supportedOsVersions" min:"1" type:"list"`

	// The type of the component denotes whether the component is used to build
	// the image or only to test it.
	Type *string `locationName:"type" type:"string" enum:"ComponentType"`

	// The semantic version of the component.
	//
	// The semantic version has four nodes: <major>.<minor>.<patch>/<build>. You
	// can assign values for the first three, and can filter on all of them.
	//
	// Assignment: For the first three nodes you can assign any positive integer
	// value, including zero, with an upper limit of 2^30-1, or 1073741823 for each
	// node. Image Builder automatically assigns the build number to the fourth
	// node.
	//
	// Patterns: You can use any numeric pattern that adheres to the assignment
	// requirements for the nodes that you can assign. For example, you might choose
	// a software version pattern, such as 1.0.0, or a date, such as 2021.01.01.
	//
	// Filtering: With semantic versioning, you have the flexibility to use wildcards
	// (x) to specify the most recent versions or nodes when selecting the base
	// image or components for your recipe. When you use a wildcard in any node,
	// all nodes to the right of the first wildcard must also be wildcards.
	Version *string `locationName:"version" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ComponentVersion) 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 ComponentVersion) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *ComponentVersion) SetArn(v string) *ComponentVersion {
	s.Arn = &v
	return s
}

// SetDateCreated sets the DateCreated field's value.
func (s *ComponentVersion) SetDateCreated(v string) *ComponentVersion {
	s.DateCreated = &v
	return s
}

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

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

// SetOwner sets the Owner field's value.
func (s *ComponentVersion) SetOwner(v string) *ComponentVersion {
	s.Owner = &v
	return s
}

// SetPlatform sets the Platform field's value.
func (s *ComponentVersion) SetPlatform(v string) *ComponentVersion {
	s.Platform = &v
	return s
}

// SetSupportedOsVersions sets the SupportedOsVersions field's value.
func (s *ComponentVersion) SetSupportedOsVersions(v []*string) *ComponentVersion {
	s.SupportedOsVersions = v
	return s
}

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

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

// A container encapsulates the runtime environment for an application.
type Container struct {
	_ struct{} `type:"structure"`

	// A list of URIs for containers created in the context Region.
	ImageUris []*string `locationName:"imageUris" type:"list"`

	// Containers and container images are Region-specific. This is the Region context
	// for the container.
	Region *string `locationName:"region" 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 Container) 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 Container) GoString() string {
	return s.String()
}

// SetImageUris sets the ImageUris field's value.
func (s *Container) SetImageUris(v []*string) *Container {
	s.ImageUris = v
	return s
}

// SetRegion sets the Region field's value.
func (s *Container) SetRegion(v string) *Container {
	s.Region = &v
	return s
}

// Container distribution settings for encryption, licensing, and sharing in
// a specific Region.
type ContainerDistributionConfiguration struct {
	_ struct{} `type:"structure"`

	// Tags that are attached to the container distribution configuration.
	ContainerTags []*string `locationName:"containerTags" type:"list"`

	// The description of the container distribution configuration.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The destination repository for the container distribution configuration.
	//
	// TargetRepository is a required field
	TargetRepository *TargetContainerRepository `locationName:"targetRepository" type:"structure" 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 ContainerDistributionConfiguration) 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 ContainerDistributionConfiguration) GoString() string {
	return s.String()
}

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

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

// SetContainerTags sets the ContainerTags field's value.
func (s *ContainerDistributionConfiguration) SetContainerTags(v []*string) *ContainerDistributionConfiguration {
	s.ContainerTags = v
	return s
}

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

// SetTargetRepository sets the TargetRepository field's value.
func (s *ContainerDistributionConfiguration) SetTargetRepository(v *TargetContainerRepository) *ContainerDistributionConfiguration {
	s.TargetRepository = v
	return s
}

// A container recipe.
type ContainerRecipe struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the container recipe.
	//
	// Semantic versioning is included in each object's Amazon Resource Name (ARN),
	// at the level that applies to that object as follows:
	//
	// Versionless ARNs and Name ARNs do not include specific values in any of the
	// nodes. The nodes are either left off entirely, or they are specified as wildcards,
	// for example: x.x.x.
	//
	// Version ARNs have only the first three nodes: <major>.<minor>.<patch>
	//
	// Build version ARNs have all four nodes, and point to a specific build for
	// a specific version of an object.
	Arn *string `locationName:"arn" type:"string"`

	// Build and test components that are included in the container recipe. Recipes
	// require a minimum of one build component, and can have a maximum of 20 build
	// and test components in any combination.
	Components []*ComponentConfiguration `locationName:"components" min:"1" type:"list"`

	// Specifies the type of container, such as Docker.
	ContainerType *string `locationName:"containerType" type:"string" enum:"ContainerType"`

	// The date when this container recipe was created.
	DateCreated *string `locationName:"dateCreated" type:"string"`

	// The description of the container recipe.
	Description *string `locationName:"description" min:"1" type:"string"`

	// Dockerfiles are text documents that are used to build Docker containers,
	// and ensure that they contain all of the elements required by the application
	// running inside. The template data consists of contextual variables where
	// Image Builder places build information or scripts, based on your container
	// image recipe.
	DockerfileTemplateData *string `locationName:"dockerfileTemplateData" type:"string"`

	// A flag that indicates if the target container is encrypted.
	Encrypted *bool `locationName:"encrypted" type:"boolean"`

	// A group of options that can be used to configure an instance for building
	// and testing container images.
	InstanceConfiguration *InstanceConfiguration `locationName:"instanceConfiguration" type:"structure"`

	// Identifies which KMS key is used to encrypt the container image for distribution
	// to the target Region.
	KmsKeyId *string `locationName:"kmsKeyId" min:"1" type:"string"`

	// The name of the container recipe.
	Name *string `locationName:"name" type:"string"`

	// The owner of the container recipe.
	Owner *string `locationName:"owner" min:"1" type:"string"`

	// The base image for the container recipe.
	ParentImage *string `locationName:"parentImage" min:"1" type:"string"`

	// The system platform for the container, such as Windows or Linux.
	Platform *string `locationName:"platform" type:"string" enum:"Platform"`

	// Tags that are attached to the container recipe.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`

	// The destination repository for the container image.
	TargetRepository *TargetContainerRepository `locationName:"targetRepository" type:"structure"`

	// The semantic version of the container recipe.
	//
	// The semantic version has four nodes: <major>.<minor>.<patch>/<build>. You
	// can assign values for the first three, and can filter on all of them.
	//
	// Assignment: For the first three nodes you can assign any positive integer
	// value, including zero, with an upper limit of 2^30-1, or 1073741823 for each
	// node. Image Builder automatically assigns the build number to the fourth
	// node.
	//
	// Patterns: You can use any numeric pattern that adheres to the assignment
	// requirements for the nodes that you can assign. For example, you might choose
	// a software version pattern, such as 1.0.0, or a date, such as 2021.01.01.
	//
	// Filtering: With semantic versioning, you have the flexibility to use wildcards
	// (x) to specify the most recent versions or nodes when selecting the base
	// image or components for your recipe. When you use a wildcard in any node,
	// all nodes to the right of the first wildcard must also be wildcards.
	Version *string `locationName:"version" type:"string"`

	// The working directory for use during build and test workflows.
	WorkingDirectory *string `locationName:"workingDirectory" 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 ContainerRecipe) 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 ContainerRecipe) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *ContainerRecipe) SetArn(v string) *ContainerRecipe {
	s.Arn = &v
	return s
}

// SetComponents sets the Components field's value.
func (s *ContainerRecipe) SetComponents(v []*ComponentConfiguration) *ContainerRecipe {
	s.Components = v
	return s
}

// SetContainerType sets the ContainerType field's value.
func (s *ContainerRecipe) SetContainerType(v string) *ContainerRecipe {
	s.ContainerType = &v
	return s
}

// SetDateCreated sets the DateCreated field's value.
func (s *ContainerRecipe) SetDateCreated(v string) *ContainerRecipe {
	s.DateCreated = &v
	return s
}

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

// SetDockerfileTemplateData sets the DockerfileTemplateData field's value.
func (s *ContainerRecipe) SetDockerfileTemplateData(v string) *ContainerRecipe {
	s.DockerfileTemplateData = &v
	return s
}

// SetEncrypted sets the Encrypted field's value.
func (s *ContainerRecipe) SetEncrypted(v bool) *ContainerRecipe {
	s.Encrypted = &v
	return s
}

// SetInstanceConfiguration sets the InstanceConfiguration field's value.
func (s *ContainerRecipe) SetInstanceConfiguration(v *InstanceConfiguration) *ContainerRecipe {
	s.InstanceConfiguration = v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *ContainerRecipe) SetKmsKeyId(v string) *ContainerRecipe {
	s.KmsKeyId = &v
	return s
}

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

// SetOwner sets the Owner field's value.
func (s *ContainerRecipe) SetOwner(v string) *ContainerRecipe {
	s.Owner = &v
	return s
}

// SetParentImage sets the ParentImage field's value.
func (s *ContainerRecipe) SetParentImage(v string) *ContainerRecipe {
	s.ParentImage = &v
	return s
}

// SetPlatform sets the Platform field's value.
func (s *ContainerRecipe) SetPlatform(v string) *ContainerRecipe {
	s.Platform = &v
	return s
}

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

// SetTargetRepository sets the TargetRepository field's value.
func (s *ContainerRecipe) SetTargetRepository(v *TargetContainerRepository) *ContainerRecipe {
	s.TargetRepository = v
	return s
}

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

// SetWorkingDirectory sets the WorkingDirectory field's value.
func (s *ContainerRecipe) SetWorkingDirectory(v string) *ContainerRecipe {
	s.WorkingDirectory = &v
	return s
}

// A summary of a container recipe
type ContainerRecipeSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the container recipe.
	Arn *string `locationName:"arn" type:"string"`

	// Specifies the type of container, such as "Docker".
	ContainerType *string `locationName:"containerType" type:"string" enum:"ContainerType"`

	// The date when this container recipe was created.
	DateCreated *string `locationName:"dateCreated" type:"string"`

	// The name of the container recipe.
	Name *string `locationName:"name" type:"string"`

	// The owner of the container recipe.
	Owner *string `locationName:"owner" min:"1" type:"string"`

	// The base image for the container recipe.
	ParentImage *string `locationName:"parentImage" min:"1" type:"string"`

	// The system platform for the container, such as Windows or Linux.
	Platform *string `locationName:"platform" type:"string" enum:"Platform"`

	// Tags that are attached to the container recipe.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
}

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

// SetArn sets the Arn field's value.
func (s *ContainerRecipeSummary) SetArn(v string) *ContainerRecipeSummary {
	s.Arn = &v
	return s
}

// SetContainerType sets the ContainerType field's value.
func (s *ContainerRecipeSummary) SetContainerType(v string) *ContainerRecipeSummary {
	s.ContainerType = &v
	return s
}

// SetDateCreated sets the DateCreated field's value.
func (s *ContainerRecipeSummary) SetDateCreated(v string) *ContainerRecipeSummary {
	s.DateCreated = &v
	return s
}

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

// SetOwner sets the Owner field's value.
func (s *ContainerRecipeSummary) SetOwner(v string) *ContainerRecipeSummary {
	s.Owner = &v
	return s
}

// SetParentImage sets the ParentImage field's value.
func (s *ContainerRecipeSummary) SetParentImage(v string) *ContainerRecipeSummary {
	s.ParentImage = &v
	return s
}

// SetPlatform sets the Platform field's value.
func (s *ContainerRecipeSummary) SetPlatform(v string) *ContainerRecipeSummary {
	s.Platform = &v
	return s
}

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

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

	// The change description of the component. Describes what change has been made
	// in this version, or what makes this version different from other versions
	// of the component.
	ChangeDescription *string `locationName:"changeDescription" min:"1" type:"string"`

	// Unique, case-sensitive identifier you provide to ensure idempotency of the
	// request. For more information, see Ensuring idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)
	// in the Amazon EC2 API Reference.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// Component data contains inline YAML document content for the component. Alternatively,
	// you can specify the uri of a YAML document file stored in Amazon S3. However,
	// you cannot specify both properties.
	Data *string `locationName:"data" min:"1" type:"string"`

	// Describes the contents of the component.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The ID of the KMS key that is used to encrypt this component.
	KmsKeyId *string `locationName:"kmsKeyId" min:"1" type:"string"`

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

	// The operating system platform of the component.
	//
	// Platform is a required field
	Platform *string `locationName:"platform" type:"string" required:"true" enum:"Platform"`

	// The semantic version of the component. This version follows the semantic
	// version syntax.
	//
	// The semantic version has four nodes: <major>.<minor>.<patch>/<build>. You
	// can assign values for the first three, and can filter on all of them.
	//
	// Assignment: For the first three nodes you can assign any positive integer
	// value, including zero, with an upper limit of 2^30-1, or 1073741823 for each
	// node. Image Builder automatically assigns the build number to the fourth
	// node.
	//
	// Patterns: You can use any numeric pattern that adheres to the assignment
	// requirements for the nodes that you can assign. For example, you might choose
	// a software version pattern, such as 1.0.0, or a date, such as 2021.01.01.
	//
	// SemanticVersion is a required field
	SemanticVersion *string `locationName:"semanticVersion" type:"string" required:"true"`

	// The operating system (OS) version supported by the component. If the OS information
	// is available, a prefix match is performed against the base image OS version
	// during image recipe creation.
	SupportedOsVersions []*string `locationName:"supportedOsVersions" min:"1" type:"list"`

	// The tags that apply to the component.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`

	// The uri of a YAML component document file. This must be an S3 URL (s3://bucket/key),
	// and the requester must have permission to access the S3 bucket it points
	// to. If you use Amazon S3, you can specify component content up to your service
	// quota.
	//
	// Alternatively, you can specify the YAML document inline, using the component
	// data property. You cannot specify both properties.
	Uri *string `locationName:"uri" 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 CreateComponentInput) 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 CreateComponentInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateComponentInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateComponentInput"}
	if s.ChangeDescription != nil && len(*s.ChangeDescription) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ChangeDescription", 1))
	}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.Data != nil && len(*s.Data) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Data", 1))
	}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.KmsKeyId != nil && len(*s.KmsKeyId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("KmsKeyId", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Platform == nil {
		invalidParams.Add(request.NewErrParamRequired("Platform"))
	}
	if s.SemanticVersion == nil {
		invalidParams.Add(request.NewErrParamRequired("SemanticVersion"))
	}
	if s.SupportedOsVersions != nil && len(s.SupportedOsVersions) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SupportedOsVersions", 1))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}

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

// SetChangeDescription sets the ChangeDescription field's value.
func (s *CreateComponentInput) SetChangeDescription(v string) *CreateComponentInput {
	s.ChangeDescription = &v
	return s
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateComponentInput) SetClientToken(v string) *CreateComponentInput {
	s.ClientToken = &v
	return s
}

// SetData sets the Data field's value.
func (s *CreateComponentInput) SetData(v string) *CreateComponentInput {
	s.Data = &v
	return s
}

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

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *CreateComponentInput) SetKmsKeyId(v string) *CreateComponentInput {
	s.KmsKeyId = &v
	return s
}

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

// SetPlatform sets the Platform field's value.
func (s *CreateComponentInput) SetPlatform(v string) *CreateComponentInput {
	s.Platform = &v
	return s
}

// SetSemanticVersion sets the SemanticVersion field's value.
func (s *CreateComponentInput) SetSemanticVersion(v string) *CreateComponentInput {
	s.SemanticVersion = &v
	return s
}

// SetSupportedOsVersions sets the SupportedOsVersions field's value.
func (s *CreateComponentInput) SetSupportedOsVersions(v []*string) *CreateComponentInput {
	s.SupportedOsVersions = v
	return s
}

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

// SetUri sets the Uri field's value.
func (s *CreateComponentInput) SetUri(v string) *CreateComponentInput {
	s.Uri = &v
	return s
}

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

	// The client token that uniquely identifies the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the component that the request created.
	ComponentBuildVersionArn *string `locationName:"componentBuildVersionArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 CreateComponentOutput) 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 CreateComponentOutput) GoString() string {
	return s.String()
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateComponentOutput) SetClientToken(v string) *CreateComponentOutput {
	s.ClientToken = &v
	return s
}

// SetComponentBuildVersionArn sets the ComponentBuildVersionArn field's value.
func (s *CreateComponentOutput) SetComponentBuildVersionArn(v string) *CreateComponentOutput {
	s.ComponentBuildVersionArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *CreateComponentOutput) SetRequestId(v string) *CreateComponentOutput {
	s.RequestId = &v
	return s
}

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

	// Unique, case-sensitive identifier you provide to ensure idempotency of the
	// request. For more information, see Ensuring idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)
	// in the Amazon EC2 API Reference.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// Components for build and test that are included in the container recipe.
	// Recipes require a minimum of one build component, and can have a maximum
	// of 20 build and test components in any combination.
	//
	// Components is a required field
	Components []*ComponentConfiguration `locationName:"components" min:"1" type:"list" required:"true"`

	// The type of container to create.
	//
	// ContainerType is a required field
	ContainerType *string `locationName:"containerType" type:"string" required:"true" enum:"ContainerType"`

	// The description of the container recipe.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The Dockerfile template used to build your image as an inline data blob.
	DockerfileTemplateData *string `locationName:"dockerfileTemplateData" min:"1" type:"string"`

	// The Amazon S3 URI for the Dockerfile that will be used to build your container
	// image.
	DockerfileTemplateUri *string `locationName:"dockerfileTemplateUri" type:"string"`

	// Specifies the operating system version for the base image.
	ImageOsVersionOverride *string `locationName:"imageOsVersionOverride" min:"1" type:"string"`

	// A group of options that can be used to configure an instance for building
	// and testing container images.
	InstanceConfiguration *InstanceConfiguration `locationName:"instanceConfiguration" type:"structure"`

	// Identifies which KMS key is used to encrypt the container image.
	KmsKeyId *string `locationName:"kmsKeyId" min:"1" type:"string"`

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

	// The base image for the container recipe.
	//
	// ParentImage is a required field
	ParentImage *string `locationName:"parentImage" min:"1" type:"string" required:"true"`

	// Specifies the operating system platform when you use a custom base image.
	PlatformOverride *string `locationName:"platformOverride" type:"string" enum:"Platform"`

	// The semantic version of the container recipe. This version follows the semantic
	// version syntax.
	//
	// The semantic version has four nodes: <major>.<minor>.<patch>/<build>. You
	// can assign values for the first three, and can filter on all of them.
	//
	// Assignment: For the first three nodes you can assign any positive integer
	// value, including zero, with an upper limit of 2^30-1, or 1073741823 for each
	// node. Image Builder automatically assigns the build number to the fourth
	// node.
	//
	// Patterns: You can use any numeric pattern that adheres to the assignment
	// requirements for the nodes that you can assign. For example, you might choose
	// a software version pattern, such as 1.0.0, or a date, such as 2021.01.01.
	//
	// SemanticVersion is a required field
	SemanticVersion *string `locationName:"semanticVersion" type:"string" required:"true"`

	// Tags that are attached to the container recipe.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`

	// The destination repository for the container image.
	//
	// TargetRepository is a required field
	TargetRepository *TargetContainerRepository `locationName:"targetRepository" type:"structure" required:"true"`

	// The working directory for use during build and test workflows.
	WorkingDirectory *string `locationName:"workingDirectory" 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 CreateContainerRecipeInput) 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 CreateContainerRecipeInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateContainerRecipeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateContainerRecipeInput"}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.Components == nil {
		invalidParams.Add(request.NewErrParamRequired("Components"))
	}
	if s.Components != nil && len(s.Components) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Components", 1))
	}
	if s.ContainerType == nil {
		invalidParams.Add(request.NewErrParamRequired("ContainerType"))
	}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.DockerfileTemplateData != nil && len(*s.DockerfileTemplateData) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DockerfileTemplateData", 1))
	}
	if s.ImageOsVersionOverride != nil && len(*s.ImageOsVersionOverride) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ImageOsVersionOverride", 1))
	}
	if s.KmsKeyId != nil && len(*s.KmsKeyId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("KmsKeyId", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.ParentImage == nil {
		invalidParams.Add(request.NewErrParamRequired("ParentImage"))
	}
	if s.ParentImage != nil && len(*s.ParentImage) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ParentImage", 1))
	}
	if s.SemanticVersion == nil {
		invalidParams.Add(request.NewErrParamRequired("SemanticVersion"))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}
	if s.TargetRepository == nil {
		invalidParams.Add(request.NewErrParamRequired("TargetRepository"))
	}
	if s.WorkingDirectory != nil && len(*s.WorkingDirectory) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("WorkingDirectory", 1))
	}
	if s.Components != nil {
		for i, v := range s.Components {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Components", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.InstanceConfiguration != nil {
		if err := s.InstanceConfiguration.Validate(); err != nil {
			invalidParams.AddNested("InstanceConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.TargetRepository != nil {
		if err := s.TargetRepository.Validate(); err != nil {
			invalidParams.AddNested("TargetRepository", err.(request.ErrInvalidParams))
		}
	}

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

// SetClientToken sets the ClientToken field's value.
func (s *CreateContainerRecipeInput) SetClientToken(v string) *CreateContainerRecipeInput {
	s.ClientToken = &v
	return s
}

// SetComponents sets the Components field's value.
func (s *CreateContainerRecipeInput) SetComponents(v []*ComponentConfiguration) *CreateContainerRecipeInput {
	s.Components = v
	return s
}

// SetContainerType sets the ContainerType field's value.
func (s *CreateContainerRecipeInput) SetContainerType(v string) *CreateContainerRecipeInput {
	s.ContainerType = &v
	return s
}

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

// SetDockerfileTemplateData sets the DockerfileTemplateData field's value.
func (s *CreateContainerRecipeInput) SetDockerfileTemplateData(v string) *CreateContainerRecipeInput {
	s.DockerfileTemplateData = &v
	return s
}

// SetDockerfileTemplateUri sets the DockerfileTemplateUri field's value.
func (s *CreateContainerRecipeInput) SetDockerfileTemplateUri(v string) *CreateContainerRecipeInput {
	s.DockerfileTemplateUri = &v
	return s
}

// SetImageOsVersionOverride sets the ImageOsVersionOverride field's value.
func (s *CreateContainerRecipeInput) SetImageOsVersionOverride(v string) *CreateContainerRecipeInput {
	s.ImageOsVersionOverride = &v
	return s
}

// SetInstanceConfiguration sets the InstanceConfiguration field's value.
func (s *CreateContainerRecipeInput) SetInstanceConfiguration(v *InstanceConfiguration) *CreateContainerRecipeInput {
	s.InstanceConfiguration = v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *CreateContainerRecipeInput) SetKmsKeyId(v string) *CreateContainerRecipeInput {
	s.KmsKeyId = &v
	return s
}

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

// SetParentImage sets the ParentImage field's value.
func (s *CreateContainerRecipeInput) SetParentImage(v string) *CreateContainerRecipeInput {
	s.ParentImage = &v
	return s
}

// SetPlatformOverride sets the PlatformOverride field's value.
func (s *CreateContainerRecipeInput) SetPlatformOverride(v string) *CreateContainerRecipeInput {
	s.PlatformOverride = &v
	return s
}

// SetSemanticVersion sets the SemanticVersion field's value.
func (s *CreateContainerRecipeInput) SetSemanticVersion(v string) *CreateContainerRecipeInput {
	s.SemanticVersion = &v
	return s
}

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

// SetTargetRepository sets the TargetRepository field's value.
func (s *CreateContainerRecipeInput) SetTargetRepository(v *TargetContainerRepository) *CreateContainerRecipeInput {
	s.TargetRepository = v
	return s
}

// SetWorkingDirectory sets the WorkingDirectory field's value.
func (s *CreateContainerRecipeInput) SetWorkingDirectory(v string) *CreateContainerRecipeInput {
	s.WorkingDirectory = &v
	return s
}

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

	// The client token that uniquely identifies the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string"`

	// Returns the Amazon Resource Name (ARN) of the container recipe that the request
	// created.
	ContainerRecipeArn *string `locationName:"containerRecipeArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 CreateContainerRecipeOutput) 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 CreateContainerRecipeOutput) GoString() string {
	return s.String()
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateContainerRecipeOutput) SetClientToken(v string) *CreateContainerRecipeOutput {
	s.ClientToken = &v
	return s
}

// SetContainerRecipeArn sets the ContainerRecipeArn field's value.
func (s *CreateContainerRecipeOutput) SetContainerRecipeArn(v string) *CreateContainerRecipeOutput {
	s.ContainerRecipeArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *CreateContainerRecipeOutput) SetRequestId(v string) *CreateContainerRecipeOutput {
	s.RequestId = &v
	return s
}

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

	// Unique, case-sensitive identifier you provide to ensure idempotency of the
	// request. For more information, see Ensuring idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)
	// in the Amazon EC2 API Reference.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The description of the distribution configuration.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The distributions of the distribution configuration.
	//
	// Distributions is a required field
	Distributions []*Distribution `locationName:"distributions" type:"list" required:"true"`

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

	// The tags of the distribution configuration.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
}

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

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

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

// SetClientToken sets the ClientToken field's value.
func (s *CreateDistributionConfigurationInput) SetClientToken(v string) *CreateDistributionConfigurationInput {
	s.ClientToken = &v
	return s
}

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

// SetDistributions sets the Distributions field's value.
func (s *CreateDistributionConfigurationInput) SetDistributions(v []*Distribution) *CreateDistributionConfigurationInput {
	s.Distributions = v
	return s
}

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

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

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

	// The client token that uniquely identifies the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the distribution configuration that was
	// created by this request.
	DistributionConfigurationArn *string `locationName:"distributionConfigurationArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 CreateDistributionConfigurationOutput) 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 CreateDistributionConfigurationOutput) GoString() string {
	return s.String()
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateDistributionConfigurationOutput) SetClientToken(v string) *CreateDistributionConfigurationOutput {
	s.ClientToken = &v
	return s
}

// SetDistributionConfigurationArn sets the DistributionConfigurationArn field's value.
func (s *CreateDistributionConfigurationOutput) SetDistributionConfigurationArn(v string) *CreateDistributionConfigurationOutput {
	s.DistributionConfigurationArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *CreateDistributionConfigurationOutput) SetRequestId(v string) *CreateDistributionConfigurationOutput {
	s.RequestId = &v
	return s
}

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

	// Unique, case-sensitive identifier you provide to ensure idempotency of the
	// request. For more information, see Ensuring idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)
	// in the Amazon EC2 API Reference.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The Amazon Resource Name (ARN) of the container recipe that defines how images
	// are configured and tested.
	ContainerRecipeArn *string `locationName:"containerRecipeArn" type:"string"`

	// The Amazon Resource Name (ARN) of the distribution configuration that defines
	// and configures the outputs of your pipeline.
	DistributionConfigurationArn *string `locationName:"distributionConfigurationArn" type:"string"`

	// Collects additional information about the image being created, including
	// the operating system (OS) version and package list. This information is used
	// to enhance the overall experience of using EC2 Image Builder. Enabled by
	// default.
	EnhancedImageMetadataEnabled *bool `locationName:"enhancedImageMetadataEnabled" type:"boolean"`

	// The name or Amazon Resource Name (ARN) for the IAM role you create that grants
	// Image Builder access to perform workflow actions.
	ExecutionRole *string `locationName:"executionRole" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the image recipe that defines how images
	// are configured, tested, and assessed.
	ImageRecipeArn *string `locationName:"imageRecipeArn" type:"string"`

	// Contains settings for vulnerability scans.
	ImageScanningConfiguration *ImageScanningConfiguration `locationName:"imageScanningConfiguration" type:"structure"`

	// The image tests configuration of the image.
	ImageTestsConfiguration *ImageTestsConfiguration `locationName:"imageTestsConfiguration" type:"structure"`

	// The Amazon Resource Name (ARN) of the infrastructure configuration that defines
	// the environment in which your image will be built and tested.
	//
	// InfrastructureConfigurationArn is a required field
	InfrastructureConfigurationArn *string `locationName:"infrastructureConfigurationArn" type:"string" required:"true"`

	// The tags of the image.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`

	// Contains an array of workflow configuration objects.
	Workflows []*WorkflowConfiguration `locationName:"workflows" 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 CreateImageInput) 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 CreateImageInput) GoString() string {
	return s.String()
}

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

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

// SetClientToken sets the ClientToken field's value.
func (s *CreateImageInput) SetClientToken(v string) *CreateImageInput {
	s.ClientToken = &v
	return s
}

// SetContainerRecipeArn sets the ContainerRecipeArn field's value.
func (s *CreateImageInput) SetContainerRecipeArn(v string) *CreateImageInput {
	s.ContainerRecipeArn = &v
	return s
}

// SetDistributionConfigurationArn sets the DistributionConfigurationArn field's value.
func (s *CreateImageInput) SetDistributionConfigurationArn(v string) *CreateImageInput {
	s.DistributionConfigurationArn = &v
	return s
}

// SetEnhancedImageMetadataEnabled sets the EnhancedImageMetadataEnabled field's value.
func (s *CreateImageInput) SetEnhancedImageMetadataEnabled(v bool) *CreateImageInput {
	s.EnhancedImageMetadataEnabled = &v
	return s
}

// SetExecutionRole sets the ExecutionRole field's value.
func (s *CreateImageInput) SetExecutionRole(v string) *CreateImageInput {
	s.ExecutionRole = &v
	return s
}

// SetImageRecipeArn sets the ImageRecipeArn field's value.
func (s *CreateImageInput) SetImageRecipeArn(v string) *CreateImageInput {
	s.ImageRecipeArn = &v
	return s
}

// SetImageScanningConfiguration sets the ImageScanningConfiguration field's value.
func (s *CreateImageInput) SetImageScanningConfiguration(v *ImageScanningConfiguration) *CreateImageInput {
	s.ImageScanningConfiguration = v
	return s
}

// SetImageTestsConfiguration sets the ImageTestsConfiguration field's value.
func (s *CreateImageInput) SetImageTestsConfiguration(v *ImageTestsConfiguration) *CreateImageInput {
	s.ImageTestsConfiguration = v
	return s
}

// SetInfrastructureConfigurationArn sets the InfrastructureConfigurationArn field's value.
func (s *CreateImageInput) SetInfrastructureConfigurationArn(v string) *CreateImageInput {
	s.InfrastructureConfigurationArn = &v
	return s
}

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

// SetWorkflows sets the Workflows field's value.
func (s *CreateImageInput) SetWorkflows(v []*WorkflowConfiguration) *CreateImageInput {
	s.Workflows = v
	return s
}

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

	// The client token that uniquely identifies the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the image that the request created.
	ImageBuildVersionArn *string `locationName:"imageBuildVersionArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 CreateImageOutput) 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 CreateImageOutput) GoString() string {
	return s.String()
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateImageOutput) SetClientToken(v string) *CreateImageOutput {
	s.ClientToken = &v
	return s
}

// SetImageBuildVersionArn sets the ImageBuildVersionArn field's value.
func (s *CreateImageOutput) SetImageBuildVersionArn(v string) *CreateImageOutput {
	s.ImageBuildVersionArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *CreateImageOutput) SetRequestId(v string) *CreateImageOutput {
	s.RequestId = &v
	return s
}

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

	// Unique, case-sensitive identifier you provide to ensure idempotency of the
	// request. For more information, see Ensuring idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)
	// in the Amazon EC2 API Reference.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The Amazon Resource Name (ARN) of the container recipe that is used to configure
	// images created by this container pipeline.
	ContainerRecipeArn *string `locationName:"containerRecipeArn" type:"string"`

	// The description of the image pipeline.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the distribution configuration that will
	// be used to configure and distribute images created by this image pipeline.
	DistributionConfigurationArn *string `locationName:"distributionConfigurationArn" type:"string"`

	// Collects additional information about the image being created, including
	// the operating system (OS) version and package list. This information is used
	// to enhance the overall experience of using EC2 Image Builder. Enabled by
	// default.
	EnhancedImageMetadataEnabled *bool `locationName:"enhancedImageMetadataEnabled" type:"boolean"`

	// The name or Amazon Resource Name (ARN) for the IAM role you create that grants
	// Image Builder access to perform workflow actions.
	ExecutionRole *string `locationName:"executionRole" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the image recipe that will be used to configure
	// images created by this image pipeline.
	ImageRecipeArn *string `locationName:"imageRecipeArn" type:"string"`

	// Contains settings for vulnerability scans.
	ImageScanningConfiguration *ImageScanningConfiguration `locationName:"imageScanningConfiguration" type:"structure"`

	// The image test configuration of the image pipeline.
	ImageTestsConfiguration *ImageTestsConfiguration `locationName:"imageTestsConfiguration" type:"structure"`

	// The Amazon Resource Name (ARN) of the infrastructure configuration that will
	// be used to build images created by this image pipeline.
	//
	// InfrastructureConfigurationArn is a required field
	InfrastructureConfigurationArn *string `locationName:"infrastructureConfigurationArn" type:"string" required:"true"`

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

	// The schedule of the image pipeline.
	Schedule *Schedule `locationName:"schedule" type:"structure"`

	// The status of the image pipeline.
	Status *string `locationName:"status" type:"string" enum:"PipelineStatus"`

	// The tags of the image pipeline.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`

	// Contains an array of workflow configuration objects.
	Workflows []*WorkflowConfiguration `locationName:"workflows" 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 CreateImagePipelineInput) 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 CreateImagePipelineInput) GoString() string {
	return s.String()
}

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

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

// SetClientToken sets the ClientToken field's value.
func (s *CreateImagePipelineInput) SetClientToken(v string) *CreateImagePipelineInput {
	s.ClientToken = &v
	return s
}

// SetContainerRecipeArn sets the ContainerRecipeArn field's value.
func (s *CreateImagePipelineInput) SetContainerRecipeArn(v string) *CreateImagePipelineInput {
	s.ContainerRecipeArn = &v
	return s
}

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

// SetDistributionConfigurationArn sets the DistributionConfigurationArn field's value.
func (s *CreateImagePipelineInput) SetDistributionConfigurationArn(v string) *CreateImagePipelineInput {
	s.DistributionConfigurationArn = &v
	return s
}

// SetEnhancedImageMetadataEnabled sets the EnhancedImageMetadataEnabled field's value.
func (s *CreateImagePipelineInput) SetEnhancedImageMetadataEnabled(v bool) *CreateImagePipelineInput {
	s.EnhancedImageMetadataEnabled = &v
	return s
}

// SetExecutionRole sets the ExecutionRole field's value.
func (s *CreateImagePipelineInput) SetExecutionRole(v string) *CreateImagePipelineInput {
	s.ExecutionRole = &v
	return s
}

// SetImageRecipeArn sets the ImageRecipeArn field's value.
func (s *CreateImagePipelineInput) SetImageRecipeArn(v string) *CreateImagePipelineInput {
	s.ImageRecipeArn = &v
	return s
}

// SetImageScanningConfiguration sets the ImageScanningConfiguration field's value.
func (s *CreateImagePipelineInput) SetImageScanningConfiguration(v *ImageScanningConfiguration) *CreateImagePipelineInput {
	s.ImageScanningConfiguration = v
	return s
}

// SetImageTestsConfiguration sets the ImageTestsConfiguration field's value.
func (s *CreateImagePipelineInput) SetImageTestsConfiguration(v *ImageTestsConfiguration) *CreateImagePipelineInput {
	s.ImageTestsConfiguration = v
	return s
}

// SetInfrastructureConfigurationArn sets the InfrastructureConfigurationArn field's value.
func (s *CreateImagePipelineInput) SetInfrastructureConfigurationArn(v string) *CreateImagePipelineInput {
	s.InfrastructureConfigurationArn = &v
	return s
}

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

// SetSchedule sets the Schedule field's value.
func (s *CreateImagePipelineInput) SetSchedule(v *Schedule) *CreateImagePipelineInput {
	s.Schedule = v
	return s
}

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

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

// SetWorkflows sets the Workflows field's value.
func (s *CreateImagePipelineInput) SetWorkflows(v []*WorkflowConfiguration) *CreateImagePipelineInput {
	s.Workflows = v
	return s
}

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

	// The client token that uniquely identifies the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the image pipeline that was created by
	// this request.
	ImagePipelineArn *string `locationName:"imagePipelineArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 CreateImagePipelineOutput) 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 CreateImagePipelineOutput) GoString() string {
	return s.String()
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateImagePipelineOutput) SetClientToken(v string) *CreateImagePipelineOutput {
	s.ClientToken = &v
	return s
}

// SetImagePipelineArn sets the ImagePipelineArn field's value.
func (s *CreateImagePipelineOutput) SetImagePipelineArn(v string) *CreateImagePipelineOutput {
	s.ImagePipelineArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *CreateImagePipelineOutput) SetRequestId(v string) *CreateImagePipelineOutput {
	s.RequestId = &v
	return s
}

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

	// Specify additional settings and launch scripts for your build instances.
	AdditionalInstanceConfiguration *AdditionalInstanceConfiguration `locationName:"additionalInstanceConfiguration" type:"structure"`

	// The block device mappings of the image recipe.
	BlockDeviceMappings []*InstanceBlockDeviceMapping `locationName:"blockDeviceMappings" type:"list"`

	// Unique, case-sensitive identifier you provide to ensure idempotency of the
	// request. For more information, see Ensuring idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)
	// in the Amazon EC2 API Reference.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The components included in the image recipe.
	//
	// Components is a required field
	Components []*ComponentConfiguration `locationName:"components" min:"1" type:"list" required:"true"`

	// The description of the image recipe.
	Description *string `locationName:"description" min:"1" type:"string"`

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

	// The base image of the image recipe. The value of the string can be the ARN
	// of the base image or an AMI ID. The format for the ARN follows this example:
	// arn:aws:imagebuilder:us-west-2:aws:image/windows-server-2016-english-full-base-x86/x.x.x.
	// You can provide the specific version that you want to use, or you can use
	// a wildcard in all of the fields. If you enter an AMI ID for the string value,
	// you must have access to the AMI, and the AMI must be in the same Region in
	// which you are using Image Builder.
	//
	// ParentImage is a required field
	ParentImage *string `locationName:"parentImage" min:"1" type:"string" required:"true"`

	// The semantic version of the image recipe. This version follows the semantic
	// version syntax.
	//
	// The semantic version has four nodes: <major>.<minor>.<patch>/<build>. You
	// can assign values for the first three, and can filter on all of them.
	//
	// Assignment: For the first three nodes you can assign any positive integer
	// value, including zero, with an upper limit of 2^30-1, or 1073741823 for each
	// node. Image Builder automatically assigns the build number to the fourth
	// node.
	//
	// Patterns: You can use any numeric pattern that adheres to the assignment
	// requirements for the nodes that you can assign. For example, you might choose
	// a software version pattern, such as 1.0.0, or a date, such as 2021.01.01.
	//
	// SemanticVersion is a required field
	SemanticVersion *string `locationName:"semanticVersion" type:"string" required:"true"`

	// The tags of the image recipe.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`

	// The working directory used during build and test workflows.
	WorkingDirectory *string `locationName:"workingDirectory" 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 CreateImageRecipeInput) 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 CreateImageRecipeInput) GoString() string {
	return s.String()
}

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

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

// SetAdditionalInstanceConfiguration sets the AdditionalInstanceConfiguration field's value.
func (s *CreateImageRecipeInput) SetAdditionalInstanceConfiguration(v *AdditionalInstanceConfiguration) *CreateImageRecipeInput {
	s.AdditionalInstanceConfiguration = v
	return s
}

// SetBlockDeviceMappings sets the BlockDeviceMappings field's value.
func (s *CreateImageRecipeInput) SetBlockDeviceMappings(v []*InstanceBlockDeviceMapping) *CreateImageRecipeInput {
	s.BlockDeviceMappings = v
	return s
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateImageRecipeInput) SetClientToken(v string) *CreateImageRecipeInput {
	s.ClientToken = &v
	return s
}

// SetComponents sets the Components field's value.
func (s *CreateImageRecipeInput) SetComponents(v []*ComponentConfiguration) *CreateImageRecipeInput {
	s.Components = v
	return s
}

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

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

// SetParentImage sets the ParentImage field's value.
func (s *CreateImageRecipeInput) SetParentImage(v string) *CreateImageRecipeInput {
	s.ParentImage = &v
	return s
}

// SetSemanticVersion sets the SemanticVersion field's value.
func (s *CreateImageRecipeInput) SetSemanticVersion(v string) *CreateImageRecipeInput {
	s.SemanticVersion = &v
	return s
}

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

// SetWorkingDirectory sets the WorkingDirectory field's value.
func (s *CreateImageRecipeInput) SetWorkingDirectory(v string) *CreateImageRecipeInput {
	s.WorkingDirectory = &v
	return s
}

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

	// The client token that uniquely identifies the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the image recipe that was created by this
	// request.
	ImageRecipeArn *string `locationName:"imageRecipeArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 CreateImageRecipeOutput) 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 CreateImageRecipeOutput) GoString() string {
	return s.String()
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateImageRecipeOutput) SetClientToken(v string) *CreateImageRecipeOutput {
	s.ClientToken = &v
	return s
}

// SetImageRecipeArn sets the ImageRecipeArn field's value.
func (s *CreateImageRecipeOutput) SetImageRecipeArn(v string) *CreateImageRecipeOutput {
	s.ImageRecipeArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *CreateImageRecipeOutput) SetRequestId(v string) *CreateImageRecipeOutput {
	s.RequestId = &v
	return s
}

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

	// Unique, case-sensitive identifier you provide to ensure idempotency of the
	// request. For more information, see Ensuring idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)
	// in the Amazon EC2 API Reference.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The description of the infrastructure configuration.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The instance metadata options that you can set for the HTTP requests that
	// pipeline builds use to launch EC2 build and test instances.
	InstanceMetadataOptions *InstanceMetadataOptions `locationName:"instanceMetadataOptions" type:"structure"`

	// The instance profile to associate with the instance used to customize your
	// Amazon EC2 AMI.
	//
	// InstanceProfileName is a required field
	InstanceProfileName *string `locationName:"instanceProfileName" min:"1" type:"string" required:"true"`

	// The instance types of the infrastructure configuration. You can specify one
	// or more instance types to use for this build. The service will pick one of
	// these instance types based on availability.
	InstanceTypes []*string `locationName:"instanceTypes" type:"list"`

	// The key pair of the infrastructure configuration. You can use this to log
	// on to and debug the instance used to create your image.
	KeyPair *string `locationName:"keyPair" min:"1" type:"string"`

	// The logging configuration of the infrastructure configuration.
	Logging *Logging `locationName:"logging" type:"structure"`

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

	// The tags attached to the resource created by Image Builder.
	ResourceTags map[string]*string `locationName:"resourceTags" min:"1" type:"map"`

	// The security group IDs to associate with the instance used to customize your
	// Amazon EC2 AMI.
	SecurityGroupIds []*string `locationName:"securityGroupIds" type:"list"`

	// The Amazon Resource Name (ARN) for the SNS topic to which we send image build
	// event notifications.
	//
	// EC2 Image Builder is unable to send notifications to SNS topics that are
	// encrypted using keys from other accounts. The key that is used to encrypt
	// the SNS topic must reside in the account that the Image Builder service runs
	// under.
	SnsTopicArn *string `locationName:"snsTopicArn" type:"string"`

	// The subnet ID in which to place the instance used to customize your Amazon
	// EC2 AMI.
	SubnetId *string `locationName:"subnetId" min:"1" type:"string"`

	// The tags of the infrastructure configuration.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`

	// The terminate instance on failure setting of the infrastructure configuration.
	// Set to false if you want Image Builder to retain the instance used to configure
	// your AMI if the build or test phase of your workflow fails.
	TerminateInstanceOnFailure *bool `locationName:"terminateInstanceOnFailure" type:"boolean"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateInfrastructureConfigurationInput) 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 CreateInfrastructureConfigurationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateInfrastructureConfigurationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateInfrastructureConfigurationInput"}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.InstanceProfileName == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceProfileName"))
	}
	if s.InstanceProfileName != nil && len(*s.InstanceProfileName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceProfileName", 1))
	}
	if s.KeyPair != nil && len(*s.KeyPair) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("KeyPair", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.ResourceTags != nil && len(s.ResourceTags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceTags", 1))
	}
	if s.SubnetId != nil && len(*s.SubnetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SubnetId", 1))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}
	if s.InstanceMetadataOptions != nil {
		if err := s.InstanceMetadataOptions.Validate(); err != nil {
			invalidParams.AddNested("InstanceMetadataOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.Logging != nil {
		if err := s.Logging.Validate(); err != nil {
			invalidParams.AddNested("Logging", err.(request.ErrInvalidParams))
		}
	}

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

// SetClientToken sets the ClientToken field's value.
func (s *CreateInfrastructureConfigurationInput) SetClientToken(v string) *CreateInfrastructureConfigurationInput {
	s.ClientToken = &v
	return s
}

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

// SetInstanceMetadataOptions sets the InstanceMetadataOptions field's value.
func (s *CreateInfrastructureConfigurationInput) SetInstanceMetadataOptions(v *InstanceMetadataOptions) *CreateInfrastructureConfigurationInput {
	s.InstanceMetadataOptions = v
	return s
}

// SetInstanceProfileName sets the InstanceProfileName field's value.
func (s *CreateInfrastructureConfigurationInput) SetInstanceProfileName(v string) *CreateInfrastructureConfigurationInput {
	s.InstanceProfileName = &v
	return s
}

// SetInstanceTypes sets the InstanceTypes field's value.
func (s *CreateInfrastructureConfigurationInput) SetInstanceTypes(v []*string) *CreateInfrastructureConfigurationInput {
	s.InstanceTypes = v
	return s
}

// SetKeyPair sets the KeyPair field's value.
func (s *CreateInfrastructureConfigurationInput) SetKeyPair(v string) *CreateInfrastructureConfigurationInput {
	s.KeyPair = &v
	return s
}

// SetLogging sets the Logging field's value.
func (s *CreateInfrastructureConfigurationInput) SetLogging(v *Logging) *CreateInfrastructureConfigurationInput {
	s.Logging = v
	return s
}

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

// SetResourceTags sets the ResourceTags field's value.
func (s *CreateInfrastructureConfigurationInput) SetResourceTags(v map[string]*string) *CreateInfrastructureConfigurationInput {
	s.ResourceTags = v
	return s
}

// SetSecurityGroupIds sets the SecurityGroupIds field's value.
func (s *CreateInfrastructureConfigurationInput) SetSecurityGroupIds(v []*string) *CreateInfrastructureConfigurationInput {
	s.SecurityGroupIds = v
	return s
}

// SetSnsTopicArn sets the SnsTopicArn field's value.
func (s *CreateInfrastructureConfigurationInput) SetSnsTopicArn(v string) *CreateInfrastructureConfigurationInput {
	s.SnsTopicArn = &v
	return s
}

// SetSubnetId sets the SubnetId field's value.
func (s *CreateInfrastructureConfigurationInput) SetSubnetId(v string) *CreateInfrastructureConfigurationInput {
	s.SubnetId = &v
	return s
}

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

// SetTerminateInstanceOnFailure sets the TerminateInstanceOnFailure field's value.
func (s *CreateInfrastructureConfigurationInput) SetTerminateInstanceOnFailure(v bool) *CreateInfrastructureConfigurationInput {
	s.TerminateInstanceOnFailure = &v
	return s
}

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

	// The client token that uniquely identifies the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the infrastructure configuration that was
	// created by this request.
	InfrastructureConfigurationArn *string `locationName:"infrastructureConfigurationArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 CreateInfrastructureConfigurationOutput) 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 CreateInfrastructureConfigurationOutput) GoString() string {
	return s.String()
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateInfrastructureConfigurationOutput) SetClientToken(v string) *CreateInfrastructureConfigurationOutput {
	s.ClientToken = &v
	return s
}

// SetInfrastructureConfigurationArn sets the InfrastructureConfigurationArn field's value.
func (s *CreateInfrastructureConfigurationOutput) SetInfrastructureConfigurationArn(v string) *CreateInfrastructureConfigurationOutput {
	s.InfrastructureConfigurationArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *CreateInfrastructureConfigurationOutput) SetRequestId(v string) *CreateInfrastructureConfigurationOutput {
	s.RequestId = &v
	return s
}

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

	// Unique, case-sensitive identifier you provide to ensure idempotency of the
	// request. For more information, see Ensuring idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)
	// in the Amazon EC2 API Reference.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// Optional description for the lifecycle policy.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The name or Amazon Resource Name (ARN) for the IAM role you create that grants
	// Image Builder access to run lifecycle actions.
	//
	// ExecutionRole is a required field
	ExecutionRole *string `locationName:"executionRole" min:"1" type:"string" required:"true"`

	// The name of the lifecycle policy to create.
	//
	// Name is a required field
	Name *string `locationName:"name" type:"string" required:"true"`

	// Configuration details for the lifecycle policy rules.
	//
	// PolicyDetails is a required field
	PolicyDetails []*LifecyclePolicyDetail `locationName:"policyDetails" min:"1" type:"list" required:"true"`

	// Selection criteria for the resources that the lifecycle policy applies to.
	//
	// ResourceSelection is a required field
	ResourceSelection *LifecyclePolicyResourceSelection `locationName:"resourceSelection" type:"structure" required:"true"`

	// The type of Image Builder resource that the lifecycle policy applies to.
	//
	// ResourceType is a required field
	ResourceType *string `locationName:"resourceType" type:"string" required:"true" enum:"LifecyclePolicyResourceType"`

	// Indicates whether the lifecycle policy resource is enabled.
	Status *string `locationName:"status" type:"string" enum:"LifecyclePolicyStatus"`

	// Tags to apply to the lifecycle policy resource.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
}

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

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

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

// SetClientToken sets the ClientToken field's value.
func (s *CreateLifecyclePolicyInput) SetClientToken(v string) *CreateLifecyclePolicyInput {
	s.ClientToken = &v
	return s
}

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

// SetExecutionRole sets the ExecutionRole field's value.
func (s *CreateLifecyclePolicyInput) SetExecutionRole(v string) *CreateLifecyclePolicyInput {
	s.ExecutionRole = &v
	return s
}

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

// SetPolicyDetails sets the PolicyDetails field's value.
func (s *CreateLifecyclePolicyInput) SetPolicyDetails(v []*LifecyclePolicyDetail) *CreateLifecyclePolicyInput {
	s.PolicyDetails = v
	return s
}

// SetResourceSelection sets the ResourceSelection field's value.
func (s *CreateLifecyclePolicyInput) SetResourceSelection(v *LifecyclePolicyResourceSelection) *CreateLifecyclePolicyInput {
	s.ResourceSelection = v
	return s
}

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

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

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

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

	// The client token that uniquely identifies the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the lifecycle policy that the request created.
	LifecyclePolicyArn *string `locationName:"lifecyclePolicyArn" 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 CreateLifecyclePolicyOutput) 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 CreateLifecyclePolicyOutput) GoString() string {
	return s.String()
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateLifecyclePolicyOutput) SetClientToken(v string) *CreateLifecyclePolicyOutput {
	s.ClientToken = &v
	return s
}

// SetLifecyclePolicyArn sets the LifecyclePolicyArn field's value.
func (s *CreateLifecyclePolicyOutput) SetLifecyclePolicyArn(v string) *CreateLifecyclePolicyOutput {
	s.LifecyclePolicyArn = &v
	return s
}

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

	// Describes what change has been made in this version of the workflow, or what
	// makes this version different from other versions of the workflow.
	ChangeDescription *string `locationName:"changeDescription" min:"1" type:"string"`

	// Unique, case-sensitive identifier you provide to ensure idempotency of the
	// request. For more information, see Ensuring idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)
	// in the Amazon EC2 API Reference.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// Contains the UTF-8 encoded YAML document content for the workflow. Alternatively,
	// you can specify the uri of a YAML document file stored in Amazon S3. However,
	// you cannot specify both properties.
	Data *string `locationName:"data" min:"1" type:"string"`

	// Describes the workflow.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The ID of the KMS key that is used to encrypt this workflow resource.
	KmsKeyId *string `locationName:"kmsKeyId" min:"1" type:"string"`

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

	// The semantic version of this workflow resource. The semantic version syntax
	// adheres to the following rules.
	//
	// The semantic version has four nodes: <major>.<minor>.<patch>/<build>. You
	// can assign values for the first three, and can filter on all of them.
	//
	// Assignment: For the first three nodes you can assign any positive integer
	// value, including zero, with an upper limit of 2^30-1, or 1073741823 for each
	// node. Image Builder automatically assigns the build number to the fourth
	// node.
	//
	// Patterns: You can use any numeric pattern that adheres to the assignment
	// requirements for the nodes that you can assign. For example, you might choose
	// a software version pattern, such as 1.0.0, or a date, such as 2021.01.01.
	//
	// SemanticVersion is a required field
	SemanticVersion *string `locationName:"semanticVersion" type:"string" required:"true"`

	// Tags that apply to the workflow resource.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`

	// The phase in the image build process for which the workflow resource is responsible.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true" enum:"WorkflowType"`

	// The uri of a YAML component document file. This must be an S3 URL (s3://bucket/key),
	// and the requester must have permission to access the S3 bucket it points
	// to. If you use Amazon S3, you can specify component content up to your service
	// quota.
	//
	// Alternatively, you can specify the YAML document inline, using the component
	// data property. You cannot specify both properties.
	Uri *string `locationName:"uri" 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 CreateWorkflowInput) 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 CreateWorkflowInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateWorkflowInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateWorkflowInput"}
	if s.ChangeDescription != nil && len(*s.ChangeDescription) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ChangeDescription", 1))
	}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.Data != nil && len(*s.Data) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Data", 1))
	}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.KmsKeyId != nil && len(*s.KmsKeyId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("KmsKeyId", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.SemanticVersion == nil {
		invalidParams.Add(request.NewErrParamRequired("SemanticVersion"))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}

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

// SetChangeDescription sets the ChangeDescription field's value.
func (s *CreateWorkflowInput) SetChangeDescription(v string) *CreateWorkflowInput {
	s.ChangeDescription = &v
	return s
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateWorkflowInput) SetClientToken(v string) *CreateWorkflowInput {
	s.ClientToken = &v
	return s
}

// SetData sets the Data field's value.
func (s *CreateWorkflowInput) SetData(v string) *CreateWorkflowInput {
	s.Data = &v
	return s
}

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

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *CreateWorkflowInput) SetKmsKeyId(v string) *CreateWorkflowInput {
	s.KmsKeyId = &v
	return s
}

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

// SetSemanticVersion sets the SemanticVersion field's value.
func (s *CreateWorkflowInput) SetSemanticVersion(v string) *CreateWorkflowInput {
	s.SemanticVersion = &v
	return s
}

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

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

// SetUri sets the Uri field's value.
func (s *CreateWorkflowInput) SetUri(v string) *CreateWorkflowInput {
	s.Uri = &v
	return s
}

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

	// The client token that uniquely identifies the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the workflow resource that the request
	// created.
	WorkflowBuildVersionArn *string `locationName:"workflowBuildVersionArn" 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 CreateWorkflowOutput) 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 CreateWorkflowOutput) GoString() string {
	return s.String()
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateWorkflowOutput) SetClientToken(v string) *CreateWorkflowOutput {
	s.ClientToken = &v
	return s
}

// SetWorkflowBuildVersionArn sets the WorkflowBuildVersionArn field's value.
func (s *CreateWorkflowOutput) SetWorkflowBuildVersionArn(v string) *CreateWorkflowOutput {
	s.WorkflowBuildVersionArn = &v
	return s
}

// Amazon Inspector generates a risk score for each finding. This score helps
// you to prioritize findings, to focus on the most critical findings and the
// most vulnerable resources. The score uses the Common Vulnerability Scoring
// System (CVSS) format. This format is a modification of the base CVSS score
// that the National Vulnerability Database (NVD) provides. For more information
// about severity levels, see Severity levels for Amazon Inspector findings
// (https://docs.aws.amazon.com/inspector/latest/user/findings-understanding-severity.html)
// in the Amazon Inspector User Guide.
type CvssScore struct {
	_ struct{} `type:"structure"`

	// The CVSS base score.
	BaseScore *float64 `locationName:"baseScore" type:"double"`

	// The vector string of the CVSS score.
	ScoringVector *string `locationName:"scoringVector" min:"1" type:"string"`

	// The source of the CVSS score.
	Source *string `locationName:"source" min:"1" type:"string"`

	// The CVSS version that generated the score.
	Version *string `locationName:"version" 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 CvssScore) 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 CvssScore) GoString() string {
	return s.String()
}

// SetBaseScore sets the BaseScore field's value.
func (s *CvssScore) SetBaseScore(v float64) *CvssScore {
	s.BaseScore = &v
	return s
}

// SetScoringVector sets the ScoringVector field's value.
func (s *CvssScore) SetScoringVector(v string) *CvssScore {
	s.ScoringVector = &v
	return s
}

// SetSource sets the Source field's value.
func (s *CvssScore) SetSource(v string) *CvssScore {
	s.Source = &v
	return s
}

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

// Details about an adjustment that Amazon Inspector made to the CVSS score
// for a finding.
type CvssScoreAdjustment struct {
	_ struct{} `type:"structure"`

	// The metric that Amazon Inspector used to adjust the CVSS score.
	Metric *string `locationName:"metric" min:"1" type:"string"`

	// The reason for the CVSS score adjustment.
	Reason *string `locationName:"reason" 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 CvssScoreAdjustment) 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 CvssScoreAdjustment) GoString() string {
	return s.String()
}

// SetMetric sets the Metric field's value.
func (s *CvssScoreAdjustment) SetMetric(v string) *CvssScoreAdjustment {
	s.Metric = &v
	return s
}

// SetReason sets the Reason field's value.
func (s *CvssScoreAdjustment) SetReason(v string) *CvssScoreAdjustment {
	s.Reason = &v
	return s
}

// Details about the source of the score, and the factors that determined the
// adjustments to create the final score.
type CvssScoreDetails struct {
	_ struct{} `type:"structure"`

	// An object that contains details about an adjustment that Amazon Inspector
	// made to the CVSS score for the finding.
	Adjustments []*CvssScoreAdjustment `locationName:"adjustments" type:"list"`

	// The source of the finding.
	CvssSource *string `locationName:"cvssSource" min:"1" type:"string"`

	// The CVSS score.
	Score *float64 `locationName:"score" type:"double"`

	// The source for the CVSS score.
	ScoreSource *string `locationName:"scoreSource" min:"1" type:"string"`

	// A vector that measures the severity of the vulnerability.
	ScoringVector *string `locationName:"scoringVector" min:"1" type:"string"`

	// The CVSS version that generated the score.
	Version *string `locationName:"version" 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 CvssScoreDetails) 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 CvssScoreDetails) GoString() string {
	return s.String()
}

// SetAdjustments sets the Adjustments field's value.
func (s *CvssScoreDetails) SetAdjustments(v []*CvssScoreAdjustment) *CvssScoreDetails {
	s.Adjustments = v
	return s
}

// SetCvssSource sets the CvssSource field's value.
func (s *CvssScoreDetails) SetCvssSource(v string) *CvssScoreDetails {
	s.CvssSource = &v
	return s
}

// SetScore sets the Score field's value.
func (s *CvssScoreDetails) SetScore(v float64) *CvssScoreDetails {
	s.Score = &v
	return s
}

// SetScoreSource sets the ScoreSource field's value.
func (s *CvssScoreDetails) SetScoreSource(v string) *CvssScoreDetails {
	s.ScoreSource = &v
	return s
}

// SetScoringVector sets the ScoringVector field's value.
func (s *CvssScoreDetails) SetScoringVector(v string) *CvssScoreDetails {
	s.ScoringVector = &v
	return s
}

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

type DeleteComponentInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the component build version to delete.
	//
	// ComponentBuildVersionArn is a required field
	ComponentBuildVersionArn *string `location:"querystring" locationName:"componentBuildVersionArn" 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 DeleteComponentInput) 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 DeleteComponentInput) GoString() string {
	return s.String()
}

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

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

// SetComponentBuildVersionArn sets the ComponentBuildVersionArn field's value.
func (s *DeleteComponentInput) SetComponentBuildVersionArn(v string) *DeleteComponentInput {
	s.ComponentBuildVersionArn = &v
	return s
}

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

	// The ARN of the component build version that this request deleted.
	ComponentBuildVersionArn *string `locationName:"componentBuildVersionArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 DeleteComponentOutput) 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 DeleteComponentOutput) GoString() string {
	return s.String()
}

// SetComponentBuildVersionArn sets the ComponentBuildVersionArn field's value.
func (s *DeleteComponentOutput) SetComponentBuildVersionArn(v string) *DeleteComponentOutput {
	s.ComponentBuildVersionArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteComponentOutput) SetRequestId(v string) *DeleteComponentOutput {
	s.RequestId = &v
	return s
}

type DeleteContainerRecipeInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the container recipe to delete.
	//
	// ContainerRecipeArn is a required field
	ContainerRecipeArn *string `location:"querystring" locationName:"containerRecipeArn" 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 DeleteContainerRecipeInput) 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 DeleteContainerRecipeInput) GoString() string {
	return s.String()
}

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

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

// SetContainerRecipeArn sets the ContainerRecipeArn field's value.
func (s *DeleteContainerRecipeInput) SetContainerRecipeArn(v string) *DeleteContainerRecipeInput {
	s.ContainerRecipeArn = &v
	return s
}

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

	// The Amazon Resource Name (ARN) of the container recipe that was deleted.
	ContainerRecipeArn *string `locationName:"containerRecipeArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 DeleteContainerRecipeOutput) 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 DeleteContainerRecipeOutput) GoString() string {
	return s.String()
}

// SetContainerRecipeArn sets the ContainerRecipeArn field's value.
func (s *DeleteContainerRecipeOutput) SetContainerRecipeArn(v string) *DeleteContainerRecipeOutput {
	s.ContainerRecipeArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteContainerRecipeOutput) SetRequestId(v string) *DeleteContainerRecipeOutput {
	s.RequestId = &v
	return s
}

type DeleteDistributionConfigurationInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the distribution configuration to delete.
	//
	// DistributionConfigurationArn is a required field
	DistributionConfigurationArn *string `location:"querystring" locationName:"distributionConfigurationArn" 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 DeleteDistributionConfigurationInput) 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 DeleteDistributionConfigurationInput) GoString() string {
	return s.String()
}

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

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

// SetDistributionConfigurationArn sets the DistributionConfigurationArn field's value.
func (s *DeleteDistributionConfigurationInput) SetDistributionConfigurationArn(v string) *DeleteDistributionConfigurationInput {
	s.DistributionConfigurationArn = &v
	return s
}

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

	// The Amazon Resource Name (ARN) of the distribution configuration that was
	// deleted.
	DistributionConfigurationArn *string `locationName:"distributionConfigurationArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 DeleteDistributionConfigurationOutput) 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 DeleteDistributionConfigurationOutput) GoString() string {
	return s.String()
}

// SetDistributionConfigurationArn sets the DistributionConfigurationArn field's value.
func (s *DeleteDistributionConfigurationOutput) SetDistributionConfigurationArn(v string) *DeleteDistributionConfigurationOutput {
	s.DistributionConfigurationArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteDistributionConfigurationOutput) SetRequestId(v string) *DeleteDistributionConfigurationOutput {
	s.RequestId = &v
	return s
}

type DeleteImageInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the Image Builder image resource to delete.
	//
	// ImageBuildVersionArn is a required field
	ImageBuildVersionArn *string `location:"querystring" locationName:"imageBuildVersionArn" 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 DeleteImageInput) 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 DeleteImageInput) GoString() string {
	return s.String()
}

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

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

// SetImageBuildVersionArn sets the ImageBuildVersionArn field's value.
func (s *DeleteImageInput) SetImageBuildVersionArn(v string) *DeleteImageInput {
	s.ImageBuildVersionArn = &v
	return s
}

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

	// The ARN of the Image Builder image resource that this request deleted.
	ImageBuildVersionArn *string `locationName:"imageBuildVersionArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 DeleteImageOutput) 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 DeleteImageOutput) GoString() string {
	return s.String()
}

// SetImageBuildVersionArn sets the ImageBuildVersionArn field's value.
func (s *DeleteImageOutput) SetImageBuildVersionArn(v string) *DeleteImageOutput {
	s.ImageBuildVersionArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteImageOutput) SetRequestId(v string) *DeleteImageOutput {
	s.RequestId = &v
	return s
}

type DeleteImagePipelineInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the image pipeline to delete.
	//
	// ImagePipelineArn is a required field
	ImagePipelineArn *string `location:"querystring" locationName:"imagePipelineArn" 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 DeleteImagePipelineInput) 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 DeleteImagePipelineInput) GoString() string {
	return s.String()
}

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

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

// SetImagePipelineArn sets the ImagePipelineArn field's value.
func (s *DeleteImagePipelineInput) SetImagePipelineArn(v string) *DeleteImagePipelineInput {
	s.ImagePipelineArn = &v
	return s
}

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

	// The Amazon Resource Name (ARN) of the image pipeline that was deleted.
	ImagePipelineArn *string `locationName:"imagePipelineArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 DeleteImagePipelineOutput) 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 DeleteImagePipelineOutput) GoString() string {
	return s.String()
}

// SetImagePipelineArn sets the ImagePipelineArn field's value.
func (s *DeleteImagePipelineOutput) SetImagePipelineArn(v string) *DeleteImagePipelineOutput {
	s.ImagePipelineArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteImagePipelineOutput) SetRequestId(v string) *DeleteImagePipelineOutput {
	s.RequestId = &v
	return s
}

type DeleteImageRecipeInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the image recipe to delete.
	//
	// ImageRecipeArn is a required field
	ImageRecipeArn *string `location:"querystring" locationName:"imageRecipeArn" 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 DeleteImageRecipeInput) 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 DeleteImageRecipeInput) GoString() string {
	return s.String()
}

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

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

// SetImageRecipeArn sets the ImageRecipeArn field's value.
func (s *DeleteImageRecipeInput) SetImageRecipeArn(v string) *DeleteImageRecipeInput {
	s.ImageRecipeArn = &v
	return s
}

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

	// The Amazon Resource Name (ARN) of the image recipe that was deleted.
	ImageRecipeArn *string `locationName:"imageRecipeArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 DeleteImageRecipeOutput) 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 DeleteImageRecipeOutput) GoString() string {
	return s.String()
}

// SetImageRecipeArn sets the ImageRecipeArn field's value.
func (s *DeleteImageRecipeOutput) SetImageRecipeArn(v string) *DeleteImageRecipeOutput {
	s.ImageRecipeArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteImageRecipeOutput) SetRequestId(v string) *DeleteImageRecipeOutput {
	s.RequestId = &v
	return s
}

type DeleteInfrastructureConfigurationInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the infrastructure configuration to delete.
	//
	// InfrastructureConfigurationArn is a required field
	InfrastructureConfigurationArn *string `location:"querystring" locationName:"infrastructureConfigurationArn" 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 DeleteInfrastructureConfigurationInput) 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 DeleteInfrastructureConfigurationInput) GoString() string {
	return s.String()
}

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

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

// SetInfrastructureConfigurationArn sets the InfrastructureConfigurationArn field's value.
func (s *DeleteInfrastructureConfigurationInput) SetInfrastructureConfigurationArn(v string) *DeleteInfrastructureConfigurationInput {
	s.InfrastructureConfigurationArn = &v
	return s
}

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

	// The Amazon Resource Name (ARN) of the infrastructure configuration that was
	// deleted.
	InfrastructureConfigurationArn *string `locationName:"infrastructureConfigurationArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 DeleteInfrastructureConfigurationOutput) 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 DeleteInfrastructureConfigurationOutput) GoString() string {
	return s.String()
}

// SetInfrastructureConfigurationArn sets the InfrastructureConfigurationArn field's value.
func (s *DeleteInfrastructureConfigurationOutput) SetInfrastructureConfigurationArn(v string) *DeleteInfrastructureConfigurationOutput {
	s.InfrastructureConfigurationArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteInfrastructureConfigurationOutput) SetRequestId(v string) *DeleteInfrastructureConfigurationOutput {
	s.RequestId = &v
	return s
}

type DeleteLifecyclePolicyInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the lifecycle policy resource to delete.
	//
	// LifecyclePolicyArn is a required field
	LifecyclePolicyArn *string `location:"querystring" locationName:"lifecyclePolicyArn" 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 DeleteLifecyclePolicyInput) 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 DeleteLifecyclePolicyInput) GoString() string {
	return s.String()
}

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

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

// SetLifecyclePolicyArn sets the LifecyclePolicyArn field's value.
func (s *DeleteLifecyclePolicyInput) SetLifecyclePolicyArn(v string) *DeleteLifecyclePolicyInput {
	s.LifecyclePolicyArn = &v
	return s
}

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

	// The ARN of the lifecycle policy that was deleted.
	LifecyclePolicyArn *string `locationName:"lifecyclePolicyArn" 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 DeleteLifecyclePolicyOutput) 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 DeleteLifecyclePolicyOutput) GoString() string {
	return s.String()
}

// SetLifecyclePolicyArn sets the LifecyclePolicyArn field's value.
func (s *DeleteLifecyclePolicyOutput) SetLifecyclePolicyArn(v string) *DeleteLifecyclePolicyOutput {
	s.LifecyclePolicyArn = &v
	return s
}

type DeleteWorkflowInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the workflow resource to delete.
	//
	// WorkflowBuildVersionArn is a required field
	WorkflowBuildVersionArn *string `location:"querystring" locationName:"workflowBuildVersionArn" 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 DeleteWorkflowInput) 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 DeleteWorkflowInput) GoString() string {
	return s.String()
}

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

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

// SetWorkflowBuildVersionArn sets the WorkflowBuildVersionArn field's value.
func (s *DeleteWorkflowInput) SetWorkflowBuildVersionArn(v string) *DeleteWorkflowInput {
	s.WorkflowBuildVersionArn = &v
	return s
}

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

	// The ARN of the workflow resource that this request deleted.
	WorkflowBuildVersionArn *string `locationName:"workflowBuildVersionArn" 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 DeleteWorkflowOutput) 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 DeleteWorkflowOutput) GoString() string {
	return s.String()
}

// SetWorkflowBuildVersionArn sets the WorkflowBuildVersionArn field's value.
func (s *DeleteWorkflowOutput) SetWorkflowBuildVersionArn(v string) *DeleteWorkflowOutput {
	s.WorkflowBuildVersionArn = &v
	return s
}

// Defines the settings for a specific Region.
type Distribution struct {
	_ struct{} `type:"structure"`

	// The specific AMI settings; for example, launch permissions or AMI tags.
	AmiDistributionConfiguration *AmiDistributionConfiguration `locationName:"amiDistributionConfiguration" type:"structure"`

	// Container distribution settings for encryption, licensing, and sharing in
	// a specific Region.
	ContainerDistributionConfiguration *ContainerDistributionConfiguration `locationName:"containerDistributionConfiguration" type:"structure"`

	// The Windows faster-launching configurations to use for AMI distribution.
	FastLaunchConfigurations []*FastLaunchConfiguration `locationName:"fastLaunchConfigurations" min:"1" type:"list"`

	// A group of launchTemplateConfiguration settings that apply to image distribution
	// for specified accounts.
	LaunchTemplateConfigurations []*LaunchTemplateConfiguration `locationName:"launchTemplateConfigurations" min:"1" type:"list"`

	// The License Manager Configuration to associate with the AMI in the specified
	// Region.
	LicenseConfigurationArns []*string `locationName:"licenseConfigurationArns" min:"1" type:"list"`

	// The target Region.
	//
	// Region is a required field
	Region *string `locationName:"region" min:"1" type:"string" required:"true"`

	// Configure export settings to deliver disk images created from your image
	// build, using a file format that is compatible with your VMs in that Region.
	S3ExportConfiguration *S3ExportConfiguration `locationName:"s3ExportConfiguration" 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 Distribution) 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 Distribution) GoString() string {
	return s.String()
}

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

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

// SetAmiDistributionConfiguration sets the AmiDistributionConfiguration field's value.
func (s *Distribution) SetAmiDistributionConfiguration(v *AmiDistributionConfiguration) *Distribution {
	s.AmiDistributionConfiguration = v
	return s
}

// SetContainerDistributionConfiguration sets the ContainerDistributionConfiguration field's value.
func (s *Distribution) SetContainerDistributionConfiguration(v *ContainerDistributionConfiguration) *Distribution {
	s.ContainerDistributionConfiguration = v
	return s
}

// SetFastLaunchConfigurations sets the FastLaunchConfigurations field's value.
func (s *Distribution) SetFastLaunchConfigurations(v []*FastLaunchConfiguration) *Distribution {
	s.FastLaunchConfigurations = v
	return s
}

// SetLaunchTemplateConfigurations sets the LaunchTemplateConfigurations field's value.
func (s *Distribution) SetLaunchTemplateConfigurations(v []*LaunchTemplateConfiguration) *Distribution {
	s.LaunchTemplateConfigurations = v
	return s
}

// SetLicenseConfigurationArns sets the LicenseConfigurationArns field's value.
func (s *Distribution) SetLicenseConfigurationArns(v []*string) *Distribution {
	s.LicenseConfigurationArns = v
	return s
}

// SetRegion sets the Region field's value.
func (s *Distribution) SetRegion(v string) *Distribution {
	s.Region = &v
	return s
}

// SetS3ExportConfiguration sets the S3ExportConfiguration field's value.
func (s *Distribution) SetS3ExportConfiguration(v *S3ExportConfiguration) *Distribution {
	s.S3ExportConfiguration = v
	return s
}

// A distribution configuration.
type DistributionConfiguration struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the distribution configuration.
	Arn *string `locationName:"arn" type:"string"`

	// The date on which this distribution configuration was created.
	DateCreated *string `locationName:"dateCreated" type:"string"`

	// The date on which this distribution configuration was last updated.
	DateUpdated *string `locationName:"dateUpdated" type:"string"`

	// The description of the distribution configuration.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The distribution objects that apply Region-specific settings for the deployment
	// of the image to targeted Regions.
	Distributions []*Distribution `locationName:"distributions" type:"list"`

	// The name of the distribution configuration.
	Name *string `locationName:"name" type:"string"`

	// The tags of the distribution configuration.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`

	// The maximum duration in minutes for this distribution configuration.
	//
	// TimeoutMinutes is a required field
	TimeoutMinutes *int64 `locationName:"timeoutMinutes" min:"30" type:"integer" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DistributionConfiguration) 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 DistributionConfiguration) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *DistributionConfiguration) SetArn(v string) *DistributionConfiguration {
	s.Arn = &v
	return s
}

// SetDateCreated sets the DateCreated field's value.
func (s *DistributionConfiguration) SetDateCreated(v string) *DistributionConfiguration {
	s.DateCreated = &v
	return s
}

// SetDateUpdated sets the DateUpdated field's value.
func (s *DistributionConfiguration) SetDateUpdated(v string) *DistributionConfiguration {
	s.DateUpdated = &v
	return s
}

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

// SetDistributions sets the Distributions field's value.
func (s *DistributionConfiguration) SetDistributions(v []*Distribution) *DistributionConfiguration {
	s.Distributions = v
	return s
}

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

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

// SetTimeoutMinutes sets the TimeoutMinutes field's value.
func (s *DistributionConfiguration) SetTimeoutMinutes(v int64) *DistributionConfiguration {
	s.TimeoutMinutes = &v
	return s
}

// A high-level overview of a distribution configuration.
type DistributionConfigurationSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the distribution configuration.
	Arn *string `locationName:"arn" type:"string"`

	// The date on which the distribution configuration was created.
	DateCreated *string `locationName:"dateCreated" type:"string"`

	// The date on which the distribution configuration was updated.
	DateUpdated *string `locationName:"dateUpdated" type:"string"`

	// The description of the distribution configuration.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The name of the distribution configuration.
	Name *string `locationName:"name" type:"string"`

	// A list of Regions where the container image is distributed to.
	Regions []*string `locationName:"regions" type:"list"`

	// The tags associated with the distribution configuration.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
}

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

// SetArn sets the Arn field's value.
func (s *DistributionConfigurationSummary) SetArn(v string) *DistributionConfigurationSummary {
	s.Arn = &v
	return s
}

// SetDateCreated sets the DateCreated field's value.
func (s *DistributionConfigurationSummary) SetDateCreated(v string) *DistributionConfigurationSummary {
	s.DateCreated = &v
	return s
}

// SetDateUpdated sets the DateUpdated field's value.
func (s *DistributionConfigurationSummary) SetDateUpdated(v string) *DistributionConfigurationSummary {
	s.DateUpdated = &v
	return s
}

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

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

// SetRegions sets the Regions field's value.
func (s *DistributionConfigurationSummary) SetRegions(v []*string) *DistributionConfigurationSummary {
	s.Regions = v
	return s
}

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

// Amazon EBS-specific block device mapping specifications.
type EbsInstanceBlockDeviceSpecification struct {
	_ struct{} `type:"structure"`

	// Use to configure delete on termination of the associated device.
	DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"`

	// Use to configure device encryption.
	Encrypted *bool `locationName:"encrypted" type:"boolean"`

	// Use to configure device IOPS.
	Iops *int64 `locationName:"iops" min:"100" type:"integer"`

	// Use to configure the KMS key to use when encrypting the device.
	KmsKeyId *string `locationName:"kmsKeyId" min:"1" type:"string"`

	// The snapshot that defines the device contents.
	SnapshotId *string `locationName:"snapshotId" min:"1" type:"string"`

	// For GP3 volumes only – The throughput in MiB/s that the volume supports.
	Throughput *int64 `locationName:"throughput" min:"125" type:"integer"`

	// Use to override the device's volume size.
	VolumeSize *int64 `locationName:"volumeSize" min:"1" type:"integer"`

	// Use to override the device's volume type.
	VolumeType *string `locationName:"volumeType" type:"string" enum:"EbsVolumeType"`
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *EbsInstanceBlockDeviceSpecification) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EbsInstanceBlockDeviceSpecification"}
	if s.Iops != nil && *s.Iops < 100 {
		invalidParams.Add(request.NewErrParamMinValue("Iops", 100))
	}
	if s.KmsKeyId != nil && len(*s.KmsKeyId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("KmsKeyId", 1))
	}
	if s.SnapshotId != nil && len(*s.SnapshotId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SnapshotId", 1))
	}
	if s.Throughput != nil && *s.Throughput < 125 {
		invalidParams.Add(request.NewErrParamMinValue("Throughput", 125))
	}
	if s.VolumeSize != nil && *s.VolumeSize < 1 {
		invalidParams.Add(request.NewErrParamMinValue("VolumeSize", 1))
	}

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

// SetDeleteOnTermination sets the DeleteOnTermination field's value.
func (s *EbsInstanceBlockDeviceSpecification) SetDeleteOnTermination(v bool) *EbsInstanceBlockDeviceSpecification {
	s.DeleteOnTermination = &v
	return s
}

// SetEncrypted sets the Encrypted field's value.
func (s *EbsInstanceBlockDeviceSpecification) SetEncrypted(v bool) *EbsInstanceBlockDeviceSpecification {
	s.Encrypted = &v
	return s
}

// SetIops sets the Iops field's value.
func (s *EbsInstanceBlockDeviceSpecification) SetIops(v int64) *EbsInstanceBlockDeviceSpecification {
	s.Iops = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *EbsInstanceBlockDeviceSpecification) SetKmsKeyId(v string) *EbsInstanceBlockDeviceSpecification {
	s.KmsKeyId = &v
	return s
}

// SetSnapshotId sets the SnapshotId field's value.
func (s *EbsInstanceBlockDeviceSpecification) SetSnapshotId(v string) *EbsInstanceBlockDeviceSpecification {
	s.SnapshotId = &v
	return s
}

// SetThroughput sets the Throughput field's value.
func (s *EbsInstanceBlockDeviceSpecification) SetThroughput(v int64) *EbsInstanceBlockDeviceSpecification {
	s.Throughput = &v
	return s
}

// SetVolumeSize sets the VolumeSize field's value.
func (s *EbsInstanceBlockDeviceSpecification) SetVolumeSize(v int64) *EbsInstanceBlockDeviceSpecification {
	s.VolumeSize = &v
	return s
}

// SetVolumeType sets the VolumeType field's value.
func (s *EbsInstanceBlockDeviceSpecification) SetVolumeType(v string) *EbsInstanceBlockDeviceSpecification {
	s.VolumeType = &v
	return s
}

// Settings that Image Builder uses to configure the ECR repository and the
// output container images that Amazon Inspector scans.
type EcrConfiguration struct {
	_ struct{} `type:"structure"`

	// Tags for Image Builder to apply to the output container image that &INS;
	// scans. Tags can help you identify and manage your scanned images.
	ContainerTags []*string `locationName:"containerTags" type:"list"`

	// The name of the container repository that Amazon Inspector scans to identify
	// findings for your container images. The name includes the path for the repository
	// location. If you don’t provide this information, Image Builder creates
	// a repository in your account named image-builder-image-scanning-repository
	// for vulnerability scans of your output container images.
	RepositoryName *string `locationName:"repositoryName" 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 EcrConfiguration) 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 EcrConfiguration) GoString() string {
	return s.String()
}

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

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

// SetContainerTags sets the ContainerTags field's value.
func (s *EcrConfiguration) SetContainerTags(v []*string) *EcrConfiguration {
	s.ContainerTags = v
	return s
}

// SetRepositoryName sets the RepositoryName field's value.
func (s *EcrConfiguration) SetRepositoryName(v string) *EcrConfiguration {
	s.RepositoryName = &v
	return s
}

// Define and configure faster launching for output Windows AMIs.
type FastLaunchConfiguration struct {
	_ struct{} `type:"structure"`

	// The owner account ID for the fast-launch enabled Windows AMI.
	AccountId *string `locationName:"accountId" type:"string"`

	// A Boolean that represents the current state of faster launching for the Windows
	// AMI. Set to true to start using Windows faster launching, or false to stop
	// using it.
	//
	// Enabled is a required field
	Enabled *bool `locationName:"enabled" type:"boolean" required:"true"`

	// The launch template that the fast-launch enabled Windows AMI uses when it
	// launches Windows instances to create pre-provisioned snapshots.
	LaunchTemplate *FastLaunchLaunchTemplateSpecification `locationName:"launchTemplate" type:"structure"`

	// The maximum number of parallel instances that are launched for creating resources.
	MaxParallelLaunches *int64 `locationName:"maxParallelLaunches" min:"1" type:"integer"`

	// Configuration settings for managing the number of snapshots that are created
	// from pre-provisioned instances for the Windows AMI when faster launching
	// is enabled.
	SnapshotConfiguration *FastLaunchSnapshotConfiguration `locationName:"snapshotConfiguration" 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 FastLaunchConfiguration) 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 FastLaunchConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FastLaunchConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FastLaunchConfiguration"}
	if s.Enabled == nil {
		invalidParams.Add(request.NewErrParamRequired("Enabled"))
	}
	if s.MaxParallelLaunches != nil && *s.MaxParallelLaunches < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxParallelLaunches", 1))
	}
	if s.LaunchTemplate != nil {
		if err := s.LaunchTemplate.Validate(); err != nil {
			invalidParams.AddNested("LaunchTemplate", err.(request.ErrInvalidParams))
		}
	}
	if s.SnapshotConfiguration != nil {
		if err := s.SnapshotConfiguration.Validate(); err != nil {
			invalidParams.AddNested("SnapshotConfiguration", err.(request.ErrInvalidParams))
		}
	}

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

// SetAccountId sets the AccountId field's value.
func (s *FastLaunchConfiguration) SetAccountId(v string) *FastLaunchConfiguration {
	s.AccountId = &v
	return s
}

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

// SetLaunchTemplate sets the LaunchTemplate field's value.
func (s *FastLaunchConfiguration) SetLaunchTemplate(v *FastLaunchLaunchTemplateSpecification) *FastLaunchConfiguration {
	s.LaunchTemplate = v
	return s
}

// SetMaxParallelLaunches sets the MaxParallelLaunches field's value.
func (s *FastLaunchConfiguration) SetMaxParallelLaunches(v int64) *FastLaunchConfiguration {
	s.MaxParallelLaunches = &v
	return s
}

// SetSnapshotConfiguration sets the SnapshotConfiguration field's value.
func (s *FastLaunchConfiguration) SetSnapshotConfiguration(v *FastLaunchSnapshotConfiguration) *FastLaunchConfiguration {
	s.SnapshotConfiguration = v
	return s
}

// Identifies the launch template that the associated Windows AMI uses for launching
// an instance when faster launching is enabled.
//
// You can specify either the launchTemplateName or the launchTemplateId, but
// not both.
type FastLaunchLaunchTemplateSpecification struct {
	_ struct{} `type:"structure"`

	// The ID of the launch template to use for faster launching for a Windows AMI.
	LaunchTemplateId *string `locationName:"launchTemplateId" type:"string"`

	// The name of the launch template to use for faster launching for a Windows
	// AMI.
	LaunchTemplateName *string `locationName:"launchTemplateName" min:"1" type:"string"`

	// The version of the launch template to use for faster launching for a Windows
	// AMI.
	LaunchTemplateVersion *string `locationName:"launchTemplateVersion" 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 FastLaunchLaunchTemplateSpecification) 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 FastLaunchLaunchTemplateSpecification) GoString() string {
	return s.String()
}

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

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

// SetLaunchTemplateId sets the LaunchTemplateId field's value.
func (s *FastLaunchLaunchTemplateSpecification) SetLaunchTemplateId(v string) *FastLaunchLaunchTemplateSpecification {
	s.LaunchTemplateId = &v
	return s
}

// SetLaunchTemplateName sets the LaunchTemplateName field's value.
func (s *FastLaunchLaunchTemplateSpecification) SetLaunchTemplateName(v string) *FastLaunchLaunchTemplateSpecification {
	s.LaunchTemplateName = &v
	return s
}

// SetLaunchTemplateVersion sets the LaunchTemplateVersion field's value.
func (s *FastLaunchLaunchTemplateSpecification) SetLaunchTemplateVersion(v string) *FastLaunchLaunchTemplateSpecification {
	s.LaunchTemplateVersion = &v
	return s
}

// Configuration settings for creating and managing pre-provisioned snapshots
// for a fast-launch enabled Windows AMI.
type FastLaunchSnapshotConfiguration struct {
	_ struct{} `type:"structure"`

	// The number of pre-provisioned snapshots to keep on hand for a fast-launch
	// enabled Windows AMI.
	TargetResourceCount *int64 `locationName:"targetResourceCount" min:"1" 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 FastLaunchSnapshotConfiguration) 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 FastLaunchSnapshotConfiguration) GoString() string {
	return s.String()
}

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

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

// SetTargetResourceCount sets the TargetResourceCount field's value.
func (s *FastLaunchSnapshotConfiguration) SetTargetResourceCount(v int64) *FastLaunchSnapshotConfiguration {
	s.TargetResourceCount = &v
	return s
}

// A filter name and value pair that is used to return a more specific list
// of results from a list operation. Filters can be used to match a set of resources
// by specific criteria, such as tags, attributes, or IDs.
type Filter struct {
	_ struct{} `type:"structure"`

	// The name of the filter. Filter names are case-sensitive.
	Name *string `locationName:"name" type:"string"`

	// The filter values. Filter values are case-sensitive.
	Values []*string `locationName:"values" min:"1" type:"list"`
}

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

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

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

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

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

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

// You are not authorized to perform the requested operation.
type ForbiddenException 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 ForbiddenException) 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 ForbiddenException) GoString() string {
	return s.String()
}

func newErrorForbiddenException(v protocol.ResponseMetadata) error {
	return &ForbiddenException{
		RespMetadata: v,
	}
}

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

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

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

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

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

type GetComponentInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the component that you want to get. Regex
	// requires the suffix /\d+$.
	//
	// ComponentBuildVersionArn is a required field
	ComponentBuildVersionArn *string `location:"querystring" locationName:"componentBuildVersionArn" 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 GetComponentInput) 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 GetComponentInput) GoString() string {
	return s.String()
}

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

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

// SetComponentBuildVersionArn sets the ComponentBuildVersionArn field's value.
func (s *GetComponentInput) SetComponentBuildVersionArn(v string) *GetComponentInput {
	s.ComponentBuildVersionArn = &v
	return s
}

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

	// The component object specified in the request.
	Component *Component `locationName:"component" type:"structure"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 GetComponentOutput) 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 GetComponentOutput) GoString() string {
	return s.String()
}

// SetComponent sets the Component field's value.
func (s *GetComponentOutput) SetComponent(v *Component) *GetComponentOutput {
	s.Component = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *GetComponentOutput) SetRequestId(v string) *GetComponentOutput {
	s.RequestId = &v
	return s
}

type GetComponentPolicyInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the component whose policy you want to
	// retrieve.
	//
	// ComponentArn is a required field
	ComponentArn *string `location:"querystring" locationName:"componentArn" 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 GetComponentPolicyInput) 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 GetComponentPolicyInput) GoString() string {
	return s.String()
}

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

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

// SetComponentArn sets the ComponentArn field's value.
func (s *GetComponentPolicyInput) SetComponentArn(v string) *GetComponentPolicyInput {
	s.ComponentArn = &v
	return s
}

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

	// The component policy.
	Policy *string `locationName:"policy" min:"1" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 GetComponentPolicyOutput) 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 GetComponentPolicyOutput) GoString() string {
	return s.String()
}

// SetPolicy sets the Policy field's value.
func (s *GetComponentPolicyOutput) SetPolicy(v string) *GetComponentPolicyOutput {
	s.Policy = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *GetComponentPolicyOutput) SetRequestId(v string) *GetComponentPolicyOutput {
	s.RequestId = &v
	return s
}

type GetContainerRecipeInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the container recipe to retrieve.
	//
	// ContainerRecipeArn is a required field
	ContainerRecipeArn *string `location:"querystring" locationName:"containerRecipeArn" 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 GetContainerRecipeInput) 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 GetContainerRecipeInput) GoString() string {
	return s.String()
}

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

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

// SetContainerRecipeArn sets the ContainerRecipeArn field's value.
func (s *GetContainerRecipeInput) SetContainerRecipeArn(v string) *GetContainerRecipeInput {
	s.ContainerRecipeArn = &v
	return s
}

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

	// The container recipe object that is returned.
	ContainerRecipe *ContainerRecipe `locationName:"containerRecipe" type:"structure"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 GetContainerRecipeOutput) 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 GetContainerRecipeOutput) GoString() string {
	return s.String()
}

// SetContainerRecipe sets the ContainerRecipe field's value.
func (s *GetContainerRecipeOutput) SetContainerRecipe(v *ContainerRecipe) *GetContainerRecipeOutput {
	s.ContainerRecipe = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *GetContainerRecipeOutput) SetRequestId(v string) *GetContainerRecipeOutput {
	s.RequestId = &v
	return s
}

type GetContainerRecipePolicyInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the container recipe for the policy being
	// requested.
	//
	// ContainerRecipeArn is a required field
	ContainerRecipeArn *string `location:"querystring" locationName:"containerRecipeArn" 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 GetContainerRecipePolicyInput) 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 GetContainerRecipePolicyInput) GoString() string {
	return s.String()
}

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

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

// SetContainerRecipeArn sets the ContainerRecipeArn field's value.
func (s *GetContainerRecipePolicyInput) SetContainerRecipeArn(v string) *GetContainerRecipePolicyInput {
	s.ContainerRecipeArn = &v
	return s
}

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

	// The container recipe policy object that is returned.
	Policy *string `locationName:"policy" min:"1" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 GetContainerRecipePolicyOutput) 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 GetContainerRecipePolicyOutput) GoString() string {
	return s.String()
}

// SetPolicy sets the Policy field's value.
func (s *GetContainerRecipePolicyOutput) SetPolicy(v string) *GetContainerRecipePolicyOutput {
	s.Policy = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *GetContainerRecipePolicyOutput) SetRequestId(v string) *GetContainerRecipePolicyOutput {
	s.RequestId = &v
	return s
}

type GetDistributionConfigurationInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the distribution configuration that you
	// want to retrieve.
	//
	// DistributionConfigurationArn is a required field
	DistributionConfigurationArn *string `location:"querystring" locationName:"distributionConfigurationArn" 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 GetDistributionConfigurationInput) 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 GetDistributionConfigurationInput) GoString() string {
	return s.String()
}

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

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

// SetDistributionConfigurationArn sets the DistributionConfigurationArn field's value.
func (s *GetDistributionConfigurationInput) SetDistributionConfigurationArn(v string) *GetDistributionConfigurationInput {
	s.DistributionConfigurationArn = &v
	return s
}

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

	// The distribution configuration object.
	DistributionConfiguration *DistributionConfiguration `locationName:"distributionConfiguration" type:"structure"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 GetDistributionConfigurationOutput) 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 GetDistributionConfigurationOutput) GoString() string {
	return s.String()
}

// SetDistributionConfiguration sets the DistributionConfiguration field's value.
func (s *GetDistributionConfigurationOutput) SetDistributionConfiguration(v *DistributionConfiguration) *GetDistributionConfigurationOutput {
	s.DistributionConfiguration = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *GetDistributionConfigurationOutput) SetRequestId(v string) *GetDistributionConfigurationOutput {
	s.RequestId = &v
	return s
}

type GetImageInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the image that you want to get.
	//
	// ImageBuildVersionArn is a required field
	ImageBuildVersionArn *string `location:"querystring" locationName:"imageBuildVersionArn" 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 GetImageInput) 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 GetImageInput) GoString() string {
	return s.String()
}

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

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

// SetImageBuildVersionArn sets the ImageBuildVersionArn field's value.
func (s *GetImageInput) SetImageBuildVersionArn(v string) *GetImageInput {
	s.ImageBuildVersionArn = &v
	return s
}

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

	// The image object.
	Image *Image `locationName:"image" type:"structure"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 GetImageOutput) 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 GetImageOutput) GoString() string {
	return s.String()
}

// SetImage sets the Image field's value.
func (s *GetImageOutput) SetImage(v *Image) *GetImageOutput {
	s.Image = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *GetImageOutput) SetRequestId(v string) *GetImageOutput {
	s.RequestId = &v
	return s
}

type GetImagePipelineInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the image pipeline that you want to retrieve.
	//
	// ImagePipelineArn is a required field
	ImagePipelineArn *string `location:"querystring" locationName:"imagePipelineArn" 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 GetImagePipelineInput) 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 GetImagePipelineInput) GoString() string {
	return s.String()
}

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

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

// SetImagePipelineArn sets the ImagePipelineArn field's value.
func (s *GetImagePipelineInput) SetImagePipelineArn(v string) *GetImagePipelineInput {
	s.ImagePipelineArn = &v
	return s
}

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

	// The image pipeline object.
	ImagePipeline *ImagePipeline `locationName:"imagePipeline" type:"structure"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 GetImagePipelineOutput) 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 GetImagePipelineOutput) GoString() string {
	return s.String()
}

// SetImagePipeline sets the ImagePipeline field's value.
func (s *GetImagePipelineOutput) SetImagePipeline(v *ImagePipeline) *GetImagePipelineOutput {
	s.ImagePipeline = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *GetImagePipelineOutput) SetRequestId(v string) *GetImagePipelineOutput {
	s.RequestId = &v
	return s
}

type GetImagePolicyInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the image whose policy you want to retrieve.
	//
	// ImageArn is a required field
	ImageArn *string `location:"querystring" locationName:"imageArn" 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 GetImagePolicyInput) 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 GetImagePolicyInput) GoString() string {
	return s.String()
}

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

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

// SetImageArn sets the ImageArn field's value.
func (s *GetImagePolicyInput) SetImageArn(v string) *GetImagePolicyInput {
	s.ImageArn = &v
	return s
}

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

	// The image policy object.
	Policy *string `locationName:"policy" min:"1" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 GetImagePolicyOutput) 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 GetImagePolicyOutput) GoString() string {
	return s.String()
}

// SetPolicy sets the Policy field's value.
func (s *GetImagePolicyOutput) SetPolicy(v string) *GetImagePolicyOutput {
	s.Policy = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *GetImagePolicyOutput) SetRequestId(v string) *GetImagePolicyOutput {
	s.RequestId = &v
	return s
}

type GetImageRecipeInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the image recipe that you want to retrieve.
	//
	// ImageRecipeArn is a required field
	ImageRecipeArn *string `location:"querystring" locationName:"imageRecipeArn" 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 GetImageRecipeInput) 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 GetImageRecipeInput) GoString() string {
	return s.String()
}

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

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

// SetImageRecipeArn sets the ImageRecipeArn field's value.
func (s *GetImageRecipeInput) SetImageRecipeArn(v string) *GetImageRecipeInput {
	s.ImageRecipeArn = &v
	return s
}

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

	// The image recipe object.
	ImageRecipe *ImageRecipe `locationName:"imageRecipe" type:"structure"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 GetImageRecipeOutput) 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 GetImageRecipeOutput) GoString() string {
	return s.String()
}

// SetImageRecipe sets the ImageRecipe field's value.
func (s *GetImageRecipeOutput) SetImageRecipe(v *ImageRecipe) *GetImageRecipeOutput {
	s.ImageRecipe = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *GetImageRecipeOutput) SetRequestId(v string) *GetImageRecipeOutput {
	s.RequestId = &v
	return s
}

type GetImageRecipePolicyInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the image recipe whose policy you want
	// to retrieve.
	//
	// ImageRecipeArn is a required field
	ImageRecipeArn *string `location:"querystring" locationName:"imageRecipeArn" 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 GetImageRecipePolicyInput) 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 GetImageRecipePolicyInput) GoString() string {
	return s.String()
}

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

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

// SetImageRecipeArn sets the ImageRecipeArn field's value.
func (s *GetImageRecipePolicyInput) SetImageRecipeArn(v string) *GetImageRecipePolicyInput {
	s.ImageRecipeArn = &v
	return s
}

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

	// The image recipe policy object.
	Policy *string `locationName:"policy" min:"1" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 GetImageRecipePolicyOutput) 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 GetImageRecipePolicyOutput) GoString() string {
	return s.String()
}

// SetPolicy sets the Policy field's value.
func (s *GetImageRecipePolicyOutput) SetPolicy(v string) *GetImageRecipePolicyOutput {
	s.Policy = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *GetImageRecipePolicyOutput) SetRequestId(v string) *GetImageRecipePolicyOutput {
	s.RequestId = &v
	return s
}

// GetInfrastructureConfiguration request object.
type GetInfrastructureConfigurationInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the infrastructure configuration that you
	// want to retrieve.
	//
	// InfrastructureConfigurationArn is a required field
	InfrastructureConfigurationArn *string `location:"querystring" locationName:"infrastructureConfigurationArn" 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 GetInfrastructureConfigurationInput) 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 GetInfrastructureConfigurationInput) GoString() string {
	return s.String()
}

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

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

// SetInfrastructureConfigurationArn sets the InfrastructureConfigurationArn field's value.
func (s *GetInfrastructureConfigurationInput) SetInfrastructureConfigurationArn(v string) *GetInfrastructureConfigurationInput {
	s.InfrastructureConfigurationArn = &v
	return s
}

// GetInfrastructureConfiguration response object.
type GetInfrastructureConfigurationOutput struct {
	_ struct{} `type:"structure"`

	// The infrastructure configuration object.
	InfrastructureConfiguration *InfrastructureConfiguration `locationName:"infrastructureConfiguration" type:"structure"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 GetInfrastructureConfigurationOutput) 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 GetInfrastructureConfigurationOutput) GoString() string {
	return s.String()
}

// SetInfrastructureConfiguration sets the InfrastructureConfiguration field's value.
func (s *GetInfrastructureConfigurationOutput) SetInfrastructureConfiguration(v *InfrastructureConfiguration) *GetInfrastructureConfigurationOutput {
	s.InfrastructureConfiguration = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *GetInfrastructureConfigurationOutput) SetRequestId(v string) *GetInfrastructureConfigurationOutput {
	s.RequestId = &v
	return s
}

type GetLifecycleExecutionInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// Use the unique identifier for a runtime instance of the lifecycle policy
	// to get runtime details.
	//
	// LifecycleExecutionId is a required field
	LifecycleExecutionId *string `location:"querystring" locationName:"lifecycleExecutionId" 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 GetLifecycleExecutionInput) 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 GetLifecycleExecutionInput) GoString() string {
	return s.String()
}

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

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

// SetLifecycleExecutionId sets the LifecycleExecutionId field's value.
func (s *GetLifecycleExecutionInput) SetLifecycleExecutionId(v string) *GetLifecycleExecutionInput {
	s.LifecycleExecutionId = &v
	return s
}

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

	// Runtime details for the specified runtime instance of the lifecycle policy.
	LifecycleExecution *LifecycleExecution `locationName:"lifecycleExecution" 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 GetLifecycleExecutionOutput) 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 GetLifecycleExecutionOutput) GoString() string {
	return s.String()
}

// SetLifecycleExecution sets the LifecycleExecution field's value.
func (s *GetLifecycleExecutionOutput) SetLifecycleExecution(v *LifecycleExecution) *GetLifecycleExecutionOutput {
	s.LifecycleExecution = v
	return s
}

type GetLifecyclePolicyInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// Specifies the Amazon Resource Name (ARN) of the image lifecycle policy resource
	// to get.
	//
	// LifecyclePolicyArn is a required field
	LifecyclePolicyArn *string `location:"querystring" locationName:"lifecyclePolicyArn" 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 GetLifecyclePolicyInput) 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 GetLifecyclePolicyInput) GoString() string {
	return s.String()
}

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

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

// SetLifecyclePolicyArn sets the LifecyclePolicyArn field's value.
func (s *GetLifecyclePolicyInput) SetLifecyclePolicyArn(v string) *GetLifecyclePolicyInput {
	s.LifecyclePolicyArn = &v
	return s
}

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

	// The ARN of the image lifecycle policy resource that was returned.
	LifecyclePolicy *LifecyclePolicy `locationName:"lifecyclePolicy" 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 GetLifecyclePolicyOutput) 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 GetLifecyclePolicyOutput) GoString() string {
	return s.String()
}

// SetLifecyclePolicy sets the LifecyclePolicy field's value.
func (s *GetLifecyclePolicyOutput) SetLifecyclePolicy(v *LifecyclePolicy) *GetLifecyclePolicyOutput {
	s.LifecyclePolicy = v
	return s
}

type GetWorkflowExecutionInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// Use the unique identifier for a runtime instance of the workflow to get runtime
	// details.
	//
	// WorkflowExecutionId is a required field
	WorkflowExecutionId *string `location:"querystring" locationName:"workflowExecutionId" 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 GetWorkflowExecutionInput) 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 GetWorkflowExecutionInput) GoString() string {
	return s.String()
}

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

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

// SetWorkflowExecutionId sets the WorkflowExecutionId field's value.
func (s *GetWorkflowExecutionInput) SetWorkflowExecutionId(v string) *GetWorkflowExecutionInput {
	s.WorkflowExecutionId = &v
	return s
}

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

	// The timestamp when the specified runtime instance of the workflow finished.
	EndTime *string `locationName:"endTime" type:"string"`

	// The Amazon Resource Name (ARN) of the image resource build version that the
	// specified runtime instance of the workflow created.
	ImageBuildVersionArn *string `locationName:"imageBuildVersionArn" type:"string"`

	// The output message from the specified runtime instance of the workflow, if
	// applicable.
	Message *string `locationName:"message" type:"string"`

	// Test workflows are defined within named runtime groups. The parallel group
	// is a named group that contains one or more test workflows.
	ParallelGroup *string `locationName:"parallelGroup" min:"1" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" min:"1" type:"string"`

	// The timestamp when the specified runtime instance of the workflow started.
	StartTime *string `locationName:"startTime" type:"string"`

	// The current runtime status for the specified runtime instance of the workflow.
	Status *string `locationName:"status" type:"string" enum:"WorkflowExecutionStatus"`

	// The total number of steps in the specified runtime instance of the workflow
	// that ran. This number should equal the sum of the step counts for steps that
	// succeeded, were skipped, and failed.
	TotalStepCount *int64 `locationName:"totalStepCount" type:"integer"`

	// A runtime count for the number of steps that failed in the specified runtime
	// instance of the workflow.
	TotalStepsFailed *int64 `locationName:"totalStepsFailed" type:"integer"`

	// A runtime count for the number of steps that were skipped in the specified
	// runtime instance of the workflow.
	TotalStepsSkipped *int64 `locationName:"totalStepsSkipped" type:"integer"`

	// A runtime count for the number of steps that ran successfully in the specified
	// runtime instance of the workflow.
	TotalStepsSucceeded *int64 `locationName:"totalStepsSucceeded" type:"integer"`

	// The type of workflow that Image Builder ran for the specified runtime instance
	// of the workflow.
	Type *string `locationName:"type" type:"string" enum:"WorkflowType"`

	// The Amazon Resource Name (ARN) of the build version for the Image Builder
	// workflow resource that defines the specified runtime instance of the workflow.
	WorkflowBuildVersionArn *string `locationName:"workflowBuildVersionArn" type:"string"`

	// The unique identifier that Image Builder assigned to keep track of runtime
	// details when it ran the workflow.
	WorkflowExecutionId *string `locationName:"workflowExecutionId" 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 GetWorkflowExecutionOutput) 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 GetWorkflowExecutionOutput) GoString() string {
	return s.String()
}

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

// SetImageBuildVersionArn sets the ImageBuildVersionArn field's value.
func (s *GetWorkflowExecutionOutput) SetImageBuildVersionArn(v string) *GetWorkflowExecutionOutput {
	s.ImageBuildVersionArn = &v
	return s
}

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

// SetParallelGroup sets the ParallelGroup field's value.
func (s *GetWorkflowExecutionOutput) SetParallelGroup(v string) *GetWorkflowExecutionOutput {
	s.ParallelGroup = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *GetWorkflowExecutionOutput) SetRequestId(v string) *GetWorkflowExecutionOutput {
	s.RequestId = &v
	return s
}

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

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

// SetTotalStepCount sets the TotalStepCount field's value.
func (s *GetWorkflowExecutionOutput) SetTotalStepCount(v int64) *GetWorkflowExecutionOutput {
	s.TotalStepCount = &v
	return s
}

// SetTotalStepsFailed sets the TotalStepsFailed field's value.
func (s *GetWorkflowExecutionOutput) SetTotalStepsFailed(v int64) *GetWorkflowExecutionOutput {
	s.TotalStepsFailed = &v
	return s
}

// SetTotalStepsSkipped sets the TotalStepsSkipped field's value.
func (s *GetWorkflowExecutionOutput) SetTotalStepsSkipped(v int64) *GetWorkflowExecutionOutput {
	s.TotalStepsSkipped = &v
	return s
}

// SetTotalStepsSucceeded sets the TotalStepsSucceeded field's value.
func (s *GetWorkflowExecutionOutput) SetTotalStepsSucceeded(v int64) *GetWorkflowExecutionOutput {
	s.TotalStepsSucceeded = &v
	return s
}

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

// SetWorkflowBuildVersionArn sets the WorkflowBuildVersionArn field's value.
func (s *GetWorkflowExecutionOutput) SetWorkflowBuildVersionArn(v string) *GetWorkflowExecutionOutput {
	s.WorkflowBuildVersionArn = &v
	return s
}

// SetWorkflowExecutionId sets the WorkflowExecutionId field's value.
func (s *GetWorkflowExecutionOutput) SetWorkflowExecutionId(v string) *GetWorkflowExecutionOutput {
	s.WorkflowExecutionId = &v
	return s
}

type GetWorkflowInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the workflow resource that you want to
	// get.
	//
	// WorkflowBuildVersionArn is a required field
	WorkflowBuildVersionArn *string `location:"querystring" locationName:"workflowBuildVersionArn" 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 GetWorkflowInput) 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 GetWorkflowInput) GoString() string {
	return s.String()
}

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

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

// SetWorkflowBuildVersionArn sets the WorkflowBuildVersionArn field's value.
func (s *GetWorkflowInput) SetWorkflowBuildVersionArn(v string) *GetWorkflowInput {
	s.WorkflowBuildVersionArn = &v
	return s
}

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

	// The workflow resource specified in the request.
	Workflow *Workflow `locationName:"workflow" 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 GetWorkflowOutput) 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 GetWorkflowOutput) GoString() string {
	return s.String()
}

// SetWorkflow sets the Workflow field's value.
func (s *GetWorkflowOutput) SetWorkflow(v *Workflow) *GetWorkflowOutput {
	s.Workflow = v
	return s
}

type GetWorkflowStepExecutionInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// Use the unique identifier for a specific runtime instance of the workflow
	// step to get runtime details for that step.
	//
	// StepExecutionId is a required field
	StepExecutionId *string `location:"querystring" locationName:"stepExecutionId" 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 GetWorkflowStepExecutionInput) 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 GetWorkflowStepExecutionInput) GoString() string {
	return s.String()
}

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

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

// SetStepExecutionId sets the StepExecutionId field's value.
func (s *GetWorkflowStepExecutionInput) SetStepExecutionId(v string) *GetWorkflowStepExecutionInput {
	s.StepExecutionId = &v
	return s
}

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

	// The name of the action that the specified step performs.
	Action *string `locationName:"action" type:"string"`

	// Describes the specified workflow step.
	Description *string `locationName:"description" type:"string"`

	// The timestamp when the specified runtime instance of the workflow step finished.
	EndTime *string `locationName:"endTime" type:"string"`

	// The Amazon Resource Name (ARN) of the image resource build version that the
	// specified runtime instance of the workflow step creates.
	ImageBuildVersionArn *string `locationName:"imageBuildVersionArn" type:"string"`

	// Input parameters that Image Builder provided for the specified runtime instance
	// of the workflow step.
	Inputs *string `locationName:"inputs" type:"string"`

	// The output message from the specified runtime instance of the workflow step,
	// if applicable.
	Message *string `locationName:"message" type:"string"`

	// The name of the specified runtime instance of the workflow step.
	Name *string `locationName:"name" type:"string"`

	// The action to perform if the workflow step fails.
	OnFailure *string `locationName:"onFailure" min:"1" type:"string"`

	// The file names that the specified runtime version of the workflow step created
	// as output.
	Outputs *string `locationName:"outputs" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" min:"1" type:"string"`

	// Reports on the rollback status of the specified runtime version of the workflow
	// step, if applicable.
	RollbackStatus *string `locationName:"rollbackStatus" type:"string" enum:"WorkflowStepExecutionRollbackStatus"`

	// The timestamp when the specified runtime version of the workflow step started.
	StartTime *string `locationName:"startTime" type:"string"`

	// The current status for the specified runtime version of the workflow step.
	Status *string `locationName:"status" type:"string" enum:"WorkflowStepExecutionStatus"`

	// The unique identifier for the runtime version of the workflow step that you
	// specified in the request.
	StepExecutionId *string `locationName:"stepExecutionId" type:"string"`

	// The maximum duration in seconds for this step to complete its action.
	TimeoutSeconds *int64 `locationName:"timeoutSeconds" type:"integer"`

	// The Amazon Resource Name (ARN) of the build version for the Image Builder
	// workflow resource that defines this workflow step.
	WorkflowBuildVersionArn *string `locationName:"workflowBuildVersionArn" type:"string"`

	// The unique identifier that Image Builder assigned to keep track of runtime
	// details when it ran the workflow.
	WorkflowExecutionId *string `locationName:"workflowExecutionId" 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 GetWorkflowStepExecutionOutput) 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 GetWorkflowStepExecutionOutput) GoString() string {
	return s.String()
}

// SetAction sets the Action field's value.
func (s *GetWorkflowStepExecutionOutput) SetAction(v string) *GetWorkflowStepExecutionOutput {
	s.Action = &v
	return s
}

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

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

// SetImageBuildVersionArn sets the ImageBuildVersionArn field's value.
func (s *GetWorkflowStepExecutionOutput) SetImageBuildVersionArn(v string) *GetWorkflowStepExecutionOutput {
	s.ImageBuildVersionArn = &v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *GetWorkflowStepExecutionOutput) SetInputs(v string) *GetWorkflowStepExecutionOutput {
	s.Inputs = &v
	return s
}

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

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

// SetOnFailure sets the OnFailure field's value.
func (s *GetWorkflowStepExecutionOutput) SetOnFailure(v string) *GetWorkflowStepExecutionOutput {
	s.OnFailure = &v
	return s
}

// SetOutputs sets the Outputs field's value.
func (s *GetWorkflowStepExecutionOutput) SetOutputs(v string) *GetWorkflowStepExecutionOutput {
	s.Outputs = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *GetWorkflowStepExecutionOutput) SetRequestId(v string) *GetWorkflowStepExecutionOutput {
	s.RequestId = &v
	return s
}

// SetRollbackStatus sets the RollbackStatus field's value.
func (s *GetWorkflowStepExecutionOutput) SetRollbackStatus(v string) *GetWorkflowStepExecutionOutput {
	s.RollbackStatus = &v
	return s
}

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

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

// SetStepExecutionId sets the StepExecutionId field's value.
func (s *GetWorkflowStepExecutionOutput) SetStepExecutionId(v string) *GetWorkflowStepExecutionOutput {
	s.StepExecutionId = &v
	return s
}

// SetTimeoutSeconds sets the TimeoutSeconds field's value.
func (s *GetWorkflowStepExecutionOutput) SetTimeoutSeconds(v int64) *GetWorkflowStepExecutionOutput {
	s.TimeoutSeconds = &v
	return s
}

// SetWorkflowBuildVersionArn sets the WorkflowBuildVersionArn field's value.
func (s *GetWorkflowStepExecutionOutput) SetWorkflowBuildVersionArn(v string) *GetWorkflowStepExecutionOutput {
	s.WorkflowBuildVersionArn = &v
	return s
}

// SetWorkflowExecutionId sets the WorkflowExecutionId field's value.
func (s *GetWorkflowStepExecutionOutput) SetWorkflowExecutionId(v string) *GetWorkflowStepExecutionOutput {
	s.WorkflowExecutionId = &v
	return s
}

// You have specified a client token for an operation using parameter values
// that differ from a previous request that used the same client token.
type IdempotentParameterMismatchException 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 IdempotentParameterMismatchException) 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 IdempotentParameterMismatchException) GoString() string {
	return s.String()
}

func newErrorIdempotentParameterMismatchException(v protocol.ResponseMetadata) error {
	return &IdempotentParameterMismatchException{
		RespMetadata: v,
	}
}

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

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

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

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

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

// An Image Builder image. You must specify exactly one recipe for the image
// – either a container recipe (containerRecipe), which creates a container
// image, or an image recipe (imageRecipe), which creates an AMI.
type Image struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the image.
	//
	// Semantic versioning is included in each object's Amazon Resource Name (ARN),
	// at the level that applies to that object as follows:
	//
	// Versionless ARNs and Name ARNs do not include specific values in any of the
	// nodes. The nodes are either left off entirely, or they are specified as wildcards,
	// for example: x.x.x.
	//
	// Version ARNs have only the first three nodes: <major>.<minor>.<patch>
	//
	// Build version ARNs have all four nodes, and point to a specific build for
	// a specific version of an object.
	Arn *string `locationName:"arn" type:"string"`

	// Indicates the type of build that created this image. The build can be initiated
	// in the following ways:
	//
	//    * USER_INITIATED – A manual pipeline build request.
	//
	//    * SCHEDULED – A pipeline build initiated by a cron expression in the
	//    Image Builder pipeline, or from EventBridge.
	//
	//    * IMPORT – A VM import created the image to use as the base image for
	//    the recipe.
	BuildType *string `locationName:"buildType" type:"string" enum:"BuildType"`

	// For container images, this is the container recipe that Image Builder used
	// to create the image. For images that distribute an AMI, this is empty.
	ContainerRecipe *ContainerRecipe `locationName:"containerRecipe" type:"structure"`

	// The date on which Image Builder created this image.
	DateCreated *string `locationName:"dateCreated" type:"string"`

	// The time when deprecation occurs for an image resource. This can be a past
	// or future date.
	DeprecationTime *time.Time `locationName:"deprecationTime" type:"timestamp"`

	// The distribution configuration that Image Builder used to create this image.
	DistributionConfiguration *DistributionConfiguration `locationName:"distributionConfiguration" type:"structure"`

	// Indicates whether Image Builder collects additional information about the
	// image, such as the operating system (OS) version and package list.
	EnhancedImageMetadataEnabled *bool `locationName:"enhancedImageMetadataEnabled" type:"boolean"`

	// The name or Amazon Resource Name (ARN) for the IAM role you create that grants
	// Image Builder access to perform workflow actions.
	ExecutionRole *string `locationName:"executionRole" min:"1" type:"string"`

	// For images that distribute an AMI, this is the image recipe that Image Builder
	// used to create the image. For container images, this is empty.
	ImageRecipe *ImageRecipe `locationName:"imageRecipe" type:"structure"`

	// Contains settings for vulnerability scans.
	ImageScanningConfiguration *ImageScanningConfiguration `locationName:"imageScanningConfiguration" type:"structure"`

	// The origin of the base image that Image Builder used to build this image.
	ImageSource *string `locationName:"imageSource" type:"string" enum:"ImageSource"`

	// The image tests that ran when that Image Builder created this image.
	ImageTestsConfiguration *ImageTestsConfiguration `locationName:"imageTestsConfiguration" type:"structure"`

	// The infrastructure that Image Builder used to create this image.
	InfrastructureConfiguration *InfrastructureConfiguration `locationName:"infrastructureConfiguration" type:"structure"`

	// Identifies the last runtime instance of the lifecycle policy to take action
	// on the image.
	LifecycleExecutionId *string `locationName:"lifecycleExecutionId" type:"string"`

	// The name of the image.
	Name *string `locationName:"name" type:"string"`

	// The operating system version for instances that launch from this image. For
	// example, Amazon Linux 2, Ubuntu 18, or Microsoft Windows Server 2019.
	OsVersion *string `locationName:"osVersion" min:"1" type:"string"`

	// The output resources that Image Builder produces for this image.
	OutputResources *OutputResources `locationName:"outputResources" type:"structure"`

	// The image operating system platform, such as Linux or Windows.
	Platform *string `locationName:"platform" type:"string" enum:"Platform"`

	// Contains information about the current state of scans for this image.
	ScanState *ImageScanState `locationName:"scanState" type:"structure"`

	// The Amazon Resource Name (ARN) of the image pipeline that created this image.
	SourcePipelineArn *string `locationName:"sourcePipelineArn" type:"string"`

	// The name of the image pipeline that created this image.
	SourcePipelineName *string `locationName:"sourcePipelineName" type:"string"`

	// The state of the image.
	State *ImageState `locationName:"state" type:"structure"`

	// The tags that apply to this image.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`

	// Specifies whether this image produces an AMI or a container image.
	Type *string `locationName:"type" type:"string" enum:"ImageType"`

	// The semantic version of the image.
	//
	// The semantic version has four nodes: <major>.<minor>.<patch>/<build>. You
	// can assign values for the first three, and can filter on all of them.
	//
	// Assignment: For the first three nodes you can assign any positive integer
	// value, including zero, with an upper limit of 2^30-1, or 1073741823 for each
	// node. Image Builder automatically assigns the build number to the fourth
	// node.
	//
	// Patterns: You can use any numeric pattern that adheres to the assignment
	// requirements for the nodes that you can assign. For example, you might choose
	// a software version pattern, such as 1.0.0, or a date, such as 2021.01.01.
	//
	// Filtering: With semantic versioning, you have the flexibility to use wildcards
	// (x) to specify the most recent versions or nodes when selecting the base
	// image or components for your recipe. When you use a wildcard in any node,
	// all nodes to the right of the first wildcard must also be wildcards.
	Version *string `locationName:"version" type:"string"`

	// Contains the build and test workflows that are associated with the image.
	Workflows []*WorkflowConfiguration `locationName:"workflows" 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 Image) 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 Image) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *Image) SetArn(v string) *Image {
	s.Arn = &v
	return s
}

// SetBuildType sets the BuildType field's value.
func (s *Image) SetBuildType(v string) *Image {
	s.BuildType = &v
	return s
}

// SetContainerRecipe sets the ContainerRecipe field's value.
func (s *Image) SetContainerRecipe(v *ContainerRecipe) *Image {
	s.ContainerRecipe = v
	return s
}

// SetDateCreated sets the DateCreated field's value.
func (s *Image) SetDateCreated(v string) *Image {
	s.DateCreated = &v
	return s
}

// SetDeprecationTime sets the DeprecationTime field's value.
func (s *Image) SetDeprecationTime(v time.Time) *Image {
	s.DeprecationTime = &v
	return s
}

// SetDistributionConfiguration sets the DistributionConfiguration field's value.
func (s *Image) SetDistributionConfiguration(v *DistributionConfiguration) *Image {
	s.DistributionConfiguration = v
	return s
}

// SetEnhancedImageMetadataEnabled sets the EnhancedImageMetadataEnabled field's value.
func (s *Image) SetEnhancedImageMetadataEnabled(v bool) *Image {
	s.EnhancedImageMetadataEnabled = &v
	return s
}

// SetExecutionRole sets the ExecutionRole field's value.
func (s *Image) SetExecutionRole(v string) *Image {
	s.ExecutionRole = &v
	return s
}

// SetImageRecipe sets the ImageRecipe field's value.
func (s *Image) SetImageRecipe(v *ImageRecipe) *Image {
	s.ImageRecipe = v
	return s
}

// SetImageScanningConfiguration sets the ImageScanningConfiguration field's value.
func (s *Image) SetImageScanningConfiguration(v *ImageScanningConfiguration) *Image {
	s.ImageScanningConfiguration = v
	return s
}

// SetImageSource sets the ImageSource field's value.
func (s *Image) SetImageSource(v string) *Image {
	s.ImageSource = &v
	return s
}

// SetImageTestsConfiguration sets the ImageTestsConfiguration field's value.
func (s *Image) SetImageTestsConfiguration(v *ImageTestsConfiguration) *Image {
	s.ImageTestsConfiguration = v
	return s
}

// SetInfrastructureConfiguration sets the InfrastructureConfiguration field's value.
func (s *Image) SetInfrastructureConfiguration(v *InfrastructureConfiguration) *Image {
	s.InfrastructureConfiguration = v
	return s
}

// SetLifecycleExecutionId sets the LifecycleExecutionId field's value.
func (s *Image) SetLifecycleExecutionId(v string) *Image {
	s.LifecycleExecutionId = &v
	return s
}

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

// SetOsVersion sets the OsVersion field's value.
func (s *Image) SetOsVersion(v string) *Image {
	s.OsVersion = &v
	return s
}

// SetOutputResources sets the OutputResources field's value.
func (s *Image) SetOutputResources(v *OutputResources) *Image {
	s.OutputResources = v
	return s
}

// SetPlatform sets the Platform field's value.
func (s *Image) SetPlatform(v string) *Image {
	s.Platform = &v
	return s
}

// SetScanState sets the ScanState field's value.
func (s *Image) SetScanState(v *ImageScanState) *Image {
	s.ScanState = v
	return s
}

// SetSourcePipelineArn sets the SourcePipelineArn field's value.
func (s *Image) SetSourcePipelineArn(v string) *Image {
	s.SourcePipelineArn = &v
	return s
}

// SetSourcePipelineName sets the SourcePipelineName field's value.
func (s *Image) SetSourcePipelineName(v string) *Image {
	s.SourcePipelineName = &v
	return s
}

// SetState sets the State field's value.
func (s *Image) SetState(v *ImageState) *Image {
	s.State = v
	return s
}

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

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

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

// SetWorkflows sets the Workflows field's value.
func (s *Image) SetWorkflows(v []*WorkflowConfiguration) *Image {
	s.Workflows = v
	return s
}

// Contains vulnerability counts for a specific image.
type ImageAggregation struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) that identifies the image for this aggregation.
	ImageBuildVersionArn *string `locationName:"imageBuildVersionArn" type:"string"`

	// Counts by severity level for medium severity and higher level findings, plus
	// a total for all of the findings for the specified image.
	SeverityCounts *SeverityCounts `locationName:"severityCounts" 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 ImageAggregation) 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 ImageAggregation) GoString() string {
	return s.String()
}

// SetImageBuildVersionArn sets the ImageBuildVersionArn field's value.
func (s *ImageAggregation) SetImageBuildVersionArn(v string) *ImageAggregation {
	s.ImageBuildVersionArn = &v
	return s
}

// SetSeverityCounts sets the SeverityCounts field's value.
func (s *ImageAggregation) SetSeverityCounts(v *SeverityCounts) *ImageAggregation {
	s.SeverityCounts = v
	return s
}

// Represents a package installed on an Image Builder image.
type ImagePackage struct {
	_ struct{} `type:"structure"`

	// The name of the package as reported to the operating system package manager.
	PackageName *string `locationName:"packageName" min:"1" type:"string"`

	// The version of the package as reported to the operating system package manager.
	PackageVersion *string `locationName:"packageVersion" 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 ImagePackage) 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 ImagePackage) GoString() string {
	return s.String()
}

// SetPackageName sets the PackageName field's value.
func (s *ImagePackage) SetPackageName(v string) *ImagePackage {
	s.PackageName = &v
	return s
}

// SetPackageVersion sets the PackageVersion field's value.
func (s *ImagePackage) SetPackageVersion(v string) *ImagePackage {
	s.PackageVersion = &v
	return s
}

// Details of an image pipeline.
type ImagePipeline struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the image pipeline.
	Arn *string `locationName:"arn" type:"string"`

	// The Amazon Resource Name (ARN) of the container recipe that is used for this
	// pipeline.
	ContainerRecipeArn *string `locationName:"containerRecipeArn" type:"string"`

	// The date on which this image pipeline was created.
	DateCreated *string `locationName:"dateCreated" type:"string"`

	// This is no longer supported, and does not return a value.
	DateLastRun *string `locationName:"dateLastRun" type:"string"`

	// The next date when the pipeline is scheduled to run.
	DateNextRun *string `locationName:"dateNextRun" type:"string"`

	// The date on which this image pipeline was last updated.
	DateUpdated *string `locationName:"dateUpdated" type:"string"`

	// The description of the image pipeline.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the distribution configuration associated
	// with this image pipeline.
	DistributionConfigurationArn *string `locationName:"distributionConfigurationArn" type:"string"`

	// Collects additional information about the image being created, including
	// the operating system (OS) version and package list. This information is used
	// to enhance the overall experience of using EC2 Image Builder. Enabled by
	// default.
	EnhancedImageMetadataEnabled *bool `locationName:"enhancedImageMetadataEnabled" type:"boolean"`

	// The name or Amazon Resource Name (ARN) for the IAM role you create that grants
	// Image Builder access to perform workflow actions.
	ExecutionRole *string `locationName:"executionRole" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the image recipe associated with this image
	// pipeline.
	ImageRecipeArn *string `locationName:"imageRecipeArn" type:"string"`

	// Contains settings for vulnerability scans.
	ImageScanningConfiguration *ImageScanningConfiguration `locationName:"imageScanningConfiguration" type:"structure"`

	// The image tests configuration of the image pipeline.
	ImageTestsConfiguration *ImageTestsConfiguration `locationName:"imageTestsConfiguration" type:"structure"`

	// The Amazon Resource Name (ARN) of the infrastructure configuration associated
	// with this image pipeline.
	InfrastructureConfigurationArn *string `locationName:"infrastructureConfigurationArn" type:"string"`

	// The name of the image pipeline.
	Name *string `locationName:"name" type:"string"`

	// The platform of the image pipeline.
	Platform *string `locationName:"platform" type:"string" enum:"Platform"`

	// The schedule of the image pipeline.
	Schedule *Schedule `locationName:"schedule" type:"structure"`

	// The status of the image pipeline.
	Status *string `locationName:"status" type:"string" enum:"PipelineStatus"`

	// The tags of this image pipeline.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`

	// Contains the workflows that run for the image pipeline.
	Workflows []*WorkflowConfiguration `locationName:"workflows" 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 ImagePipeline) 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 ImagePipeline) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *ImagePipeline) SetArn(v string) *ImagePipeline {
	s.Arn = &v
	return s
}

// SetContainerRecipeArn sets the ContainerRecipeArn field's value.
func (s *ImagePipeline) SetContainerRecipeArn(v string) *ImagePipeline {
	s.ContainerRecipeArn = &v
	return s
}

// SetDateCreated sets the DateCreated field's value.
func (s *ImagePipeline) SetDateCreated(v string) *ImagePipeline {
	s.DateCreated = &v
	return s
}

// SetDateLastRun sets the DateLastRun field's value.
func (s *ImagePipeline) SetDateLastRun(v string) *ImagePipeline {
	s.DateLastRun = &v
	return s
}

// SetDateNextRun sets the DateNextRun field's value.
func (s *ImagePipeline) SetDateNextRun(v string) *ImagePipeline {
	s.DateNextRun = &v
	return s
}

// SetDateUpdated sets the DateUpdated field's value.
func (s *ImagePipeline) SetDateUpdated(v string) *ImagePipeline {
	s.DateUpdated = &v
	return s
}

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

// SetDistributionConfigurationArn sets the DistributionConfigurationArn field's value.
func (s *ImagePipeline) SetDistributionConfigurationArn(v string) *ImagePipeline {
	s.DistributionConfigurationArn = &v
	return s
}

// SetEnhancedImageMetadataEnabled sets the EnhancedImageMetadataEnabled field's value.
func (s *ImagePipeline) SetEnhancedImageMetadataEnabled(v bool) *ImagePipeline {
	s.EnhancedImageMetadataEnabled = &v
	return s
}

// SetExecutionRole sets the ExecutionRole field's value.
func (s *ImagePipeline) SetExecutionRole(v string) *ImagePipeline {
	s.ExecutionRole = &v
	return s
}

// SetImageRecipeArn sets the ImageRecipeArn field's value.
func (s *ImagePipeline) SetImageRecipeArn(v string) *ImagePipeline {
	s.ImageRecipeArn = &v
	return s
}

// SetImageScanningConfiguration sets the ImageScanningConfiguration field's value.
func (s *ImagePipeline) SetImageScanningConfiguration(v *ImageScanningConfiguration) *ImagePipeline {
	s.ImageScanningConfiguration = v
	return s
}

// SetImageTestsConfiguration sets the ImageTestsConfiguration field's value.
func (s *ImagePipeline) SetImageTestsConfiguration(v *ImageTestsConfiguration) *ImagePipeline {
	s.ImageTestsConfiguration = v
	return s
}

// SetInfrastructureConfigurationArn sets the InfrastructureConfigurationArn field's value.
func (s *ImagePipeline) SetInfrastructureConfigurationArn(v string) *ImagePipeline {
	s.InfrastructureConfigurationArn = &v
	return s
}

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

// SetPlatform sets the Platform field's value.
func (s *ImagePipeline) SetPlatform(v string) *ImagePipeline {
	s.Platform = &v
	return s
}

// SetSchedule sets the Schedule field's value.
func (s *ImagePipeline) SetSchedule(v *Schedule) *ImagePipeline {
	s.Schedule = v
	return s
}

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

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

// SetWorkflows sets the Workflows field's value.
func (s *ImagePipeline) SetWorkflows(v []*WorkflowConfiguration) *ImagePipeline {
	s.Workflows = v
	return s
}

// Contains vulnerability counts for a specific image pipeline.
type ImagePipelineAggregation struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) that identifies the image pipeline for this
	// aggregation.
	ImagePipelineArn *string `locationName:"imagePipelineArn" type:"string"`

	// Counts by severity level for medium severity and higher level findings, plus
	// a total for all of the findings for the specified image pipeline.
	SeverityCounts *SeverityCounts `locationName:"severityCounts" 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 ImagePipelineAggregation) 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 ImagePipelineAggregation) GoString() string {
	return s.String()
}

// SetImagePipelineArn sets the ImagePipelineArn field's value.
func (s *ImagePipelineAggregation) SetImagePipelineArn(v string) *ImagePipelineAggregation {
	s.ImagePipelineArn = &v
	return s
}

// SetSeverityCounts sets the SeverityCounts field's value.
func (s *ImagePipelineAggregation) SetSeverityCounts(v *SeverityCounts) *ImagePipelineAggregation {
	s.SeverityCounts = v
	return s
}

// An image recipe.
type ImageRecipe struct {
	_ struct{} `type:"structure"`

	// Before you create a new AMI, Image Builder launches temporary Amazon EC2
	// instances to build and test your image configuration. Instance configuration
	// adds a layer of control over those instances. You can define settings and
	// add scripts to run when an instance is launched from your AMI.
	AdditionalInstanceConfiguration *AdditionalInstanceConfiguration `locationName:"additionalInstanceConfiguration" type:"structure"`

	// The Amazon Resource Name (ARN) of the image recipe.
	Arn *string `locationName:"arn" type:"string"`

	// The block device mappings to apply when creating images from this recipe.
	BlockDeviceMappings []*InstanceBlockDeviceMapping `locationName:"blockDeviceMappings" type:"list"`

	// The components that are included in the image recipe. Recipes require a minimum
	// of one build component, and can have a maximum of 20 build and test components
	// in any combination.
	Components []*ComponentConfiguration `locationName:"components" min:"1" type:"list"`

	// The date on which this image recipe was created.
	DateCreated *string `locationName:"dateCreated" type:"string"`

	// The description of the image recipe.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The name of the image recipe.
	Name *string `locationName:"name" type:"string"`

	// The owner of the image recipe.
	Owner *string `locationName:"owner" min:"1" type:"string"`

	// The base image of the image recipe.
	ParentImage *string `locationName:"parentImage" min:"1" type:"string"`

	// The platform of the image recipe.
	Platform *string `locationName:"platform" type:"string" enum:"Platform"`

	// The tags of the image recipe.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`

	// Specifies which type of image is created by the recipe - an AMI or a container
	// image.
	Type *string `locationName:"type" type:"string" enum:"ImageType"`

	// The version of the image recipe.
	Version *string `locationName:"version" type:"string"`

	// The working directory to be used during build and test workflows.
	WorkingDirectory *string `locationName:"workingDirectory" 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 ImageRecipe) 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 ImageRecipe) GoString() string {
	return s.String()
}

// SetAdditionalInstanceConfiguration sets the AdditionalInstanceConfiguration field's value.
func (s *ImageRecipe) SetAdditionalInstanceConfiguration(v *AdditionalInstanceConfiguration) *ImageRecipe {
	s.AdditionalInstanceConfiguration = v
	return s
}

// SetArn sets the Arn field's value.
func (s *ImageRecipe) SetArn(v string) *ImageRecipe {
	s.Arn = &v
	return s
}

// SetBlockDeviceMappings sets the BlockDeviceMappings field's value.
func (s *ImageRecipe) SetBlockDeviceMappings(v []*InstanceBlockDeviceMapping) *ImageRecipe {
	s.BlockDeviceMappings = v
	return s
}

// SetComponents sets the Components field's value.
func (s *ImageRecipe) SetComponents(v []*ComponentConfiguration) *ImageRecipe {
	s.Components = v
	return s
}

// SetDateCreated sets the DateCreated field's value.
func (s *ImageRecipe) SetDateCreated(v string) *ImageRecipe {
	s.DateCreated = &v
	return s
}

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

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

// SetOwner sets the Owner field's value.
func (s *ImageRecipe) SetOwner(v string) *ImageRecipe {
	s.Owner = &v
	return s
}

// SetParentImage sets the ParentImage field's value.
func (s *ImageRecipe) SetParentImage(v string) *ImageRecipe {
	s.ParentImage = &v
	return s
}

// SetPlatform sets the Platform field's value.
func (s *ImageRecipe) SetPlatform(v string) *ImageRecipe {
	s.Platform = &v
	return s
}

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

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

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

// SetWorkingDirectory sets the WorkingDirectory field's value.
func (s *ImageRecipe) SetWorkingDirectory(v string) *ImageRecipe {
	s.WorkingDirectory = &v
	return s
}

// A summary of an image recipe.
type ImageRecipeSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the image recipe.
	Arn *string `locationName:"arn" type:"string"`

	// The date on which this image recipe was created.
	DateCreated *string `locationName:"dateCreated" type:"string"`

	// The name of the image recipe.
	Name *string `locationName:"name" type:"string"`

	// The owner of the image recipe.
	Owner *string `locationName:"owner" min:"1" type:"string"`

	// The base image of the image recipe.
	ParentImage *string `locationName:"parentImage" min:"1" type:"string"`

	// The platform of the image recipe.
	Platform *string `locationName:"platform" type:"string" enum:"Platform"`

	// The tags of the image recipe.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
}

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

// SetArn sets the Arn field's value.
func (s *ImageRecipeSummary) SetArn(v string) *ImageRecipeSummary {
	s.Arn = &v
	return s
}

// SetDateCreated sets the DateCreated field's value.
func (s *ImageRecipeSummary) SetDateCreated(v string) *ImageRecipeSummary {
	s.DateCreated = &v
	return s
}

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

// SetOwner sets the Owner field's value.
func (s *ImageRecipeSummary) SetOwner(v string) *ImageRecipeSummary {
	s.Owner = &v
	return s
}

// SetParentImage sets the ParentImage field's value.
func (s *ImageRecipeSummary) SetParentImage(v string) *ImageRecipeSummary {
	s.ParentImage = &v
	return s
}

// SetPlatform sets the Platform field's value.
func (s *ImageRecipeSummary) SetPlatform(v string) *ImageRecipeSummary {
	s.Platform = &v
	return s
}

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

// Contains details about a vulnerability scan finding.
type ImageScanFinding struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID that's associated with the finding.
	AwsAccountId *string `locationName:"awsAccountId" min:"1" type:"string"`

	// The description of the finding.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The date and time when the finding was first observed.
	FirstObservedAt *time.Time `locationName:"firstObservedAt" type:"timestamp"`

	// Details about whether a fix is available for any of the packages that are
	// identified in the finding through a version update.
	FixAvailable *string `locationName:"fixAvailable" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the image build version that's associated
	// with the finding.
	ImageBuildVersionArn *string `locationName:"imageBuildVersionArn" type:"string"`

	// The Amazon Resource Name (ARN) of the image pipeline that's associated with
	// the finding.
	ImagePipelineArn *string `locationName:"imagePipelineArn" type:"string"`

	// The score that Amazon Inspector assigned for the finding.
	InspectorScore *float64 `locationName:"inspectorScore" type:"double"`

	// An object that contains details of the Amazon Inspector score.
	InspectorScoreDetails *InspectorScoreDetails `locationName:"inspectorScoreDetails" type:"structure"`

	// An object that contains the details of a package vulnerability finding.
	PackageVulnerabilityDetails *PackageVulnerabilityDetails `locationName:"packageVulnerabilityDetails" type:"structure"`

	// An object that contains the details about how to remediate the finding.
	Remediation *Remediation `locationName:"remediation" type:"structure"`

	// The severity of the finding.
	Severity *string `locationName:"severity" min:"1" type:"string"`

	// The title of the finding.
	Title *string `locationName:"title" min:"1" type:"string"`

	// The type of the finding. Image Builder looks for findings of the type PACKAGE_VULNERABILITY
	// that apply to output images, and excludes other types.
	Type *string `locationName:"type" min:"1" type:"string"`

	// The timestamp when the finding was last updated.
	UpdatedAt *time.Time `locationName:"updatedAt" 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 ImageScanFinding) 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 ImageScanFinding) GoString() string {
	return s.String()
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ImageScanFinding) SetAwsAccountId(v string) *ImageScanFinding {
	s.AwsAccountId = &v
	return s
}

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

// SetFirstObservedAt sets the FirstObservedAt field's value.
func (s *ImageScanFinding) SetFirstObservedAt(v time.Time) *ImageScanFinding {
	s.FirstObservedAt = &v
	return s
}

// SetFixAvailable sets the FixAvailable field's value.
func (s *ImageScanFinding) SetFixAvailable(v string) *ImageScanFinding {
	s.FixAvailable = &v
	return s
}

// SetImageBuildVersionArn sets the ImageBuildVersionArn field's value.
func (s *ImageScanFinding) SetImageBuildVersionArn(v string) *ImageScanFinding {
	s.ImageBuildVersionArn = &v
	return s
}

// SetImagePipelineArn sets the ImagePipelineArn field's value.
func (s *ImageScanFinding) SetImagePipelineArn(v string) *ImageScanFinding {
	s.ImagePipelineArn = &v
	return s
}

// SetInspectorScore sets the InspectorScore field's value.
func (s *ImageScanFinding) SetInspectorScore(v float64) *ImageScanFinding {
	s.InspectorScore = &v
	return s
}

// SetInspectorScoreDetails sets the InspectorScoreDetails field's value.
func (s *ImageScanFinding) SetInspectorScoreDetails(v *InspectorScoreDetails) *ImageScanFinding {
	s.InspectorScoreDetails = v
	return s
}

// SetPackageVulnerabilityDetails sets the PackageVulnerabilityDetails field's value.
func (s *ImageScanFinding) SetPackageVulnerabilityDetails(v *PackageVulnerabilityDetails) *ImageScanFinding {
	s.PackageVulnerabilityDetails = v
	return s
}

// SetRemediation sets the Remediation field's value.
func (s *ImageScanFinding) SetRemediation(v *Remediation) *ImageScanFinding {
	s.Remediation = v
	return s
}

// SetSeverity sets the Severity field's value.
func (s *ImageScanFinding) SetSeverity(v string) *ImageScanFinding {
	s.Severity = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *ImageScanFinding) SetTitle(v string) *ImageScanFinding {
	s.Title = &v
	return s
}

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

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *ImageScanFinding) SetUpdatedAt(v time.Time) *ImageScanFinding {
	s.UpdatedAt = &v
	return s
}

// This returns exactly one type of aggregation, based on the filter that Image
// Builder applies in its API action.
type ImageScanFindingAggregation struct {
	_ struct{} `type:"structure"`

	// Returns an object that contains severity counts based on an account ID.
	AccountAggregation *AccountAggregation `locationName:"accountAggregation" type:"structure"`

	// Returns an object that contains severity counts based on the Amazon Resource
	// Name (ARN) for a specific image.
	ImageAggregation *ImageAggregation `locationName:"imageAggregation" type:"structure"`

	// Returns an object that contains severity counts based on an image pipeline
	// ARN.
	ImagePipelineAggregation *ImagePipelineAggregation `locationName:"imagePipelineAggregation" type:"structure"`

	// Returns an object that contains severity counts based on vulnerability ID.
	VulnerabilityIdAggregation *VulnerabilityIdAggregation `locationName:"vulnerabilityIdAggregation" 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 ImageScanFindingAggregation) 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 ImageScanFindingAggregation) GoString() string {
	return s.String()
}

// SetAccountAggregation sets the AccountAggregation field's value.
func (s *ImageScanFindingAggregation) SetAccountAggregation(v *AccountAggregation) *ImageScanFindingAggregation {
	s.AccountAggregation = v
	return s
}

// SetImageAggregation sets the ImageAggregation field's value.
func (s *ImageScanFindingAggregation) SetImageAggregation(v *ImageAggregation) *ImageScanFindingAggregation {
	s.ImageAggregation = v
	return s
}

// SetImagePipelineAggregation sets the ImagePipelineAggregation field's value.
func (s *ImageScanFindingAggregation) SetImagePipelineAggregation(v *ImagePipelineAggregation) *ImageScanFindingAggregation {
	s.ImagePipelineAggregation = v
	return s
}

// SetVulnerabilityIdAggregation sets the VulnerabilityIdAggregation field's value.
func (s *ImageScanFindingAggregation) SetVulnerabilityIdAggregation(v *VulnerabilityIdAggregation) *ImageScanFindingAggregation {
	s.VulnerabilityIdAggregation = v
	return s
}

// A name value pair that Image Builder applies to streamline results from the
// vulnerability scan findings list action.
type ImageScanFindingsFilter struct {
	_ struct{} `type:"structure"`

	// The name of the image scan finding filter. Filter names are case-sensitive.
	Name *string `locationName:"name" type:"string"`

	// The filter values. Filter values are case-sensitive.
	Values []*string `locationName:"values" min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImageScanFindingsFilter) 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 ImageScanFindingsFilter) GoString() string {
	return s.String()
}

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

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

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

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

// Shows the vulnerability scan status for a specific image, and the reason
// for that status.
type ImageScanState struct {
	_ struct{} `type:"structure"`

	// The reason for the scan status for the image.
	Reason *string `locationName:"reason" min:"1" type:"string"`

	// The current state of vulnerability scans for the image.
	Status *string `locationName:"status" type:"string" enum:"ImageScanStatus"`
}

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

// SetReason sets the Reason field's value.
func (s *ImageScanState) SetReason(v string) *ImageScanState {
	s.Reason = &v
	return s
}

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

// Contains settings for Image Builder image resource and container image scans.
type ImageScanningConfiguration struct {
	_ struct{} `type:"structure"`

	// Contains Amazon ECR settings for vulnerability scans.
	EcrConfiguration *EcrConfiguration `locationName:"ecrConfiguration" type:"structure"`

	// A setting that indicates whether Image Builder keeps a snapshot of the vulnerability
	// scans that Amazon Inspector runs against the build instance when you create
	// a new image.
	ImageScanningEnabled *bool `locationName:"imageScanningEnabled" type:"boolean"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImageScanningConfiguration) 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 ImageScanningConfiguration) GoString() string {
	return s.String()
}

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

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

// SetEcrConfiguration sets the EcrConfiguration field's value.
func (s *ImageScanningConfiguration) SetEcrConfiguration(v *EcrConfiguration) *ImageScanningConfiguration {
	s.EcrConfiguration = v
	return s
}

// SetImageScanningEnabled sets the ImageScanningEnabled field's value.
func (s *ImageScanningConfiguration) SetImageScanningEnabled(v bool) *ImageScanningConfiguration {
	s.ImageScanningEnabled = &v
	return s
}

// Image status and the reason for that status.
type ImageState struct {
	_ struct{} `type:"structure"`

	// The reason for the status of the image.
	Reason *string `locationName:"reason" min:"1" type:"string"`

	// The status of the image.
	Status *string `locationName:"status" type:"string" enum:"ImageStatus"`
}

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

// SetReason sets the Reason field's value.
func (s *ImageState) SetReason(v string) *ImageState {
	s.Reason = &v
	return s
}

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

// An image summary.
type ImageSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the image.
	Arn *string `locationName:"arn" type:"string"`

	// Indicates the type of build that created this image. The build can be initiated
	// in the following ways:
	//
	//    * USER_INITIATED – A manual pipeline build request.
	//
	//    * SCHEDULED – A pipeline build initiated by a cron expression in the
	//    Image Builder pipeline, or from EventBridge.
	//
	//    * IMPORT – A VM import created the image to use as the base image for
	//    the recipe.
	BuildType *string `locationName:"buildType" type:"string" enum:"BuildType"`

	// The date on which Image Builder created this image.
	DateCreated *string `locationName:"dateCreated" type:"string"`

	// The time when deprecation occurs for an image resource. This can be a past
	// or future date.
	DeprecationTime *time.Time `locationName:"deprecationTime" type:"timestamp"`

	// The origin of the base image that Image Builder used to build this image.
	ImageSource *string `locationName:"imageSource" type:"string" enum:"ImageSource"`

	// Identifies the last runtime instance of the lifecycle policy to take action
	// on the image.
	LifecycleExecutionId *string `locationName:"lifecycleExecutionId" type:"string"`

	// The name of the image.
	Name *string `locationName:"name" type:"string"`

	// The operating system version of the instances that launch from this image.
	// For example, Amazon Linux 2, Ubuntu 18, or Microsoft Windows Server 2019.
	OsVersion *string `locationName:"osVersion" min:"1" type:"string"`

	// The output resources that Image Builder produced when it created this image.
	OutputResources *OutputResources `locationName:"outputResources" type:"structure"`

	// The owner of the image.
	Owner *string `locationName:"owner" min:"1" type:"string"`

	// The image operating system platform, such as Linux or Windows.
	Platform *string `locationName:"platform" type:"string" enum:"Platform"`

	// The state of the image.
	State *ImageState `locationName:"state" type:"structure"`

	// The tags that apply to this image.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`

	// Specifies whether this image produces an AMI or a container image.
	Type *string `locationName:"type" type:"string" enum:"ImageType"`

	// The version of the image.
	Version *string `locationName:"version" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImageSummary) 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 ImageSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *ImageSummary) SetArn(v string) *ImageSummary {
	s.Arn = &v
	return s
}

// SetBuildType sets the BuildType field's value.
func (s *ImageSummary) SetBuildType(v string) *ImageSummary {
	s.BuildType = &v
	return s
}

// SetDateCreated sets the DateCreated field's value.
func (s *ImageSummary) SetDateCreated(v string) *ImageSummary {
	s.DateCreated = &v
	return s
}

// SetDeprecationTime sets the DeprecationTime field's value.
func (s *ImageSummary) SetDeprecationTime(v time.Time) *ImageSummary {
	s.DeprecationTime = &v
	return s
}

// SetImageSource sets the ImageSource field's value.
func (s *ImageSummary) SetImageSource(v string) *ImageSummary {
	s.ImageSource = &v
	return s
}

// SetLifecycleExecutionId sets the LifecycleExecutionId field's value.
func (s *ImageSummary) SetLifecycleExecutionId(v string) *ImageSummary {
	s.LifecycleExecutionId = &v
	return s
}

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

// SetOsVersion sets the OsVersion field's value.
func (s *ImageSummary) SetOsVersion(v string) *ImageSummary {
	s.OsVersion = &v
	return s
}

// SetOutputResources sets the OutputResources field's value.
func (s *ImageSummary) SetOutputResources(v *OutputResources) *ImageSummary {
	s.OutputResources = v
	return s
}

// SetOwner sets the Owner field's value.
func (s *ImageSummary) SetOwner(v string) *ImageSummary {
	s.Owner = &v
	return s
}

// SetPlatform sets the Platform field's value.
func (s *ImageSummary) SetPlatform(v string) *ImageSummary {
	s.Platform = &v
	return s
}

// SetState sets the State field's value.
func (s *ImageSummary) SetState(v *ImageState) *ImageSummary {
	s.State = v
	return s
}

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

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

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

// Configure image tests for your pipeline build. Tests run after building the
// image, to verify that the AMI or container image is valid before distributing
// it.
type ImageTestsConfiguration struct {
	_ struct{} `type:"structure"`

	// Determines if tests should run after building the image. Image Builder defaults
	// to enable tests to run following the image build, before image distribution.
	ImageTestsEnabled *bool `locationName:"imageTestsEnabled" type:"boolean"`

	// The maximum time in minutes that tests are permitted to run.
	//
	// The timeoutMinutes attribute is not currently active. This value is ignored.
	TimeoutMinutes *int64 `locationName:"timeoutMinutes" min:"60" 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 ImageTestsConfiguration) 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 ImageTestsConfiguration) GoString() string {
	return s.String()
}

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

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

// SetImageTestsEnabled sets the ImageTestsEnabled field's value.
func (s *ImageTestsConfiguration) SetImageTestsEnabled(v bool) *ImageTestsConfiguration {
	s.ImageTestsEnabled = &v
	return s
}

// SetTimeoutMinutes sets the TimeoutMinutes field's value.
func (s *ImageTestsConfiguration) SetTimeoutMinutes(v int64) *ImageTestsConfiguration {
	s.TimeoutMinutes = &v
	return s
}

// The defining characteristics of a specific version of an Image Builder image.
type ImageVersion struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of a specific version of an Image Builder
	// image.
	//
	// Semantic versioning is included in each object's Amazon Resource Name (ARN),
	// at the level that applies to that object as follows:
	//
	// Versionless ARNs and Name ARNs do not include specific values in any of the
	// nodes. The nodes are either left off entirely, or they are specified as wildcards,
	// for example: x.x.x.
	//
	// Version ARNs have only the first three nodes: <major>.<minor>.<patch>
	//
	// Build version ARNs have all four nodes, and point to a specific build for
	// a specific version of an object.
	Arn *string `locationName:"arn" type:"string"`

	// Indicates the type of build that created this image. The build can be initiated
	// in the following ways:
	//
	//    * USER_INITIATED – A manual pipeline build request.
	//
	//    * SCHEDULED – A pipeline build initiated by a cron expression in the
	//    Image Builder pipeline, or from EventBridge.
	//
	//    * IMPORT – A VM import created the image to use as the base image for
	//    the recipe.
	BuildType *string `locationName:"buildType" type:"string" enum:"BuildType"`

	// The date on which this specific version of the Image Builder image was created.
	DateCreated *string `locationName:"dateCreated" type:"string"`

	// The origin of the base image that Image Builder used to build this image.
	ImageSource *string `locationName:"imageSource" type:"string" enum:"ImageSource"`

	// The name of this specific version of an Image Builder image.
	Name *string `locationName:"name" type:"string"`

	// The operating system version of the Amazon EC2 build instance. For example,
	// Amazon Linux 2, Ubuntu 18, or Microsoft Windows Server 2019.
	OsVersion *string `locationName:"osVersion" min:"1" type:"string"`

	// The owner of the image version.
	Owner *string `locationName:"owner" min:"1" type:"string"`

	// The operating system platform of the image version, for example "Windows"
	// or "Linux".
	Platform *string `locationName:"platform" type:"string" enum:"Platform"`

	// Specifies whether this image produces an AMI or a container image.
	Type *string `locationName:"type" type:"string" enum:"ImageType"`

	// Details for a specific version of an Image Builder image. This version follows
	// the semantic version syntax.
	//
	// The semantic version has four nodes: <major>.<minor>.<patch>/<build>. You
	// can assign values for the first three, and can filter on all of them.
	//
	// Assignment: For the first three nodes you can assign any positive integer
	// value, including zero, with an upper limit of 2^30-1, or 1073741823 for each
	// node. Image Builder automatically assigns the build number to the fourth
	// node.
	//
	// Patterns: You can use any numeric pattern that adheres to the assignment
	// requirements for the nodes that you can assign. For example, you might choose
	// a software version pattern, such as 1.0.0, or a date, such as 2021.01.01.
	//
	// Filtering: With semantic versioning, you have the flexibility to use wildcards
	// (x) to specify the most recent versions or nodes when selecting the base
	// image or components for your recipe. When you use a wildcard in any node,
	// all nodes to the right of the first wildcard must also be wildcards.
	Version *string `locationName:"version" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImageVersion) 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 ImageVersion) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *ImageVersion) SetArn(v string) *ImageVersion {
	s.Arn = &v
	return s
}

// SetBuildType sets the BuildType field's value.
func (s *ImageVersion) SetBuildType(v string) *ImageVersion {
	s.BuildType = &v
	return s
}

// SetDateCreated sets the DateCreated field's value.
func (s *ImageVersion) SetDateCreated(v string) *ImageVersion {
	s.DateCreated = &v
	return s
}

// SetImageSource sets the ImageSource field's value.
func (s *ImageVersion) SetImageSource(v string) *ImageVersion {
	s.ImageSource = &v
	return s
}

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

// SetOsVersion sets the OsVersion field's value.
func (s *ImageVersion) SetOsVersion(v string) *ImageVersion {
	s.OsVersion = &v
	return s
}

// SetOwner sets the Owner field's value.
func (s *ImageVersion) SetOwner(v string) *ImageVersion {
	s.Owner = &v
	return s
}

// SetPlatform sets the Platform field's value.
func (s *ImageVersion) SetPlatform(v string) *ImageVersion {
	s.Platform = &v
	return s
}

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

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

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

	// The change description of the component. This description indicates the change
	// that has been made in this version, or what makes this version different
	// from other versions of the component.
	ChangeDescription *string `locationName:"changeDescription" min:"1" type:"string"`

	// Unique, case-sensitive identifier you provide to ensure idempotency of the
	// request. For more information, see Ensuring idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)
	// in the Amazon EC2 API Reference.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The data of the component. Used to specify the data inline. Either data or
	// uri can be used to specify the data within the component.
	Data *string `locationName:"data" min:"1" type:"string"`

	// The description of the component. Describes the contents of the component.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The format of the resource that you want to import as a component.
	//
	// Format is a required field
	Format *string `locationName:"format" type:"string" required:"true" enum:"ComponentFormat"`

	// The ID of the KMS key that should be used to encrypt this component.
	KmsKeyId *string `locationName:"kmsKeyId" min:"1" type:"string"`

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

	// The platform of the component.
	//
	// Platform is a required field
	Platform *string `locationName:"platform" type:"string" required:"true" enum:"Platform"`

	// The semantic version of the component. This version follows the semantic
	// version syntax.
	//
	// The semantic version has four nodes: <major>.<minor>.<patch>/<build>. You
	// can assign values for the first three, and can filter on all of them.
	//
	// Filtering: With semantic versioning, you have the flexibility to use wildcards
	// (x) to specify the most recent versions or nodes when selecting the base
	// image or components for your recipe. When you use a wildcard in any node,
	// all nodes to the right of the first wildcard must also be wildcards.
	//
	// SemanticVersion is a required field
	SemanticVersion *string `locationName:"semanticVersion" type:"string" required:"true"`

	// The tags of the component.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`

	// The type of the component denotes whether the component is used to build
	// the image, or only to test it.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true" enum:"ComponentType"`

	// The uri of the component. Must be an Amazon S3 URL and the requester must
	// have permission to access the Amazon S3 bucket. If you use Amazon S3, you
	// can specify component content up to your service quota. Either data or uri
	// can be used to specify the data within the component.
	Uri *string `locationName:"uri" 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 ImportComponentInput) 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 ImportComponentInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ImportComponentInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ImportComponentInput"}
	if s.ChangeDescription != nil && len(*s.ChangeDescription) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ChangeDescription", 1))
	}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.Data != nil && len(*s.Data) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Data", 1))
	}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.Format == nil {
		invalidParams.Add(request.NewErrParamRequired("Format"))
	}
	if s.KmsKeyId != nil && len(*s.KmsKeyId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("KmsKeyId", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Platform == nil {
		invalidParams.Add(request.NewErrParamRequired("Platform"))
	}
	if s.SemanticVersion == nil {
		invalidParams.Add(request.NewErrParamRequired("SemanticVersion"))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}

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

// SetChangeDescription sets the ChangeDescription field's value.
func (s *ImportComponentInput) SetChangeDescription(v string) *ImportComponentInput {
	s.ChangeDescription = &v
	return s
}

// SetClientToken sets the ClientToken field's value.
func (s *ImportComponentInput) SetClientToken(v string) *ImportComponentInput {
	s.ClientToken = &v
	return s
}

// SetData sets the Data field's value.
func (s *ImportComponentInput) SetData(v string) *ImportComponentInput {
	s.Data = &v
	return s
}

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

// SetFormat sets the Format field's value.
func (s *ImportComponentInput) SetFormat(v string) *ImportComponentInput {
	s.Format = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *ImportComponentInput) SetKmsKeyId(v string) *ImportComponentInput {
	s.KmsKeyId = &v
	return s
}

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

// SetPlatform sets the Platform field's value.
func (s *ImportComponentInput) SetPlatform(v string) *ImportComponentInput {
	s.Platform = &v
	return s
}

// SetSemanticVersion sets the SemanticVersion field's value.
func (s *ImportComponentInput) SetSemanticVersion(v string) *ImportComponentInput {
	s.SemanticVersion = &v
	return s
}

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

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

// SetUri sets the Uri field's value.
func (s *ImportComponentInput) SetUri(v string) *ImportComponentInput {
	s.Uri = &v
	return s
}

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

	// The client token that uniquely identifies the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the imported component.
	ComponentBuildVersionArn *string `locationName:"componentBuildVersionArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 ImportComponentOutput) 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 ImportComponentOutput) GoString() string {
	return s.String()
}

// SetClientToken sets the ClientToken field's value.
func (s *ImportComponentOutput) SetClientToken(v string) *ImportComponentOutput {
	s.ClientToken = &v
	return s
}

// SetComponentBuildVersionArn sets the ComponentBuildVersionArn field's value.
func (s *ImportComponentOutput) SetComponentBuildVersionArn(v string) *ImportComponentOutput {
	s.ComponentBuildVersionArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ImportComponentOutput) SetRequestId(v string) *ImportComponentOutput {
	s.RequestId = &v
	return s
}

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

	// Unique, case-sensitive identifier you provide to ensure idempotency of the
	// request. For more information, see Ensuring idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)
	// in the Amazon EC2 API Reference.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The description for the base image that is created by the import process.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The name of the base image that is created by the import process.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true"`

	// The operating system version for the imported VM.
	OsVersion *string `locationName:"osVersion" min:"1" type:"string"`

	// The operating system platform for the imported VM.
	//
	// Platform is a required field
	Platform *string `locationName:"platform" type:"string" required:"true" enum:"Platform"`

	// The semantic version to attach to the base image that was created during
	// the import process. This version follows the semantic version syntax.
	//
	// The semantic version has four nodes: <major>.<minor>.<patch>/<build>. You
	// can assign values for the first three, and can filter on all of them.
	//
	// Assignment: For the first three nodes you can assign any positive integer
	// value, including zero, with an upper limit of 2^30-1, or 1073741823 for each
	// node. Image Builder automatically assigns the build number to the fourth
	// node.
	//
	// Patterns: You can use any numeric pattern that adheres to the assignment
	// requirements for the nodes that you can assign. For example, you might choose
	// a software version pattern, such as 1.0.0, or a date, such as 2021.01.01.
	//
	// SemanticVersion is a required field
	SemanticVersion *string `locationName:"semanticVersion" type:"string" required:"true"`

	// Tags that are attached to the import resources.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`

	// The importTaskId (API) or ImportTaskId (CLI) from the Amazon EC2 VM import
	// process. Image Builder retrieves information from the import process to pull
	// in the AMI that is created from the VM source as the base image for your
	// recipe.
	//
	// VmImportTaskId is a required field
	VmImportTaskId *string `locationName:"vmImportTaskId" 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 ImportVmImageInput) 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 ImportVmImageInput) GoString() string {
	return s.String()
}

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

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

// SetClientToken sets the ClientToken field's value.
func (s *ImportVmImageInput) SetClientToken(v string) *ImportVmImageInput {
	s.ClientToken = &v
	return s
}

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

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

// SetOsVersion sets the OsVersion field's value.
func (s *ImportVmImageInput) SetOsVersion(v string) *ImportVmImageInput {
	s.OsVersion = &v
	return s
}

// SetPlatform sets the Platform field's value.
func (s *ImportVmImageInput) SetPlatform(v string) *ImportVmImageInput {
	s.Platform = &v
	return s
}

// SetSemanticVersion sets the SemanticVersion field's value.
func (s *ImportVmImageInput) SetSemanticVersion(v string) *ImportVmImageInput {
	s.SemanticVersion = &v
	return s
}

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

// SetVmImportTaskId sets the VmImportTaskId field's value.
func (s *ImportVmImageInput) SetVmImportTaskId(v string) *ImportVmImageInput {
	s.VmImportTaskId = &v
	return s
}

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

	// The client token that uniquely identifies the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the AMI that was created during the VM
	// import process. This AMI is used as the base image for the recipe that imported
	// the VM.
	ImageArn *string `locationName:"imageArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 ImportVmImageOutput) 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 ImportVmImageOutput) GoString() string {
	return s.String()
}

// SetClientToken sets the ClientToken field's value.
func (s *ImportVmImageOutput) SetClientToken(v string) *ImportVmImageOutput {
	s.ClientToken = &v
	return s
}

// SetImageArn sets the ImageArn field's value.
func (s *ImportVmImageOutput) SetImageArn(v string) *ImportVmImageOutput {
	s.ImageArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ImportVmImageOutput) SetRequestId(v string) *ImportVmImageOutput {
	s.RequestId = &v
	return s
}

// Details of the infrastructure configuration.
type InfrastructureConfiguration struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the infrastructure configuration.
	Arn *string `locationName:"arn" type:"string"`

	// The date on which the infrastructure configuration was created.
	DateCreated *string `locationName:"dateCreated" type:"string"`

	// The date on which the infrastructure configuration was last updated.
	DateUpdated *string `locationName:"dateUpdated" type:"string"`

	// The description of the infrastructure configuration.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The instance metadata option settings for the infrastructure configuration.
	InstanceMetadataOptions *InstanceMetadataOptions `locationName:"instanceMetadataOptions" type:"structure"`

	// The instance profile of the infrastructure configuration.
	InstanceProfileName *string `locationName:"instanceProfileName" min:"1" type:"string"`

	// The instance types of the infrastructure configuration.
	InstanceTypes []*string `locationName:"instanceTypes" type:"list"`

	// The Amazon EC2 key pair of the infrastructure configuration.
	KeyPair *string `locationName:"keyPair" min:"1" type:"string"`

	// The logging configuration of the infrastructure configuration.
	Logging *Logging `locationName:"logging" type:"structure"`

	// The name of the infrastructure configuration.
	Name *string `locationName:"name" type:"string"`

	// The tags attached to the resource created by Image Builder.
	ResourceTags map[string]*string `locationName:"resourceTags" min:"1" type:"map"`

	// The security group IDs of the infrastructure configuration.
	SecurityGroupIds []*string `locationName:"securityGroupIds" type:"list"`

	// The Amazon Resource Name (ARN) for the SNS topic to which we send image build
	// event notifications.
	//
	// EC2 Image Builder is unable to send notifications to SNS topics that are
	// encrypted using keys from other accounts. The key that is used to encrypt
	// the SNS topic must reside in the account that the Image Builder service runs
	// under.
	SnsTopicArn *string `locationName:"snsTopicArn" min:"1" type:"string"`

	// The subnet ID of the infrastructure configuration.
	SubnetId *string `locationName:"subnetId" min:"1" type:"string"`

	// The tags of the infrastructure configuration.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`

	// The terminate instance on failure configuration of the infrastructure configuration.
	TerminateInstanceOnFailure *bool `locationName:"terminateInstanceOnFailure" type:"boolean"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InfrastructureConfiguration) 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 InfrastructureConfiguration) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *InfrastructureConfiguration) SetArn(v string) *InfrastructureConfiguration {
	s.Arn = &v
	return s
}

// SetDateCreated sets the DateCreated field's value.
func (s *InfrastructureConfiguration) SetDateCreated(v string) *InfrastructureConfiguration {
	s.DateCreated = &v
	return s
}

// SetDateUpdated sets the DateUpdated field's value.
func (s *InfrastructureConfiguration) SetDateUpdated(v string) *InfrastructureConfiguration {
	s.DateUpdated = &v
	return s
}

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

// SetInstanceMetadataOptions sets the InstanceMetadataOptions field's value.
func (s *InfrastructureConfiguration) SetInstanceMetadataOptions(v *InstanceMetadataOptions) *InfrastructureConfiguration {
	s.InstanceMetadataOptions = v
	return s
}

// SetInstanceProfileName sets the InstanceProfileName field's value.
func (s *InfrastructureConfiguration) SetInstanceProfileName(v string) *InfrastructureConfiguration {
	s.InstanceProfileName = &v
	return s
}

// SetInstanceTypes sets the InstanceTypes field's value.
func (s *InfrastructureConfiguration) SetInstanceTypes(v []*string) *InfrastructureConfiguration {
	s.InstanceTypes = v
	return s
}

// SetKeyPair sets the KeyPair field's value.
func (s *InfrastructureConfiguration) SetKeyPair(v string) *InfrastructureConfiguration {
	s.KeyPair = &v
	return s
}

// SetLogging sets the Logging field's value.
func (s *InfrastructureConfiguration) SetLogging(v *Logging) *InfrastructureConfiguration {
	s.Logging = v
	return s
}

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

// SetResourceTags sets the ResourceTags field's value.
func (s *InfrastructureConfiguration) SetResourceTags(v map[string]*string) *InfrastructureConfiguration {
	s.ResourceTags = v
	return s
}

// SetSecurityGroupIds sets the SecurityGroupIds field's value.
func (s *InfrastructureConfiguration) SetSecurityGroupIds(v []*string) *InfrastructureConfiguration {
	s.SecurityGroupIds = v
	return s
}

// SetSnsTopicArn sets the SnsTopicArn field's value.
func (s *InfrastructureConfiguration) SetSnsTopicArn(v string) *InfrastructureConfiguration {
	s.SnsTopicArn = &v
	return s
}

// SetSubnetId sets the SubnetId field's value.
func (s *InfrastructureConfiguration) SetSubnetId(v string) *InfrastructureConfiguration {
	s.SubnetId = &v
	return s
}

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

// SetTerminateInstanceOnFailure sets the TerminateInstanceOnFailure field's value.
func (s *InfrastructureConfiguration) SetTerminateInstanceOnFailure(v bool) *InfrastructureConfiguration {
	s.TerminateInstanceOnFailure = &v
	return s
}

// The infrastructure used when building Amazon EC2 AMIs.
type InfrastructureConfigurationSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the infrastructure configuration.
	Arn *string `locationName:"arn" type:"string"`

	// The date on which the infrastructure configuration was created.
	DateCreated *string `locationName:"dateCreated" type:"string"`

	// The date on which the infrastructure configuration was last updated.
	DateUpdated *string `locationName:"dateUpdated" type:"string"`

	// The description of the infrastructure configuration.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The instance profile of the infrastructure configuration.
	InstanceProfileName *string `locationName:"instanceProfileName" min:"1" type:"string"`

	// The instance types of the infrastructure configuration.
	InstanceTypes []*string `locationName:"instanceTypes" type:"list"`

	// The name of the infrastructure configuration.
	Name *string `locationName:"name" type:"string"`

	// The tags attached to the image created by Image Builder.
	ResourceTags map[string]*string `locationName:"resourceTags" min:"1" type:"map"`

	// The tags of the infrastructure configuration.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
}

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

// SetArn sets the Arn field's value.
func (s *InfrastructureConfigurationSummary) SetArn(v string) *InfrastructureConfigurationSummary {
	s.Arn = &v
	return s
}

// SetDateCreated sets the DateCreated field's value.
func (s *InfrastructureConfigurationSummary) SetDateCreated(v string) *InfrastructureConfigurationSummary {
	s.DateCreated = &v
	return s
}

// SetDateUpdated sets the DateUpdated field's value.
func (s *InfrastructureConfigurationSummary) SetDateUpdated(v string) *InfrastructureConfigurationSummary {
	s.DateUpdated = &v
	return s
}

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

// SetInstanceProfileName sets the InstanceProfileName field's value.
func (s *InfrastructureConfigurationSummary) SetInstanceProfileName(v string) *InfrastructureConfigurationSummary {
	s.InstanceProfileName = &v
	return s
}

// SetInstanceTypes sets the InstanceTypes field's value.
func (s *InfrastructureConfigurationSummary) SetInstanceTypes(v []*string) *InfrastructureConfigurationSummary {
	s.InstanceTypes = v
	return s
}

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

// SetResourceTags sets the ResourceTags field's value.
func (s *InfrastructureConfigurationSummary) SetResourceTags(v map[string]*string) *InfrastructureConfigurationSummary {
	s.ResourceTags = v
	return s
}

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

// Information about the factors that influenced the score that Amazon Inspector
// assigned for a finding.
type InspectorScoreDetails struct {
	_ struct{} `type:"structure"`

	// An object that contains details about an adjustment that Amazon Inspector
	// made to the CVSS score for the finding.
	AdjustedCvss *CvssScoreDetails `locationName:"adjustedCvss" 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 InspectorScoreDetails) 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 InspectorScoreDetails) GoString() string {
	return s.String()
}

// SetAdjustedCvss sets the AdjustedCvss field's value.
func (s *InspectorScoreDetails) SetAdjustedCvss(v *CvssScoreDetails) *InspectorScoreDetails {
	s.AdjustedCvss = v
	return s
}

// Defines block device mappings for the instance used to configure your image.
type InstanceBlockDeviceMapping struct {
	_ struct{} `type:"structure"`

	// The device to which these mappings apply.
	DeviceName *string `locationName:"deviceName" min:"1" type:"string"`

	// Use to manage Amazon EBS-specific configuration for this mapping.
	Ebs *EbsInstanceBlockDeviceSpecification `locationName:"ebs" type:"structure"`

	// Use to remove a mapping from the base image.
	NoDevice *string `locationName:"noDevice" type:"string"`

	// Use to manage instance ephemeral devices.
	VirtualName *string `locationName:"virtualName" 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 InstanceBlockDeviceMapping) 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 InstanceBlockDeviceMapping) GoString() string {
	return s.String()
}

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

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

// SetDeviceName sets the DeviceName field's value.
func (s *InstanceBlockDeviceMapping) SetDeviceName(v string) *InstanceBlockDeviceMapping {
	s.DeviceName = &v
	return s
}

// SetEbs sets the Ebs field's value.
func (s *InstanceBlockDeviceMapping) SetEbs(v *EbsInstanceBlockDeviceSpecification) *InstanceBlockDeviceMapping {
	s.Ebs = v
	return s
}

// SetNoDevice sets the NoDevice field's value.
func (s *InstanceBlockDeviceMapping) SetNoDevice(v string) *InstanceBlockDeviceMapping {
	s.NoDevice = &v
	return s
}

// SetVirtualName sets the VirtualName field's value.
func (s *InstanceBlockDeviceMapping) SetVirtualName(v string) *InstanceBlockDeviceMapping {
	s.VirtualName = &v
	return s
}

// Defines a custom base AMI and block device mapping configurations of an instance
// used for building and testing container images.
type InstanceConfiguration struct {
	_ struct{} `type:"structure"`

	// Defines the block devices to attach for building an instance from this Image
	// Builder AMI.
	BlockDeviceMappings []*InstanceBlockDeviceMapping `locationName:"blockDeviceMappings" type:"list"`

	// The AMI ID to use as the base image for a container build and test instance.
	// If not specified, Image Builder will use the appropriate ECS-optimized AMI
	// as a base image.
	Image *string `locationName:"image" 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 InstanceConfiguration) 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 InstanceConfiguration) GoString() string {
	return s.String()
}

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

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

// SetBlockDeviceMappings sets the BlockDeviceMappings field's value.
func (s *InstanceConfiguration) SetBlockDeviceMappings(v []*InstanceBlockDeviceMapping) *InstanceConfiguration {
	s.BlockDeviceMappings = v
	return s
}

// SetImage sets the Image field's value.
func (s *InstanceConfiguration) SetImage(v string) *InstanceConfiguration {
	s.Image = &v
	return s
}

// The instance metadata options that apply to the HTTP requests that pipeline
// builds use to launch EC2 build and test instances. For more information about
// instance metadata options, see Configure the instance metadata options (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html)
// in the Amazon EC2 User Guide for Linux instances, or Configure the instance
// metadata options (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/configuring-instance-metadata-options.html)
// in the Amazon EC2 Windows Guide for Windows instances.
type InstanceMetadataOptions struct {
	_ struct{} `type:"structure"`

	// Limit the number of hops that an instance metadata request can traverse to
	// reach its destination. The default is one hop. However, if HTTP tokens are
	// required, container image builds need a minimum of two hops.
	HttpPutResponseHopLimit *int64 `locationName:"httpPutResponseHopLimit" min:"1" type:"integer"`

	// Indicates whether a signed token header is required for instance metadata
	// retrieval requests. The values affect the response as follows:
	//
	//    * required – When you retrieve the IAM role credentials, version 2.0
	//    credentials are returned in all cases.
	//
	//    * optional – You can include a signed token header in your request to
	//    retrieve instance metadata, or you can leave it out. If you include it,
	//    version 2.0 credentials are returned for the IAM role. Otherwise, version
	//    1.0 credentials are returned.
	//
	// The default setting is optional.
	HttpTokens *string `locationName:"httpTokens" 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 InstanceMetadataOptions) 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 InstanceMetadataOptions) GoString() string {
	return s.String()
}

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

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

// SetHttpPutResponseHopLimit sets the HttpPutResponseHopLimit field's value.
func (s *InstanceMetadataOptions) SetHttpPutResponseHopLimit(v int64) *InstanceMetadataOptions {
	s.HttpPutResponseHopLimit = &v
	return s
}

// SetHttpTokens sets the HttpTokens field's value.
func (s *InstanceMetadataOptions) SetHttpTokens(v string) *InstanceMetadataOptions {
	s.HttpTokens = &v
	return s
}

// You have provided an invalid pagination token in your request.
type InvalidPaginationTokenException 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 InvalidPaginationTokenException) 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 InvalidPaginationTokenException) GoString() string {
	return s.String()
}

func newErrorInvalidPaginationTokenException(v protocol.ResponseMetadata) error {
	return &InvalidPaginationTokenException{
		RespMetadata: v,
	}
}

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

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

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

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

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

// You have specified two or more mutually exclusive parameters. Review the
// error message for details.
type InvalidParameterCombinationException 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 InvalidParameterCombinationException) 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 InvalidParameterCombinationException) GoString() string {
	return s.String()
}

func newErrorInvalidParameterCombinationException(v protocol.ResponseMetadata) error {
	return &InvalidParameterCombinationException{
		RespMetadata: v,
	}
}

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

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

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

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

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

// The specified parameter is invalid. Review the available parameters for the
// API request.
type InvalidParameterException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

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

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

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

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

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

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

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

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

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

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

// The value that you provided for the specified parameter is invalid.
type InvalidParameterValueException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

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

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

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

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

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

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

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

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

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

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

// You have requested an action that that the service doesn't support.
type InvalidRequestException 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 InvalidRequestException) 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 InvalidRequestException) GoString() string {
	return s.String()
}

func newErrorInvalidRequestException(v protocol.ResponseMetadata) error {
	return &InvalidRequestException{
		RespMetadata: v,
	}
}

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

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

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

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

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

// Your version number is out of bounds or does not follow the required syntax.
type InvalidVersionNumberException 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 InvalidVersionNumberException) 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 InvalidVersionNumberException) GoString() string {
	return s.String()
}

func newErrorInvalidVersionNumberException(v protocol.ResponseMetadata) error {
	return &InvalidVersionNumberException{
		RespMetadata: v,
	}
}

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

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

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

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

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

// Describes the configuration for a launch permission. The launch permission
// modification request is sent to the Amazon EC2 ModifyImageAttribute (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyImageAttribute.html)
// API on behalf of the user for each Region they have selected to distribute
// the AMI. To make an AMI public, set the launch permission authorized accounts
// to all. See the examples for making an AMI public at Amazon EC2 ModifyImageAttribute
// (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyImageAttribute.html).
type LaunchPermissionConfiguration struct {
	_ struct{} `type:"structure"`

	// The ARN for an Amazon Web Services Organization that you want to share your
	// AMI with. For more information, see What is Organizations? (https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html).
	OrganizationArns []*string `locationName:"organizationArns" min:"1" type:"list"`

	// The ARN for an Organizations organizational unit (OU) that you want to share
	// your AMI with. For more information about key concepts for Organizations,
	// see Organizations terminology and concepts (https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html).
	OrganizationalUnitArns []*string `locationName:"organizationalUnitArns" min:"1" type:"list"`

	// The name of the group.
	UserGroups []*string `locationName:"userGroups" type:"list"`

	// The Amazon Web Services account ID.
	UserIds []*string `locationName:"userIds" min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LaunchPermissionConfiguration) 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 LaunchPermissionConfiguration) GoString() string {
	return s.String()
}

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

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

// SetOrganizationArns sets the OrganizationArns field's value.
func (s *LaunchPermissionConfiguration) SetOrganizationArns(v []*string) *LaunchPermissionConfiguration {
	s.OrganizationArns = v
	return s
}

// SetOrganizationalUnitArns sets the OrganizationalUnitArns field's value.
func (s *LaunchPermissionConfiguration) SetOrganizationalUnitArns(v []*string) *LaunchPermissionConfiguration {
	s.OrganizationalUnitArns = v
	return s
}

// SetUserGroups sets the UserGroups field's value.
func (s *LaunchPermissionConfiguration) SetUserGroups(v []*string) *LaunchPermissionConfiguration {
	s.UserGroups = v
	return s
}

// SetUserIds sets the UserIds field's value.
func (s *LaunchPermissionConfiguration) SetUserIds(v []*string) *LaunchPermissionConfiguration {
	s.UserIds = v
	return s
}

// Identifies an Amazon EC2 launch template to use for a specific account.
type LaunchTemplateConfiguration struct {
	_ struct{} `type:"structure"`

	// The account ID that this configuration applies to.
	AccountId *string `locationName:"accountId" type:"string"`

	// Identifies the Amazon EC2 launch template to use.
	//
	// LaunchTemplateId is a required field
	LaunchTemplateId *string `locationName:"launchTemplateId" type:"string" required:"true"`

	// Set the specified Amazon EC2 launch template as the default launch template
	// for the specified account.
	SetDefaultVersion *bool `locationName:"setDefaultVersion" type:"boolean"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LaunchTemplateConfiguration) 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 LaunchTemplateConfiguration) GoString() string {
	return s.String()
}

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

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

// SetAccountId sets the AccountId field's value.
func (s *LaunchTemplateConfiguration) SetAccountId(v string) *LaunchTemplateConfiguration {
	s.AccountId = &v
	return s
}

// SetLaunchTemplateId sets the LaunchTemplateId field's value.
func (s *LaunchTemplateConfiguration) SetLaunchTemplateId(v string) *LaunchTemplateConfiguration {
	s.LaunchTemplateId = &v
	return s
}

// SetSetDefaultVersion sets the SetDefaultVersion field's value.
func (s *LaunchTemplateConfiguration) SetSetDefaultVersion(v bool) *LaunchTemplateConfiguration {
	s.SetDefaultVersion = &v
	return s
}

// Contains metadata from a runtime instance of a lifecycle policy.
type LifecycleExecution struct {
	_ struct{} `type:"structure"`

	// The timestamp when the lifecycle runtime instance completed.
	EndTime *time.Time `locationName:"endTime" type:"timestamp"`

	// Identifies the lifecycle policy runtime instance.
	LifecycleExecutionId *string `locationName:"lifecycleExecutionId" type:"string"`

	// The Amazon Resource Name (ARN) of the lifecycle policy that ran.
	LifecyclePolicyArn *string `locationName:"lifecyclePolicyArn" type:"string"`

	// Contains information about associated resources that are identified for action
	// by the runtime instance of the lifecycle policy.
	ResourcesImpactedSummary *LifecycleExecutionResourcesImpactedSummary `locationName:"resourcesImpactedSummary" type:"structure"`

	// The timestamp when the lifecycle runtime instance started.
	StartTime *time.Time `locationName:"startTime" type:"timestamp"`

	// Runtime state that reports if the policy action ran successfully, failed,
	// or was skipped.
	State *LifecycleExecutionState `locationName:"state" 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 LifecycleExecution) 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 LifecycleExecution) GoString() string {
	return s.String()
}

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

// SetLifecycleExecutionId sets the LifecycleExecutionId field's value.
func (s *LifecycleExecution) SetLifecycleExecutionId(v string) *LifecycleExecution {
	s.LifecycleExecutionId = &v
	return s
}

// SetLifecyclePolicyArn sets the LifecyclePolicyArn field's value.
func (s *LifecycleExecution) SetLifecyclePolicyArn(v string) *LifecycleExecution {
	s.LifecyclePolicyArn = &v
	return s
}

// SetResourcesImpactedSummary sets the ResourcesImpactedSummary field's value.
func (s *LifecycleExecution) SetResourcesImpactedSummary(v *LifecycleExecutionResourcesImpactedSummary) *LifecycleExecution {
	s.ResourcesImpactedSummary = v
	return s
}

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

// SetState sets the State field's value.
func (s *LifecycleExecution) SetState(v *LifecycleExecutionState) *LifecycleExecution {
	s.State = v
	return s
}

// Contains details for a resource that the runtime instance of the lifecycle
// policy identified for action.
type LifecycleExecutionResource struct {
	_ struct{} `type:"structure"`

	// The account that owns the impacted resource.
	AccountId *string `locationName:"accountId" min:"1" type:"string"`

	// The action to take for the identified resource.
	Action *LifecycleExecutionResourceAction `locationName:"action" type:"structure"`

	// The ending timestamp from the lifecycle action that was applied to the resource.
	EndTime *time.Time `locationName:"endTime" type:"timestamp"`

	// For an impacted container image, this identifies a list of URIs for associated
	// container images distributed to ECR repositories.
	ImageUris []*string `locationName:"imageUris" type:"list"`

	// The Amazon Web Services Region where the lifecycle execution resource is
	// stored.
	Region *string `locationName:"region" min:"1" type:"string"`

	// Identifies the impacted resource. The resource ID depends on the type of
	// resource, as follows.
	//
	//    * Image Builder image resources: Amazon Resource Name (ARN)
	//
	//    * Distributed AMIs: AMI ID
	//
	//    * Container images distributed to an ECR repository: image URI or SHA
	//    Digest
	ResourceId *string `locationName:"resourceId" min:"1" type:"string"`

	// A list of associated resource snapshots for the impacted resource if it’s
	// an AMI.
	Snapshots []*LifecycleExecutionSnapshotResource `locationName:"snapshots" type:"list"`

	// The starting timestamp from the lifecycle action that was applied to the
	// resource.
	StartTime *time.Time `locationName:"startTime" type:"timestamp"`

	// The runtime state for the lifecycle execution.
	State *LifecycleExecutionResourceState `locationName:"state" 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 LifecycleExecutionResource) 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 LifecycleExecutionResource) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *LifecycleExecutionResource) SetAccountId(v string) *LifecycleExecutionResource {
	s.AccountId = &v
	return s
}

// SetAction sets the Action field's value.
func (s *LifecycleExecutionResource) SetAction(v *LifecycleExecutionResourceAction) *LifecycleExecutionResource {
	s.Action = v
	return s
}

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

// SetImageUris sets the ImageUris field's value.
func (s *LifecycleExecutionResource) SetImageUris(v []*string) *LifecycleExecutionResource {
	s.ImageUris = v
	return s
}

// SetRegion sets the Region field's value.
func (s *LifecycleExecutionResource) SetRegion(v string) *LifecycleExecutionResource {
	s.Region = &v
	return s
}

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

// SetSnapshots sets the Snapshots field's value.
func (s *LifecycleExecutionResource) SetSnapshots(v []*LifecycleExecutionSnapshotResource) *LifecycleExecutionResource {
	s.Snapshots = v
	return s
}

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

// SetState sets the State field's value.
func (s *LifecycleExecutionResource) SetState(v *LifecycleExecutionResourceState) *LifecycleExecutionResource {
	s.State = v
	return s
}

// The lifecycle policy action that was identified for the impacted resource.
type LifecycleExecutionResourceAction struct {
	_ struct{} `type:"structure"`

	// The name of the resource that was identified for a lifecycle policy action.
	Name *string `locationName:"name" type:"string" enum:"LifecycleExecutionResourceActionName"`

	// The reason why the lifecycle policy action is taken.
	Reason *string `locationName:"reason" 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 LifecycleExecutionResourceAction) 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 LifecycleExecutionResourceAction) GoString() string {
	return s.String()
}

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

// SetReason sets the Reason field's value.
func (s *LifecycleExecutionResourceAction) SetReason(v string) *LifecycleExecutionResourceAction {
	s.Reason = &v
	return s
}

// Contains the state of an impacted resource that the runtime instance of the
// lifecycle policy identified for action.
type LifecycleExecutionResourceState struct {
	_ struct{} `type:"structure"`

	// Messaging that clarifies the reason for the assigned status.
	Reason *string `locationName:"reason" min:"1" type:"string"`

	// The runtime status of the lifecycle action taken for the impacted resource.
	Status *string `locationName:"status" type:"string" enum:"LifecycleExecutionResourceStatus"`
}

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

// SetReason sets the Reason field's value.
func (s *LifecycleExecutionResourceState) SetReason(v string) *LifecycleExecutionResourceState {
	s.Reason = &v
	return s
}

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

// Contains details for an image resource that was identified for a lifecycle
// action.
type LifecycleExecutionResourcesImpactedSummary struct {
	_ struct{} `type:"structure"`

	// Indicates whether an image resource that was identified for a lifecycle action
	// has associated resources that are also impacted.
	HasImpactedResources *bool `locationName:"hasImpactedResources" type:"boolean"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LifecycleExecutionResourcesImpactedSummary) 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 LifecycleExecutionResourcesImpactedSummary) GoString() string {
	return s.String()
}

// SetHasImpactedResources sets the HasImpactedResources field's value.
func (s *LifecycleExecutionResourcesImpactedSummary) SetHasImpactedResources(v bool) *LifecycleExecutionResourcesImpactedSummary {
	s.HasImpactedResources = &v
	return s
}

// Contains the state of an impacted snapshot resource that the runtime instance
// of the lifecycle policy identified for action.
type LifecycleExecutionSnapshotResource struct {
	_ struct{} `type:"structure"`

	// Identifies the impacted snapshot resource.
	SnapshotId *string `locationName:"snapshotId" min:"1" type:"string"`

	// The runtime status of the lifecycle action taken for the snapshot.
	State *LifecycleExecutionResourceState `locationName:"state" 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 LifecycleExecutionSnapshotResource) 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 LifecycleExecutionSnapshotResource) GoString() string {
	return s.String()
}

// SetSnapshotId sets the SnapshotId field's value.
func (s *LifecycleExecutionSnapshotResource) SetSnapshotId(v string) *LifecycleExecutionSnapshotResource {
	s.SnapshotId = &v
	return s
}

// SetState sets the State field's value.
func (s *LifecycleExecutionSnapshotResource) SetState(v *LifecycleExecutionResourceState) *LifecycleExecutionSnapshotResource {
	s.State = v
	return s
}

// The current state of the runtime instance of the lifecycle policy.
type LifecycleExecutionState struct {
	_ struct{} `type:"structure"`

	// The reason for the current status.
	Reason *string `locationName:"reason" min:"1" type:"string"`

	// The runtime status of the lifecycle execution.
	Status *string `locationName:"status" type:"string" enum:"LifecycleExecutionStatus"`
}

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

// SetReason sets the Reason field's value.
func (s *LifecycleExecutionState) SetReason(v string) *LifecycleExecutionState {
	s.Reason = &v
	return s
}

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

// The configuration details for a lifecycle policy resource.
type LifecyclePolicy struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the lifecycle policy resource.
	Arn *string `locationName:"arn" type:"string"`

	// The timestamp when Image Builder created the lifecycle policy resource.
	DateCreated *time.Time `locationName:"dateCreated" type:"timestamp"`

	// The timestamp for the last time Image Builder ran the lifecycle policy.
	DateLastRun *time.Time `locationName:"dateLastRun" type:"timestamp"`

	// The timestamp when Image Builder updated the lifecycle policy resource.
	DateUpdated *time.Time `locationName:"dateUpdated" type:"timestamp"`

	// Optional description for the lifecycle policy.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The name or Amazon Resource Name (ARN) of the IAM role that Image Builder
	// uses to run the lifecycle policy. This is a custom role that you create.
	ExecutionRole *string `locationName:"executionRole" min:"1" type:"string"`

	// The name of the lifecycle policy.
	Name *string `locationName:"name" type:"string"`

	// The configuration details for a lifecycle policy resource.
	PolicyDetails []*LifecyclePolicyDetail `locationName:"policyDetails" min:"1" type:"list"`

	// Resource selection criteria used to run the lifecycle policy.
	ResourceSelection *LifecyclePolicyResourceSelection `locationName:"resourceSelection" type:"structure"`

	// The type of resources the lifecycle policy targets.
	ResourceType *string `locationName:"resourceType" type:"string" enum:"LifecyclePolicyResourceType"`

	// Indicates whether the lifecycle policy resource is enabled.
	Status *string `locationName:"status" type:"string" enum:"LifecyclePolicyStatus"`

	// To help manage your lifecycle policy resources, you can assign your own metadata
	// to each resource in the form of tags. Each tag consists of a key and an optional
	// value, both of which you define.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
}

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

// SetArn sets the Arn field's value.
func (s *LifecyclePolicy) SetArn(v string) *LifecyclePolicy {
	s.Arn = &v
	return s
}

// SetDateCreated sets the DateCreated field's value.
func (s *LifecyclePolicy) SetDateCreated(v time.Time) *LifecyclePolicy {
	s.DateCreated = &v
	return s
}

// SetDateLastRun sets the DateLastRun field's value.
func (s *LifecyclePolicy) SetDateLastRun(v time.Time) *LifecyclePolicy {
	s.DateLastRun = &v
	return s
}

// SetDateUpdated sets the DateUpdated field's value.
func (s *LifecyclePolicy) SetDateUpdated(v time.Time) *LifecyclePolicy {
	s.DateUpdated = &v
	return s
}

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

// SetExecutionRole sets the ExecutionRole field's value.
func (s *LifecyclePolicy) SetExecutionRole(v string) *LifecyclePolicy {
	s.ExecutionRole = &v
	return s
}

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

// SetPolicyDetails sets the PolicyDetails field's value.
func (s *LifecyclePolicy) SetPolicyDetails(v []*LifecyclePolicyDetail) *LifecyclePolicy {
	s.PolicyDetails = v
	return s
}

// SetResourceSelection sets the ResourceSelection field's value.
func (s *LifecyclePolicy) SetResourceSelection(v *LifecyclePolicyResourceSelection) *LifecyclePolicy {
	s.ResourceSelection = v
	return s
}

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

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

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

// The configuration details for a lifecycle policy resource.
type LifecyclePolicyDetail struct {
	_ struct{} `type:"structure"`

	// Configuration details for the policy action.
	//
	// Action is a required field
	Action *LifecyclePolicyDetailAction `locationName:"action" type:"structure" required:"true"`

	// Additional rules to specify resources that should be exempt from policy actions.
	ExclusionRules *LifecyclePolicyDetailExclusionRules `locationName:"exclusionRules" type:"structure"`

	// Specifies the resources that the lifecycle policy applies to.
	//
	// Filter is a required field
	Filter *LifecyclePolicyDetailFilter `locationName:"filter" type:"structure" 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 LifecyclePolicyDetail) 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 LifecyclePolicyDetail) GoString() string {
	return s.String()
}

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

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

// SetAction sets the Action field's value.
func (s *LifecyclePolicyDetail) SetAction(v *LifecyclePolicyDetailAction) *LifecyclePolicyDetail {
	s.Action = v
	return s
}

// SetExclusionRules sets the ExclusionRules field's value.
func (s *LifecyclePolicyDetail) SetExclusionRules(v *LifecyclePolicyDetailExclusionRules) *LifecyclePolicyDetail {
	s.ExclusionRules = v
	return s
}

// SetFilter sets the Filter field's value.
func (s *LifecyclePolicyDetail) SetFilter(v *LifecyclePolicyDetailFilter) *LifecyclePolicyDetail {
	s.Filter = v
	return s
}

// Contains selection criteria for the lifecycle policy.
type LifecyclePolicyDetailAction struct {
	_ struct{} `type:"structure"`

	// Specifies the resources that the lifecycle policy applies to.
	IncludeResources *LifecyclePolicyDetailActionIncludeResources `locationName:"includeResources" type:"structure"`

	// Specifies the lifecycle action to take.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true" enum:"LifecyclePolicyDetailActionType"`
}

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

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

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

// SetIncludeResources sets the IncludeResources field's value.
func (s *LifecyclePolicyDetailAction) SetIncludeResources(v *LifecyclePolicyDetailActionIncludeResources) *LifecyclePolicyDetailAction {
	s.IncludeResources = v
	return s
}

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

// Specifies how the lifecycle policy should apply actions to selected resources.
type LifecyclePolicyDetailActionIncludeResources struct {
	_ struct{} `type:"structure"`

	// Specifies whether the lifecycle action should apply to distributed AMIs.
	Amis *bool `locationName:"amis" type:"boolean"`

	// Specifies whether the lifecycle action should apply to distributed containers.
	Containers *bool `locationName:"containers" type:"boolean"`

	// Specifies whether the lifecycle action should apply to snapshots associated
	// with distributed AMIs.
	Snapshots *bool `locationName:"snapshots" type:"boolean"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LifecyclePolicyDetailActionIncludeResources) 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 LifecyclePolicyDetailActionIncludeResources) GoString() string {
	return s.String()
}

// SetAmis sets the Amis field's value.
func (s *LifecyclePolicyDetailActionIncludeResources) SetAmis(v bool) *LifecyclePolicyDetailActionIncludeResources {
	s.Amis = &v
	return s
}

// SetContainers sets the Containers field's value.
func (s *LifecyclePolicyDetailActionIncludeResources) SetContainers(v bool) *LifecyclePolicyDetailActionIncludeResources {
	s.Containers = &v
	return s
}

// SetSnapshots sets the Snapshots field's value.
func (s *LifecyclePolicyDetailActionIncludeResources) SetSnapshots(v bool) *LifecyclePolicyDetailActionIncludeResources {
	s.Snapshots = &v
	return s
}

// Specifies resources that lifecycle policy actions should not apply to.
type LifecyclePolicyDetailExclusionRules struct {
	_ struct{} `type:"structure"`

	// Lists configuration values that apply to AMIs that Image Builder should exclude
	// from the lifecycle action.
	Amis *LifecyclePolicyDetailExclusionRulesAmis `locationName:"amis" type:"structure"`

	// Contains a list of tags that Image Builder uses to skip lifecycle actions
	// for Image Builder image resources that have them.
	TagMap map[string]*string `locationName:"tagMap" min:"1" type:"map"`
}

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

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

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

// SetAmis sets the Amis field's value.
func (s *LifecyclePolicyDetailExclusionRules) SetAmis(v *LifecyclePolicyDetailExclusionRulesAmis) *LifecyclePolicyDetailExclusionRules {
	s.Amis = v
	return s
}

// SetTagMap sets the TagMap field's value.
func (s *LifecyclePolicyDetailExclusionRules) SetTagMap(v map[string]*string) *LifecyclePolicyDetailExclusionRules {
	s.TagMap = v
	return s
}

// Defines criteria for AMIs that are excluded from lifecycle actions.
type LifecyclePolicyDetailExclusionRulesAmis struct {
	_ struct{} `type:"structure"`

	// Configures whether public AMIs are excluded from the lifecycle action.
	IsPublic *bool `locationName:"isPublic" type:"boolean"`

	// Specifies configuration details for Image Builder to exclude the most recent
	// resources from lifecycle actions.
	LastLaunched *LifecyclePolicyDetailExclusionRulesAmisLastLaunched `locationName:"lastLaunched" type:"structure"`

	// Configures Amazon Web Services Regions that are excluded from the lifecycle
	// action.
	Regions []*string `locationName:"regions" type:"list"`

	// Specifies Amazon Web Services accounts whose resources are excluded from
	// the lifecycle action.
	SharedAccounts []*string `locationName:"sharedAccounts" min:"1" type:"list"`

	// Lists tags that should be excluded from lifecycle actions for the AMIs that
	// have them.
	TagMap map[string]*string `locationName:"tagMap" min:"1" type:"map"`
}

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

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

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

// SetIsPublic sets the IsPublic field's value.
func (s *LifecyclePolicyDetailExclusionRulesAmis) SetIsPublic(v bool) *LifecyclePolicyDetailExclusionRulesAmis {
	s.IsPublic = &v
	return s
}

// SetLastLaunched sets the LastLaunched field's value.
func (s *LifecyclePolicyDetailExclusionRulesAmis) SetLastLaunched(v *LifecyclePolicyDetailExclusionRulesAmisLastLaunched) *LifecyclePolicyDetailExclusionRulesAmis {
	s.LastLaunched = v
	return s
}

// SetRegions sets the Regions field's value.
func (s *LifecyclePolicyDetailExclusionRulesAmis) SetRegions(v []*string) *LifecyclePolicyDetailExclusionRulesAmis {
	s.Regions = v
	return s
}

// SetSharedAccounts sets the SharedAccounts field's value.
func (s *LifecyclePolicyDetailExclusionRulesAmis) SetSharedAccounts(v []*string) *LifecyclePolicyDetailExclusionRulesAmis {
	s.SharedAccounts = v
	return s
}

// SetTagMap sets the TagMap field's value.
func (s *LifecyclePolicyDetailExclusionRulesAmis) SetTagMap(v map[string]*string) *LifecyclePolicyDetailExclusionRulesAmis {
	s.TagMap = v
	return s
}

// Defines criteria to exclude AMIs from lifecycle actions based on the last
// time they were used to launch an instance.
type LifecyclePolicyDetailExclusionRulesAmisLastLaunched struct {
	_ struct{} `type:"structure"`

	// Defines the unit of time that the lifecycle policy uses to calculate elapsed
	// time since the last instance launched from the AMI. For example: days, weeks,
	// months, or years.
	//
	// Unit is a required field
	Unit *string `locationName:"unit" type:"string" required:"true" enum:"LifecyclePolicyTimeUnit"`

	// The integer number of units for the time period. For example 6 (months).
	//
	// Value is a required field
	Value *int64 `locationName:"value" min:"1" type:"integer" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LifecyclePolicyDetailExclusionRulesAmisLastLaunched) 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 LifecyclePolicyDetailExclusionRulesAmisLastLaunched) GoString() string {
	return s.String()
}

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

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

// SetUnit sets the Unit field's value.
func (s *LifecyclePolicyDetailExclusionRulesAmisLastLaunched) SetUnit(v string) *LifecyclePolicyDetailExclusionRulesAmisLastLaunched {
	s.Unit = &v
	return s
}

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

// Defines filters that the lifecycle policy uses to determine impacted resource.
type LifecyclePolicyDetailFilter struct {
	_ struct{} `type:"structure"`

	// For age-based filters, this is the number of resources to keep on hand after
	// the lifecycle DELETE action is applied. Impacted resources are only deleted
	// if you have more than this number of resources. If you have fewer resources
	// than this number, the impacted resource is not deleted.
	RetainAtLeast *int64 `locationName:"retainAtLeast" min:"1" type:"integer"`

	// Filter resources based on either age or count.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true" enum:"LifecyclePolicyDetailFilterType"`

	// Defines the unit of time that the lifecycle policy uses to determine impacted
	// resources. This is required for age-based rules.
	Unit *string `locationName:"unit" type:"string" enum:"LifecyclePolicyTimeUnit"`

	// The number of units for the time period or for the count. For example, a
	// value of 6 might refer to six months or six AMIs.
	//
	// For count-based filters, this value represents the minimum number of resources
	// to keep on hand. If you have fewer resources than this number, the resource
	// is excluded from lifecycle actions.
	//
	// Value is a required field
	Value *int64 `locationName:"value" min:"1" type:"integer" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LifecyclePolicyDetailFilter) 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 LifecyclePolicyDetailFilter) GoString() string {
	return s.String()
}

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

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

// SetRetainAtLeast sets the RetainAtLeast field's value.
func (s *LifecyclePolicyDetailFilter) SetRetainAtLeast(v int64) *LifecyclePolicyDetailFilter {
	s.RetainAtLeast = &v
	return s
}

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

// SetUnit sets the Unit field's value.
func (s *LifecyclePolicyDetailFilter) SetUnit(v string) *LifecyclePolicyDetailFilter {
	s.Unit = &v
	return s
}

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

// Resource selection criteria for the lifecycle policy.
type LifecyclePolicyResourceSelection struct {
	_ struct{} `type:"structure"`

	// A list of recipes that are used as selection criteria for the output images
	// that the lifecycle policy applies to.
	Recipes []*LifecyclePolicyResourceSelectionRecipe `locationName:"recipes" min:"1" type:"list"`

	// A list of tags that are used as selection criteria for the Image Builder
	// image resources that the lifecycle policy applies to.
	TagMap map[string]*string `locationName:"tagMap" min:"1" type:"map"`
}

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

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

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

// SetRecipes sets the Recipes field's value.
func (s *LifecyclePolicyResourceSelection) SetRecipes(v []*LifecyclePolicyResourceSelectionRecipe) *LifecyclePolicyResourceSelection {
	s.Recipes = v
	return s
}

// SetTagMap sets the TagMap field's value.
func (s *LifecyclePolicyResourceSelection) SetTagMap(v map[string]*string) *LifecyclePolicyResourceSelection {
	s.TagMap = v
	return s
}

// Specifies an Image Builder recipe that the lifecycle policy uses for resource
// selection.
type LifecyclePolicyResourceSelectionRecipe struct {
	_ struct{} `type:"structure"`

	// The name of an Image Builder recipe that the lifecycle policy uses for resource
	// selection.
	//
	// Name is a required field
	Name *string `locationName:"name" type:"string" required:"true"`

	// The version of the Image Builder recipe specified by the name field.
	//
	// SemanticVersion is a required field
	SemanticVersion *string `locationName:"semanticVersion" 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 LifecyclePolicyResourceSelectionRecipe) 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 LifecyclePolicyResourceSelectionRecipe) GoString() string {
	return s.String()
}

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

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

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

// SetSemanticVersion sets the SemanticVersion field's value.
func (s *LifecyclePolicyResourceSelectionRecipe) SetSemanticVersion(v string) *LifecyclePolicyResourceSelectionRecipe {
	s.SemanticVersion = &v
	return s
}

// Contains a summary of lifecycle policy resources.
type LifecyclePolicySummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the lifecycle policy summary resource.
	Arn *string `locationName:"arn" type:"string"`

	// The timestamp when Image Builder created the lifecycle policy resource.
	DateCreated *time.Time `locationName:"dateCreated" type:"timestamp"`

	// The timestamp for the last time Image Builder ran the lifecycle policy.
	DateLastRun *time.Time `locationName:"dateLastRun" type:"timestamp"`

	// The timestamp when Image Builder updated the lifecycle policy resource.
	DateUpdated *time.Time `locationName:"dateUpdated" type:"timestamp"`

	// Optional description for the lifecycle policy.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The name or Amazon Resource Name (ARN) of the IAM role that Image Builder
	// uses to run the lifecycle policy.
	ExecutionRole *string `locationName:"executionRole" min:"1" type:"string"`

	// The name of the lifecycle policy.
	Name *string `locationName:"name" type:"string"`

	// The type of resources the lifecycle policy targets.
	ResourceType *string `locationName:"resourceType" type:"string" enum:"LifecyclePolicyResourceType"`

	// The lifecycle policy resource status.
	Status *string `locationName:"status" type:"string" enum:"LifecyclePolicyStatus"`

	// To help manage your lifecycle policy resources, you can assign your own metadata
	// to each resource in the form of tags. Each tag consists of a key and an optional
	// value, both of which you define.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
}

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

// SetArn sets the Arn field's value.
func (s *LifecyclePolicySummary) SetArn(v string) *LifecyclePolicySummary {
	s.Arn = &v
	return s
}

// SetDateCreated sets the DateCreated field's value.
func (s *LifecyclePolicySummary) SetDateCreated(v time.Time) *LifecyclePolicySummary {
	s.DateCreated = &v
	return s
}

// SetDateLastRun sets the DateLastRun field's value.
func (s *LifecyclePolicySummary) SetDateLastRun(v time.Time) *LifecyclePolicySummary {
	s.DateLastRun = &v
	return s
}

// SetDateUpdated sets the DateUpdated field's value.
func (s *LifecyclePolicySummary) SetDateUpdated(v time.Time) *LifecyclePolicySummary {
	s.DateUpdated = &v
	return s
}

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

// SetExecutionRole sets the ExecutionRole field's value.
func (s *LifecyclePolicySummary) SetExecutionRole(v string) *LifecyclePolicySummary {
	s.ExecutionRole = &v
	return s
}

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

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

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

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

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

	// The component version Amazon Resource Name (ARN) whose versions you want
	// to list.
	//
	// ComponentVersionArn is a required field
	ComponentVersionArn *string `locationName:"componentVersionArn" type:"string" required:"true"`

	// The maximum items to return in a request.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to specify where to start paginating. This is the nextToken from
	// a previously truncated response.
	NextToken *string `locationName:"nextToken" 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 ListComponentBuildVersionsInput) 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 ListComponentBuildVersionsInput) GoString() string {
	return s.String()
}

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

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

// SetComponentVersionArn sets the ComponentVersionArn field's value.
func (s *ListComponentBuildVersionsInput) SetComponentVersionArn(v string) *ListComponentBuildVersionsInput {
	s.ComponentVersionArn = &v
	return s
}

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

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

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

	// The list of component summaries for the specified semantic version.
	ComponentSummaryList []*ComponentSummary `locationName:"componentSummaryList" type:"list"`

	// The next token used for paginated responses. When this field isn't empty,
	// there are additional elements that the service hasn't included in this request.
	// Use this token with the next request to retrieve additional objects.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 ListComponentBuildVersionsOutput) 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 ListComponentBuildVersionsOutput) GoString() string {
	return s.String()
}

// SetComponentSummaryList sets the ComponentSummaryList field's value.
func (s *ListComponentBuildVersionsOutput) SetComponentSummaryList(v []*ComponentSummary) *ListComponentBuildVersionsOutput {
	s.ComponentSummaryList = v
	return s
}

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

// SetRequestId sets the RequestId field's value.
func (s *ListComponentBuildVersionsOutput) SetRequestId(v string) *ListComponentBuildVersionsOutput {
	s.RequestId = &v
	return s
}

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

	// Returns the list of components for the specified name.
	ByName *bool `locationName:"byName" type:"boolean"`

	// Use the following filters to streamline results:
	//
	//    * description
	//
	//    * name
	//
	//    * platform
	//
	//    * supportedOsVersion
	//
	//    * type
	//
	//    * version
	Filters []*Filter `locationName:"filters" min:"1" type:"list"`

	// The maximum items to return in a request.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to specify where to start paginating. This is the nextToken from
	// a previously truncated response.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// Filters results based on the type of owner for the component. By default,
	// this request returns a list of components that your account owns. To see
	// results for other types of owners, you can specify components that Amazon
	// manages, third party components, or components that other accounts have shared
	// with you.
	Owner *string `locationName:"owner" type:"string" enum:"Ownership"`
}

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

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

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

// SetByName sets the ByName field's value.
func (s *ListComponentsInput) SetByName(v bool) *ListComponentsInput {
	s.ByName = &v
	return s
}

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

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

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

// SetOwner sets the Owner field's value.
func (s *ListComponentsInput) SetOwner(v string) *ListComponentsInput {
	s.Owner = &v
	return s
}

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

	// The list of component semantic versions.
	//
	// The semantic version has four nodes: <major>.<minor>.<patch>/<build>. You
	// can assign values for the first three, and can filter on all of them.
	ComponentVersionList []*ComponentVersion `locationName:"componentVersionList" type:"list"`

	// The next token used for paginated responses. When this field isn't empty,
	// there are additional elements that the service hasn't included in this request.
	// Use this token with the next request to retrieve additional objects.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 ListComponentsOutput) 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 ListComponentsOutput) GoString() string {
	return s.String()
}

// SetComponentVersionList sets the ComponentVersionList field's value.
func (s *ListComponentsOutput) SetComponentVersionList(v []*ComponentVersion) *ListComponentsOutput {
	s.ComponentVersionList = v
	return s
}

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

// SetRequestId sets the RequestId field's value.
func (s *ListComponentsOutput) SetRequestId(v string) *ListComponentsOutput {
	s.RequestId = &v
	return s
}

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

	// Use the following filters to streamline results:
	//
	//    * containerType
	//
	//    * name
	//
	//    * parentImage
	//
	//    * platform
	Filters []*Filter `locationName:"filters" min:"1" type:"list"`

	// The maximum items to return in a request.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to specify where to start paginating. This is the nextToken from
	// a previously truncated response.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// Returns container recipes belonging to the specified owner, that have been
	// shared with you. You can omit this field to return container recipes belonging
	// to your account.
	Owner *string `locationName:"owner" type:"string" enum:"Ownership"`
}

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

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

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

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

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

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

// SetOwner sets the Owner field's value.
func (s *ListContainerRecipesInput) SetOwner(v string) *ListContainerRecipesInput {
	s.Owner = &v
	return s
}

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

	// The list of container recipes returned for the request.
	ContainerRecipeSummaryList []*ContainerRecipeSummary `locationName:"containerRecipeSummaryList" type:"list"`

	// The next token used for paginated responses. When this field isn't empty,
	// there are additional elements that the service hasn't included in this request.
	// Use this token with the next request to retrieve additional objects.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 ListContainerRecipesOutput) 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 ListContainerRecipesOutput) GoString() string {
	return s.String()
}

// SetContainerRecipeSummaryList sets the ContainerRecipeSummaryList field's value.
func (s *ListContainerRecipesOutput) SetContainerRecipeSummaryList(v []*ContainerRecipeSummary) *ListContainerRecipesOutput {
	s.ContainerRecipeSummaryList = v
	return s
}

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

// SetRequestId sets the RequestId field's value.
func (s *ListContainerRecipesOutput) SetRequestId(v string) *ListContainerRecipesOutput {
	s.RequestId = &v
	return s
}

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

	// You can filter on name to streamline results.
	Filters []*Filter `locationName:"filters" min:"1" type:"list"`

	// The maximum items to return in a request.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to specify where to start paginating. This is the nextToken from
	// a previously truncated response.
	NextToken *string `locationName:"nextToken" 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 ListDistributionConfigurationsInput) 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 ListDistributionConfigurationsInput) GoString() string {
	return s.String()
}

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

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

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

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

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

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

	// The list of distributions.
	DistributionConfigurationSummaryList []*DistributionConfigurationSummary `locationName:"distributionConfigurationSummaryList" type:"list"`

	// The next token used for paginated responses. When this field isn't empty,
	// there are additional elements that the service hasn't included in this request.
	// Use this token with the next request to retrieve additional objects.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 ListDistributionConfigurationsOutput) 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 ListDistributionConfigurationsOutput) GoString() string {
	return s.String()
}

// SetDistributionConfigurationSummaryList sets the DistributionConfigurationSummaryList field's value.
func (s *ListDistributionConfigurationsOutput) SetDistributionConfigurationSummaryList(v []*DistributionConfigurationSummary) *ListDistributionConfigurationsOutput {
	s.DistributionConfigurationSummaryList = v
	return s
}

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

// SetRequestId sets the RequestId field's value.
func (s *ListDistributionConfigurationsOutput) SetRequestId(v string) *ListDistributionConfigurationsOutput {
	s.RequestId = &v
	return s
}

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

	// Use the following filters to streamline results:
	//
	//    * name
	//
	//    * osVersion
	//
	//    * platform
	//
	//    * type
	//
	//    * version
	Filters []*Filter `locationName:"filters" min:"1" type:"list"`

	// The Amazon Resource Name (ARN) of the image whose build versions you want
	// to retrieve.
	//
	// ImageVersionArn is a required field
	ImageVersionArn *string `locationName:"imageVersionArn" type:"string" required:"true"`

	// The maximum items to return in a request.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to specify where to start paginating. This is the nextToken from
	// a previously truncated response.
	NextToken *string `locationName:"nextToken" 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 ListImageBuildVersionsInput) 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 ListImageBuildVersionsInput) GoString() string {
	return s.String()
}

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

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

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

// SetImageVersionArn sets the ImageVersionArn field's value.
func (s *ListImageBuildVersionsInput) SetImageVersionArn(v string) *ListImageBuildVersionsInput {
	s.ImageVersionArn = &v
	return s
}

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

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

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

	// The list of image build versions.
	ImageSummaryList []*ImageSummary `locationName:"imageSummaryList" type:"list"`

	// The next token used for paginated responses. When this field isn't empty,
	// there are additional elements that the service hasn't included in this request.
	// Use this token with the next request to retrieve additional objects.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 ListImageBuildVersionsOutput) 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 ListImageBuildVersionsOutput) GoString() string {
	return s.String()
}

// SetImageSummaryList sets the ImageSummaryList field's value.
func (s *ListImageBuildVersionsOutput) SetImageSummaryList(v []*ImageSummary) *ListImageBuildVersionsOutput {
	s.ImageSummaryList = v
	return s
}

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

// SetRequestId sets the RequestId field's value.
func (s *ListImageBuildVersionsOutput) SetRequestId(v string) *ListImageBuildVersionsOutput {
	s.RequestId = &v
	return s
}

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

	// Filter results for the ListImagePackages request by the Image Build Version
	// ARN
	//
	// ImageBuildVersionArn is a required field
	ImageBuildVersionArn *string `locationName:"imageBuildVersionArn" type:"string" required:"true"`

	// The maximum items to return in a request.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to specify where to start paginating. This is the nextToken from
	// a previously truncated response.
	NextToken *string `locationName:"nextToken" 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 ListImagePackagesInput) 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 ListImagePackagesInput) GoString() string {
	return s.String()
}

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

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

// SetImageBuildVersionArn sets the ImageBuildVersionArn field's value.
func (s *ListImagePackagesInput) SetImageBuildVersionArn(v string) *ListImagePackagesInput {
	s.ImageBuildVersionArn = &v
	return s
}

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

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

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

	// The list of Image Packages returned in the response.
	ImagePackageList []*ImagePackage `locationName:"imagePackageList" type:"list"`

	// The next token used for paginated responses. When this field isn't empty,
	// there are additional elements that the service hasn't included in this request.
	// Use this token with the next request to retrieve additional objects.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 ListImagePackagesOutput) 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 ListImagePackagesOutput) GoString() string {
	return s.String()
}

// SetImagePackageList sets the ImagePackageList field's value.
func (s *ListImagePackagesOutput) SetImagePackageList(v []*ImagePackage) *ListImagePackagesOutput {
	s.ImagePackageList = v
	return s
}

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

// SetRequestId sets the RequestId field's value.
func (s *ListImagePackagesOutput) SetRequestId(v string) *ListImagePackagesOutput {
	s.RequestId = &v
	return s
}

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

	// Use the following filters to streamline results:
	//
	//    * name
	//
	//    * version
	Filters []*Filter `locationName:"filters" min:"1" type:"list"`

	// The Amazon Resource Name (ARN) of the image pipeline whose images you want
	// to view.
	//
	// ImagePipelineArn is a required field
	ImagePipelineArn *string `locationName:"imagePipelineArn" type:"string" required:"true"`

	// The maximum items to return in a request.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to specify where to start paginating. This is the nextToken from
	// a previously truncated response.
	NextToken *string `locationName:"nextToken" 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 ListImagePipelineImagesInput) 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 ListImagePipelineImagesInput) GoString() string {
	return s.String()
}

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

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

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

// SetImagePipelineArn sets the ImagePipelineArn field's value.
func (s *ListImagePipelineImagesInput) SetImagePipelineArn(v string) *ListImagePipelineImagesInput {
	s.ImagePipelineArn = &v
	return s
}

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

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

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

	// The list of images built by this pipeline.
	ImageSummaryList []*ImageSummary `locationName:"imageSummaryList" type:"list"`

	// The next token used for paginated responses. When this field isn't empty,
	// there are additional elements that the service hasn't included in this request.
	// Use this token with the next request to retrieve additional objects.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 ListImagePipelineImagesOutput) 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 ListImagePipelineImagesOutput) GoString() string {
	return s.String()
}

// SetImageSummaryList sets the ImageSummaryList field's value.
func (s *ListImagePipelineImagesOutput) SetImageSummaryList(v []*ImageSummary) *ListImagePipelineImagesOutput {
	s.ImageSummaryList = v
	return s
}

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

// SetRequestId sets the RequestId field's value.
func (s *ListImagePipelineImagesOutput) SetRequestId(v string) *ListImagePipelineImagesOutput {
	s.RequestId = &v
	return s
}

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

	// Use the following filters to streamline results:
	//
	//    * description
	//
	//    * distributionConfigurationArn
	//
	//    * imageRecipeArn
	//
	//    * infrastructureConfigurationArn
	//
	//    * name
	//
	//    * status
	Filters []*Filter `locationName:"filters" min:"1" type:"list"`

	// The maximum items to return in a request.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to specify where to start paginating. This is the nextToken from
	// a previously truncated response.
	NextToken *string `locationName:"nextToken" 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 ListImagePipelinesInput) 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 ListImagePipelinesInput) GoString() string {
	return s.String()
}

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

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

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

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

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

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

	// The list of image pipelines.
	ImagePipelineList []*ImagePipeline `locationName:"imagePipelineList" type:"list"`

	// The next token used for paginated responses. When this field isn't empty,
	// there are additional elements that the service hasn't included in this request.
	// Use this token with the next request to retrieve additional objects.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 ListImagePipelinesOutput) 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 ListImagePipelinesOutput) GoString() string {
	return s.String()
}

// SetImagePipelineList sets the ImagePipelineList field's value.
func (s *ListImagePipelinesOutput) SetImagePipelineList(v []*ImagePipeline) *ListImagePipelinesOutput {
	s.ImagePipelineList = v
	return s
}

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

// SetRequestId sets the RequestId field's value.
func (s *ListImagePipelinesOutput) SetRequestId(v string) *ListImagePipelinesOutput {
	s.RequestId = &v
	return s
}

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

	// Use the following filters to streamline results:
	//
	//    * name
	//
	//    * parentImage
	//
	//    * platform
	Filters []*Filter `locationName:"filters" min:"1" type:"list"`

	// The maximum items to return in a request.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to specify where to start paginating. This is the nextToken from
	// a previously truncated response.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The owner defines which image recipes you want to list. By default, this
	// request will only show image recipes owned by your account. You can use this
	// field to specify if you want to view image recipes owned by yourself, by
	// Amazon, or those image recipes that have been shared with you by other customers.
	Owner *string `locationName:"owner" type:"string" enum:"Ownership"`
}

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

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

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

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

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

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

// SetOwner sets the Owner field's value.
func (s *ListImageRecipesInput) SetOwner(v string) *ListImageRecipesInput {
	s.Owner = &v
	return s
}

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

	// The list of image pipelines.
	ImageRecipeSummaryList []*ImageRecipeSummary `locationName:"imageRecipeSummaryList" type:"list"`

	// The next token used for paginated responses. When this field isn't empty,
	// there are additional elements that the service hasn't included in this request.
	// Use this token with the next request to retrieve additional objects.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 ListImageRecipesOutput) 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 ListImageRecipesOutput) GoString() string {
	return s.String()
}

// SetImageRecipeSummaryList sets the ImageRecipeSummaryList field's value.
func (s *ListImageRecipesOutput) SetImageRecipeSummaryList(v []*ImageRecipeSummary) *ListImageRecipesOutput {
	s.ImageRecipeSummaryList = v
	return s
}

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

// SetRequestId sets the RequestId field's value.
func (s *ListImageRecipesOutput) SetRequestId(v string) *ListImageRecipesOutput {
	s.RequestId = &v
	return s
}

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

	// A filter name and value pair that is used to return a more specific list
	// of results from a list operation. Filters can be used to match a set of resources
	// by specific criteria, such as tags, attributes, or IDs.
	Filter *Filter `locationName:"filter" type:"structure"`

	// A token to specify where to start paginating. This is the nextToken from
	// a previously truncated response.
	NextToken *string `locationName:"nextToken" 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 ListImageScanFindingAggregationsInput) 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 ListImageScanFindingAggregationsInput) GoString() string {
	return s.String()
}

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

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

// SetFilter sets the Filter field's value.
func (s *ListImageScanFindingAggregationsInput) SetFilter(v *Filter) *ListImageScanFindingAggregationsInput {
	s.Filter = v
	return s
}

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

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

	// The aggregation type specifies what type of key is used to group the image
	// scan findings. Image Builder returns results based on the request filter.
	// If you didn't specify a filter in the request, the type defaults to accountId.
	//
	// Aggregation types
	//
	//    * accountId
	//
	//    * imageBuildVersionArn
	//
	//    * imagePipelineArn
	//
	//    * vulnerabilityId
	//
	// Each aggregation includes counts by severity level for medium severity and
	// higher level findings, plus a total for all of the findings for each key
	// value.
	AggregationType *string `locationName:"aggregationType" min:"1" type:"string"`

	// The next token used for paginated responses. When this field isn't empty,
	// there are additional elements that the service hasn't included in this request.
	// Use this token with the next request to retrieve additional objects.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" min:"1" type:"string"`

	// An array of image scan finding aggregations that match the filter criteria.
	Responses []*ImageScanFindingAggregation `locationName:"responses" 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 ListImageScanFindingAggregationsOutput) 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 ListImageScanFindingAggregationsOutput) GoString() string {
	return s.String()
}

// SetAggregationType sets the AggregationType field's value.
func (s *ListImageScanFindingAggregationsOutput) SetAggregationType(v string) *ListImageScanFindingAggregationsOutput {
	s.AggregationType = &v
	return s
}

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

// SetRequestId sets the RequestId field's value.
func (s *ListImageScanFindingAggregationsOutput) SetRequestId(v string) *ListImageScanFindingAggregationsOutput {
	s.RequestId = &v
	return s
}

// SetResponses sets the Responses field's value.
func (s *ListImageScanFindingAggregationsOutput) SetResponses(v []*ImageScanFindingAggregation) *ListImageScanFindingAggregationsOutput {
	s.Responses = v
	return s
}

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

	// An array of name value pairs that you can use to filter your results. You
	// can use the following filters to streamline results:
	//
	//    * imageBuildVersionArn
	//
	//    * imagePipelineArn
	//
	//    * vulnerabilityId
	//
	//    * severity
	//
	// If you don't request a filter, then all findings in your account are listed.
	Filters []*ImageScanFindingsFilter `locationName:"filters" min:"1" type:"list"`

	// The maximum items to return in a request.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to specify where to start paginating. This is the nextToken from
	// a previously truncated response.
	NextToken *string `locationName:"nextToken" 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 ListImageScanFindingsInput) 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 ListImageScanFindingsInput) GoString() string {
	return s.String()
}

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

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

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

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

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

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

	// The image scan findings for your account that meet your request filter criteria.
	Findings []*ImageScanFinding `locationName:"findings" type:"list"`

	// The next token used for paginated responses. When this field isn't empty,
	// there are additional elements that the service hasn't included in this request.
	// Use this token with the next request to retrieve additional objects.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 ListImageScanFindingsOutput) 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 ListImageScanFindingsOutput) GoString() string {
	return s.String()
}

// SetFindings sets the Findings field's value.
func (s *ListImageScanFindingsOutput) SetFindings(v []*ImageScanFinding) *ListImageScanFindingsOutput {
	s.Findings = v
	return s
}

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

// SetRequestId sets the RequestId field's value.
func (s *ListImageScanFindingsOutput) SetRequestId(v string) *ListImageScanFindingsOutput {
	s.RequestId = &v
	return s
}

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

	// Requests a list of images with a specific recipe name.
	ByName *bool `locationName:"byName" type:"boolean"`

	// Use the following filters to streamline results:
	//
	//    * name
	//
	//    * osVersion
	//
	//    * platform
	//
	//    * type
	//
	//    * version
	Filters []*Filter `locationName:"filters" min:"1" type:"list"`

	// Includes deprecated images in the response list.
	IncludeDeprecated *bool `locationName:"includeDeprecated" type:"boolean"`

	// The maximum items to return in a request.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to specify where to start paginating. This is the nextToken from
	// a previously truncated response.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The owner defines which images you want to list. By default, this request
	// will only show images owned by your account. You can use this field to specify
	// if you want to view images owned by yourself, by Amazon, or those images
	// that have been shared with you by other customers.
	Owner *string `locationName:"owner" type:"string" enum:"Ownership"`
}

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

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

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

// SetByName sets the ByName field's value.
func (s *ListImagesInput) SetByName(v bool) *ListImagesInput {
	s.ByName = &v
	return s
}

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

// SetIncludeDeprecated sets the IncludeDeprecated field's value.
func (s *ListImagesInput) SetIncludeDeprecated(v bool) *ListImagesInput {
	s.IncludeDeprecated = &v
	return s
}

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

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

// SetOwner sets the Owner field's value.
func (s *ListImagesInput) SetOwner(v string) *ListImagesInput {
	s.Owner = &v
	return s
}

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

	// The list of image semantic versions.
	//
	// The semantic version has four nodes: <major>.<minor>.<patch>/<build>. You
	// can assign values for the first three, and can filter on all of them.
	//
	// Filtering: With semantic versioning, you have the flexibility to use wildcards
	// (x) to specify the most recent versions or nodes when selecting the base
	// image or components for your recipe. When you use a wildcard in any node,
	// all nodes to the right of the first wildcard must also be wildcards.
	ImageVersionList []*ImageVersion `locationName:"imageVersionList" type:"list"`

	// The next token used for paginated responses. When this field isn't empty,
	// there are additional elements that the service hasn't included in this request.
	// Use this token with the next request to retrieve additional objects.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 ListImagesOutput) 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 ListImagesOutput) GoString() string {
	return s.String()
}

// SetImageVersionList sets the ImageVersionList field's value.
func (s *ListImagesOutput) SetImageVersionList(v []*ImageVersion) *ListImagesOutput {
	s.ImageVersionList = v
	return s
}

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

// SetRequestId sets the RequestId field's value.
func (s *ListImagesOutput) SetRequestId(v string) *ListImagesOutput {
	s.RequestId = &v
	return s
}

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

	// You can filter on name to streamline results.
	Filters []*Filter `locationName:"filters" min:"1" type:"list"`

	// The maximum items to return in a request.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to specify where to start paginating. This is the nextToken from
	// a previously truncated response.
	NextToken *string `locationName:"nextToken" 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 ListInfrastructureConfigurationsInput) 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 ListInfrastructureConfigurationsInput) GoString() string {
	return s.String()
}

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

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

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

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

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

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

	// The list of infrastructure configurations.
	InfrastructureConfigurationSummaryList []*InfrastructureConfigurationSummary `locationName:"infrastructureConfigurationSummaryList" type:"list"`

	// The next token used for paginated responses. When this field isn't empty,
	// there are additional elements that the service hasn't included in this request.
	// Use this token with the next request to retrieve additional objects.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 ListInfrastructureConfigurationsOutput) 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 ListInfrastructureConfigurationsOutput) GoString() string {
	return s.String()
}

// SetInfrastructureConfigurationSummaryList sets the InfrastructureConfigurationSummaryList field's value.
func (s *ListInfrastructureConfigurationsOutput) SetInfrastructureConfigurationSummaryList(v []*InfrastructureConfigurationSummary) *ListInfrastructureConfigurationsOutput {
	s.InfrastructureConfigurationSummaryList = v
	return s
}

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

// SetRequestId sets the RequestId field's value.
func (s *ListInfrastructureConfigurationsOutput) SetRequestId(v string) *ListInfrastructureConfigurationsOutput {
	s.RequestId = &v
	return s
}

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

	// Use the unique identifier for a runtime instance of the lifecycle policy
	// to get runtime details.
	//
	// LifecycleExecutionId is a required field
	LifecycleExecutionId *string `locationName:"lifecycleExecutionId" type:"string" required:"true"`

	// The maximum items to return in a request.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to specify where to start paginating. This is the nextToken from
	// a previously truncated response.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// You can leave this empty to get a list of Image Builder resources that were
	// identified for lifecycle actions.
	//
	// To get a list of associated resources that are impacted for an individual
	// resource (the parent), specify its Amazon Resource Name (ARN). Associated
	// resources are produced from your image and distributed when you run a build,
	// such as AMIs or container images stored in ECR repositories.
	ParentResourceId *string `locationName:"parentResourceId" 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 ListLifecycleExecutionResourcesInput) 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 ListLifecycleExecutionResourcesInput) GoString() string {
	return s.String()
}

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

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

// SetLifecycleExecutionId sets the LifecycleExecutionId field's value.
func (s *ListLifecycleExecutionResourcesInput) SetLifecycleExecutionId(v string) *ListLifecycleExecutionResourcesInput {
	s.LifecycleExecutionId = &v
	return s
}

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

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

// SetParentResourceId sets the ParentResourceId field's value.
func (s *ListLifecycleExecutionResourcesInput) SetParentResourceId(v string) *ListLifecycleExecutionResourcesInput {
	s.ParentResourceId = &v
	return s
}

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

	// Runtime details for the specified runtime instance of the lifecycle policy.
	LifecycleExecutionId *string `locationName:"lifecycleExecutionId" type:"string"`

	// The current state of the lifecycle runtime instance.
	LifecycleExecutionState *LifecycleExecutionState `locationName:"lifecycleExecutionState" type:"structure"`

	// The next token used for paginated responses. When this field isn't empty,
	// there are additional elements that the service hasn't included in this request.
	// Use this token with the next request to retrieve additional objects.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// A list of resources that were identified for lifecycle actions.
	Resources []*LifecycleExecutionResource `locationName:"resources" 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 ListLifecycleExecutionResourcesOutput) 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 ListLifecycleExecutionResourcesOutput) GoString() string {
	return s.String()
}

// SetLifecycleExecutionId sets the LifecycleExecutionId field's value.
func (s *ListLifecycleExecutionResourcesOutput) SetLifecycleExecutionId(v string) *ListLifecycleExecutionResourcesOutput {
	s.LifecycleExecutionId = &v
	return s
}

// SetLifecycleExecutionState sets the LifecycleExecutionState field's value.
func (s *ListLifecycleExecutionResourcesOutput) SetLifecycleExecutionState(v *LifecycleExecutionState) *ListLifecycleExecutionResourcesOutput {
	s.LifecycleExecutionState = v
	return s
}

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

// SetResources sets the Resources field's value.
func (s *ListLifecycleExecutionResourcesOutput) SetResources(v []*LifecycleExecutionResource) *ListLifecycleExecutionResourcesOutput {
	s.Resources = v
	return s
}

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

	// The maximum items to return in a request.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to specify where to start paginating. This is the nextToken from
	// a previously truncated response.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the resource for which to get a list of
	// lifecycle runtime instances.
	//
	// ResourceArn is a required field
	ResourceArn *string `locationName:"resourceArn" 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 ListLifecycleExecutionsInput) 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 ListLifecycleExecutionsInput) GoString() string {
	return s.String()
}

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

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

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

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

// SetResourceArn sets the ResourceArn field's value.
func (s *ListLifecycleExecutionsInput) SetResourceArn(v string) *ListLifecycleExecutionsInput {
	s.ResourceArn = &v
	return s
}

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

	// A list of lifecycle runtime instances for the specified resource.
	LifecycleExecutions []*LifecycleExecution `locationName:"lifecycleExecutions" type:"list"`

	// The next token used for paginated responses. When this field isn't empty,
	// there are additional elements that the service hasn't included in this request.
	// Use this token with the next request to retrieve additional objects.
	NextToken *string `locationName:"nextToken" 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 ListLifecycleExecutionsOutput) 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 ListLifecycleExecutionsOutput) GoString() string {
	return s.String()
}

// SetLifecycleExecutions sets the LifecycleExecutions field's value.
func (s *ListLifecycleExecutionsOutput) SetLifecycleExecutions(v []*LifecycleExecution) *ListLifecycleExecutionsOutput {
	s.LifecycleExecutions = v
	return s
}

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

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

	// Streamline results based on one of the following values: Name, Status.
	Filters []*Filter `locationName:"filters" min:"1" type:"list"`

	// The maximum items to return in a request.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to specify where to start paginating. This is the nextToken from
	// a previously truncated response.
	NextToken *string `locationName:"nextToken" 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 ListLifecyclePoliciesInput) 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 ListLifecyclePoliciesInput) GoString() string {
	return s.String()
}

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

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

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

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

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

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

	// A list of lifecycle policies in your Amazon Web Services account that meet
	// the criteria specified in the request.
	LifecyclePolicySummaryList []*LifecyclePolicySummary `locationName:"lifecyclePolicySummaryList" type:"list"`

	// The next token used for paginated responses. When this field isn't empty,
	// there are additional elements that the service hasn't included in this request.
	// Use this token with the next request to retrieve additional objects.
	NextToken *string `locationName:"nextToken" 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 ListLifecyclePoliciesOutput) 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 ListLifecyclePoliciesOutput) GoString() string {
	return s.String()
}

// SetLifecyclePolicySummaryList sets the LifecyclePolicySummaryList field's value.
func (s *ListLifecyclePoliciesOutput) SetLifecyclePolicySummaryList(v []*LifecyclePolicySummary) *ListLifecyclePoliciesOutput {
	s.LifecyclePolicySummaryList = v
	return s
}

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

type ListTagsForResourceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the resource whose tags you want to retrieve.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" 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 ListTagsForResourceInput) 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 ListTagsForResourceInput) GoString() string {
	return s.String()
}

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

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

// SetResourceArn sets the ResourceArn field's value.
func (s *ListTagsForResourceInput) SetResourceArn(v string) *ListTagsForResourceInput {
	s.ResourceArn = &v
	return s
}

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

	// The tags for the specified resource.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
}

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

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

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

	// The maximum items to return in a request.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to specify where to start paginating. This is the nextToken from
	// a previously truncated response.
	NextToken *string `locationName:"nextToken" 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 ListWaitingWorkflowStepsInput) 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 ListWaitingWorkflowStepsInput) GoString() string {
	return s.String()
}

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

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

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

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

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

	// The next token used for paginated responses. When this field isn't empty,
	// there are additional elements that the service hasn't included in this request.
	// Use this token with the next request to retrieve additional objects.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// An array of the workflow steps that are waiting for action in your Amazon
	// Web Services account.
	Steps []*WorkflowStepExecution `locationName:"steps" 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 ListWaitingWorkflowStepsOutput) 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 ListWaitingWorkflowStepsOutput) GoString() string {
	return s.String()
}

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

// SetSteps sets the Steps field's value.
func (s *ListWaitingWorkflowStepsOutput) SetSteps(v []*WorkflowStepExecution) *ListWaitingWorkflowStepsOutput {
	s.Steps = v
	return s
}

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

	// The maximum items to return in a request.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to specify where to start paginating. This is the nextToken from
	// a previously truncated response.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the workflow resource for which to get
	// a list of build versions.
	//
	// WorkflowVersionArn is a required field
	WorkflowVersionArn *string `locationName:"workflowVersionArn" 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 ListWorkflowBuildVersionsInput) 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 ListWorkflowBuildVersionsInput) GoString() string {
	return s.String()
}

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

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

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

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

// SetWorkflowVersionArn sets the WorkflowVersionArn field's value.
func (s *ListWorkflowBuildVersionsInput) SetWorkflowVersionArn(v string) *ListWorkflowBuildVersionsInput {
	s.WorkflowVersionArn = &v
	return s
}

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

	// The next token used for paginated responses. When this field isn't empty,
	// there are additional elements that the service hasn't included in this request.
	// Use this token with the next request to retrieve additional objects.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// A list that contains metadata for the workflow builds that have run for the
	// workflow resource specified in the request.
	WorkflowSummaryList []*WorkflowSummary `locationName:"workflowSummaryList" 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 ListWorkflowBuildVersionsOutput) 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 ListWorkflowBuildVersionsOutput) GoString() string {
	return s.String()
}

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

// SetWorkflowSummaryList sets the WorkflowSummaryList field's value.
func (s *ListWorkflowBuildVersionsOutput) SetWorkflowSummaryList(v []*WorkflowSummary) *ListWorkflowBuildVersionsOutput {
	s.WorkflowSummaryList = v
	return s
}

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

	// List all workflow runtime instances for the specified image build version
	// resource ARN.
	//
	// ImageBuildVersionArn is a required field
	ImageBuildVersionArn *string `locationName:"imageBuildVersionArn" type:"string" required:"true"`

	// The maximum items to return in a request.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to specify where to start paginating. This is the nextToken from
	// a previously truncated response.
	NextToken *string `locationName:"nextToken" 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 ListWorkflowExecutionsInput) 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 ListWorkflowExecutionsInput) GoString() string {
	return s.String()
}

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

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

// SetImageBuildVersionArn sets the ImageBuildVersionArn field's value.
func (s *ListWorkflowExecutionsInput) SetImageBuildVersionArn(v string) *ListWorkflowExecutionsInput {
	s.ImageBuildVersionArn = &v
	return s
}

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

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

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

	// The resource ARN of the image build version for which you requested a list
	// of workflow runtime details.
	ImageBuildVersionArn *string `locationName:"imageBuildVersionArn" type:"string"`

	// The output message from the list action, if applicable.
	Message *string `locationName:"message" type:"string"`

	// The next token used for paginated responses. When this field isn't empty,
	// there are additional elements that the service hasn't included in this request.
	// Use this token with the next request to retrieve additional objects.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" min:"1" type:"string"`

	// Contains an array of runtime details that represents each time a workflow
	// ran for the requested image build version.
	WorkflowExecutions []*WorkflowExecutionMetadata `locationName:"workflowExecutions" 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 ListWorkflowExecutionsOutput) 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 ListWorkflowExecutionsOutput) GoString() string {
	return s.String()
}

// SetImageBuildVersionArn sets the ImageBuildVersionArn field's value.
func (s *ListWorkflowExecutionsOutput) SetImageBuildVersionArn(v string) *ListWorkflowExecutionsOutput {
	s.ImageBuildVersionArn = &v
	return s
}

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

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

// SetRequestId sets the RequestId field's value.
func (s *ListWorkflowExecutionsOutput) SetRequestId(v string) *ListWorkflowExecutionsOutput {
	s.RequestId = &v
	return s
}

// SetWorkflowExecutions sets the WorkflowExecutions field's value.
func (s *ListWorkflowExecutionsOutput) SetWorkflowExecutions(v []*WorkflowExecutionMetadata) *ListWorkflowExecutionsOutput {
	s.WorkflowExecutions = v
	return s
}

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

	// The maximum items to return in a request.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to specify where to start paginating. This is the nextToken from
	// a previously truncated response.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The unique identifier that Image Builder assigned to keep track of runtime
	// details when it ran the workflow.
	//
	// WorkflowExecutionId is a required field
	WorkflowExecutionId *string `locationName:"workflowExecutionId" 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 ListWorkflowStepExecutionsInput) 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 ListWorkflowStepExecutionsInput) GoString() string {
	return s.String()
}

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

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

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

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

// SetWorkflowExecutionId sets the WorkflowExecutionId field's value.
func (s *ListWorkflowStepExecutionsInput) SetWorkflowExecutionId(v string) *ListWorkflowStepExecutionsInput {
	s.WorkflowExecutionId = &v
	return s
}

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

	// The image build version resource ARN that's associated with the specified
	// runtime instance of the workflow.
	ImageBuildVersionArn *string `locationName:"imageBuildVersionArn" type:"string"`

	// The output message from the list action, if applicable.
	Message *string `locationName:"message" type:"string"`

	// The next token used for paginated responses. When this field isn't empty,
	// there are additional elements that the service hasn't included in this request.
	// Use this token with the next request to retrieve additional objects.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" min:"1" type:"string"`

	// Contains an array of runtime details that represents each step in this runtime
	// instance of the workflow.
	Steps []*WorkflowStepMetadata `locationName:"steps" type:"list"`

	// The build version ARN for the Image Builder workflow resource that defines
	// the steps for this runtime instance of the workflow.
	WorkflowBuildVersionArn *string `locationName:"workflowBuildVersionArn" type:"string"`

	// The unique identifier that Image Builder assigned to keep track of runtime
	// details when it ran the workflow.
	WorkflowExecutionId *string `locationName:"workflowExecutionId" 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 ListWorkflowStepExecutionsOutput) 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 ListWorkflowStepExecutionsOutput) GoString() string {
	return s.String()
}

// SetImageBuildVersionArn sets the ImageBuildVersionArn field's value.
func (s *ListWorkflowStepExecutionsOutput) SetImageBuildVersionArn(v string) *ListWorkflowStepExecutionsOutput {
	s.ImageBuildVersionArn = &v
	return s
}

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

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

// SetRequestId sets the RequestId field's value.
func (s *ListWorkflowStepExecutionsOutput) SetRequestId(v string) *ListWorkflowStepExecutionsOutput {
	s.RequestId = &v
	return s
}

// SetSteps sets the Steps field's value.
func (s *ListWorkflowStepExecutionsOutput) SetSteps(v []*WorkflowStepMetadata) *ListWorkflowStepExecutionsOutput {
	s.Steps = v
	return s
}

// SetWorkflowBuildVersionArn sets the WorkflowBuildVersionArn field's value.
func (s *ListWorkflowStepExecutionsOutput) SetWorkflowBuildVersionArn(v string) *ListWorkflowStepExecutionsOutput {
	s.WorkflowBuildVersionArn = &v
	return s
}

// SetWorkflowExecutionId sets the WorkflowExecutionId field's value.
func (s *ListWorkflowStepExecutionsOutput) SetWorkflowExecutionId(v string) *ListWorkflowStepExecutionsOutput {
	s.WorkflowExecutionId = &v
	return s
}

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

	// Specify all or part of the workflow name to streamline results.
	ByName *bool `locationName:"byName" type:"boolean"`

	// Used to streamline search results.
	Filters []*Filter `locationName:"filters" min:"1" type:"list"`

	// The maximum items to return in a request.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to specify where to start paginating. This is the nextToken from
	// a previously truncated response.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// Used to get a list of workflow build version filtered by the identity of
	// the creator.
	Owner *string `locationName:"owner" type:"string" enum:"Ownership"`
}

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

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

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

// SetByName sets the ByName field's value.
func (s *ListWorkflowsInput) SetByName(v bool) *ListWorkflowsInput {
	s.ByName = &v
	return s
}

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

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

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

// SetOwner sets the Owner field's value.
func (s *ListWorkflowsInput) SetOwner(v string) *ListWorkflowsInput {
	s.Owner = &v
	return s
}

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

	// The next token used for paginated responses. When this field isn't empty,
	// there are additional elements that the service hasn't included in this request.
	// Use this token with the next request to retrieve additional objects.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// A list of workflow build versions that match the request criteria.
	WorkflowVersionList []*WorkflowVersion `locationName:"workflowVersionList" 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 ListWorkflowsOutput) 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 ListWorkflowsOutput) GoString() string {
	return s.String()
}

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

// SetWorkflowVersionList sets the WorkflowVersionList field's value.
func (s *ListWorkflowsOutput) SetWorkflowVersionList(v []*WorkflowVersion) *ListWorkflowsOutput {
	s.WorkflowVersionList = v
	return s
}

// Logging configuration defines where Image Builder uploads your logs.
type Logging struct {
	_ struct{} `type:"structure"`

	// The Amazon S3 logging configuration.
	S3Logs *S3Logs `locationName:"s3Logs" 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 Logging) 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 Logging) GoString() string {
	return s.String()
}

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

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

// SetS3Logs sets the S3Logs field's value.
func (s *Logging) SetS3Logs(v *S3Logs) *Logging {
	s.S3Logs = v
	return s
}

// The resources produced by this image.
type OutputResources struct {
	_ struct{} `type:"structure"`

	// The Amazon EC2 AMIs created by this image.
	Amis []*Ami `locationName:"amis" type:"list"`

	// Container images that the pipeline has generated and stored in the output
	// repository.
	Containers []*Container `locationName:"containers" 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 OutputResources) 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 OutputResources) GoString() string {
	return s.String()
}

// SetAmis sets the Amis field's value.
func (s *OutputResources) SetAmis(v []*Ami) *OutputResources {
	s.Amis = v
	return s
}

// SetContainers sets the Containers field's value.
func (s *OutputResources) SetContainers(v []*Container) *OutputResources {
	s.Containers = v
	return s
}

// Information about package vulnerability findings.
type PackageVulnerabilityDetails struct {
	_ struct{} `type:"structure"`

	// CVSS scores for one or more vulnerabilities that Amazon Inspector identified
	// for a package.
	Cvss []*CvssScore `locationName:"cvss" type:"list"`

	// Links to web pages that contain details about the vulnerabilities that Amazon
	// Inspector identified for the package.
	ReferenceUrls []*string `locationName:"referenceUrls" min:"1" type:"list"`

	// Vulnerabilities that are often related to the findings for the package.
	RelatedVulnerabilities []*string `locationName:"relatedVulnerabilities" type:"list"`

	// The source of the vulnerability information.
	Source *string `locationName:"source" min:"1" type:"string"`

	// A link to the source of the vulnerability information.
	SourceUrl *string `locationName:"sourceUrl" min:"1" type:"string"`

	// The date and time when this vulnerability was first added to the vendor's
	// database.
	VendorCreatedAt *time.Time `locationName:"vendorCreatedAt" type:"timestamp"`

	// The severity that the vendor assigned to this vulnerability type.
	VendorSeverity *string `locationName:"vendorSeverity" min:"1" type:"string"`

	// The date and time when the vendor last updated this vulnerability in their
	// database.
	VendorUpdatedAt *time.Time `locationName:"vendorUpdatedAt" type:"timestamp"`

	// A unique identifier for this vulnerability.
	//
	// VulnerabilityId is a required field
	VulnerabilityId *string `locationName:"vulnerabilityId" type:"string" required:"true"`

	// The packages that this vulnerability impacts.
	VulnerablePackages []*VulnerablePackage `locationName:"vulnerablePackages" 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 PackageVulnerabilityDetails) 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 PackageVulnerabilityDetails) GoString() string {
	return s.String()
}

// SetCvss sets the Cvss field's value.
func (s *PackageVulnerabilityDetails) SetCvss(v []*CvssScore) *PackageVulnerabilityDetails {
	s.Cvss = v
	return s
}

// SetReferenceUrls sets the ReferenceUrls field's value.
func (s *PackageVulnerabilityDetails) SetReferenceUrls(v []*string) *PackageVulnerabilityDetails {
	s.ReferenceUrls = v
	return s
}

// SetRelatedVulnerabilities sets the RelatedVulnerabilities field's value.
func (s *PackageVulnerabilityDetails) SetRelatedVulnerabilities(v []*string) *PackageVulnerabilityDetails {
	s.RelatedVulnerabilities = v
	return s
}

// SetSource sets the Source field's value.
func (s *PackageVulnerabilityDetails) SetSource(v string) *PackageVulnerabilityDetails {
	s.Source = &v
	return s
}

// SetSourceUrl sets the SourceUrl field's value.
func (s *PackageVulnerabilityDetails) SetSourceUrl(v string) *PackageVulnerabilityDetails {
	s.SourceUrl = &v
	return s
}

// SetVendorCreatedAt sets the VendorCreatedAt field's value.
func (s *PackageVulnerabilityDetails) SetVendorCreatedAt(v time.Time) *PackageVulnerabilityDetails {
	s.VendorCreatedAt = &v
	return s
}

// SetVendorSeverity sets the VendorSeverity field's value.
func (s *PackageVulnerabilityDetails) SetVendorSeverity(v string) *PackageVulnerabilityDetails {
	s.VendorSeverity = &v
	return s
}

// SetVendorUpdatedAt sets the VendorUpdatedAt field's value.
func (s *PackageVulnerabilityDetails) SetVendorUpdatedAt(v time.Time) *PackageVulnerabilityDetails {
	s.VendorUpdatedAt = &v
	return s
}

// SetVulnerabilityId sets the VulnerabilityId field's value.
func (s *PackageVulnerabilityDetails) SetVulnerabilityId(v string) *PackageVulnerabilityDetails {
	s.VulnerabilityId = &v
	return s
}

// SetVulnerablePackages sets the VulnerablePackages field's value.
func (s *PackageVulnerabilityDetails) SetVulnerablePackages(v []*VulnerablePackage) *PackageVulnerabilityDetails {
	s.VulnerablePackages = v
	return s
}

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

	// The Amazon Resource Name (ARN) of the component that this policy should be
	// applied to.
	//
	// ComponentArn is a required field
	ComponentArn *string `locationName:"componentArn" type:"string" required:"true"`

	// The policy to apply.
	//
	// Policy is a required field
	Policy *string `locationName:"policy" 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 PutComponentPolicyInput) 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 PutComponentPolicyInput) GoString() string {
	return s.String()
}

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

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

// SetComponentArn sets the ComponentArn field's value.
func (s *PutComponentPolicyInput) SetComponentArn(v string) *PutComponentPolicyInput {
	s.ComponentArn = &v
	return s
}

// SetPolicy sets the Policy field's value.
func (s *PutComponentPolicyInput) SetPolicy(v string) *PutComponentPolicyInput {
	s.Policy = &v
	return s
}

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

	// The Amazon Resource Name (ARN) of the component that this policy was applied
	// to.
	ComponentArn *string `locationName:"componentArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 PutComponentPolicyOutput) 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 PutComponentPolicyOutput) GoString() string {
	return s.String()
}

// SetComponentArn sets the ComponentArn field's value.
func (s *PutComponentPolicyOutput) SetComponentArn(v string) *PutComponentPolicyOutput {
	s.ComponentArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *PutComponentPolicyOutput) SetRequestId(v string) *PutComponentPolicyOutput {
	s.RequestId = &v
	return s
}

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

	// The Amazon Resource Name (ARN) of the container recipe that this policy should
	// be applied to.
	//
	// ContainerRecipeArn is a required field
	ContainerRecipeArn *string `locationName:"containerRecipeArn" type:"string" required:"true"`

	// The policy to apply to the container recipe.
	//
	// Policy is a required field
	Policy *string `locationName:"policy" 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 PutContainerRecipePolicyInput) 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 PutContainerRecipePolicyInput) GoString() string {
	return s.String()
}

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

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContainerRecipeArn sets the ContainerRecipeArn field's value.
func (s *PutContainerRecipePolicyInput) SetContainerRecipeArn(v string) *PutContainerRecipePolicyInput {
	s.ContainerRecipeArn = &v
	return s
}

// SetPolicy sets the Policy field's value.
func (s *PutContainerRecipePolicyInput) SetPolicy(v string) *PutContainerRecipePolicyInput {
	s.Policy = &v
	return s
}

type PutContainerRecipePolicyOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the container recipe that this policy was
	// applied to.
	ContainerRecipeArn *string `locationName:"containerRecipeArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 PutContainerRecipePolicyOutput) 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 PutContainerRecipePolicyOutput) GoString() string {
	return s.String()
}

// SetContainerRecipeArn sets the ContainerRecipeArn field's value.
func (s *PutContainerRecipePolicyOutput) SetContainerRecipeArn(v string) *PutContainerRecipePolicyOutput {
	s.ContainerRecipeArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *PutContainerRecipePolicyOutput) SetRequestId(v string) *PutContainerRecipePolicyOutput {
	s.RequestId = &v
	return s
}

type PutImagePolicyInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the image that this policy should be applied
	// to.
	//
	// ImageArn is a required field
	ImageArn *string `locationName:"imageArn" type:"string" required:"true"`

	// The policy to apply.
	//
	// Policy is a required field
	Policy *string `locationName:"policy" 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 PutImagePolicyInput) 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 PutImagePolicyInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PutImagePolicyInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PutImagePolicyInput"}
	if s.ImageArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ImageArn"))
	}
	if s.Policy == nil {
		invalidParams.Add(request.NewErrParamRequired("Policy"))
	}
	if s.Policy != nil && len(*s.Policy) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Policy", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetImageArn sets the ImageArn field's value.
func (s *PutImagePolicyInput) SetImageArn(v string) *PutImagePolicyInput {
	s.ImageArn = &v
	return s
}

// SetPolicy sets the Policy field's value.
func (s *PutImagePolicyInput) SetPolicy(v string) *PutImagePolicyInput {
	s.Policy = &v
	return s
}

type PutImagePolicyOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the image that this policy was applied
	// to.
	ImageArn *string `locationName:"imageArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 PutImagePolicyOutput) 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 PutImagePolicyOutput) GoString() string {
	return s.String()
}

// SetImageArn sets the ImageArn field's value.
func (s *PutImagePolicyOutput) SetImageArn(v string) *PutImagePolicyOutput {
	s.ImageArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *PutImagePolicyOutput) SetRequestId(v string) *PutImagePolicyOutput {
	s.RequestId = &v
	return s
}

type PutImageRecipePolicyInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the image recipe that this policy should
	// be applied to.
	//
	// ImageRecipeArn is a required field
	ImageRecipeArn *string `locationName:"imageRecipeArn" type:"string" required:"true"`

	// The policy to apply.
	//
	// Policy is a required field
	Policy *string `locationName:"policy" 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 PutImageRecipePolicyInput) 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 PutImageRecipePolicyInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PutImageRecipePolicyInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PutImageRecipePolicyInput"}
	if s.ImageRecipeArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ImageRecipeArn"))
	}
	if s.Policy == nil {
		invalidParams.Add(request.NewErrParamRequired("Policy"))
	}
	if s.Policy != nil && len(*s.Policy) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Policy", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetImageRecipeArn sets the ImageRecipeArn field's value.
func (s *PutImageRecipePolicyInput) SetImageRecipeArn(v string) *PutImageRecipePolicyInput {
	s.ImageRecipeArn = &v
	return s
}

// SetPolicy sets the Policy field's value.
func (s *PutImageRecipePolicyInput) SetPolicy(v string) *PutImageRecipePolicyInput {
	s.Policy = &v
	return s
}

type PutImageRecipePolicyOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the image recipe that this policy was applied
	// to.
	ImageRecipeArn *string `locationName:"imageRecipeArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 PutImageRecipePolicyOutput) 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 PutImageRecipePolicyOutput) GoString() string {
	return s.String()
}

// SetImageRecipeArn sets the ImageRecipeArn field's value.
func (s *PutImageRecipePolicyOutput) SetImageRecipeArn(v string) *PutImageRecipePolicyOutput {
	s.ImageRecipeArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *PutImageRecipePolicyOutput) SetRequestId(v string) *PutImageRecipePolicyOutput {
	s.RequestId = &v
	return s
}

// Information about how to remediate a finding.
type Remediation struct {
	_ struct{} `type:"structure"`

	// An object that contains information about the recommended course of action
	// to remediate the finding.
	Recommendation *RemediationRecommendation `locationName:"recommendation" 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 Remediation) 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 Remediation) GoString() string {
	return s.String()
}

// SetRecommendation sets the Recommendation field's value.
func (s *Remediation) SetRecommendation(v *RemediationRecommendation) *Remediation {
	s.Recommendation = v
	return s
}

// Details about the recommended course of action to remediate the finding.
type RemediationRecommendation struct {
	_ struct{} `type:"structure"`

	// The recommended course of action to remediate the finding.
	Text *string `locationName:"text" min:"1" type:"string"`

	// A link to more information about the recommended remediation for this vulnerability.
	Url *string `locationName:"url" 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 RemediationRecommendation) 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 RemediationRecommendation) GoString() string {
	return s.String()
}

// SetText sets the Text field's value.
func (s *RemediationRecommendation) SetText(v string) *RemediationRecommendation {
	s.Text = &v
	return s
}

// SetUrl sets the Url field's value.
func (s *RemediationRecommendation) SetUrl(v string) *RemediationRecommendation {
	s.Url = &v
	return s
}

// The resource that you are trying to create already exists.
type ResourceAlreadyExistsException 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 ResourceAlreadyExistsException) 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 ResourceAlreadyExistsException) GoString() string {
	return s.String()
}

func newErrorResourceAlreadyExistsException(v protocol.ResponseMetadata) error {
	return &ResourceAlreadyExistsException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ResourceAlreadyExistsException) Code() string {
	return "ResourceAlreadyExistsException"
}

// Message returns the exception's message.
func (s *ResourceAlreadyExistsException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ResourceAlreadyExistsException) OrigErr() error {
	return nil
}

func (s *ResourceAlreadyExistsException) 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 *ResourceAlreadyExistsException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ResourceAlreadyExistsException) RequestID() string {
	return s.RespMetadata.RequestID
}

// You have attempted to mutate or delete a resource with a dependency that
// prohibits this action. See the error message for more details.
type ResourceDependencyException 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 ResourceDependencyException) 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 ResourceDependencyException) GoString() string {
	return s.String()
}

func newErrorResourceDependencyException(v protocol.ResponseMetadata) error {
	return &ResourceDependencyException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ResourceDependencyException) Code() string {
	return "ResourceDependencyException"
}

// Message returns the exception's message.
func (s *ResourceDependencyException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ResourceDependencyException) OrigErr() error {
	return nil
}

func (s *ResourceDependencyException) 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 *ResourceDependencyException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ResourceDependencyException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The resource that you are trying to operate on is currently in use. Review
// the message details and retry later.
type ResourceInUseException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceInUseException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceInUseException) GoString() string {
	return s.String()
}

func newErrorResourceInUseException(v protocol.ResponseMetadata) error {
	return &ResourceInUseException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ResourceInUseException) Code() string {
	return "ResourceInUseException"
}

// Message returns the exception's message.
func (s *ResourceInUseException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ResourceInUseException) OrigErr() error {
	return nil
}

func (s *ResourceInUseException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ResourceInUseException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ResourceInUseException) RequestID() string {
	return s.RespMetadata.RequestID
}

// At least one of the resources referenced by your request does not exist.
type ResourceNotFoundException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceNotFoundException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceNotFoundException) GoString() string {
	return s.String()
}

func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {
	return &ResourceNotFoundException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ResourceNotFoundException) Code() string {
	return "ResourceNotFoundException"
}

// Message returns the exception's message.
func (s *ResourceNotFoundException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ResourceNotFoundException) OrigErr() error {
	return nil
}

func (s *ResourceNotFoundException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ResourceNotFoundException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ResourceNotFoundException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The current state of an impacted resource.
type ResourceState struct {
	_ struct{} `type:"structure"`

	// Shows the current lifecycle policy action that was applied to an impacted
	// resource.
	Status *string `locationName:"status" type:"string" enum:"ResourceStatus"`
}

// 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 ResourceState) 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 ResourceState) GoString() string {
	return s.String()
}

// SetStatus sets the Status field's value.
func (s *ResourceState) SetStatus(v string) *ResourceState {
	s.Status = &v
	return s
}

// Additional rules to specify resources that should be exempt from ad-hoc lifecycle
// actions.
type ResourceStateUpdateExclusionRules struct {
	_ struct{} `type:"structure"`

	// Defines criteria for AMIs that are excluded from lifecycle actions.
	Amis *LifecyclePolicyDetailExclusionRulesAmis `locationName:"amis" 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 ResourceStateUpdateExclusionRules) 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 ResourceStateUpdateExclusionRules) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ResourceStateUpdateExclusionRules) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ResourceStateUpdateExclusionRules"}
	if s.Amis != nil {
		if err := s.Amis.Validate(); err != nil {
			invalidParams.AddNested("Amis", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAmis sets the Amis field's value.
func (s *ResourceStateUpdateExclusionRules) SetAmis(v *LifecyclePolicyDetailExclusionRulesAmis) *ResourceStateUpdateExclusionRules {
	s.Amis = v
	return s
}

// Specifies if the lifecycle policy should apply actions to selected resources.
type ResourceStateUpdateIncludeResources struct {
	_ struct{} `type:"structure"`

	// Specifies whether the lifecycle action should apply to distributed AMIs
	Amis *bool `locationName:"amis" type:"boolean"`

	// Specifies whether the lifecycle action should apply to distributed containers.
	Containers *bool `locationName:"containers" type:"boolean"`

	// Specifies whether the lifecycle action should apply to snapshots associated
	// with distributed AMIs.
	Snapshots *bool `locationName:"snapshots" type:"boolean"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceStateUpdateIncludeResources) 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 ResourceStateUpdateIncludeResources) GoString() string {
	return s.String()
}

// SetAmis sets the Amis field's value.
func (s *ResourceStateUpdateIncludeResources) SetAmis(v bool) *ResourceStateUpdateIncludeResources {
	s.Amis = &v
	return s
}

// SetContainers sets the Containers field's value.
func (s *ResourceStateUpdateIncludeResources) SetContainers(v bool) *ResourceStateUpdateIncludeResources {
	s.Containers = &v
	return s
}

// SetSnapshots sets the Snapshots field's value.
func (s *ResourceStateUpdateIncludeResources) SetSnapshots(v bool) *ResourceStateUpdateIncludeResources {
	s.Snapshots = &v
	return s
}

// Properties that configure export from your build instance to a compatible
// file format for your VM.
type S3ExportConfiguration struct {
	_ struct{} `type:"structure"`

	// Export the updated image to one of the following supported disk image formats:
	//
	//    * Virtual Hard Disk (VHD) – Compatible with Citrix Xen and Microsoft
	//    Hyper-V virtualization products.
	//
	//    * Stream-optimized ESX Virtual Machine Disk (VMDK) – Compatible with
	//    VMware ESX and VMware vSphere versions 4, 5, and 6.
	//
	//    * Raw – Raw format.
	//
	// DiskImageFormat is a required field
	DiskImageFormat *string `locationName:"diskImageFormat" type:"string" required:"true" enum:"DiskImageFormat"`

	// The name of the role that grants VM Import/Export permission to export images
	// to your S3 bucket.
	//
	// RoleName is a required field
	RoleName *string `locationName:"roleName" min:"1" type:"string" required:"true"`

	// The S3 bucket in which to store the output disk images for your VM.
	//
	// S3Bucket is a required field
	S3Bucket *string `locationName:"s3Bucket" min:"1" type:"string" required:"true"`

	// The Amazon S3 path for the bucket where the output disk images for your VM
	// are stored.
	S3Prefix *string `locationName:"s3Prefix" 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 S3ExportConfiguration) 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 S3ExportConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3ExportConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3ExportConfiguration"}
	if s.DiskImageFormat == nil {
		invalidParams.Add(request.NewErrParamRequired("DiskImageFormat"))
	}
	if s.RoleName == nil {
		invalidParams.Add(request.NewErrParamRequired("RoleName"))
	}
	if s.RoleName != nil && len(*s.RoleName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RoleName", 1))
	}
	if s.S3Bucket == nil {
		invalidParams.Add(request.NewErrParamRequired("S3Bucket"))
	}
	if s.S3Bucket != nil && len(*s.S3Bucket) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("S3Bucket", 1))
	}
	if s.S3Prefix != nil && len(*s.S3Prefix) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("S3Prefix", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDiskImageFormat sets the DiskImageFormat field's value.
func (s *S3ExportConfiguration) SetDiskImageFormat(v string) *S3ExportConfiguration {
	s.DiskImageFormat = &v
	return s
}

// SetRoleName sets the RoleName field's value.
func (s *S3ExportConfiguration) SetRoleName(v string) *S3ExportConfiguration {
	s.RoleName = &v
	return s
}

// SetS3Bucket sets the S3Bucket field's value.
func (s *S3ExportConfiguration) SetS3Bucket(v string) *S3ExportConfiguration {
	s.S3Bucket = &v
	return s
}

// SetS3Prefix sets the S3Prefix field's value.
func (s *S3ExportConfiguration) SetS3Prefix(v string) *S3ExportConfiguration {
	s.S3Prefix = &v
	return s
}

// Amazon S3 logging configuration.
type S3Logs struct {
	_ struct{} `type:"structure"`

	// The S3 bucket in which to store the logs.
	S3BucketName *string `locationName:"s3BucketName" min:"1" type:"string"`

	// The Amazon S3 path to the bucket where the logs are stored.
	S3KeyPrefix *string `locationName:"s3KeyPrefix" 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 S3Logs) 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 S3Logs) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3Logs) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3Logs"}
	if s.S3BucketName != nil && len(*s.S3BucketName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("S3BucketName", 1))
	}
	if s.S3KeyPrefix != nil && len(*s.S3KeyPrefix) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("S3KeyPrefix", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetS3BucketName sets the S3BucketName field's value.
func (s *S3Logs) SetS3BucketName(v string) *S3Logs {
	s.S3BucketName = &v
	return s
}

// SetS3KeyPrefix sets the S3KeyPrefix field's value.
func (s *S3Logs) SetS3KeyPrefix(v string) *S3Logs {
	s.S3KeyPrefix = &v
	return s
}

// A schedule configures when and how often a pipeline will automatically create
// a new image.
type Schedule struct {
	_ struct{} `type:"structure"`

	// The condition configures when the pipeline should trigger a new image build.
	// When the pipelineExecutionStartCondition is set to EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE,
	// and you use semantic version filters on the base image or components in your
	// image recipe, EC2 Image Builder will build a new image only when there are
	// new versions of the image or components in your recipe that match the semantic
	// version filter. When it is set to EXPRESSION_MATCH_ONLY, it will build a
	// new image every time the CRON expression matches the current time. For semantic
	// version syntax, see CreateComponent (https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateComponent.html)
	// in the EC2 Image Builder API Reference.
	PipelineExecutionStartCondition *string `locationName:"pipelineExecutionStartCondition" type:"string" enum:"PipelineExecutionStartCondition"`

	// The cron expression determines how often EC2 Image Builder evaluates your
	// pipelineExecutionStartCondition.
	//
	// For information on how to format a cron expression in Image Builder, see
	// Use cron expressions in EC2 Image Builder (https://docs.aws.amazon.com/imagebuilder/latest/userguide/image-builder-cron.html).
	ScheduleExpression *string `locationName:"scheduleExpression" min:"1" type:"string"`

	// The timezone that applies to the scheduling expression. For example, "Etc/UTC",
	// "America/Los_Angeles" in the IANA timezone format (https://www.joda.org/joda-time/timezones.html).
	// If not specified this defaults to UTC.
	Timezone *string `locationName:"timezone" min:"3" 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 Schedule) 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 Schedule) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Schedule) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Schedule"}
	if s.ScheduleExpression != nil && len(*s.ScheduleExpression) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ScheduleExpression", 1))
	}
	if s.Timezone != nil && len(*s.Timezone) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("Timezone", 3))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPipelineExecutionStartCondition sets the PipelineExecutionStartCondition field's value.
func (s *Schedule) SetPipelineExecutionStartCondition(v string) *Schedule {
	s.PipelineExecutionStartCondition = &v
	return s
}

// SetScheduleExpression sets the ScheduleExpression field's value.
func (s *Schedule) SetScheduleExpression(v string) *Schedule {
	s.ScheduleExpression = &v
	return s
}

// SetTimezone sets the Timezone field's value.
func (s *Schedule) SetTimezone(v string) *Schedule {
	s.Timezone = &v
	return s
}

type SendWorkflowStepActionInput struct {
	_ struct{} `type:"structure"`

	// The action for the image creation process to take while a workflow WaitForAction
	// step waits for an asynchronous action to complete.
	//
	// Action is a required field
	Action *string `locationName:"action" type:"string" required:"true" enum:"WorkflowStepActionType"`

	// Unique, case-sensitive identifier you provide to ensure idempotency of the
	// request. For more information, see Ensuring idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)
	// in the Amazon EC2 API Reference.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The Amazon Resource Name (ARN) of the image build version to send action
	// for.
	//
	// ImageBuildVersionArn is a required field
	ImageBuildVersionArn *string `locationName:"imageBuildVersionArn" type:"string" required:"true"`

	// The reason why this action is sent.
	Reason *string `locationName:"reason" min:"1" type:"string"`

	// Uniquely identifies the workflow step that sent the step action.
	//
	// StepExecutionId is a required field
	StepExecutionId *string `locationName:"stepExecutionId" 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 SendWorkflowStepActionInput) 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 SendWorkflowStepActionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SendWorkflowStepActionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SendWorkflowStepActionInput"}
	if s.Action == nil {
		invalidParams.Add(request.NewErrParamRequired("Action"))
	}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.ImageBuildVersionArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ImageBuildVersionArn"))
	}
	if s.Reason != nil && len(*s.Reason) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Reason", 1))
	}
	if s.StepExecutionId == nil {
		invalidParams.Add(request.NewErrParamRequired("StepExecutionId"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAction sets the Action field's value.
func (s *SendWorkflowStepActionInput) SetAction(v string) *SendWorkflowStepActionInput {
	s.Action = &v
	return s
}

// SetClientToken sets the ClientToken field's value.
func (s *SendWorkflowStepActionInput) SetClientToken(v string) *SendWorkflowStepActionInput {
	s.ClientToken = &v
	return s
}

// SetImageBuildVersionArn sets the ImageBuildVersionArn field's value.
func (s *SendWorkflowStepActionInput) SetImageBuildVersionArn(v string) *SendWorkflowStepActionInput {
	s.ImageBuildVersionArn = &v
	return s
}

// SetReason sets the Reason field's value.
func (s *SendWorkflowStepActionInput) SetReason(v string) *SendWorkflowStepActionInput {
	s.Reason = &v
	return s
}

// SetStepExecutionId sets the StepExecutionId field's value.
func (s *SendWorkflowStepActionInput) SetStepExecutionId(v string) *SendWorkflowStepActionInput {
	s.StepExecutionId = &v
	return s
}

type SendWorkflowStepActionOutput struct {
	_ struct{} `type:"structure"`

	// The client token that uniquely identifies the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the image build version that received the
	// action request.
	ImageBuildVersionArn *string `locationName:"imageBuildVersionArn" type:"string"`

	// The workflow step that sent the step action.
	StepExecutionId *string `locationName:"stepExecutionId" 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 SendWorkflowStepActionOutput) 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 SendWorkflowStepActionOutput) GoString() string {
	return s.String()
}

// SetClientToken sets the ClientToken field's value.
func (s *SendWorkflowStepActionOutput) SetClientToken(v string) *SendWorkflowStepActionOutput {
	s.ClientToken = &v
	return s
}

// SetImageBuildVersionArn sets the ImageBuildVersionArn field's value.
func (s *SendWorkflowStepActionOutput) SetImageBuildVersionArn(v string) *SendWorkflowStepActionOutput {
	s.ImageBuildVersionArn = &v
	return s
}

// SetStepExecutionId sets the StepExecutionId field's value.
func (s *SendWorkflowStepActionOutput) SetStepExecutionId(v string) *SendWorkflowStepActionOutput {
	s.StepExecutionId = &v
	return s
}

// This exception is thrown when the service encounters an unrecoverable exception.
type ServiceException 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 ServiceException) 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 ServiceException) GoString() string {
	return s.String()
}

func newErrorServiceException(v protocol.ResponseMetadata) error {
	return &ServiceException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ServiceException) Code() string {
	return "ServiceException"
}

// Message returns the exception's message.
func (s *ServiceException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ServiceException) OrigErr() error {
	return nil
}

func (s *ServiceException) 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 *ServiceException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ServiceException) RequestID() string {
	return s.RespMetadata.RequestID
}

// You have exceeded the number of permitted resources or operations for this
// service. For service quotas, see EC2 Image Builder endpoints and quotas (https://docs.aws.amazon.com/general/latest/gr/imagebuilder.html#limits_imagebuilder).
type ServiceQuotaExceededException 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 ServiceQuotaExceededException) 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 ServiceQuotaExceededException) GoString() string {
	return s.String()
}

func newErrorServiceQuotaExceededException(v protocol.ResponseMetadata) error {
	return &ServiceQuotaExceededException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ServiceQuotaExceededException) Code() string {
	return "ServiceQuotaExceededException"
}

// Message returns the exception's message.
func (s *ServiceQuotaExceededException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ServiceQuotaExceededException) OrigErr() error {
	return nil
}

func (s *ServiceQuotaExceededException) 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 *ServiceQuotaExceededException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ServiceQuotaExceededException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The service is unable to process your request at this time.
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
}

// Includes counts by severity level for medium severity and higher level findings,
// plus a total for all of the findings for the specified filter.
type SeverityCounts struct {
	_ struct{} `type:"structure"`

	// The total number of findings across all severity levels for the specified
	// filter.
	All *int64 `locationName:"all" type:"long"`

	// The number of critical severity findings for the specified filter.
	Critical *int64 `locationName:"critical" type:"long"`

	// The number of high severity findings for the specified filter.
	High *int64 `locationName:"high" type:"long"`

	// The number of medium severity findings for the specified filter.
	Medium *int64 `locationName:"medium" type:"long"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SeverityCounts) 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 SeverityCounts) GoString() string {
	return s.String()
}

// SetAll sets the All field's value.
func (s *SeverityCounts) SetAll(v int64) *SeverityCounts {
	s.All = &v
	return s
}

// SetCritical sets the Critical field's value.
func (s *SeverityCounts) SetCritical(v int64) *SeverityCounts {
	s.Critical = &v
	return s
}

// SetHigh sets the High field's value.
func (s *SeverityCounts) SetHigh(v int64) *SeverityCounts {
	s.High = &v
	return s
}

// SetMedium sets the Medium field's value.
func (s *SeverityCounts) SetMedium(v int64) *SeverityCounts {
	s.Medium = &v
	return s
}

type StartImagePipelineExecutionInput struct {
	_ struct{} `type:"structure"`

	// Unique, case-sensitive identifier you provide to ensure idempotency of the
	// request. For more information, see Ensuring idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)
	// in the Amazon EC2 API Reference.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The Amazon Resource Name (ARN) of the image pipeline that you want to manually
	// invoke.
	//
	// ImagePipelineArn is a required field
	ImagePipelineArn *string `locationName:"imagePipelineArn" 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 StartImagePipelineExecutionInput) 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 StartImagePipelineExecutionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartImagePipelineExecutionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartImagePipelineExecutionInput"}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.ImagePipelineArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ImagePipelineArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *StartImagePipelineExecutionInput) SetClientToken(v string) *StartImagePipelineExecutionInput {
	s.ClientToken = &v
	return s
}

// SetImagePipelineArn sets the ImagePipelineArn field's value.
func (s *StartImagePipelineExecutionInput) SetImagePipelineArn(v string) *StartImagePipelineExecutionInput {
	s.ImagePipelineArn = &v
	return s
}

type StartImagePipelineExecutionOutput struct {
	_ struct{} `type:"structure"`

	// The client token that uniquely identifies the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the image that the request created.
	ImageBuildVersionArn *string `locationName:"imageBuildVersionArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 StartImagePipelineExecutionOutput) 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 StartImagePipelineExecutionOutput) GoString() string {
	return s.String()
}

// SetClientToken sets the ClientToken field's value.
func (s *StartImagePipelineExecutionOutput) SetClientToken(v string) *StartImagePipelineExecutionOutput {
	s.ClientToken = &v
	return s
}

// SetImageBuildVersionArn sets the ImageBuildVersionArn field's value.
func (s *StartImagePipelineExecutionOutput) SetImageBuildVersionArn(v string) *StartImagePipelineExecutionOutput {
	s.ImageBuildVersionArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *StartImagePipelineExecutionOutput) SetRequestId(v string) *StartImagePipelineExecutionOutput {
	s.RequestId = &v
	return s
}

type StartResourceStateUpdateInput struct {
	_ struct{} `type:"structure"`

	// Unique, case-sensitive identifier you provide to ensure idempotency of the
	// request. For more information, see Ensuring idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)
	// in the Amazon EC2 API Reference.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// Skip action on the image resource and associated resources if specified exclusion
	// rules are met.
	ExclusionRules *ResourceStateUpdateExclusionRules `locationName:"exclusionRules" type:"structure"`

	// The name or Amazon Resource Name (ARN) of the IAM role that’s used to update
	// image state.
	ExecutionRole *string `locationName:"executionRole" min:"1" type:"string"`

	// A list of image resources to update state for.
	IncludeResources *ResourceStateUpdateIncludeResources `locationName:"includeResources" type:"structure"`

	// The ARN of the Image Builder resource that is updated. The state update might
	// also impact associated resources.
	//
	// ResourceArn is a required field
	ResourceArn *string `locationName:"resourceArn" type:"string" required:"true"`

	// Indicates the lifecycle action to take for this request.
	//
	// State is a required field
	State *ResourceState `locationName:"state" type:"structure" required:"true"`

	// The timestamp that indicates when resources are updated by a lifecycle action.
	UpdateAt *time.Time `locationName:"updateAt" 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 StartResourceStateUpdateInput) 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 StartResourceStateUpdateInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartResourceStateUpdateInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartResourceStateUpdateInput"}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.ExecutionRole != nil && len(*s.ExecutionRole) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ExecutionRole", 1))
	}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}
	if s.State == nil {
		invalidParams.Add(request.NewErrParamRequired("State"))
	}
	if s.ExclusionRules != nil {
		if err := s.ExclusionRules.Validate(); err != nil {
			invalidParams.AddNested("ExclusionRules", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *StartResourceStateUpdateInput) SetClientToken(v string) *StartResourceStateUpdateInput {
	s.ClientToken = &v
	return s
}

// SetExclusionRules sets the ExclusionRules field's value.
func (s *StartResourceStateUpdateInput) SetExclusionRules(v *ResourceStateUpdateExclusionRules) *StartResourceStateUpdateInput {
	s.ExclusionRules = v
	return s
}

// SetExecutionRole sets the ExecutionRole field's value.
func (s *StartResourceStateUpdateInput) SetExecutionRole(v string) *StartResourceStateUpdateInput {
	s.ExecutionRole = &v
	return s
}

// SetIncludeResources sets the IncludeResources field's value.
func (s *StartResourceStateUpdateInput) SetIncludeResources(v *ResourceStateUpdateIncludeResources) *StartResourceStateUpdateInput {
	s.IncludeResources = v
	return s
}

// SetResourceArn sets the ResourceArn field's value.
func (s *StartResourceStateUpdateInput) SetResourceArn(v string) *StartResourceStateUpdateInput {
	s.ResourceArn = &v
	return s
}

// SetState sets the State field's value.
func (s *StartResourceStateUpdateInput) SetState(v *ResourceState) *StartResourceStateUpdateInput {
	s.State = v
	return s
}

// SetUpdateAt sets the UpdateAt field's value.
func (s *StartResourceStateUpdateInput) SetUpdateAt(v time.Time) *StartResourceStateUpdateInput {
	s.UpdateAt = &v
	return s
}

type StartResourceStateUpdateOutput struct {
	_ struct{} `type:"structure"`

	// Identifies the lifecycle runtime instance that started the resource state
	// update.
	LifecycleExecutionId *string `locationName:"lifecycleExecutionId" type:"string"`

	// The requested ARN of the Image Builder resource for the asynchronous update.
	ResourceArn *string `locationName:"resourceArn" 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 StartResourceStateUpdateOutput) 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 StartResourceStateUpdateOutput) GoString() string {
	return s.String()
}

// SetLifecycleExecutionId sets the LifecycleExecutionId field's value.
func (s *StartResourceStateUpdateOutput) SetLifecycleExecutionId(v string) *StartResourceStateUpdateOutput {
	s.LifecycleExecutionId = &v
	return s
}

// SetResourceArn sets the ResourceArn field's value.
func (s *StartResourceStateUpdateOutput) SetResourceArn(v string) *StartResourceStateUpdateOutput {
	s.ResourceArn = &v
	return s
}

// Contains settings for the Systems Manager agent on your build instance.
type SystemsManagerAgent struct {
	_ struct{} `type:"structure"`

	// Controls whether the Systems Manager agent is removed from your final build
	// image, prior to creating the new AMI. If this is set to true, then the agent
	// is removed from the final image. If it's set to false, then the agent is
	// left in, so that it is included in the new AMI. The default value is false.
	UninstallAfterBuild *bool `locationName:"uninstallAfterBuild" type:"boolean"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SystemsManagerAgent) 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 SystemsManagerAgent) GoString() string {
	return s.String()
}

// SetUninstallAfterBuild sets the UninstallAfterBuild field's value.
func (s *SystemsManagerAgent) SetUninstallAfterBuild(v bool) *SystemsManagerAgent {
	s.UninstallAfterBuild = &v
	return s
}

type TagResourceInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource that you want to tag.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"`

	// The tags to apply to the resource.
	//
	// Tags is a required field
	Tags map[string]*string `locationName:"tags" min:"1" type:"map" 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 TagResourceInput) 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 TagResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TagResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TagResourceInput"}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}
	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
	}
	if s.Tags == nil {
		invalidParams.Add(request.NewErrParamRequired("Tags"))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceArn sets the ResourceArn field's value.
func (s *TagResourceInput) SetResourceArn(v string) *TagResourceInput {
	s.ResourceArn = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *TagResourceInput) SetTags(v map[string]*string) *TagResourceInput {
	s.Tags = v
	return s
}

type TagResourceOutput 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 TagResourceOutput) 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 TagResourceOutput) GoString() string {
	return s.String()
}

// The container repository where the output container image is stored.
type TargetContainerRepository struct {
	_ struct{} `type:"structure"`

	// The name of the container repository where the output container image is
	// stored. This name is prefixed by the repository location.
	//
	// RepositoryName is a required field
	RepositoryName *string `locationName:"repositoryName" min:"1" type:"string" required:"true"`

	// Specifies the service in which this image was registered.
	//
	// Service is a required field
	Service *string `locationName:"service" type:"string" required:"true" enum:"ContainerRepositoryService"`
}

// 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 TargetContainerRepository) 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 TargetContainerRepository) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TargetContainerRepository) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TargetContainerRepository"}
	if s.RepositoryName == nil {
		invalidParams.Add(request.NewErrParamRequired("RepositoryName"))
	}
	if s.RepositoryName != nil && len(*s.RepositoryName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RepositoryName", 1))
	}
	if s.Service == nil {
		invalidParams.Add(request.NewErrParamRequired("Service"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRepositoryName sets the RepositoryName field's value.
func (s *TargetContainerRepository) SetRepositoryName(v string) *TargetContainerRepository {
	s.RepositoryName = &v
	return s
}

// SetService sets the Service field's value.
func (s *TargetContainerRepository) SetService(v string) *TargetContainerRepository {
	s.Service = &v
	return s
}

type UntagResourceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the resource that you want to untag.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"`

	// The tag keys to remove from the resource.
	//
	// TagKeys is a required field
	TagKeys []*string `location:"querystring" locationName:"tagKeys" 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 UntagResourceInput) 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 UntagResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UntagResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}
	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
	}
	if s.TagKeys == nil {
		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
	}
	if s.TagKeys != nil && len(s.TagKeys) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TagKeys", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceArn sets the ResourceArn field's value.
func (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput {
	s.ResourceArn = &v
	return s
}

// SetTagKeys sets the TagKeys field's value.
func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput {
	s.TagKeys = v
	return s
}

type UntagResourceOutput 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 UntagResourceOutput) 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 UntagResourceOutput) GoString() string {
	return s.String()
}

type UpdateDistributionConfigurationInput struct {
	_ struct{} `type:"structure"`

	// Unique, case-sensitive identifier you provide to ensure idempotency of the
	// request. For more information, see Ensuring idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)
	// in the Amazon EC2 API Reference.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The description of the distribution configuration.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the distribution configuration that you
	// want to update.
	//
	// DistributionConfigurationArn is a required field
	DistributionConfigurationArn *string `locationName:"distributionConfigurationArn" type:"string" required:"true"`

	// The distributions of the distribution configuration.
	//
	// Distributions is a required field
	Distributions []*Distribution `locationName:"distributions" 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 UpdateDistributionConfigurationInput) 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 UpdateDistributionConfigurationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateDistributionConfigurationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateDistributionConfigurationInput"}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.DistributionConfigurationArn == nil {
		invalidParams.Add(request.NewErrParamRequired("DistributionConfigurationArn"))
	}
	if s.Distributions == nil {
		invalidParams.Add(request.NewErrParamRequired("Distributions"))
	}
	if s.Distributions != nil {
		for i, v := range s.Distributions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Distributions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *UpdateDistributionConfigurationInput) SetClientToken(v string) *UpdateDistributionConfigurationInput {
	s.ClientToken = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateDistributionConfigurationInput) SetDescription(v string) *UpdateDistributionConfigurationInput {
	s.Description = &v
	return s
}

// SetDistributionConfigurationArn sets the DistributionConfigurationArn field's value.
func (s *UpdateDistributionConfigurationInput) SetDistributionConfigurationArn(v string) *UpdateDistributionConfigurationInput {
	s.DistributionConfigurationArn = &v
	return s
}

// SetDistributions sets the Distributions field's value.
func (s *UpdateDistributionConfigurationInput) SetDistributions(v []*Distribution) *UpdateDistributionConfigurationInput {
	s.Distributions = v
	return s
}

type UpdateDistributionConfigurationOutput struct {
	_ struct{} `type:"structure"`

	// The client token that uniquely identifies the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the distribution configuration that was
	// updated by this request.
	DistributionConfigurationArn *string `locationName:"distributionConfigurationArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 UpdateDistributionConfigurationOutput) 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 UpdateDistributionConfigurationOutput) GoString() string {
	return s.String()
}

// SetClientToken sets the ClientToken field's value.
func (s *UpdateDistributionConfigurationOutput) SetClientToken(v string) *UpdateDistributionConfigurationOutput {
	s.ClientToken = &v
	return s
}

// SetDistributionConfigurationArn sets the DistributionConfigurationArn field's value.
func (s *UpdateDistributionConfigurationOutput) SetDistributionConfigurationArn(v string) *UpdateDistributionConfigurationOutput {
	s.DistributionConfigurationArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateDistributionConfigurationOutput) SetRequestId(v string) *UpdateDistributionConfigurationOutput {
	s.RequestId = &v
	return s
}

type UpdateImagePipelineInput struct {
	_ struct{} `type:"structure"`

	// Unique, case-sensitive identifier you provide to ensure idempotency of the
	// request. For more information, see Ensuring idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)
	// in the Amazon EC2 API Reference.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The Amazon Resource Name (ARN) of the container pipeline to update.
	ContainerRecipeArn *string `locationName:"containerRecipeArn" type:"string"`

	// The description of the image pipeline.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the distribution configuration that Image
	// Builder uses to configure and distribute images that this image pipeline
	// has updated.
	DistributionConfigurationArn *string `locationName:"distributionConfigurationArn" type:"string"`

	// Collects additional information about the image being created, including
	// the operating system (OS) version and package list. This information is used
	// to enhance the overall experience of using EC2 Image Builder. Enabled by
	// default.
	EnhancedImageMetadataEnabled *bool `locationName:"enhancedImageMetadataEnabled" type:"boolean"`

	// The name or Amazon Resource Name (ARN) for the IAM role you create that grants
	// Image Builder access to perform workflow actions.
	ExecutionRole *string `locationName:"executionRole" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the image pipeline that you want to update.
	//
	// ImagePipelineArn is a required field
	ImagePipelineArn *string `locationName:"imagePipelineArn" type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of the image recipe that will be used to configure
	// images updated by this image pipeline.
	ImageRecipeArn *string `locationName:"imageRecipeArn" type:"string"`

	// Contains settings for vulnerability scans.
	ImageScanningConfiguration *ImageScanningConfiguration `locationName:"imageScanningConfiguration" type:"structure"`

	// The image test configuration of the image pipeline.
	ImageTestsConfiguration *ImageTestsConfiguration `locationName:"imageTestsConfiguration" type:"structure"`

	// The Amazon Resource Name (ARN) of the infrastructure configuration that Image
	// Builder uses to build images that this image pipeline has updated.
	//
	// InfrastructureConfigurationArn is a required field
	InfrastructureConfigurationArn *string `locationName:"infrastructureConfigurationArn" type:"string" required:"true"`

	// The schedule of the image pipeline.
	Schedule *Schedule `locationName:"schedule" type:"structure"`

	// The status of the image pipeline.
	Status *string `locationName:"status" type:"string" enum:"PipelineStatus"`

	// Contains the workflows to run for the pipeline.
	Workflows []*WorkflowConfiguration `locationName:"workflows" 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 UpdateImagePipelineInput) 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 UpdateImagePipelineInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateImagePipelineInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateImagePipelineInput"}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.ExecutionRole != nil && len(*s.ExecutionRole) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ExecutionRole", 1))
	}
	if s.ImagePipelineArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ImagePipelineArn"))
	}
	if s.InfrastructureConfigurationArn == nil {
		invalidParams.Add(request.NewErrParamRequired("InfrastructureConfigurationArn"))
	}
	if s.ImageScanningConfiguration != nil {
		if err := s.ImageScanningConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ImageScanningConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.ImageTestsConfiguration != nil {
		if err := s.ImageTestsConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ImageTestsConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.Schedule != nil {
		if err := s.Schedule.Validate(); err != nil {
			invalidParams.AddNested("Schedule", err.(request.ErrInvalidParams))
		}
	}
	if s.Workflows != nil {
		for i, v := range s.Workflows {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Workflows", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *UpdateImagePipelineInput) SetClientToken(v string) *UpdateImagePipelineInput {
	s.ClientToken = &v
	return s
}

// SetContainerRecipeArn sets the ContainerRecipeArn field's value.
func (s *UpdateImagePipelineInput) SetContainerRecipeArn(v string) *UpdateImagePipelineInput {
	s.ContainerRecipeArn = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateImagePipelineInput) SetDescription(v string) *UpdateImagePipelineInput {
	s.Description = &v
	return s
}

// SetDistributionConfigurationArn sets the DistributionConfigurationArn field's value.
func (s *UpdateImagePipelineInput) SetDistributionConfigurationArn(v string) *UpdateImagePipelineInput {
	s.DistributionConfigurationArn = &v
	return s
}

// SetEnhancedImageMetadataEnabled sets the EnhancedImageMetadataEnabled field's value.
func (s *UpdateImagePipelineInput) SetEnhancedImageMetadataEnabled(v bool) *UpdateImagePipelineInput {
	s.EnhancedImageMetadataEnabled = &v
	return s
}

// SetExecutionRole sets the ExecutionRole field's value.
func (s *UpdateImagePipelineInput) SetExecutionRole(v string) *UpdateImagePipelineInput {
	s.ExecutionRole = &v
	return s
}

// SetImagePipelineArn sets the ImagePipelineArn field's value.
func (s *UpdateImagePipelineInput) SetImagePipelineArn(v string) *UpdateImagePipelineInput {
	s.ImagePipelineArn = &v
	return s
}

// SetImageRecipeArn sets the ImageRecipeArn field's value.
func (s *UpdateImagePipelineInput) SetImageRecipeArn(v string) *UpdateImagePipelineInput {
	s.ImageRecipeArn = &v
	return s
}

// SetImageScanningConfiguration sets the ImageScanningConfiguration field's value.
func (s *UpdateImagePipelineInput) SetImageScanningConfiguration(v *ImageScanningConfiguration) *UpdateImagePipelineInput {
	s.ImageScanningConfiguration = v
	return s
}

// SetImageTestsConfiguration sets the ImageTestsConfiguration field's value.
func (s *UpdateImagePipelineInput) SetImageTestsConfiguration(v *ImageTestsConfiguration) *UpdateImagePipelineInput {
	s.ImageTestsConfiguration = v
	return s
}

// SetInfrastructureConfigurationArn sets the InfrastructureConfigurationArn field's value.
func (s *UpdateImagePipelineInput) SetInfrastructureConfigurationArn(v string) *UpdateImagePipelineInput {
	s.InfrastructureConfigurationArn = &v
	return s
}

// SetSchedule sets the Schedule field's value.
func (s *UpdateImagePipelineInput) SetSchedule(v *Schedule) *UpdateImagePipelineInput {
	s.Schedule = v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateImagePipelineInput) SetStatus(v string) *UpdateImagePipelineInput {
	s.Status = &v
	return s
}

// SetWorkflows sets the Workflows field's value.
func (s *UpdateImagePipelineInput) SetWorkflows(v []*WorkflowConfiguration) *UpdateImagePipelineInput {
	s.Workflows = v
	return s
}

type UpdateImagePipelineOutput struct {
	_ struct{} `type:"structure"`

	// The client token that uniquely identifies the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the image pipeline that was updated by
	// this request.
	ImagePipelineArn *string `locationName:"imagePipelineArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 UpdateImagePipelineOutput) 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 UpdateImagePipelineOutput) GoString() string {
	return s.String()
}

// SetClientToken sets the ClientToken field's value.
func (s *UpdateImagePipelineOutput) SetClientToken(v string) *UpdateImagePipelineOutput {
	s.ClientToken = &v
	return s
}

// SetImagePipelineArn sets the ImagePipelineArn field's value.
func (s *UpdateImagePipelineOutput) SetImagePipelineArn(v string) *UpdateImagePipelineOutput {
	s.ImagePipelineArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateImagePipelineOutput) SetRequestId(v string) *UpdateImagePipelineOutput {
	s.RequestId = &v
	return s
}

type UpdateInfrastructureConfigurationInput struct {
	_ struct{} `type:"structure"`

	// Unique, case-sensitive identifier you provide to ensure idempotency of the
	// request. For more information, see Ensuring idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)
	// in the Amazon EC2 API Reference.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The description of the infrastructure configuration.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the infrastructure configuration that you
	// want to update.
	//
	// InfrastructureConfigurationArn is a required field
	InfrastructureConfigurationArn *string `locationName:"infrastructureConfigurationArn" type:"string" required:"true"`

	// The instance metadata options that you can set for the HTTP requests that
	// pipeline builds use to launch EC2 build and test instances. For more information
	// about instance metadata options, see one of the following links:
	//
	//    * Configure the instance metadata options (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html)
	//    in the Amazon EC2 User Guide for Linux instances.
	//
	//    * Configure the instance metadata options (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/configuring-instance-metadata-options.html)
	//    in the Amazon EC2 Windows Guide for Windows instances.
	InstanceMetadataOptions *InstanceMetadataOptions `locationName:"instanceMetadataOptions" type:"structure"`

	// The instance profile to associate with the instance used to customize your
	// Amazon EC2 AMI.
	//
	// InstanceProfileName is a required field
	InstanceProfileName *string `locationName:"instanceProfileName" min:"1" type:"string" required:"true"`

	// The instance types of the infrastructure configuration. You can specify one
	// or more instance types to use for this build. The service will pick one of
	// these instance types based on availability.
	InstanceTypes []*string `locationName:"instanceTypes" type:"list"`

	// The key pair of the infrastructure configuration. You can use this to log
	// on to and debug the instance used to create your image.
	KeyPair *string `locationName:"keyPair" min:"1" type:"string"`

	// The logging configuration of the infrastructure configuration.
	Logging *Logging `locationName:"logging" type:"structure"`

	// The tags attached to the resource created by Image Builder.
	ResourceTags map[string]*string `locationName:"resourceTags" min:"1" type:"map"`

	// The security group IDs to associate with the instance used to customize your
	// Amazon EC2 AMI.
	SecurityGroupIds []*string `locationName:"securityGroupIds" type:"list"`

	// The Amazon Resource Name (ARN) for the SNS topic to which we send image build
	// event notifications.
	//
	// EC2 Image Builder is unable to send notifications to SNS topics that are
	// encrypted using keys from other accounts. The key that is used to encrypt
	// the SNS topic must reside in the account that the Image Builder service runs
	// under.
	SnsTopicArn *string `locationName:"snsTopicArn" type:"string"`

	// The subnet ID to place the instance used to customize your Amazon EC2 AMI
	// in.
	SubnetId *string `locationName:"subnetId" min:"1" type:"string"`

	// The terminate instance on failure setting of the infrastructure configuration.
	// Set to false if you want Image Builder to retain the instance used to configure
	// your AMI if the build or test phase of your workflow fails.
	TerminateInstanceOnFailure *bool `locationName:"terminateInstanceOnFailure" type:"boolean"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateInfrastructureConfigurationInput) 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 UpdateInfrastructureConfigurationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateInfrastructureConfigurationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateInfrastructureConfigurationInput"}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.InfrastructureConfigurationArn == nil {
		invalidParams.Add(request.NewErrParamRequired("InfrastructureConfigurationArn"))
	}
	if s.InstanceProfileName == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceProfileName"))
	}
	if s.InstanceProfileName != nil && len(*s.InstanceProfileName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceProfileName", 1))
	}
	if s.KeyPair != nil && len(*s.KeyPair) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("KeyPair", 1))
	}
	if s.ResourceTags != nil && len(s.ResourceTags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceTags", 1))
	}
	if s.SubnetId != nil && len(*s.SubnetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SubnetId", 1))
	}
	if s.InstanceMetadataOptions != nil {
		if err := s.InstanceMetadataOptions.Validate(); err != nil {
			invalidParams.AddNested("InstanceMetadataOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.Logging != nil {
		if err := s.Logging.Validate(); err != nil {
			invalidParams.AddNested("Logging", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *UpdateInfrastructureConfigurationInput) SetClientToken(v string) *UpdateInfrastructureConfigurationInput {
	s.ClientToken = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateInfrastructureConfigurationInput) SetDescription(v string) *UpdateInfrastructureConfigurationInput {
	s.Description = &v
	return s
}

// SetInfrastructureConfigurationArn sets the InfrastructureConfigurationArn field's value.
func (s *UpdateInfrastructureConfigurationInput) SetInfrastructureConfigurationArn(v string) *UpdateInfrastructureConfigurationInput {
	s.InfrastructureConfigurationArn = &v
	return s
}

// SetInstanceMetadataOptions sets the InstanceMetadataOptions field's value.
func (s *UpdateInfrastructureConfigurationInput) SetInstanceMetadataOptions(v *InstanceMetadataOptions) *UpdateInfrastructureConfigurationInput {
	s.InstanceMetadataOptions = v
	return s
}

// SetInstanceProfileName sets the InstanceProfileName field's value.
func (s *UpdateInfrastructureConfigurationInput) SetInstanceProfileName(v string) *UpdateInfrastructureConfigurationInput {
	s.InstanceProfileName = &v
	return s
}

// SetInstanceTypes sets the InstanceTypes field's value.
func (s *UpdateInfrastructureConfigurationInput) SetInstanceTypes(v []*string) *UpdateInfrastructureConfigurationInput {
	s.InstanceTypes = v
	return s
}

// SetKeyPair sets the KeyPair field's value.
func (s *UpdateInfrastructureConfigurationInput) SetKeyPair(v string) *UpdateInfrastructureConfigurationInput {
	s.KeyPair = &v
	return s
}

// SetLogging sets the Logging field's value.
func (s *UpdateInfrastructureConfigurationInput) SetLogging(v *Logging) *UpdateInfrastructureConfigurationInput {
	s.Logging = v
	return s
}

// SetResourceTags sets the ResourceTags field's value.
func (s *UpdateInfrastructureConfigurationInput) SetResourceTags(v map[string]*string) *UpdateInfrastructureConfigurationInput {
	s.ResourceTags = v
	return s
}

// SetSecurityGroupIds sets the SecurityGroupIds field's value.
func (s *UpdateInfrastructureConfigurationInput) SetSecurityGroupIds(v []*string) *UpdateInfrastructureConfigurationInput {
	s.SecurityGroupIds = v
	return s
}

// SetSnsTopicArn sets the SnsTopicArn field's value.
func (s *UpdateInfrastructureConfigurationInput) SetSnsTopicArn(v string) *UpdateInfrastructureConfigurationInput {
	s.SnsTopicArn = &v
	return s
}

// SetSubnetId sets the SubnetId field's value.
func (s *UpdateInfrastructureConfigurationInput) SetSubnetId(v string) *UpdateInfrastructureConfigurationInput {
	s.SubnetId = &v
	return s
}

// SetTerminateInstanceOnFailure sets the TerminateInstanceOnFailure field's value.
func (s *UpdateInfrastructureConfigurationInput) SetTerminateInstanceOnFailure(v bool) *UpdateInfrastructureConfigurationInput {
	s.TerminateInstanceOnFailure = &v
	return s
}

type UpdateInfrastructureConfigurationOutput struct {
	_ struct{} `type:"structure"`

	// The client token that uniquely identifies the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the infrastructure configuration that was
	// updated by this request.
	InfrastructureConfigurationArn *string `locationName:"infrastructureConfigurationArn" type:"string"`

	// The request ID that uniquely identifies this request.
	RequestId *string `locationName:"requestId" 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 UpdateInfrastructureConfigurationOutput) 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 UpdateInfrastructureConfigurationOutput) GoString() string {
	return s.String()
}

// SetClientToken sets the ClientToken field's value.
func (s *UpdateInfrastructureConfigurationOutput) SetClientToken(v string) *UpdateInfrastructureConfigurationOutput {
	s.ClientToken = &v
	return s
}

// SetInfrastructureConfigurationArn sets the InfrastructureConfigurationArn field's value.
func (s *UpdateInfrastructureConfigurationOutput) SetInfrastructureConfigurationArn(v string) *UpdateInfrastructureConfigurationOutput {
	s.InfrastructureConfigurationArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateInfrastructureConfigurationOutput) SetRequestId(v string) *UpdateInfrastructureConfigurationOutput {
	s.RequestId = &v
	return s
}

type UpdateLifecyclePolicyInput struct {
	_ struct{} `type:"structure"`

	// Unique, case-sensitive identifier you provide to ensure idempotency of the
	// request. For more information, see Ensuring idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)
	// in the Amazon EC2 API Reference.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// Optional description for the lifecycle policy.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The name or Amazon Resource Name (ARN) of the IAM role that Image Builder
	// uses to update the lifecycle policy.
	//
	// ExecutionRole is a required field
	ExecutionRole *string `locationName:"executionRole" min:"1" type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of the lifecycle policy resource.
	//
	// LifecyclePolicyArn is a required field
	LifecyclePolicyArn *string `locationName:"lifecyclePolicyArn" type:"string" required:"true"`

	// The configuration details for a lifecycle policy resource.
	//
	// PolicyDetails is a required field
	PolicyDetails []*LifecyclePolicyDetail `locationName:"policyDetails" min:"1" type:"list" required:"true"`

	// Selection criteria for resources that the lifecycle policy applies to.
	//
	// ResourceSelection is a required field
	ResourceSelection *LifecyclePolicyResourceSelection `locationName:"resourceSelection" type:"structure" required:"true"`

	// The type of image resource that the lifecycle policy applies to.
	//
	// ResourceType is a required field
	ResourceType *string `locationName:"resourceType" type:"string" required:"true" enum:"LifecyclePolicyResourceType"`

	// Indicates whether the lifecycle policy resource is enabled.
	Status *string `locationName:"status" type:"string" enum:"LifecyclePolicyStatus"`
}

// 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 UpdateLifecyclePolicyInput) 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 UpdateLifecyclePolicyInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateLifecyclePolicyInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateLifecyclePolicyInput"}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.ExecutionRole == nil {
		invalidParams.Add(request.NewErrParamRequired("ExecutionRole"))
	}
	if s.ExecutionRole != nil && len(*s.ExecutionRole) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ExecutionRole", 1))
	}
	if s.LifecyclePolicyArn == nil {
		invalidParams.Add(request.NewErrParamRequired("LifecyclePolicyArn"))
	}
	if s.PolicyDetails == nil {
		invalidParams.Add(request.NewErrParamRequired("PolicyDetails"))
	}
	if s.PolicyDetails != nil && len(s.PolicyDetails) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PolicyDetails", 1))
	}
	if s.ResourceSelection == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceSelection"))
	}
	if s.ResourceType == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceType"))
	}
	if s.PolicyDetails != nil {
		for i, v := range s.PolicyDetails {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PolicyDetails", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ResourceSelection != nil {
		if err := s.ResourceSelection.Validate(); err != nil {
			invalidParams.AddNested("ResourceSelection", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *UpdateLifecyclePolicyInput) SetClientToken(v string) *UpdateLifecyclePolicyInput {
	s.ClientToken = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateLifecyclePolicyInput) SetDescription(v string) *UpdateLifecyclePolicyInput {
	s.Description = &v
	return s
}

// SetExecutionRole sets the ExecutionRole field's value.
func (s *UpdateLifecyclePolicyInput) SetExecutionRole(v string) *UpdateLifecyclePolicyInput {
	s.ExecutionRole = &v
	return s
}

// SetLifecyclePolicyArn sets the LifecyclePolicyArn field's value.
func (s *UpdateLifecyclePolicyInput) SetLifecyclePolicyArn(v string) *UpdateLifecyclePolicyInput {
	s.LifecyclePolicyArn = &v
	return s
}

// SetPolicyDetails sets the PolicyDetails field's value.
func (s *UpdateLifecyclePolicyInput) SetPolicyDetails(v []*LifecyclePolicyDetail) *UpdateLifecyclePolicyInput {
	s.PolicyDetails = v
	return s
}

// SetResourceSelection sets the ResourceSelection field's value.
func (s *UpdateLifecyclePolicyInput) SetResourceSelection(v *LifecyclePolicyResourceSelection) *UpdateLifecyclePolicyInput {
	s.ResourceSelection = v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *UpdateLifecyclePolicyInput) SetResourceType(v string) *UpdateLifecyclePolicyInput {
	s.ResourceType = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateLifecyclePolicyInput) SetStatus(v string) *UpdateLifecyclePolicyInput {
	s.Status = &v
	return s
}

type UpdateLifecyclePolicyOutput struct {
	_ struct{} `type:"structure"`

	// The ARN of the image lifecycle policy resource that was updated.
	LifecyclePolicyArn *string `locationName:"lifecyclePolicyArn" 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 UpdateLifecyclePolicyOutput) 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 UpdateLifecyclePolicyOutput) GoString() string {
	return s.String()
}

// SetLifecyclePolicyArn sets the LifecyclePolicyArn field's value.
func (s *UpdateLifecyclePolicyOutput) SetLifecyclePolicyArn(v string) *UpdateLifecyclePolicyOutput {
	s.LifecyclePolicyArn = &v
	return s
}

// Includes counts of image and pipeline resource findings by vulnerability.
type VulnerabilityIdAggregation struct {
	_ struct{} `type:"structure"`

	// Counts by severity level for medium severity and higher level findings, plus
	// a total for all of the findings for the specified vulnerability.
	SeverityCounts *SeverityCounts `locationName:"severityCounts" type:"structure"`

	// The vulnerability Id for this set of counts.
	VulnerabilityId *string `locationName:"vulnerabilityId" 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 VulnerabilityIdAggregation) 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 VulnerabilityIdAggregation) GoString() string {
	return s.String()
}

// SetSeverityCounts sets the SeverityCounts field's value.
func (s *VulnerabilityIdAggregation) SetSeverityCounts(v *SeverityCounts) *VulnerabilityIdAggregation {
	s.SeverityCounts = v
	return s
}

// SetVulnerabilityId sets the VulnerabilityId field's value.
func (s *VulnerabilityIdAggregation) SetVulnerabilityId(v string) *VulnerabilityIdAggregation {
	s.VulnerabilityId = &v
	return s
}

// Information about a vulnerable package that Amazon Inspector identifies in
// a finding.
type VulnerablePackage struct {
	_ struct{} `type:"structure"`

	// The architecture of the vulnerable package.
	Arch *string `locationName:"arch" type:"string"`

	// The epoch of the vulnerable package.
	Epoch *int64 `locationName:"epoch" type:"integer"`

	// The file path of the vulnerable package.
	FilePath *string `locationName:"filePath" min:"1" type:"string"`

	// The version of the package that contains the vulnerability fix.
	FixedInVersion *string `locationName:"fixedInVersion" min:"1" type:"string"`

	// The name of the vulnerable package.
	Name *string `locationName:"name" min:"1" type:"string"`

	// The package manager of the vulnerable package.
	PackageManager *string `locationName:"packageManager" min:"1" type:"string"`

	// The release of the vulnerable package.
	Release *string `locationName:"release" min:"1" type:"string"`

	// The code to run in your environment to update packages with a fix available.
	Remediation *string `locationName:"remediation" min:"1" type:"string"`

	// The source layer hash of the vulnerable package.
	SourceLayerHash *string `locationName:"sourceLayerHash" type:"string"`

	// The version of the vulnerable package.
	Version *string `locationName:"version" 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 VulnerablePackage) 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 VulnerablePackage) GoString() string {
	return s.String()
}

// SetArch sets the Arch field's value.
func (s *VulnerablePackage) SetArch(v string) *VulnerablePackage {
	s.Arch = &v
	return s
}

// SetEpoch sets the Epoch field's value.
func (s *VulnerablePackage) SetEpoch(v int64) *VulnerablePackage {
	s.Epoch = &v
	return s
}

// SetFilePath sets the FilePath field's value.
func (s *VulnerablePackage) SetFilePath(v string) *VulnerablePackage {
	s.FilePath = &v
	return s
}

// SetFixedInVersion sets the FixedInVersion field's value.
func (s *VulnerablePackage) SetFixedInVersion(v string) *VulnerablePackage {
	s.FixedInVersion = &v
	return s
}

// SetName sets the Name field's value.
func (s *VulnerablePackage) SetName(v string) *VulnerablePackage {
	s.Name = &v
	return s
}

// SetPackageManager sets the PackageManager field's value.
func (s *VulnerablePackage) SetPackageManager(v string) *VulnerablePackage {
	s.PackageManager = &v
	return s
}

// SetRelease sets the Release field's value.
func (s *VulnerablePackage) SetRelease(v string) *VulnerablePackage {
	s.Release = &v
	return s
}

// SetRemediation sets the Remediation field's value.
func (s *VulnerablePackage) SetRemediation(v string) *VulnerablePackage {
	s.Remediation = &v
	return s
}

// SetSourceLayerHash sets the SourceLayerHash field's value.
func (s *VulnerablePackage) SetSourceLayerHash(v string) *VulnerablePackage {
	s.SourceLayerHash = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *VulnerablePackage) SetVersion(v string) *VulnerablePackage {
	s.Version = &v
	return s
}

// Defines a process that Image Builder uses to build and test images during
// the image creation process.
type Workflow struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the workflow resource.
	Arn *string `locationName:"arn" type:"string"`

	// Describes what change has been made in this version of the workflow, or what
	// makes this version different from other versions of the workflow.
	ChangeDescription *string `locationName:"changeDescription" min:"1" type:"string"`

	// Contains the YAML document content for the workflow.
	Data *string `locationName:"data" type:"string"`

	// The timestamp when Image Builder created the workflow resource.
	DateCreated *string `locationName:"dateCreated" type:"string"`

	// The description of the workflow.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The KMS key identifier used to encrypt the workflow resource.
	KmsKeyId *string `locationName:"kmsKeyId" min:"1" type:"string"`

	// The name of the workflow resource.
	Name *string `locationName:"name" type:"string"`

	// The owner of the workflow resource.
	Owner *string `locationName:"owner" min:"1" type:"string"`

	// An array of input parameters that that the image workflow uses to control
	// actions or configure settings.
	Parameters []*WorkflowParameterDetail `locationName:"parameters" type:"list"`

	// Describes the current status of the workflow and the reason for that status.
	State *WorkflowState `locationName:"state" type:"structure"`

	// The tags that apply to the workflow resource
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`

	// Specifies the image creation stage that the workflow applies to. Image Builder
	// currently supports build and test workflows.
	Type *string `locationName:"type" type:"string" enum:"WorkflowType"`

	// The workflow resource version. Workflow resources are immutable. To make
	// a change, you can clone a workflow or create a new version.
	Version *string `locationName:"version" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Workflow) 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 Workflow) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *Workflow) SetArn(v string) *Workflow {
	s.Arn = &v
	return s
}

// SetChangeDescription sets the ChangeDescription field's value.
func (s *Workflow) SetChangeDescription(v string) *Workflow {
	s.ChangeDescription = &v
	return s
}

// SetData sets the Data field's value.
func (s *Workflow) SetData(v string) *Workflow {
	s.Data = &v
	return s
}

// SetDateCreated sets the DateCreated field's value.
func (s *Workflow) SetDateCreated(v string) *Workflow {
	s.DateCreated = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *Workflow) SetDescription(v string) *Workflow {
	s.Description = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *Workflow) SetKmsKeyId(v string) *Workflow {
	s.KmsKeyId = &v
	return s
}

// SetName sets the Name field's value.
func (s *Workflow) SetName(v string) *Workflow {
	s.Name = &v
	return s
}

// SetOwner sets the Owner field's value.
func (s *Workflow) SetOwner(v string) *Workflow {
	s.Owner = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *Workflow) SetParameters(v []*WorkflowParameterDetail) *Workflow {
	s.Parameters = v
	return s
}

// SetState sets the State field's value.
func (s *Workflow) SetState(v *WorkflowState) *Workflow {
	s.State = v
	return s
}

// SetTags sets the Tags field's value.
func (s *Workflow) SetTags(v map[string]*string) *Workflow {
	s.Tags = v
	return s
}

// SetType sets the Type field's value.
func (s *Workflow) SetType(v string) *Workflow {
	s.Type = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *Workflow) SetVersion(v string) *Workflow {
	s.Version = &v
	return s
}

// Contains control settings and configurable inputs for a workflow resource.
type WorkflowConfiguration struct {
	_ struct{} `type:"structure"`

	// The action to take if the workflow fails.
	OnFailure *string `locationName:"onFailure" type:"string" enum:"OnWorkflowFailure"`

	// Test workflows are defined within named runtime groups called parallel groups.
	// The parallel group is the named group that contains this test workflow. Test
	// workflows within a parallel group can run at the same time. Image Builder
	// starts up to five test workflows in the group at the same time, and starts
	// additional workflows as others complete, until all workflows in the group
	// have completed. This field only applies for test workflows.
	ParallelGroup *string `locationName:"parallelGroup" min:"1" type:"string"`

	// Contains parameter values for each of the parameters that the workflow document
	// defined for the workflow resource.
	Parameters []*WorkflowParameter `locationName:"parameters" min:"1" type:"list"`

	// The Amazon Resource Name (ARN) of the workflow resource.
	//
	// WorkflowArn is a required field
	WorkflowArn *string `locationName:"workflowArn" 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 WorkflowConfiguration) 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 WorkflowConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *WorkflowConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "WorkflowConfiguration"}
	if s.ParallelGroup != nil && len(*s.ParallelGroup) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ParallelGroup", 1))
	}
	if s.Parameters != nil && len(s.Parameters) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Parameters", 1))
	}
	if s.WorkflowArn == nil {
		invalidParams.Add(request.NewErrParamRequired("WorkflowArn"))
	}
	if s.Parameters != nil {
		for i, v := range s.Parameters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Parameters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetOnFailure sets the OnFailure field's value.
func (s *WorkflowConfiguration) SetOnFailure(v string) *WorkflowConfiguration {
	s.OnFailure = &v
	return s
}

// SetParallelGroup sets the ParallelGroup field's value.
func (s *WorkflowConfiguration) SetParallelGroup(v string) *WorkflowConfiguration {
	s.ParallelGroup = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *WorkflowConfiguration) SetParameters(v []*WorkflowParameter) *WorkflowConfiguration {
	s.Parameters = v
	return s
}

// SetWorkflowArn sets the WorkflowArn field's value.
func (s *WorkflowConfiguration) SetWorkflowArn(v string) *WorkflowConfiguration {
	s.WorkflowArn = &v
	return s
}

// Metadata that includes details and status from this runtime instance of the
// workflow.
type WorkflowExecutionMetadata struct {
	_ struct{} `type:"structure"`

	// The timestamp when this runtime instance of the workflow finished.
	EndTime *string `locationName:"endTime" type:"string"`

	// The runtime output message from the workflow, if applicable.
	Message *string `locationName:"message" type:"string"`

	// The name of the test group that included the test workflow resource at runtime.
	ParallelGroup *string `locationName:"parallelGroup" min:"1" type:"string"`

	// The timestamp when the runtime instance of this workflow started.
	StartTime *string `locationName:"startTime" type:"string"`

	// The current runtime status for this workflow.
	Status *string `locationName:"status" type:"string" enum:"WorkflowExecutionStatus"`

	// The total number of steps in the workflow. This should equal the sum of the
	// step counts for steps that succeeded, were skipped, and failed.
	TotalStepCount *int64 `locationName:"totalStepCount" type:"integer"`

	// A runtime count for the number of steps in the workflow that failed.
	TotalStepsFailed *int64 `locationName:"totalStepsFailed" type:"integer"`

	// A runtime count for the number of steps in the workflow that were skipped.
	TotalStepsSkipped *int64 `locationName:"totalStepsSkipped" type:"integer"`

	// A runtime count for the number of steps in the workflow that ran successfully.
	TotalStepsSucceeded *int64 `locationName:"totalStepsSucceeded" type:"integer"`

	// Indicates what type of workflow that Image Builder ran for this runtime instance
	// of the workflow.
	Type *string `locationName:"type" type:"string" enum:"WorkflowType"`

	// The Amazon Resource Name (ARN) of the workflow resource build version that
	// ran.
	WorkflowBuildVersionArn *string `locationName:"workflowBuildVersionArn" type:"string"`

	// Unique identifier that Image Builder assigns to keep track of runtime resources
	// each time it runs a workflow.
	WorkflowExecutionId *string `locationName:"workflowExecutionId" 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 WorkflowExecutionMetadata) 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 WorkflowExecutionMetadata) GoString() string {
	return s.String()
}

// SetEndTime sets the EndTime field's value.
func (s *WorkflowExecutionMetadata) SetEndTime(v string) *WorkflowExecutionMetadata {
	s.EndTime = &v
	return s
}

// SetMessage sets the Message field's value.
func (s *WorkflowExecutionMetadata) SetMessage(v string) *WorkflowExecutionMetadata {
	s.Message = &v
	return s
}

// SetParallelGroup sets the ParallelGroup field's value.
func (s *WorkflowExecutionMetadata) SetParallelGroup(v string) *WorkflowExecutionMetadata {
	s.ParallelGroup = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *WorkflowExecutionMetadata) SetStartTime(v string) *WorkflowExecutionMetadata {
	s.StartTime = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *WorkflowExecutionMetadata) SetStatus(v string) *WorkflowExecutionMetadata {
	s.Status = &v
	return s
}

// SetTotalStepCount sets the TotalStepCount field's value.
func (s *WorkflowExecutionMetadata) SetTotalStepCount(v int64) *WorkflowExecutionMetadata {
	s.TotalStepCount = &v
	return s
}

// SetTotalStepsFailed sets the TotalStepsFailed field's value.
func (s *WorkflowExecutionMetadata) SetTotalStepsFailed(v int64) *WorkflowExecutionMetadata {
	s.TotalStepsFailed = &v
	return s
}

// SetTotalStepsSkipped sets the TotalStepsSkipped field's value.
func (s *WorkflowExecutionMetadata) SetTotalStepsSkipped(v int64) *WorkflowExecutionMetadata {
	s.TotalStepsSkipped = &v
	return s
}

// SetTotalStepsSucceeded sets the TotalStepsSucceeded field's value.
func (s *WorkflowExecutionMetadata) SetTotalStepsSucceeded(v int64) *WorkflowExecutionMetadata {
	s.TotalStepsSucceeded = &v
	return s
}

// SetType sets the Type field's value.
func (s *WorkflowExecutionMetadata) SetType(v string) *WorkflowExecutionMetadata {
	s.Type = &v
	return s
}

// SetWorkflowBuildVersionArn sets the WorkflowBuildVersionArn field's value.
func (s *WorkflowExecutionMetadata) SetWorkflowBuildVersionArn(v string) *WorkflowExecutionMetadata {
	s.WorkflowBuildVersionArn = &v
	return s
}

// SetWorkflowExecutionId sets the WorkflowExecutionId field's value.
func (s *WorkflowExecutionMetadata) SetWorkflowExecutionId(v string) *WorkflowExecutionMetadata {
	s.WorkflowExecutionId = &v
	return s
}

// Contains a key/value pair that sets the named workflow parameter.
type WorkflowParameter struct {
	_ struct{} `type:"structure"`

	// The name of the workflow parameter to set.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true"`

	// Sets the value for the named workflow parameter.
	//
	// Value is a required field
	Value []*string `locationName:"value" 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 WorkflowParameter) 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 WorkflowParameter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *WorkflowParameter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "WorkflowParameter"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *WorkflowParameter) SetName(v string) *WorkflowParameter {
	s.Name = &v
	return s
}

// SetValue sets the Value field's value.
func (s *WorkflowParameter) SetValue(v []*string) *WorkflowParameter {
	s.Value = v
	return s
}

// Defines a parameter that's used to provide configuration details for the
// workflow.
type WorkflowParameterDetail struct {
	_ struct{} `type:"structure"`

	// The default value of this parameter if no input is provided.
	DefaultValue []*string `locationName:"defaultValue" type:"list"`

	// Describes this parameter.
	Description *string `locationName:"description" type:"string"`

	// The name of this input parameter.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true"`

	// The type of input this parameter provides. The currently supported value
	// is "string".
	//
	// Type is a required field
	Type *string `locationName:"type" 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 WorkflowParameterDetail) 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 WorkflowParameterDetail) GoString() string {
	return s.String()
}

// SetDefaultValue sets the DefaultValue field's value.
func (s *WorkflowParameterDetail) SetDefaultValue(v []*string) *WorkflowParameterDetail {
	s.DefaultValue = v
	return s
}

// SetDescription sets the Description field's value.
func (s *WorkflowParameterDetail) SetDescription(v string) *WorkflowParameterDetail {
	s.Description = &v
	return s
}

// SetName sets the Name field's value.
func (s *WorkflowParameterDetail) SetName(v string) *WorkflowParameterDetail {
	s.Name = &v
	return s
}

// SetType sets the Type field's value.
func (s *WorkflowParameterDetail) SetType(v string) *WorkflowParameterDetail {
	s.Type = &v
	return s
}

// A group of fields that describe the current status of workflow.
type WorkflowState struct {
	_ struct{} `type:"structure"`

	// Describes how or why the workflow changed state.
	Reason *string `locationName:"reason" min:"1" type:"string"`

	// The current state of the workflow.
	Status *string `locationName:"status" type:"string" enum:"WorkflowStatus"`
}

// 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 WorkflowState) 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 WorkflowState) GoString() string {
	return s.String()
}

// SetReason sets the Reason field's value.
func (s *WorkflowState) SetReason(v string) *WorkflowState {
	s.Reason = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *WorkflowState) SetStatus(v string) *WorkflowState {
	s.Status = &v
	return s
}

// Contains runtime details for an instance of a workflow that ran for the associated
// image build version.
type WorkflowStepExecution struct {
	_ struct{} `type:"structure"`

	// The name of the step action.
	Action *string `locationName:"action" type:"string"`

	// The Amazon Resource Name (ARN) of the image build version that ran the workflow.
	ImageBuildVersionArn *string `locationName:"imageBuildVersionArn" type:"string"`

	// The name of the workflow step.
	Name *string `locationName:"name" type:"string"`

	// The timestamp when the workflow step started.
	StartTime *string `locationName:"startTime" type:"string"`

	// Uniquely identifies the workflow step that ran for the associated image build
	// version.
	StepExecutionId *string `locationName:"stepExecutionId" type:"string"`

	// The ARN of the workflow resource that ran.
	WorkflowBuildVersionArn *string `locationName:"workflowBuildVersionArn" type:"string"`

	// Uniquely identifies the runtime instance of the workflow that contains the
	// workflow step that ran for the associated image build version.
	WorkflowExecutionId *string `locationName:"workflowExecutionId" 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 WorkflowStepExecution) 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 WorkflowStepExecution) GoString() string {
	return s.String()
}

// SetAction sets the Action field's value.
func (s *WorkflowStepExecution) SetAction(v string) *WorkflowStepExecution {
	s.Action = &v
	return s
}

// SetImageBuildVersionArn sets the ImageBuildVersionArn field's value.
func (s *WorkflowStepExecution) SetImageBuildVersionArn(v string) *WorkflowStepExecution {
	s.ImageBuildVersionArn = &v
	return s
}

// SetName sets the Name field's value.
func (s *WorkflowStepExecution) SetName(v string) *WorkflowStepExecution {
	s.Name = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *WorkflowStepExecution) SetStartTime(v string) *WorkflowStepExecution {
	s.StartTime = &v
	return s
}

// SetStepExecutionId sets the StepExecutionId field's value.
func (s *WorkflowStepExecution) SetStepExecutionId(v string) *WorkflowStepExecution {
	s.StepExecutionId = &v
	return s
}

// SetWorkflowBuildVersionArn sets the WorkflowBuildVersionArn field's value.
func (s *WorkflowStepExecution) SetWorkflowBuildVersionArn(v string) *WorkflowStepExecution {
	s.WorkflowBuildVersionArn = &v
	return s
}

// SetWorkflowExecutionId sets the WorkflowExecutionId field's value.
func (s *WorkflowStepExecution) SetWorkflowExecutionId(v string) *WorkflowStepExecution {
	s.WorkflowExecutionId = &v
	return s
}

// Runtime details and status for the workflow step.
type WorkflowStepMetadata struct {
	_ struct{} `type:"structure"`

	// The step action name.
	Action *string `locationName:"action" type:"string"`

	// Description of the workflow step.
	Description *string `locationName:"description" type:"string"`

	// The timestamp when the workflow step finished.
	EndTime *string `locationName:"endTime" type:"string"`

	// Input parameters that Image Builder provides for the workflow step.
	Inputs *string `locationName:"inputs" type:"string"`

	// Detailed output message that the workflow step provides at runtime.
	Message *string `locationName:"message" type:"string"`

	// The name of the workflow step.
	Name *string `locationName:"name" type:"string"`

	// The file names that the workflow step created as output for this runtime
	// instance of the workflow.
	Outputs *string `locationName:"outputs" type:"string"`

	// Reports on the rollback status of the step, if applicable.
	RollbackStatus *string `locationName:"rollbackStatus" type:"string" enum:"WorkflowStepExecutionRollbackStatus"`

	// The timestamp when the workflow step started.
	StartTime *string `locationName:"startTime" type:"string"`

	// Runtime status for the workflow step.
	Status *string `locationName:"status" type:"string" enum:"WorkflowStepExecutionStatus"`

	// A unique identifier for the workflow step, assigned at runtime.
	StepExecutionId *string `locationName:"stepExecutionId" 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 WorkflowStepMetadata) 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 WorkflowStepMetadata) GoString() string {
	return s.String()
}

// SetAction sets the Action field's value.
func (s *WorkflowStepMetadata) SetAction(v string) *WorkflowStepMetadata {
	s.Action = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *WorkflowStepMetadata) SetDescription(v string) *WorkflowStepMetadata {
	s.Description = &v
	return s
}

// SetEndTime sets the EndTime field's value.
func (s *WorkflowStepMetadata) SetEndTime(v string) *WorkflowStepMetadata {
	s.EndTime = &v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *WorkflowStepMetadata) SetInputs(v string) *WorkflowStepMetadata {
	s.Inputs = &v
	return s
}

// SetMessage sets the Message field's value.
func (s *WorkflowStepMetadata) SetMessage(v string) *WorkflowStepMetadata {
	s.Message = &v
	return s
}

// SetName sets the Name field's value.
func (s *WorkflowStepMetadata) SetName(v string) *WorkflowStepMetadata {
	s.Name = &v
	return s
}

// SetOutputs sets the Outputs field's value.
func (s *WorkflowStepMetadata) SetOutputs(v string) *WorkflowStepMetadata {
	s.Outputs = &v
	return s
}

// SetRollbackStatus sets the RollbackStatus field's value.
func (s *WorkflowStepMetadata) SetRollbackStatus(v string) *WorkflowStepMetadata {
	s.RollbackStatus = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *WorkflowStepMetadata) SetStartTime(v string) *WorkflowStepMetadata {
	s.StartTime = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *WorkflowStepMetadata) SetStatus(v string) *WorkflowStepMetadata {
	s.Status = &v
	return s
}

// SetStepExecutionId sets the StepExecutionId field's value.
func (s *WorkflowStepMetadata) SetStepExecutionId(v string) *WorkflowStepMetadata {
	s.StepExecutionId = &v
	return s
}

// Contains metadata about the workflow resource.
type WorkflowSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the workflow resource.
	Arn *string `locationName:"arn" type:"string"`

	// The change description for the current version of the workflow resource.
	ChangeDescription *string `locationName:"changeDescription" min:"1" type:"string"`

	// The original creation date of the workflow resource.
	DateCreated *string `locationName:"dateCreated" type:"string"`

	// Describes the workflow.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The name of the workflow.
	Name *string `locationName:"name" type:"string"`

	// The owner of the workflow resource.
	Owner *string `locationName:"owner" min:"1" type:"string"`

	// Describes the current state of the workflow resource.
	State *WorkflowState `locationName:"state" type:"structure"`

	// Contains a list of tags that are defined for the workflow.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`

	// The image creation stage that this workflow applies to. Image Builder currently
	// supports build and test stage workflows.
	Type *string `locationName:"type" type:"string" enum:"WorkflowType"`

	// The version of the workflow.
	Version *string `locationName:"version" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s WorkflowSummary) 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 WorkflowSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *WorkflowSummary) SetArn(v string) *WorkflowSummary {
	s.Arn = &v
	return s
}

// SetChangeDescription sets the ChangeDescription field's value.
func (s *WorkflowSummary) SetChangeDescription(v string) *WorkflowSummary {
	s.ChangeDescription = &v
	return s
}

// SetDateCreated sets the DateCreated field's value.
func (s *WorkflowSummary) SetDateCreated(v string) *WorkflowSummary {
	s.DateCreated = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *WorkflowSummary) SetDescription(v string) *WorkflowSummary {
	s.Description = &v
	return s
}

// SetName sets the Name field's value.
func (s *WorkflowSummary) SetName(v string) *WorkflowSummary {
	s.Name = &v
	return s
}

// SetOwner sets the Owner field's value.
func (s *WorkflowSummary) SetOwner(v string) *WorkflowSummary {
	s.Owner = &v
	return s
}

// SetState sets the State field's value.
func (s *WorkflowSummary) SetState(v *WorkflowState) *WorkflowSummary {
	s.State = v
	return s
}

// SetTags sets the Tags field's value.
func (s *WorkflowSummary) SetTags(v map[string]*string) *WorkflowSummary {
	s.Tags = v
	return s
}

// SetType sets the Type field's value.
func (s *WorkflowSummary) SetType(v string) *WorkflowSummary {
	s.Type = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *WorkflowSummary) SetVersion(v string) *WorkflowSummary {
	s.Version = &v
	return s
}

// Contains details about this version of the workflow.
type WorkflowVersion struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the workflow resource.
	Arn *string `locationName:"arn" type:"string"`

	// The timestamp when Image Builder created the workflow version.
	DateCreated *string `locationName:"dateCreated" type:"string"`

	// Describes the workflow.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The name of the workflow.
	Name *string `locationName:"name" type:"string"`

	// The owner of the workflow resource.
	Owner *string `locationName:"owner" min:"1" type:"string"`

	// The image creation stage that this workflow applies to. Image Builder currently
	// supports build and test stage workflows.
	Type *string `locationName:"type" type:"string" enum:"WorkflowType"`

	// The semantic version of the workflow resource. The format includes three
	// nodes: <major>.<minor>.<patch>.
	Version *string `locationName:"version" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s WorkflowVersion) 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 WorkflowVersion) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *WorkflowVersion) SetArn(v string) *WorkflowVersion {
	s.Arn = &v
	return s
}

// SetDateCreated sets the DateCreated field's value.
func (s *WorkflowVersion) SetDateCreated(v string) *WorkflowVersion {
	s.DateCreated = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *WorkflowVersion) SetDescription(v string) *WorkflowVersion {
	s.Description = &v
	return s
}

// SetName sets the Name field's value.
func (s *WorkflowVersion) SetName(v string) *WorkflowVersion {
	s.Name = &v
	return s
}

// SetOwner sets the Owner field's value.
func (s *WorkflowVersion) SetOwner(v string) *WorkflowVersion {
	s.Owner = &v
	return s
}

// SetType sets the Type field's value.
func (s *WorkflowVersion) SetType(v string) *WorkflowVersion {
	s.Type = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *WorkflowVersion) SetVersion(v string) *WorkflowVersion {
	s.Version = &v
	return s
}

const (
	// BuildTypeUserInitiated is a BuildType enum value
	BuildTypeUserInitiated = "USER_INITIATED"

	// BuildTypeScheduled is a BuildType enum value
	BuildTypeScheduled = "SCHEDULED"

	// BuildTypeImport is a BuildType enum value
	BuildTypeImport = "IMPORT"
)

// BuildType_Values returns all elements of the BuildType enum
func BuildType_Values() []string {
	return []string{
		BuildTypeUserInitiated,
		BuildTypeScheduled,
		BuildTypeImport,
	}
}

const (
	// ComponentFormatShell is a ComponentFormat enum value
	ComponentFormatShell = "SHELL"
)

// ComponentFormat_Values returns all elements of the ComponentFormat enum
func ComponentFormat_Values() []string {
	return []string{
		ComponentFormatShell,
	}
}

const (
	// ComponentStatusDeprecated is a ComponentStatus enum value
	ComponentStatusDeprecated = "DEPRECATED"
)

// ComponentStatus_Values returns all elements of the ComponentStatus enum
func ComponentStatus_Values() []string {
	return []string{
		ComponentStatusDeprecated,
	}
}

const (
	// ComponentTypeBuild is a ComponentType enum value
	ComponentTypeBuild = "BUILD"

	// ComponentTypeTest is a ComponentType enum value
	ComponentTypeTest = "TEST"
)

// ComponentType_Values returns all elements of the ComponentType enum
func ComponentType_Values() []string {
	return []string{
		ComponentTypeBuild,
		ComponentTypeTest,
	}
}

const (
	// ContainerRepositoryServiceEcr is a ContainerRepositoryService enum value
	ContainerRepositoryServiceEcr = "ECR"
)

// ContainerRepositoryService_Values returns all elements of the ContainerRepositoryService enum
func ContainerRepositoryService_Values() []string {
	return []string{
		ContainerRepositoryServiceEcr,
	}
}

const (
	// ContainerTypeDocker is a ContainerType enum value
	ContainerTypeDocker = "DOCKER"
)

// ContainerType_Values returns all elements of the ContainerType enum
func ContainerType_Values() []string {
	return []string{
		ContainerTypeDocker,
	}
}

const (
	// DiskImageFormatVmdk is a DiskImageFormat enum value
	DiskImageFormatVmdk = "VMDK"

	// DiskImageFormatRaw is a DiskImageFormat enum value
	DiskImageFormatRaw = "RAW"

	// DiskImageFormatVhd is a DiskImageFormat enum value
	DiskImageFormatVhd = "VHD"
)

// DiskImageFormat_Values returns all elements of the DiskImageFormat enum
func DiskImageFormat_Values() []string {
	return []string{
		DiskImageFormatVmdk,
		DiskImageFormatRaw,
		DiskImageFormatVhd,
	}
}

const (
	// EbsVolumeTypeStandard is a EbsVolumeType enum value
	EbsVolumeTypeStandard = "standard"

	// EbsVolumeTypeIo1 is a EbsVolumeType enum value
	EbsVolumeTypeIo1 = "io1"

	// EbsVolumeTypeIo2 is a EbsVolumeType enum value
	EbsVolumeTypeIo2 = "io2"

	// EbsVolumeTypeGp2 is a EbsVolumeType enum value
	EbsVolumeTypeGp2 = "gp2"

	// EbsVolumeTypeGp3 is a EbsVolumeType enum value
	EbsVolumeTypeGp3 = "gp3"

	// EbsVolumeTypeSc1 is a EbsVolumeType enum value
	EbsVolumeTypeSc1 = "sc1"

	// EbsVolumeTypeSt1 is a EbsVolumeType enum value
	EbsVolumeTypeSt1 = "st1"
)

// EbsVolumeType_Values returns all elements of the EbsVolumeType enum
func EbsVolumeType_Values() []string {
	return []string{
		EbsVolumeTypeStandard,
		EbsVolumeTypeIo1,
		EbsVolumeTypeIo2,
		EbsVolumeTypeGp2,
		EbsVolumeTypeGp3,
		EbsVolumeTypeSc1,
		EbsVolumeTypeSt1,
	}
}

const (
	// ImageScanStatusPending is a ImageScanStatus enum value
	ImageScanStatusPending = "PENDING"

	// ImageScanStatusScanning is a ImageScanStatus enum value
	ImageScanStatusScanning = "SCANNING"

	// ImageScanStatusCollecting is a ImageScanStatus enum value
	ImageScanStatusCollecting = "COLLECTING"

	// ImageScanStatusCompleted is a ImageScanStatus enum value
	ImageScanStatusCompleted = "COMPLETED"

	// ImageScanStatusAbandoned is a ImageScanStatus enum value
	ImageScanStatusAbandoned = "ABANDONED"

	// ImageScanStatusFailed is a ImageScanStatus enum value
	ImageScanStatusFailed = "FAILED"

	// ImageScanStatusTimedOut is a ImageScanStatus enum value
	ImageScanStatusTimedOut = "TIMED_OUT"
)

// ImageScanStatus_Values returns all elements of the ImageScanStatus enum
func ImageScanStatus_Values() []string {
	return []string{
		ImageScanStatusPending,
		ImageScanStatusScanning,
		ImageScanStatusCollecting,
		ImageScanStatusCompleted,
		ImageScanStatusAbandoned,
		ImageScanStatusFailed,
		ImageScanStatusTimedOut,
	}
}

const (
	// ImageSourceAmazonManaged is a ImageSource enum value
	ImageSourceAmazonManaged = "AMAZON_MANAGED"

	// ImageSourceAwsMarketplace is a ImageSource enum value
	ImageSourceAwsMarketplace = "AWS_MARKETPLACE"

	// ImageSourceImported is a ImageSource enum value
	ImageSourceImported = "IMPORTED"

	// ImageSourceCustom is a ImageSource enum value
	ImageSourceCustom = "CUSTOM"
)

// ImageSource_Values returns all elements of the ImageSource enum
func ImageSource_Values() []string {
	return []string{
		ImageSourceAmazonManaged,
		ImageSourceAwsMarketplace,
		ImageSourceImported,
		ImageSourceCustom,
	}
}

const (
	// ImageStatusPending is a ImageStatus enum value
	ImageStatusPending = "PENDING"

	// ImageStatusCreating is a ImageStatus enum value
	ImageStatusCreating = "CREATING"

	// ImageStatusBuilding is a ImageStatus enum value
	ImageStatusBuilding = "BUILDING"

	// ImageStatusTesting is a ImageStatus enum value
	ImageStatusTesting = "TESTING"

	// ImageStatusDistributing is a ImageStatus enum value
	ImageStatusDistributing = "DISTRIBUTING"

	// ImageStatusIntegrating is a ImageStatus enum value
	ImageStatusIntegrating = "INTEGRATING"

	// ImageStatusAvailable is a ImageStatus enum value
	ImageStatusAvailable = "AVAILABLE"

	// ImageStatusCancelled is a ImageStatus enum value
	ImageStatusCancelled = "CANCELLED"

	// ImageStatusFailed is a ImageStatus enum value
	ImageStatusFailed = "FAILED"

	// ImageStatusDeprecated is a ImageStatus enum value
	ImageStatusDeprecated = "DEPRECATED"

	// ImageStatusDeleted is a ImageStatus enum value
	ImageStatusDeleted = "DELETED"

	// ImageStatusDisabled is a ImageStatus enum value
	ImageStatusDisabled = "DISABLED"
)

// ImageStatus_Values returns all elements of the ImageStatus enum
func ImageStatus_Values() []string {
	return []string{
		ImageStatusPending,
		ImageStatusCreating,
		ImageStatusBuilding,
		ImageStatusTesting,
		ImageStatusDistributing,
		ImageStatusIntegrating,
		ImageStatusAvailable,
		ImageStatusCancelled,
		ImageStatusFailed,
		ImageStatusDeprecated,
		ImageStatusDeleted,
		ImageStatusDisabled,
	}
}

const (
	// ImageTypeAmi is a ImageType enum value
	ImageTypeAmi = "AMI"

	// ImageTypeDocker is a ImageType enum value
	ImageTypeDocker = "DOCKER"
)

// ImageType_Values returns all elements of the ImageType enum
func ImageType_Values() []string {
	return []string{
		ImageTypeAmi,
		ImageTypeDocker,
	}
}

const (
	// LifecycleExecutionResourceActionNameAvailable is a LifecycleExecutionResourceActionName enum value
	LifecycleExecutionResourceActionNameAvailable = "AVAILABLE"

	// LifecycleExecutionResourceActionNameDelete is a LifecycleExecutionResourceActionName enum value
	LifecycleExecutionResourceActionNameDelete = "DELETE"

	// LifecycleExecutionResourceActionNameDeprecate is a LifecycleExecutionResourceActionName enum value
	LifecycleExecutionResourceActionNameDeprecate = "DEPRECATE"

	// LifecycleExecutionResourceActionNameDisable is a LifecycleExecutionResourceActionName enum value
	LifecycleExecutionResourceActionNameDisable = "DISABLE"
)

// LifecycleExecutionResourceActionName_Values returns all elements of the LifecycleExecutionResourceActionName enum
func LifecycleExecutionResourceActionName_Values() []string {
	return []string{
		LifecycleExecutionResourceActionNameAvailable,
		LifecycleExecutionResourceActionNameDelete,
		LifecycleExecutionResourceActionNameDeprecate,
		LifecycleExecutionResourceActionNameDisable,
	}
}

const (
	// LifecycleExecutionResourceStatusFailed is a LifecycleExecutionResourceStatus enum value
	LifecycleExecutionResourceStatusFailed = "FAILED"

	// LifecycleExecutionResourceStatusInProgress is a LifecycleExecutionResourceStatus enum value
	LifecycleExecutionResourceStatusInProgress = "IN_PROGRESS"

	// LifecycleExecutionResourceStatusSkipped is a LifecycleExecutionResourceStatus enum value
	LifecycleExecutionResourceStatusSkipped = "SKIPPED"

	// LifecycleExecutionResourceStatusSuccess is a LifecycleExecutionResourceStatus enum value
	LifecycleExecutionResourceStatusSuccess = "SUCCESS"
)

// LifecycleExecutionResourceStatus_Values returns all elements of the LifecycleExecutionResourceStatus enum
func LifecycleExecutionResourceStatus_Values() []string {
	return []string{
		LifecycleExecutionResourceStatusFailed,
		LifecycleExecutionResourceStatusInProgress,
		LifecycleExecutionResourceStatusSkipped,
		LifecycleExecutionResourceStatusSuccess,
	}
}

const (
	// LifecycleExecutionStatusInProgress is a LifecycleExecutionStatus enum value
	LifecycleExecutionStatusInProgress = "IN_PROGRESS"

	// LifecycleExecutionStatusCancelled is a LifecycleExecutionStatus enum value
	LifecycleExecutionStatusCancelled = "CANCELLED"

	// LifecycleExecutionStatusCancelling is a LifecycleExecutionStatus enum value
	LifecycleExecutionStatusCancelling = "CANCELLING"

	// LifecycleExecutionStatusFailed is a LifecycleExecutionStatus enum value
	LifecycleExecutionStatusFailed = "FAILED"

	// LifecycleExecutionStatusSuccess is a LifecycleExecutionStatus enum value
	LifecycleExecutionStatusSuccess = "SUCCESS"

	// LifecycleExecutionStatusPending is a LifecycleExecutionStatus enum value
	LifecycleExecutionStatusPending = "PENDING"
)

// LifecycleExecutionStatus_Values returns all elements of the LifecycleExecutionStatus enum
func LifecycleExecutionStatus_Values() []string {
	return []string{
		LifecycleExecutionStatusInProgress,
		LifecycleExecutionStatusCancelled,
		LifecycleExecutionStatusCancelling,
		LifecycleExecutionStatusFailed,
		LifecycleExecutionStatusSuccess,
		LifecycleExecutionStatusPending,
	}
}

const (
	// LifecyclePolicyDetailActionTypeDelete is a LifecyclePolicyDetailActionType enum value
	LifecyclePolicyDetailActionTypeDelete = "DELETE"

	// LifecyclePolicyDetailActionTypeDeprecate is a LifecyclePolicyDetailActionType enum value
	LifecyclePolicyDetailActionTypeDeprecate = "DEPRECATE"

	// LifecyclePolicyDetailActionTypeDisable is a LifecyclePolicyDetailActionType enum value
	LifecyclePolicyDetailActionTypeDisable = "DISABLE"
)

// LifecyclePolicyDetailActionType_Values returns all elements of the LifecyclePolicyDetailActionType enum
func LifecyclePolicyDetailActionType_Values() []string {
	return []string{
		LifecyclePolicyDetailActionTypeDelete,
		LifecyclePolicyDetailActionTypeDeprecate,
		LifecyclePolicyDetailActionTypeDisable,
	}
}

const (
	// LifecyclePolicyDetailFilterTypeAge is a LifecyclePolicyDetailFilterType enum value
	LifecyclePolicyDetailFilterTypeAge = "AGE"

	// LifecyclePolicyDetailFilterTypeCount is a LifecyclePolicyDetailFilterType enum value
	LifecyclePolicyDetailFilterTypeCount = "COUNT"
)

// LifecyclePolicyDetailFilterType_Values returns all elements of the LifecyclePolicyDetailFilterType enum
func LifecyclePolicyDetailFilterType_Values() []string {
	return []string{
		LifecyclePolicyDetailFilterTypeAge,
		LifecyclePolicyDetailFilterTypeCount,
	}
}

const (
	// LifecyclePolicyResourceTypeAmiImage is a LifecyclePolicyResourceType enum value
	LifecyclePolicyResourceTypeAmiImage = "AMI_IMAGE"

	// LifecyclePolicyResourceTypeContainerImage is a LifecyclePolicyResourceType enum value
	LifecyclePolicyResourceTypeContainerImage = "CONTAINER_IMAGE"
)

// LifecyclePolicyResourceType_Values returns all elements of the LifecyclePolicyResourceType enum
func LifecyclePolicyResourceType_Values() []string {
	return []string{
		LifecyclePolicyResourceTypeAmiImage,
		LifecyclePolicyResourceTypeContainerImage,
	}
}

const (
	// LifecyclePolicyStatusDisabled is a LifecyclePolicyStatus enum value
	LifecyclePolicyStatusDisabled = "DISABLED"

	// LifecyclePolicyStatusEnabled is a LifecyclePolicyStatus enum value
	LifecyclePolicyStatusEnabled = "ENABLED"
)

// LifecyclePolicyStatus_Values returns all elements of the LifecyclePolicyStatus enum
func LifecyclePolicyStatus_Values() []string {
	return []string{
		LifecyclePolicyStatusDisabled,
		LifecyclePolicyStatusEnabled,
	}
}

const (
	// LifecyclePolicyTimeUnitDays is a LifecyclePolicyTimeUnit enum value
	LifecyclePolicyTimeUnitDays = "DAYS"

	// LifecyclePolicyTimeUnitWeeks is a LifecyclePolicyTimeUnit enum value
	LifecyclePolicyTimeUnitWeeks = "WEEKS"

	// LifecyclePolicyTimeUnitMonths is a LifecyclePolicyTimeUnit enum value
	LifecyclePolicyTimeUnitMonths = "MONTHS"

	// LifecyclePolicyTimeUnitYears is a LifecyclePolicyTimeUnit enum value
	LifecyclePolicyTimeUnitYears = "YEARS"
)

// LifecyclePolicyTimeUnit_Values returns all elements of the LifecyclePolicyTimeUnit enum
func LifecyclePolicyTimeUnit_Values() []string {
	return []string{
		LifecyclePolicyTimeUnitDays,
		LifecyclePolicyTimeUnitWeeks,
		LifecyclePolicyTimeUnitMonths,
		LifecyclePolicyTimeUnitYears,
	}
}

const (
	// OnWorkflowFailureContinue is a OnWorkflowFailure enum value
	OnWorkflowFailureContinue = "CONTINUE"

	// OnWorkflowFailureAbort is a OnWorkflowFailure enum value
	OnWorkflowFailureAbort = "ABORT"
)

// OnWorkflowFailure_Values returns all elements of the OnWorkflowFailure enum
func OnWorkflowFailure_Values() []string {
	return []string{
		OnWorkflowFailureContinue,
		OnWorkflowFailureAbort,
	}
}

const (
	// OwnershipSelf is a Ownership enum value
	OwnershipSelf = "Self"

	// OwnershipShared is a Ownership enum value
	OwnershipShared = "Shared"

	// OwnershipAmazon is a Ownership enum value
	OwnershipAmazon = "Amazon"

	// OwnershipThirdParty is a Ownership enum value
	OwnershipThirdParty = "ThirdParty"
)

// Ownership_Values returns all elements of the Ownership enum
func Ownership_Values() []string {
	return []string{
		OwnershipSelf,
		OwnershipShared,
		OwnershipAmazon,
		OwnershipThirdParty,
	}
}

const (
	// PipelineExecutionStartConditionExpressionMatchOnly is a PipelineExecutionStartCondition enum value
	PipelineExecutionStartConditionExpressionMatchOnly = "EXPRESSION_MATCH_ONLY"

	// PipelineExecutionStartConditionExpressionMatchAndDependencyUpdatesAvailable is a PipelineExecutionStartCondition enum value
	PipelineExecutionStartConditionExpressionMatchAndDependencyUpdatesAvailable = "EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE"
)

// PipelineExecutionStartCondition_Values returns all elements of the PipelineExecutionStartCondition enum
func PipelineExecutionStartCondition_Values() []string {
	return []string{
		PipelineExecutionStartConditionExpressionMatchOnly,
		PipelineExecutionStartConditionExpressionMatchAndDependencyUpdatesAvailable,
	}
}

const (
	// PipelineStatusDisabled is a PipelineStatus enum value
	PipelineStatusDisabled = "DISABLED"

	// PipelineStatusEnabled is a PipelineStatus enum value
	PipelineStatusEnabled = "ENABLED"
)

// PipelineStatus_Values returns all elements of the PipelineStatus enum
func PipelineStatus_Values() []string {
	return []string{
		PipelineStatusDisabled,
		PipelineStatusEnabled,
	}
}

const (
	// PlatformWindows is a Platform enum value
	PlatformWindows = "Windows"

	// PlatformLinux is a Platform enum value
	PlatformLinux = "Linux"
)

// Platform_Values returns all elements of the Platform enum
func Platform_Values() []string {
	return []string{
		PlatformWindows,
		PlatformLinux,
	}
}

const (
	// ResourceStatusAvailable is a ResourceStatus enum value
	ResourceStatusAvailable = "AVAILABLE"

	// ResourceStatusDeleted is a ResourceStatus enum value
	ResourceStatusDeleted = "DELETED"

	// ResourceStatusDeprecated is a ResourceStatus enum value
	ResourceStatusDeprecated = "DEPRECATED"

	// ResourceStatusDisabled is a ResourceStatus enum value
	ResourceStatusDisabled = "DISABLED"
)

// ResourceStatus_Values returns all elements of the ResourceStatus enum
func ResourceStatus_Values() []string {
	return []string{
		ResourceStatusAvailable,
		ResourceStatusDeleted,
		ResourceStatusDeprecated,
		ResourceStatusDisabled,
	}
}

const (
	// WorkflowExecutionStatusPending is a WorkflowExecutionStatus enum value
	WorkflowExecutionStatusPending = "PENDING"

	// WorkflowExecutionStatusSkipped is a WorkflowExecutionStatus enum value
	WorkflowExecutionStatusSkipped = "SKIPPED"

	// WorkflowExecutionStatusRunning is a WorkflowExecutionStatus enum value
	WorkflowExecutionStatusRunning = "RUNNING"

	// WorkflowExecutionStatusCompleted is a WorkflowExecutionStatus enum value
	WorkflowExecutionStatusCompleted = "COMPLETED"

	// WorkflowExecutionStatusFailed is a WorkflowExecutionStatus enum value
	WorkflowExecutionStatusFailed = "FAILED"

	// WorkflowExecutionStatusRollbackInProgress is a WorkflowExecutionStatus enum value
	WorkflowExecutionStatusRollbackInProgress = "ROLLBACK_IN_PROGRESS"

	// WorkflowExecutionStatusRollbackCompleted is a WorkflowExecutionStatus enum value
	WorkflowExecutionStatusRollbackCompleted = "ROLLBACK_COMPLETED"

	// WorkflowExecutionStatusCancelled is a WorkflowExecutionStatus enum value
	WorkflowExecutionStatusCancelled = "CANCELLED"
)

// WorkflowExecutionStatus_Values returns all elements of the WorkflowExecutionStatus enum
func WorkflowExecutionStatus_Values() []string {
	return []string{
		WorkflowExecutionStatusPending,
		WorkflowExecutionStatusSkipped,
		WorkflowExecutionStatusRunning,
		WorkflowExecutionStatusCompleted,
		WorkflowExecutionStatusFailed,
		WorkflowExecutionStatusRollbackInProgress,
		WorkflowExecutionStatusRollbackCompleted,
		WorkflowExecutionStatusCancelled,
	}
}

const (
	// WorkflowStatusDeprecated is a WorkflowStatus enum value
	WorkflowStatusDeprecated = "DEPRECATED"
)

// WorkflowStatus_Values returns all elements of the WorkflowStatus enum
func WorkflowStatus_Values() []string {
	return []string{
		WorkflowStatusDeprecated,
	}
}

const (
	// WorkflowStepActionTypeResume is a WorkflowStepActionType enum value
	WorkflowStepActionTypeResume = "RESUME"

	// WorkflowStepActionTypeStop is a WorkflowStepActionType enum value
	WorkflowStepActionTypeStop = "STOP"
)

// WorkflowStepActionType_Values returns all elements of the WorkflowStepActionType enum
func WorkflowStepActionType_Values() []string {
	return []string{
		WorkflowStepActionTypeResume,
		WorkflowStepActionTypeStop,
	}
}

const (
	// WorkflowStepExecutionRollbackStatusRunning is a WorkflowStepExecutionRollbackStatus enum value
	WorkflowStepExecutionRollbackStatusRunning = "RUNNING"

	// WorkflowStepExecutionRollbackStatusCompleted is a WorkflowStepExecutionRollbackStatus enum value
	WorkflowStepExecutionRollbackStatusCompleted = "COMPLETED"

	// WorkflowStepExecutionRollbackStatusSkipped is a WorkflowStepExecutionRollbackStatus enum value
	WorkflowStepExecutionRollbackStatusSkipped = "SKIPPED"

	// WorkflowStepExecutionRollbackStatusFailed is a WorkflowStepExecutionRollbackStatus enum value
	WorkflowStepExecutionRollbackStatusFailed = "FAILED"
)

// WorkflowStepExecutionRollbackStatus_Values returns all elements of the WorkflowStepExecutionRollbackStatus enum
func WorkflowStepExecutionRollbackStatus_Values() []string {
	return []string{
		WorkflowStepExecutionRollbackStatusRunning,
		WorkflowStepExecutionRollbackStatusCompleted,
		WorkflowStepExecutionRollbackStatusSkipped,
		WorkflowStepExecutionRollbackStatusFailed,
	}
}

const (
	// WorkflowStepExecutionStatusPending is a WorkflowStepExecutionStatus enum value
	WorkflowStepExecutionStatusPending = "PENDING"

	// WorkflowStepExecutionStatusSkipped is a WorkflowStepExecutionStatus enum value
	WorkflowStepExecutionStatusSkipped = "SKIPPED"

	// WorkflowStepExecutionStatusRunning is a WorkflowStepExecutionStatus enum value
	WorkflowStepExecutionStatusRunning = "RUNNING"

	// WorkflowStepExecutionStatusCompleted is a WorkflowStepExecutionStatus enum value
	WorkflowStepExecutionStatusCompleted = "COMPLETED"

	// WorkflowStepExecutionStatusFailed is a WorkflowStepExecutionStatus enum value
	WorkflowStepExecutionStatusFailed = "FAILED"

	// WorkflowStepExecutionStatusCancelled is a WorkflowStepExecutionStatus enum value
	WorkflowStepExecutionStatusCancelled = "CANCELLED"
)

// WorkflowStepExecutionStatus_Values returns all elements of the WorkflowStepExecutionStatus enum
func WorkflowStepExecutionStatus_Values() []string {
	return []string{
		WorkflowStepExecutionStatusPending,
		WorkflowStepExecutionStatusSkipped,
		WorkflowStepExecutionStatusRunning,
		WorkflowStepExecutionStatusCompleted,
		WorkflowStepExecutionStatusFailed,
		WorkflowStepExecutionStatusCancelled,
	}
}

const (
	// WorkflowTypeBuild is a WorkflowType enum value
	WorkflowTypeBuild = "BUILD"

	// WorkflowTypeTest is a WorkflowType enum value
	WorkflowTypeTest = "TEST"

	// WorkflowTypeDistribution is a WorkflowType enum value
	WorkflowTypeDistribution = "DISTRIBUTION"
)

// WorkflowType_Values returns all elements of the WorkflowType enum
func WorkflowType_Values() []string {
	return []string{
		WorkflowTypeBuild,
		WorkflowTypeTest,
		WorkflowTypeDistribution,
	}
}
