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

package securityhub

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 opAcceptAdministratorInvitation = "AcceptAdministratorInvitation"

// AcceptAdministratorInvitationRequest generates a "aws/request.Request" representing the
// client's request for the AcceptAdministratorInvitation 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 AcceptAdministratorInvitation for more information on using the AcceptAdministratorInvitation
// 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 AcceptAdministratorInvitationRequest method.
//	req, resp := client.AcceptAdministratorInvitationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/AcceptAdministratorInvitation
func (c *SecurityHub) AcceptAdministratorInvitationRequest(input *AcceptAdministratorInvitationInput) (req *request.Request, output *AcceptAdministratorInvitationOutput) {
	op := &request.Operation{
		Name:       opAcceptAdministratorInvitation,
		HTTPMethod: "POST",
		HTTPPath:   "/administrator",
	}

	if input == nil {
		input = &AcceptAdministratorInvitationInput{}
	}

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

// AcceptAdministratorInvitation API operation for AWS SecurityHub.
//
// Accepts the invitation to be a member account and be monitored by the Security
// Hub administrator account that the invitation was sent from.
//
// This operation is only used by member accounts that are not added through
// Organizations.
//
// When the member account accepts the invitation, permission is granted to
// the administrator account to view findings generated in the member account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation AcceptAdministratorInvitation for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/AcceptAdministratorInvitation
func (c *SecurityHub) AcceptAdministratorInvitation(input *AcceptAdministratorInvitationInput) (*AcceptAdministratorInvitationOutput, error) {
	req, out := c.AcceptAdministratorInvitationRequest(input)
	return out, req.Send()
}

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

const opAcceptInvitation = "AcceptInvitation"

// AcceptInvitationRequest generates a "aws/request.Request" representing the
// client's request for the AcceptInvitation 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 AcceptInvitation for more information on using the AcceptInvitation
// 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 AcceptInvitationRequest method.
//	req, resp := client.AcceptInvitationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/AcceptInvitation
//
// Deprecated: This API has been deprecated, use AcceptAdministratorInvitation API instead.
func (c *SecurityHub) AcceptInvitationRequest(input *AcceptInvitationInput) (req *request.Request, output *AcceptInvitationOutput) {
	if c.Client.Config.Logger != nil {
		c.Client.Config.Logger.Log("This operation, AcceptInvitation, has been deprecated")
	}
	op := &request.Operation{
		Name:       opAcceptInvitation,
		HTTPMethod: "POST",
		HTTPPath:   "/master",
	}

	if input == nil {
		input = &AcceptInvitationInput{}
	}

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

// AcceptInvitation API operation for AWS SecurityHub.
//
// This method is deprecated. Instead, use AcceptAdministratorInvitation.
//
// The Security Hub console continues to use AcceptInvitation. It will eventually
// change to use AcceptAdministratorInvitation. Any IAM policies that specifically
// control access to this function must continue to use AcceptInvitation. You
// should also add AcceptAdministratorInvitation to your policies to ensure
// that the correct permissions are in place after the console begins to use
// AcceptAdministratorInvitation.
//
// Accepts the invitation to be a member account and be monitored by the Security
// Hub administrator account that the invitation was sent from.
//
// This operation is only used by member accounts that are not added through
// Organizations.
//
// When the member account accepts the invitation, permission is granted to
// the administrator account to view findings generated in the member account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation AcceptInvitation for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/AcceptInvitation
//
// Deprecated: This API has been deprecated, use AcceptAdministratorInvitation API instead.
func (c *SecurityHub) AcceptInvitation(input *AcceptInvitationInput) (*AcceptInvitationOutput, error) {
	req, out := c.AcceptInvitationRequest(input)
	return out, req.Send()
}

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

const opBatchDeleteAutomationRules = "BatchDeleteAutomationRules"

// BatchDeleteAutomationRulesRequest generates a "aws/request.Request" representing the
// client's request for the BatchDeleteAutomationRules 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 BatchDeleteAutomationRules for more information on using the BatchDeleteAutomationRules
// 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 BatchDeleteAutomationRulesRequest method.
//	req, resp := client.BatchDeleteAutomationRulesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/BatchDeleteAutomationRules
func (c *SecurityHub) BatchDeleteAutomationRulesRequest(input *BatchDeleteAutomationRulesInput) (req *request.Request, output *BatchDeleteAutomationRulesOutput) {
	op := &request.Operation{
		Name:       opBatchDeleteAutomationRules,
		HTTPMethod: "POST",
		HTTPPath:   "/automationrules/delete",
	}

	if input == nil {
		input = &BatchDeleteAutomationRulesInput{}
	}

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

// BatchDeleteAutomationRules API operation for AWS SecurityHub.
//
// Deletes one or more automation rules.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation BatchDeleteAutomationRules for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/BatchDeleteAutomationRules
func (c *SecurityHub) BatchDeleteAutomationRules(input *BatchDeleteAutomationRulesInput) (*BatchDeleteAutomationRulesOutput, error) {
	req, out := c.BatchDeleteAutomationRulesRequest(input)
	return out, req.Send()
}

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

const opBatchDisableStandards = "BatchDisableStandards"

// BatchDisableStandardsRequest generates a "aws/request.Request" representing the
// client's request for the BatchDisableStandards 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 BatchDisableStandards for more information on using the BatchDisableStandards
// 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 BatchDisableStandardsRequest method.
//	req, resp := client.BatchDisableStandardsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/BatchDisableStandards
func (c *SecurityHub) BatchDisableStandardsRequest(input *BatchDisableStandardsInput) (req *request.Request, output *BatchDisableStandardsOutput) {
	op := &request.Operation{
		Name:       opBatchDisableStandards,
		HTTPMethod: "POST",
		HTTPPath:   "/standards/deregister",
	}

	if input == nil {
		input = &BatchDisableStandardsInput{}
	}

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

// BatchDisableStandards API operation for AWS SecurityHub.
//
// Disables the standards specified by the provided StandardsSubscriptionArns.
//
// For more information, see Security Standards (https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-standards.html)
// section of the Security Hub User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation BatchDisableStandards for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/BatchDisableStandards
func (c *SecurityHub) BatchDisableStandards(input *BatchDisableStandardsInput) (*BatchDisableStandardsOutput, error) {
	req, out := c.BatchDisableStandardsRequest(input)
	return out, req.Send()
}

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

const opBatchEnableStandards = "BatchEnableStandards"

// BatchEnableStandardsRequest generates a "aws/request.Request" representing the
// client's request for the BatchEnableStandards 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 BatchEnableStandards for more information on using the BatchEnableStandards
// 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 BatchEnableStandardsRequest method.
//	req, resp := client.BatchEnableStandardsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/BatchEnableStandards
func (c *SecurityHub) BatchEnableStandardsRequest(input *BatchEnableStandardsInput) (req *request.Request, output *BatchEnableStandardsOutput) {
	op := &request.Operation{
		Name:       opBatchEnableStandards,
		HTTPMethod: "POST",
		HTTPPath:   "/standards/register",
	}

	if input == nil {
		input = &BatchEnableStandardsInput{}
	}

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

// BatchEnableStandards API operation for AWS SecurityHub.
//
// Enables the standards specified by the provided StandardsArn. To obtain the
// ARN for a standard, use the DescribeStandards operation.
//
// For more information, see the Security Standards (https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-standards.html)
// section of the Security Hub User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation BatchEnableStandards for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/BatchEnableStandards
func (c *SecurityHub) BatchEnableStandards(input *BatchEnableStandardsInput) (*BatchEnableStandardsOutput, error) {
	req, out := c.BatchEnableStandardsRequest(input)
	return out, req.Send()
}

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

const opBatchGetAutomationRules = "BatchGetAutomationRules"

// BatchGetAutomationRulesRequest generates a "aws/request.Request" representing the
// client's request for the BatchGetAutomationRules 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 BatchGetAutomationRules for more information on using the BatchGetAutomationRules
// 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 BatchGetAutomationRulesRequest method.
//	req, resp := client.BatchGetAutomationRulesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/BatchGetAutomationRules
func (c *SecurityHub) BatchGetAutomationRulesRequest(input *BatchGetAutomationRulesInput) (req *request.Request, output *BatchGetAutomationRulesOutput) {
	op := &request.Operation{
		Name:       opBatchGetAutomationRules,
		HTTPMethod: "POST",
		HTTPPath:   "/automationrules/get",
	}

	if input == nil {
		input = &BatchGetAutomationRulesInput{}
	}

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

// BatchGetAutomationRules API operation for AWS SecurityHub.
//
// Retrieves a list of details for automation rules based on rule Amazon Resource
// Names (ARNs).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation BatchGetAutomationRules for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
//   - InternalException
//     Internal server error.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/BatchGetAutomationRules
func (c *SecurityHub) BatchGetAutomationRules(input *BatchGetAutomationRulesInput) (*BatchGetAutomationRulesOutput, error) {
	req, out := c.BatchGetAutomationRulesRequest(input)
	return out, req.Send()
}

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

const opBatchGetConfigurationPolicyAssociations = "BatchGetConfigurationPolicyAssociations"

// BatchGetConfigurationPolicyAssociationsRequest generates a "aws/request.Request" representing the
// client's request for the BatchGetConfigurationPolicyAssociations 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 BatchGetConfigurationPolicyAssociations for more information on using the BatchGetConfigurationPolicyAssociations
// 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 BatchGetConfigurationPolicyAssociationsRequest method.
//	req, resp := client.BatchGetConfigurationPolicyAssociationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/BatchGetConfigurationPolicyAssociations
func (c *SecurityHub) BatchGetConfigurationPolicyAssociationsRequest(input *BatchGetConfigurationPolicyAssociationsInput) (req *request.Request, output *BatchGetConfigurationPolicyAssociationsOutput) {
	op := &request.Operation{
		Name:       opBatchGetConfigurationPolicyAssociations,
		HTTPMethod: "POST",
		HTTPPath:   "/configurationPolicyAssociation/batchget",
	}

	if input == nil {
		input = &BatchGetConfigurationPolicyAssociationsInput{}
	}

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

// BatchGetConfigurationPolicyAssociations API operation for AWS SecurityHub.
//
// Returns associations between an Security Hub configuration and a batch of
// target accounts, organizational units, or the root. Only the Security Hub
// delegated administrator can invoke this operation from the home Region. A
// configuration can refer to a configuration policy or to a self-managed 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 AWS SecurityHub's
// API operation BatchGetConfigurationPolicyAssociations for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/BatchGetConfigurationPolicyAssociations
func (c *SecurityHub) BatchGetConfigurationPolicyAssociations(input *BatchGetConfigurationPolicyAssociationsInput) (*BatchGetConfigurationPolicyAssociationsOutput, error) {
	req, out := c.BatchGetConfigurationPolicyAssociationsRequest(input)
	return out, req.Send()
}

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

const opBatchGetSecurityControls = "BatchGetSecurityControls"

// BatchGetSecurityControlsRequest generates a "aws/request.Request" representing the
// client's request for the BatchGetSecurityControls 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 BatchGetSecurityControls for more information on using the BatchGetSecurityControls
// 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 BatchGetSecurityControlsRequest method.
//	req, resp := client.BatchGetSecurityControlsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/BatchGetSecurityControls
func (c *SecurityHub) BatchGetSecurityControlsRequest(input *BatchGetSecurityControlsInput) (req *request.Request, output *BatchGetSecurityControlsOutput) {
	op := &request.Operation{
		Name:       opBatchGetSecurityControls,
		HTTPMethod: "POST",
		HTTPPath:   "/securityControls/batchGet",
	}

	if input == nil {
		input = &BatchGetSecurityControlsInput{}
	}

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

// BatchGetSecurityControls API operation for AWS SecurityHub.
//
// Provides details about a batch of security controls for the current Amazon
// Web Services account and Amazon Web Services Region.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation BatchGetSecurityControls for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/BatchGetSecurityControls
func (c *SecurityHub) BatchGetSecurityControls(input *BatchGetSecurityControlsInput) (*BatchGetSecurityControlsOutput, error) {
	req, out := c.BatchGetSecurityControlsRequest(input)
	return out, req.Send()
}

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

const opBatchGetStandardsControlAssociations = "BatchGetStandardsControlAssociations"

// BatchGetStandardsControlAssociationsRequest generates a "aws/request.Request" representing the
// client's request for the BatchGetStandardsControlAssociations 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 BatchGetStandardsControlAssociations for more information on using the BatchGetStandardsControlAssociations
// 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 BatchGetStandardsControlAssociationsRequest method.
//	req, resp := client.BatchGetStandardsControlAssociationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/BatchGetStandardsControlAssociations
func (c *SecurityHub) BatchGetStandardsControlAssociationsRequest(input *BatchGetStandardsControlAssociationsInput) (req *request.Request, output *BatchGetStandardsControlAssociationsOutput) {
	op := &request.Operation{
		Name:       opBatchGetStandardsControlAssociations,
		HTTPMethod: "POST",
		HTTPPath:   "/associations/batchGet",
	}

	if input == nil {
		input = &BatchGetStandardsControlAssociationsInput{}
	}

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

// BatchGetStandardsControlAssociations API operation for AWS SecurityHub.
//
// For a batch of security controls and standards, identifies whether each control
// is currently enabled or disabled in a standard.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation BatchGetStandardsControlAssociations for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/BatchGetStandardsControlAssociations
func (c *SecurityHub) BatchGetStandardsControlAssociations(input *BatchGetStandardsControlAssociationsInput) (*BatchGetStandardsControlAssociationsOutput, error) {
	req, out := c.BatchGetStandardsControlAssociationsRequest(input)
	return out, req.Send()
}

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

const opBatchImportFindings = "BatchImportFindings"

// BatchImportFindingsRequest generates a "aws/request.Request" representing the
// client's request for the BatchImportFindings 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 BatchImportFindings for more information on using the BatchImportFindings
// 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 BatchImportFindingsRequest method.
//	req, resp := client.BatchImportFindingsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/BatchImportFindings
func (c *SecurityHub) BatchImportFindingsRequest(input *BatchImportFindingsInput) (req *request.Request, output *BatchImportFindingsOutput) {
	op := &request.Operation{
		Name:       opBatchImportFindings,
		HTTPMethod: "POST",
		HTTPPath:   "/findings/import",
	}

	if input == nil {
		input = &BatchImportFindingsInput{}
	}

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

// BatchImportFindings API operation for AWS SecurityHub.
//
// Imports security findings generated by a finding provider into Security Hub.
// This action is requested by the finding provider to import its findings into
// Security Hub.
//
// BatchImportFindings must be called by one of the following:
//
//   - The Amazon Web Services account that is associated with a finding if
//     you are using the default product ARN (https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-custom-providers.html#securityhub-custom-providers-bfi-reqs)
//     or are a partner sending findings from within a customer's Amazon Web
//     Services account. In these cases, the identifier of the account that you
//     are calling BatchImportFindings from needs to be the same as the AwsAccountId
//     attribute for the finding.
//
//   - An Amazon Web Services account that Security Hub has allow-listed for
//     an official partner integration. In this case, you can call BatchImportFindings
//     from the allow-listed account and send findings from different customer
//     accounts in the same batch.
//
// The maximum allowed size for a finding is 240 Kb. An error is returned for
// any finding larger than 240 Kb.
//
// After a finding is created, BatchImportFindings cannot be used to update
// the following finding fields and objects, which Security Hub customers use
// to manage their investigation workflow.
//
//   - Note
//
//   - UserDefinedFields
//
//   - VerificationState
//
//   - Workflow
//
// Finding providers also should not use BatchImportFindings to update the following
// attributes.
//
//   - Confidence
//
//   - Criticality
//
//   - RelatedFindings
//
//   - Severity
//
//   - Types
//
// Instead, finding providers use FindingProviderFields to provide values for
// these attributes.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation BatchImportFindings for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/BatchImportFindings
func (c *SecurityHub) BatchImportFindings(input *BatchImportFindingsInput) (*BatchImportFindingsOutput, error) {
	req, out := c.BatchImportFindingsRequest(input)
	return out, req.Send()
}

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

const opBatchUpdateAutomationRules = "BatchUpdateAutomationRules"

// BatchUpdateAutomationRulesRequest generates a "aws/request.Request" representing the
// client's request for the BatchUpdateAutomationRules 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 BatchUpdateAutomationRules for more information on using the BatchUpdateAutomationRules
// 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 BatchUpdateAutomationRulesRequest method.
//	req, resp := client.BatchUpdateAutomationRulesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/BatchUpdateAutomationRules
func (c *SecurityHub) BatchUpdateAutomationRulesRequest(input *BatchUpdateAutomationRulesInput) (req *request.Request, output *BatchUpdateAutomationRulesOutput) {
	op := &request.Operation{
		Name:       opBatchUpdateAutomationRules,
		HTTPMethod: "PATCH",
		HTTPPath:   "/automationrules/update",
	}

	if input == nil {
		input = &BatchUpdateAutomationRulesInput{}
	}

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

// BatchUpdateAutomationRules API operation for AWS SecurityHub.
//
// Updates one or more automation rules based on rule Amazon Resource Names
// (ARNs) and input parameters.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation BatchUpdateAutomationRules for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/BatchUpdateAutomationRules
func (c *SecurityHub) BatchUpdateAutomationRules(input *BatchUpdateAutomationRulesInput) (*BatchUpdateAutomationRulesOutput, error) {
	req, out := c.BatchUpdateAutomationRulesRequest(input)
	return out, req.Send()
}

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

const opBatchUpdateFindings = "BatchUpdateFindings"

// BatchUpdateFindingsRequest generates a "aws/request.Request" representing the
// client's request for the BatchUpdateFindings 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 BatchUpdateFindings for more information on using the BatchUpdateFindings
// 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 BatchUpdateFindingsRequest method.
//	req, resp := client.BatchUpdateFindingsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/BatchUpdateFindings
func (c *SecurityHub) BatchUpdateFindingsRequest(input *BatchUpdateFindingsInput) (req *request.Request, output *BatchUpdateFindingsOutput) {
	op := &request.Operation{
		Name:       opBatchUpdateFindings,
		HTTPMethod: "PATCH",
		HTTPPath:   "/findings/batchupdate",
	}

	if input == nil {
		input = &BatchUpdateFindingsInput{}
	}

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

// BatchUpdateFindings API operation for AWS SecurityHub.
//
// Used by Security Hub customers to update information about their investigation
// into a finding. Requested by administrator accounts or member accounts. Administrator
// accounts can update findings for their account and their member accounts.
// Member accounts can update findings for their account.
//
// Updates from BatchUpdateFindings do not affect the value of UpdatedAt for
// a finding.
//
// Administrator and member accounts can use BatchUpdateFindings to update the
// following finding fields and objects.
//
//   - Confidence
//
//   - Criticality
//
//   - Note
//
//   - RelatedFindings
//
//   - Severity
//
//   - Types
//
//   - UserDefinedFields
//
//   - VerificationState
//
//   - Workflow
//
// You can configure IAM policies to restrict access to fields and field values.
// For example, you might not want member accounts to be able to suppress findings
// or change the finding severity. See Configuring access to BatchUpdateFindings
// (https://docs.aws.amazon.com/securityhub/latest/userguide/finding-update-batchupdatefindings.html#batchupdatefindings-configure-access)
// in the Security Hub User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation BatchUpdateFindings for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/BatchUpdateFindings
func (c *SecurityHub) BatchUpdateFindings(input *BatchUpdateFindingsInput) (*BatchUpdateFindingsOutput, error) {
	req, out := c.BatchUpdateFindingsRequest(input)
	return out, req.Send()
}

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

const opBatchUpdateStandardsControlAssociations = "BatchUpdateStandardsControlAssociations"

// BatchUpdateStandardsControlAssociationsRequest generates a "aws/request.Request" representing the
// client's request for the BatchUpdateStandardsControlAssociations 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 BatchUpdateStandardsControlAssociations for more information on using the BatchUpdateStandardsControlAssociations
// 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 BatchUpdateStandardsControlAssociationsRequest method.
//	req, resp := client.BatchUpdateStandardsControlAssociationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/BatchUpdateStandardsControlAssociations
func (c *SecurityHub) BatchUpdateStandardsControlAssociationsRequest(input *BatchUpdateStandardsControlAssociationsInput) (req *request.Request, output *BatchUpdateStandardsControlAssociationsOutput) {
	op := &request.Operation{
		Name:       opBatchUpdateStandardsControlAssociations,
		HTTPMethod: "PATCH",
		HTTPPath:   "/associations",
	}

	if input == nil {
		input = &BatchUpdateStandardsControlAssociationsInput{}
	}

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

// BatchUpdateStandardsControlAssociations API operation for AWS SecurityHub.
//
// For a batch of security controls and standards, this operation updates the
// enablement status of a control in a standard.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation BatchUpdateStandardsControlAssociations for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/BatchUpdateStandardsControlAssociations
func (c *SecurityHub) BatchUpdateStandardsControlAssociations(input *BatchUpdateStandardsControlAssociationsInput) (*BatchUpdateStandardsControlAssociationsOutput, error) {
	req, out := c.BatchUpdateStandardsControlAssociationsRequest(input)
	return out, req.Send()
}

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

const opCreateActionTarget = "CreateActionTarget"

// CreateActionTargetRequest generates a "aws/request.Request" representing the
// client's request for the CreateActionTarget 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 CreateActionTarget for more information on using the CreateActionTarget
// 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 CreateActionTargetRequest method.
//	req, resp := client.CreateActionTargetRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/CreateActionTarget
func (c *SecurityHub) CreateActionTargetRequest(input *CreateActionTargetInput) (req *request.Request, output *CreateActionTargetOutput) {
	op := &request.Operation{
		Name:       opCreateActionTarget,
		HTTPMethod: "POST",
		HTTPPath:   "/actionTargets",
	}

	if input == nil {
		input = &CreateActionTargetInput{}
	}

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

// CreateActionTarget API operation for AWS SecurityHub.
//
// Creates a custom action target in Security Hub.
//
// You can use custom actions on findings and insights in Security Hub to trigger
// target actions in Amazon CloudWatch Events.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation CreateActionTarget for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceConflictException
//     The resource specified in the request conflicts with an existing resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/CreateActionTarget
func (c *SecurityHub) CreateActionTarget(input *CreateActionTargetInput) (*CreateActionTargetOutput, error) {
	req, out := c.CreateActionTargetRequest(input)
	return out, req.Send()
}

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

const opCreateAutomationRule = "CreateAutomationRule"

// CreateAutomationRuleRequest generates a "aws/request.Request" representing the
// client's request for the CreateAutomationRule 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 CreateAutomationRule for more information on using the CreateAutomationRule
// 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 CreateAutomationRuleRequest method.
//	req, resp := client.CreateAutomationRuleRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/CreateAutomationRule
func (c *SecurityHub) CreateAutomationRuleRequest(input *CreateAutomationRuleInput) (req *request.Request, output *CreateAutomationRuleOutput) {
	op := &request.Operation{
		Name:       opCreateAutomationRule,
		HTTPMethod: "POST",
		HTTPPath:   "/automationrules/create",
	}

	if input == nil {
		input = &CreateAutomationRuleInput{}
	}

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

// CreateAutomationRule API operation for AWS SecurityHub.
//
// Creates an automation rule based on input parameters.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation CreateAutomationRule for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
//   - InternalException
//     Internal server error.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/CreateAutomationRule
func (c *SecurityHub) CreateAutomationRule(input *CreateAutomationRuleInput) (*CreateAutomationRuleOutput, error) {
	req, out := c.CreateAutomationRuleRequest(input)
	return out, req.Send()
}

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

const opCreateConfigurationPolicy = "CreateConfigurationPolicy"

// CreateConfigurationPolicyRequest generates a "aws/request.Request" representing the
// client's request for the CreateConfigurationPolicy 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 CreateConfigurationPolicy for more information on using the CreateConfigurationPolicy
// 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 CreateConfigurationPolicyRequest method.
//	req, resp := client.CreateConfigurationPolicyRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/CreateConfigurationPolicy
func (c *SecurityHub) CreateConfigurationPolicyRequest(input *CreateConfigurationPolicyInput) (req *request.Request, output *CreateConfigurationPolicyOutput) {
	op := &request.Operation{
		Name:       opCreateConfigurationPolicy,
		HTTPMethod: "POST",
		HTTPPath:   "/configurationPolicy/create",
	}

	if input == nil {
		input = &CreateConfigurationPolicyInput{}
	}

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

// CreateConfigurationPolicy API operation for AWS SecurityHub.
//
// Creates a configuration policy with the defined configuration. Only the Security
// Hub delegated administrator can invoke this operation from the home Region.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation CreateConfigurationPolicy for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
//   - ResourceConflictException
//     The resource specified in the request conflicts with an existing resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/CreateConfigurationPolicy
func (c *SecurityHub) CreateConfigurationPolicy(input *CreateConfigurationPolicyInput) (*CreateConfigurationPolicyOutput, error) {
	req, out := c.CreateConfigurationPolicyRequest(input)
	return out, req.Send()
}

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

const opCreateFindingAggregator = "CreateFindingAggregator"

// CreateFindingAggregatorRequest generates a "aws/request.Request" representing the
// client's request for the CreateFindingAggregator 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 CreateFindingAggregator for more information on using the CreateFindingAggregator
// 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 CreateFindingAggregatorRequest method.
//	req, resp := client.CreateFindingAggregatorRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/CreateFindingAggregator
func (c *SecurityHub) CreateFindingAggregatorRequest(input *CreateFindingAggregatorInput) (req *request.Request, output *CreateFindingAggregatorOutput) {
	op := &request.Operation{
		Name:       opCreateFindingAggregator,
		HTTPMethod: "POST",
		HTTPPath:   "/findingAggregator/create",
	}

	if input == nil {
		input = &CreateFindingAggregatorInput{}
	}

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

// CreateFindingAggregator API operation for AWS SecurityHub.
//
// Used to enable finding aggregation. Must be called from the aggregation Region.
//
// For more details about cross-Region replication, see Configuring finding
// aggregation (https://docs.aws.amazon.com/securityhub/latest/userguide/finding-aggregation.html)
// in the Security Hub User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation CreateFindingAggregator for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/CreateFindingAggregator
func (c *SecurityHub) CreateFindingAggregator(input *CreateFindingAggregatorInput) (*CreateFindingAggregatorOutput, error) {
	req, out := c.CreateFindingAggregatorRequest(input)
	return out, req.Send()
}

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

const opCreateInsight = "CreateInsight"

// CreateInsightRequest generates a "aws/request.Request" representing the
// client's request for the CreateInsight 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 CreateInsight for more information on using the CreateInsight
// 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 CreateInsightRequest method.
//	req, resp := client.CreateInsightRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/CreateInsight
func (c *SecurityHub) CreateInsightRequest(input *CreateInsightInput) (req *request.Request, output *CreateInsightOutput) {
	op := &request.Operation{
		Name:       opCreateInsight,
		HTTPMethod: "POST",
		HTTPPath:   "/insights",
	}

	if input == nil {
		input = &CreateInsightInput{}
	}

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

// CreateInsight API operation for AWS SecurityHub.
//
// Creates a custom insight in Security Hub. An insight is a consolidation of
// findings that relate to a security issue that requires attention or remediation.
//
// To group the related findings in the insight, use the GroupByAttribute.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation CreateInsight for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - ResourceConflictException
//     The resource specified in the request conflicts with an existing resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/CreateInsight
func (c *SecurityHub) CreateInsight(input *CreateInsightInput) (*CreateInsightOutput, error) {
	req, out := c.CreateInsightRequest(input)
	return out, req.Send()
}

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

const opCreateMembers = "CreateMembers"

// CreateMembersRequest generates a "aws/request.Request" representing the
// client's request for the CreateMembers 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 CreateMembers for more information on using the CreateMembers
// 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 CreateMembersRequest method.
//	req, resp := client.CreateMembersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/CreateMembers
func (c *SecurityHub) CreateMembersRequest(input *CreateMembersInput) (req *request.Request, output *CreateMembersOutput) {
	op := &request.Operation{
		Name:       opCreateMembers,
		HTTPMethod: "POST",
		HTTPPath:   "/members",
	}

	if input == nil {
		input = &CreateMembersInput{}
	}

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

// CreateMembers API operation for AWS SecurityHub.
//
// Creates a member association in Security Hub between the specified accounts
// and the account used to make the request, which is the administrator account.
// If you are integrated with Organizations, then the administrator account
// is designated by the organization management account.
//
// CreateMembers is always used to add accounts that are not organization members.
//
// For accounts that are managed using Organizations, CreateMembers is only
// used in the following cases:
//
//   - Security Hub is not configured to automatically add new organization
//     accounts.
//
//   - The account was disassociated or deleted in Security Hub.
//
// This action can only be used by an account that has Security Hub enabled.
// To enable Security Hub, you can use the EnableSecurityHub operation.
//
// For accounts that are not organization members, you create the account association
// and then send an invitation to the member account. To send the invitation,
// you use the InviteMembers operation. If the account owner accepts the invitation,
// the account becomes a member account in Security Hub.
//
// Accounts that are managed using Organizations do not receive an invitation.
// They automatically become a member account in Security Hub.
//
//   - If the organization account does not have Security Hub enabled, then
//     Security Hub and the default standards are automatically enabled. Note
//     that Security Hub cannot be enabled automatically for the organization
//     management account. The organization management account must enable Security
//     Hub before the administrator account enables it as a member account.
//
//   - For organization accounts that already have Security Hub enabled, Security
//     Hub does not make any other changes to those accounts. It does not change
//     their enabled standards or controls.
//
// A permissions policy is added that permits the administrator account to view
// the findings generated in the member account.
//
// To remove the association between the administrator and member accounts,
// use the DisassociateFromMasterAccount or DisassociateMembers operation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation CreateMembers for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - ResourceConflictException
//     The resource specified in the request conflicts with an existing resource.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/CreateMembers
func (c *SecurityHub) CreateMembers(input *CreateMembersInput) (*CreateMembersOutput, error) {
	req, out := c.CreateMembersRequest(input)
	return out, req.Send()
}

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

const opDeclineInvitations = "DeclineInvitations"

// DeclineInvitationsRequest generates a "aws/request.Request" representing the
// client's request for the DeclineInvitations 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 DeclineInvitations for more information on using the DeclineInvitations
// 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 DeclineInvitationsRequest method.
//	req, resp := client.DeclineInvitationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DeclineInvitations
func (c *SecurityHub) DeclineInvitationsRequest(input *DeclineInvitationsInput) (req *request.Request, output *DeclineInvitationsOutput) {
	op := &request.Operation{
		Name:       opDeclineInvitations,
		HTTPMethod: "POST",
		HTTPPath:   "/invitations/decline",
	}

	if input == nil {
		input = &DeclineInvitationsInput{}
	}

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

// DeclineInvitations API operation for AWS SecurityHub.
//
// Declines invitations to become a member account.
//
// A prospective member account uses this operation to decline an invitation
// to become a member.
//
// This operation is only called by member accounts that aren't part of an organization.
// Organization accounts don't receive invitations.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation DeclineInvitations for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DeclineInvitations
func (c *SecurityHub) DeclineInvitations(input *DeclineInvitationsInput) (*DeclineInvitationsOutput, error) {
	req, out := c.DeclineInvitationsRequest(input)
	return out, req.Send()
}

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

const opDeleteActionTarget = "DeleteActionTarget"

// DeleteActionTargetRequest generates a "aws/request.Request" representing the
// client's request for the DeleteActionTarget 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 DeleteActionTarget for more information on using the DeleteActionTarget
// 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 DeleteActionTargetRequest method.
//	req, resp := client.DeleteActionTargetRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DeleteActionTarget
func (c *SecurityHub) DeleteActionTargetRequest(input *DeleteActionTargetInput) (req *request.Request, output *DeleteActionTargetOutput) {
	op := &request.Operation{
		Name:       opDeleteActionTarget,
		HTTPMethod: "DELETE",
		HTTPPath:   "/actionTargets/{ActionTargetArn+}",
	}

	if input == nil {
		input = &DeleteActionTargetInput{}
	}

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

// DeleteActionTarget API operation for AWS SecurityHub.
//
// Deletes a custom action target from Security Hub.
//
// Deleting a custom action target does not affect any findings or insights
// that were already sent to Amazon CloudWatch Events using the custom action.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation DeleteActionTarget for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DeleteActionTarget
func (c *SecurityHub) DeleteActionTarget(input *DeleteActionTargetInput) (*DeleteActionTargetOutput, error) {
	req, out := c.DeleteActionTargetRequest(input)
	return out, req.Send()
}

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

const opDeleteConfigurationPolicy = "DeleteConfigurationPolicy"

// DeleteConfigurationPolicyRequest generates a "aws/request.Request" representing the
// client's request for the DeleteConfigurationPolicy 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 DeleteConfigurationPolicy for more information on using the DeleteConfigurationPolicy
// 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 DeleteConfigurationPolicyRequest method.
//	req, resp := client.DeleteConfigurationPolicyRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DeleteConfigurationPolicy
func (c *SecurityHub) DeleteConfigurationPolicyRequest(input *DeleteConfigurationPolicyInput) (req *request.Request, output *DeleteConfigurationPolicyOutput) {
	op := &request.Operation{
		Name:       opDeleteConfigurationPolicy,
		HTTPMethod: "DELETE",
		HTTPPath:   "/configurationPolicy/{Identifier}",
	}

	if input == nil {
		input = &DeleteConfigurationPolicyInput{}
	}

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

// DeleteConfigurationPolicy API operation for AWS SecurityHub.
//
// Deletes a configuration policy. Only the Security Hub delegated administrator
// can invoke this operation from the home Region. For the deletion to succeed,
// you must first disassociate a configuration policy from target accounts,
// organizational units, or the root by invoking the StartConfigurationPolicyDisassociation
// operation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation DeleteConfigurationPolicy for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
//   - InternalException
//     Internal server error.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
//   - ResourceConflictException
//     The resource specified in the request conflicts with an existing resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DeleteConfigurationPolicy
func (c *SecurityHub) DeleteConfigurationPolicy(input *DeleteConfigurationPolicyInput) (*DeleteConfigurationPolicyOutput, error) {
	req, out := c.DeleteConfigurationPolicyRequest(input)
	return out, req.Send()
}

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

const opDeleteFindingAggregator = "DeleteFindingAggregator"

// DeleteFindingAggregatorRequest generates a "aws/request.Request" representing the
// client's request for the DeleteFindingAggregator 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 DeleteFindingAggregator for more information on using the DeleteFindingAggregator
// 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 DeleteFindingAggregatorRequest method.
//	req, resp := client.DeleteFindingAggregatorRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DeleteFindingAggregator
func (c *SecurityHub) DeleteFindingAggregatorRequest(input *DeleteFindingAggregatorInput) (req *request.Request, output *DeleteFindingAggregatorOutput) {
	op := &request.Operation{
		Name:       opDeleteFindingAggregator,
		HTTPMethod: "DELETE",
		HTTPPath:   "/findingAggregator/delete/{FindingAggregatorArn+}",
	}

	if input == nil {
		input = &DeleteFindingAggregatorInput{}
	}

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

// DeleteFindingAggregator API operation for AWS SecurityHub.
//
// Deletes a finding aggregator. When you delete the finding aggregator, you
// stop finding aggregation.
//
// When you stop finding aggregation, findings that were already aggregated
// to the aggregation Region are still visible from the aggregation Region.
// New findings and finding updates are not aggregated.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation DeleteFindingAggregator for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DeleteFindingAggregator
func (c *SecurityHub) DeleteFindingAggregator(input *DeleteFindingAggregatorInput) (*DeleteFindingAggregatorOutput, error) {
	req, out := c.DeleteFindingAggregatorRequest(input)
	return out, req.Send()
}

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

const opDeleteInsight = "DeleteInsight"

// DeleteInsightRequest generates a "aws/request.Request" representing the
// client's request for the DeleteInsight 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 DeleteInsight for more information on using the DeleteInsight
// 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 DeleteInsightRequest method.
//	req, resp := client.DeleteInsightRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DeleteInsight
func (c *SecurityHub) DeleteInsightRequest(input *DeleteInsightInput) (req *request.Request, output *DeleteInsightOutput) {
	op := &request.Operation{
		Name:       opDeleteInsight,
		HTTPMethod: "DELETE",
		HTTPPath:   "/insights/{InsightArn+}",
	}

	if input == nil {
		input = &DeleteInsightInput{}
	}

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

// DeleteInsight API operation for AWS SecurityHub.
//
// Deletes the insight specified by the InsightArn.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation DeleteInsight for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DeleteInsight
func (c *SecurityHub) DeleteInsight(input *DeleteInsightInput) (*DeleteInsightOutput, error) {
	req, out := c.DeleteInsightRequest(input)
	return out, req.Send()
}

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

const opDeleteInvitations = "DeleteInvitations"

// DeleteInvitationsRequest generates a "aws/request.Request" representing the
// client's request for the DeleteInvitations 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 DeleteInvitations for more information on using the DeleteInvitations
// 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 DeleteInvitationsRequest method.
//	req, resp := client.DeleteInvitationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DeleteInvitations
func (c *SecurityHub) DeleteInvitationsRequest(input *DeleteInvitationsInput) (req *request.Request, output *DeleteInvitationsOutput) {
	op := &request.Operation{
		Name:       opDeleteInvitations,
		HTTPMethod: "POST",
		HTTPPath:   "/invitations/delete",
	}

	if input == nil {
		input = &DeleteInvitationsInput{}
	}

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

// DeleteInvitations API operation for AWS SecurityHub.
//
// Deletes invitations received by the Amazon Web Services account to become
// a member account.
//
// A Security Hub administrator account can use this operation to delete invitations
// sent to one or more member accounts.
//
// This operation is only used to delete invitations that are sent to member
// accounts that aren't part of an organization. Organization accounts don't
// receive invitations.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation DeleteInvitations for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DeleteInvitations
func (c *SecurityHub) DeleteInvitations(input *DeleteInvitationsInput) (*DeleteInvitationsOutput, error) {
	req, out := c.DeleteInvitationsRequest(input)
	return out, req.Send()
}

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

const opDeleteMembers = "DeleteMembers"

// DeleteMembersRequest generates a "aws/request.Request" representing the
// client's request for the DeleteMembers 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 DeleteMembers for more information on using the DeleteMembers
// 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 DeleteMembersRequest method.
//	req, resp := client.DeleteMembersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DeleteMembers
func (c *SecurityHub) DeleteMembersRequest(input *DeleteMembersInput) (req *request.Request, output *DeleteMembersOutput) {
	op := &request.Operation{
		Name:       opDeleteMembers,
		HTTPMethod: "POST",
		HTTPPath:   "/members/delete",
	}

	if input == nil {
		input = &DeleteMembersInput{}
	}

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

// DeleteMembers API operation for AWS SecurityHub.
//
// Deletes the specified member accounts from Security Hub.
//
// You can invoke this API only to delete accounts that became members through
// invitation. You can't invoke this API to delete accounts that belong to an
// Organizations organization.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation DeleteMembers for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DeleteMembers
func (c *SecurityHub) DeleteMembers(input *DeleteMembersInput) (*DeleteMembersOutput, error) {
	req, out := c.DeleteMembersRequest(input)
	return out, req.Send()
}

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

const opDescribeActionTargets = "DescribeActionTargets"

// DescribeActionTargetsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeActionTargets 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 DescribeActionTargets for more information on using the DescribeActionTargets
// 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 DescribeActionTargetsRequest method.
//	req, resp := client.DescribeActionTargetsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DescribeActionTargets
func (c *SecurityHub) DescribeActionTargetsRequest(input *DescribeActionTargetsInput) (req *request.Request, output *DescribeActionTargetsOutput) {
	op := &request.Operation{
		Name:       opDescribeActionTargets,
		HTTPMethod: "POST",
		HTTPPath:   "/actionTargets/get",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeActionTargetsInput{}
	}

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

// DescribeActionTargets API operation for AWS SecurityHub.
//
// Returns a list of the custom action targets in Security Hub in 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 AWS SecurityHub's
// API operation DescribeActionTargets for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DescribeActionTargets
func (c *SecurityHub) DescribeActionTargets(input *DescribeActionTargetsInput) (*DescribeActionTargetsOutput, error) {
	req, out := c.DescribeActionTargetsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opDescribeHub = "DescribeHub"

// DescribeHubRequest generates a "aws/request.Request" representing the
// client's request for the DescribeHub 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 DescribeHub for more information on using the DescribeHub
// 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 DescribeHubRequest method.
//	req, resp := client.DescribeHubRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DescribeHub
func (c *SecurityHub) DescribeHubRequest(input *DescribeHubInput) (req *request.Request, output *DescribeHubOutput) {
	op := &request.Operation{
		Name:       opDescribeHub,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts",
	}

	if input == nil {
		input = &DescribeHubInput{}
	}

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

// DescribeHub API operation for AWS SecurityHub.
//
// Returns details about the Hub resource in your account, including the HubArn
// and the time when you enabled Security Hub.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation DescribeHub for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DescribeHub
func (c *SecurityHub) DescribeHub(input *DescribeHubInput) (*DescribeHubOutput, error) {
	req, out := c.DescribeHubRequest(input)
	return out, req.Send()
}

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

const opDescribeOrganizationConfiguration = "DescribeOrganizationConfiguration"

// DescribeOrganizationConfigurationRequest generates a "aws/request.Request" representing the
// client's request for the DescribeOrganizationConfiguration 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 DescribeOrganizationConfiguration for more information on using the DescribeOrganizationConfiguration
// 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 DescribeOrganizationConfigurationRequest method.
//	req, resp := client.DescribeOrganizationConfigurationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DescribeOrganizationConfiguration
func (c *SecurityHub) DescribeOrganizationConfigurationRequest(input *DescribeOrganizationConfigurationInput) (req *request.Request, output *DescribeOrganizationConfigurationOutput) {
	op := &request.Operation{
		Name:       opDescribeOrganizationConfiguration,
		HTTPMethod: "GET",
		HTTPPath:   "/organization/configuration",
	}

	if input == nil {
		input = &DescribeOrganizationConfigurationInput{}
	}

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

// DescribeOrganizationConfiguration API operation for AWS SecurityHub.
//
// Returns information about the way your organization is configured in Security
// Hub. Only the Security Hub administrator account can invoke this operation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation DescribeOrganizationConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DescribeOrganizationConfiguration
func (c *SecurityHub) DescribeOrganizationConfiguration(input *DescribeOrganizationConfigurationInput) (*DescribeOrganizationConfigurationOutput, error) {
	req, out := c.DescribeOrganizationConfigurationRequest(input)
	return out, req.Send()
}

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

const opDescribeProducts = "DescribeProducts"

// DescribeProductsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeProducts 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 DescribeProducts for more information on using the DescribeProducts
// 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 DescribeProductsRequest method.
//	req, resp := client.DescribeProductsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DescribeProducts
func (c *SecurityHub) DescribeProductsRequest(input *DescribeProductsInput) (req *request.Request, output *DescribeProductsOutput) {
	op := &request.Operation{
		Name:       opDescribeProducts,
		HTTPMethod: "GET",
		HTTPPath:   "/products",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeProductsInput{}
	}

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

// DescribeProducts API operation for AWS SecurityHub.
//
// Returns information about product integrations in Security Hub.
//
// You can optionally provide an integration ARN. If you provide an integration
// ARN, then the results only include that integration.
//
// If you do not provide an integration ARN, then the results include all of
// the available product integrations.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation DescribeProducts for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DescribeProducts
func (c *SecurityHub) DescribeProducts(input *DescribeProductsInput) (*DescribeProductsOutput, error) {
	req, out := c.DescribeProductsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opDescribeStandards = "DescribeStandards"

// DescribeStandardsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeStandards 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 DescribeStandards for more information on using the DescribeStandards
// 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 DescribeStandardsRequest method.
//	req, resp := client.DescribeStandardsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DescribeStandards
func (c *SecurityHub) DescribeStandardsRequest(input *DescribeStandardsInput) (req *request.Request, output *DescribeStandardsOutput) {
	op := &request.Operation{
		Name:       opDescribeStandards,
		HTTPMethod: "GET",
		HTTPPath:   "/standards",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeStandardsInput{}
	}

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

// DescribeStandards API operation for AWS SecurityHub.
//
// Returns a list of the available standards in Security Hub.
//
// For each standard, the results include the standard ARN, the name, and a
// description.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation DescribeStandards for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DescribeStandards
func (c *SecurityHub) DescribeStandards(input *DescribeStandardsInput) (*DescribeStandardsOutput, error) {
	req, out := c.DescribeStandardsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opDescribeStandardsControls = "DescribeStandardsControls"

// DescribeStandardsControlsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeStandardsControls 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 DescribeStandardsControls for more information on using the DescribeStandardsControls
// 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 DescribeStandardsControlsRequest method.
//	req, resp := client.DescribeStandardsControlsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DescribeStandardsControls
func (c *SecurityHub) DescribeStandardsControlsRequest(input *DescribeStandardsControlsInput) (req *request.Request, output *DescribeStandardsControlsOutput) {
	op := &request.Operation{
		Name:       opDescribeStandardsControls,
		HTTPMethod: "GET",
		HTTPPath:   "/standards/controls/{StandardsSubscriptionArn+}",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeStandardsControlsInput{}
	}

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

// DescribeStandardsControls API operation for AWS SecurityHub.
//
// Returns a list of security standards controls.
//
// For each control, the results include information about whether it is currently
// enabled, the severity, and a link to remediation information.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation DescribeStandardsControls for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DescribeStandardsControls
func (c *SecurityHub) DescribeStandardsControls(input *DescribeStandardsControlsInput) (*DescribeStandardsControlsOutput, error) {
	req, out := c.DescribeStandardsControlsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opDisableImportFindingsForProduct = "DisableImportFindingsForProduct"

// DisableImportFindingsForProductRequest generates a "aws/request.Request" representing the
// client's request for the DisableImportFindingsForProduct 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 DisableImportFindingsForProduct for more information on using the DisableImportFindingsForProduct
// 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 DisableImportFindingsForProductRequest method.
//	req, resp := client.DisableImportFindingsForProductRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DisableImportFindingsForProduct
func (c *SecurityHub) DisableImportFindingsForProductRequest(input *DisableImportFindingsForProductInput) (req *request.Request, output *DisableImportFindingsForProductOutput) {
	op := &request.Operation{
		Name:       opDisableImportFindingsForProduct,
		HTTPMethod: "DELETE",
		HTTPPath:   "/productSubscriptions/{ProductSubscriptionArn+}",
	}

	if input == nil {
		input = &DisableImportFindingsForProductInput{}
	}

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

// DisableImportFindingsForProduct API operation for AWS SecurityHub.
//
// Disables the integration of the specified product with Security Hub. After
// the integration is disabled, findings from that product are no longer sent
// to Security Hub.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation DisableImportFindingsForProduct for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DisableImportFindingsForProduct
func (c *SecurityHub) DisableImportFindingsForProduct(input *DisableImportFindingsForProductInput) (*DisableImportFindingsForProductOutput, error) {
	req, out := c.DisableImportFindingsForProductRequest(input)
	return out, req.Send()
}

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

const opDisableOrganizationAdminAccount = "DisableOrganizationAdminAccount"

// DisableOrganizationAdminAccountRequest generates a "aws/request.Request" representing the
// client's request for the DisableOrganizationAdminAccount 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 DisableOrganizationAdminAccount for more information on using the DisableOrganizationAdminAccount
// 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 DisableOrganizationAdminAccountRequest method.
//	req, resp := client.DisableOrganizationAdminAccountRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DisableOrganizationAdminAccount
func (c *SecurityHub) DisableOrganizationAdminAccountRequest(input *DisableOrganizationAdminAccountInput) (req *request.Request, output *DisableOrganizationAdminAccountOutput) {
	op := &request.Operation{
		Name:       opDisableOrganizationAdminAccount,
		HTTPMethod: "POST",
		HTTPPath:   "/organization/admin/disable",
	}

	if input == nil {
		input = &DisableOrganizationAdminAccountInput{}
	}

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

// DisableOrganizationAdminAccount API operation for AWS SecurityHub.
//
// Disables a Security Hub administrator account. Can only be called by the
// organization management account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation DisableOrganizationAdminAccount for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DisableOrganizationAdminAccount
func (c *SecurityHub) DisableOrganizationAdminAccount(input *DisableOrganizationAdminAccountInput) (*DisableOrganizationAdminAccountOutput, error) {
	req, out := c.DisableOrganizationAdminAccountRequest(input)
	return out, req.Send()
}

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

const opDisableSecurityHub = "DisableSecurityHub"

// DisableSecurityHubRequest generates a "aws/request.Request" representing the
// client's request for the DisableSecurityHub 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 DisableSecurityHub for more information on using the DisableSecurityHub
// 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 DisableSecurityHubRequest method.
//	req, resp := client.DisableSecurityHubRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DisableSecurityHub
func (c *SecurityHub) DisableSecurityHubRequest(input *DisableSecurityHubInput) (req *request.Request, output *DisableSecurityHubOutput) {
	op := &request.Operation{
		Name:       opDisableSecurityHub,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts",
	}

	if input == nil {
		input = &DisableSecurityHubInput{}
	}

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

// DisableSecurityHub API operation for AWS SecurityHub.
//
// Disables Security Hub in your account only in the current Amazon Web Services
// Region. To disable Security Hub in all Regions, you must submit one request
// per Region where you have enabled Security Hub.
//
// You can't disable Security Hub in an account that is currently the Security
// Hub administrator.
//
// When you disable Security Hub, your existing findings and insights and any
// Security Hub configuration settings are deleted after 90 days and cannot
// be recovered. Any standards that were enabled are disabled, and your administrator
// and member account associations are removed.
//
// If you want to save your existing findings, you must export them before you
// disable Security Hub.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation DisableSecurityHub for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DisableSecurityHub
func (c *SecurityHub) DisableSecurityHub(input *DisableSecurityHubInput) (*DisableSecurityHubOutput, error) {
	req, out := c.DisableSecurityHubRequest(input)
	return out, req.Send()
}

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

const opDisassociateFromAdministratorAccount = "DisassociateFromAdministratorAccount"

// DisassociateFromAdministratorAccountRequest generates a "aws/request.Request" representing the
// client's request for the DisassociateFromAdministratorAccount 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 DisassociateFromAdministratorAccount for more information on using the DisassociateFromAdministratorAccount
// 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 DisassociateFromAdministratorAccountRequest method.
//	req, resp := client.DisassociateFromAdministratorAccountRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DisassociateFromAdministratorAccount
func (c *SecurityHub) DisassociateFromAdministratorAccountRequest(input *DisassociateFromAdministratorAccountInput) (req *request.Request, output *DisassociateFromAdministratorAccountOutput) {
	op := &request.Operation{
		Name:       opDisassociateFromAdministratorAccount,
		HTTPMethod: "POST",
		HTTPPath:   "/administrator/disassociate",
	}

	if input == nil {
		input = &DisassociateFromAdministratorAccountInput{}
	}

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

// DisassociateFromAdministratorAccount API operation for AWS SecurityHub.
//
// Disassociates the current Security Hub member account from the associated
// administrator account.
//
// This operation is only used by accounts that are not part of an organization.
// For organization accounts, only the administrator account can disassociate
// a member account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation DisassociateFromAdministratorAccount for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DisassociateFromAdministratorAccount
func (c *SecurityHub) DisassociateFromAdministratorAccount(input *DisassociateFromAdministratorAccountInput) (*DisassociateFromAdministratorAccountOutput, error) {
	req, out := c.DisassociateFromAdministratorAccountRequest(input)
	return out, req.Send()
}

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

const opDisassociateFromMasterAccount = "DisassociateFromMasterAccount"

// DisassociateFromMasterAccountRequest generates a "aws/request.Request" representing the
// client's request for the DisassociateFromMasterAccount 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 DisassociateFromMasterAccount for more information on using the DisassociateFromMasterAccount
// 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 DisassociateFromMasterAccountRequest method.
//	req, resp := client.DisassociateFromMasterAccountRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DisassociateFromMasterAccount
//
// Deprecated: This API has been deprecated, use DisassociateFromAdministratorAccount API instead.
func (c *SecurityHub) DisassociateFromMasterAccountRequest(input *DisassociateFromMasterAccountInput) (req *request.Request, output *DisassociateFromMasterAccountOutput) {
	if c.Client.Config.Logger != nil {
		c.Client.Config.Logger.Log("This operation, DisassociateFromMasterAccount, has been deprecated")
	}
	op := &request.Operation{
		Name:       opDisassociateFromMasterAccount,
		HTTPMethod: "POST",
		HTTPPath:   "/master/disassociate",
	}

	if input == nil {
		input = &DisassociateFromMasterAccountInput{}
	}

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

// DisassociateFromMasterAccount API operation for AWS SecurityHub.
//
// This method is deprecated. Instead, use DisassociateFromAdministratorAccount.
//
// The Security Hub console continues to use DisassociateFromMasterAccount.
// It will eventually change to use DisassociateFromAdministratorAccount. Any
// IAM policies that specifically control access to this function must continue
// to use DisassociateFromMasterAccount. You should also add DisassociateFromAdministratorAccount
// to your policies to ensure that the correct permissions are in place after
// the console begins to use DisassociateFromAdministratorAccount.
//
// Disassociates the current Security Hub member account from the associated
// administrator account.
//
// This operation is only used by accounts that are not part of an organization.
// For organization accounts, only the administrator account can disassociate
// a member account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation DisassociateFromMasterAccount for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DisassociateFromMasterAccount
//
// Deprecated: This API has been deprecated, use DisassociateFromAdministratorAccount API instead.
func (c *SecurityHub) DisassociateFromMasterAccount(input *DisassociateFromMasterAccountInput) (*DisassociateFromMasterAccountOutput, error) {
	req, out := c.DisassociateFromMasterAccountRequest(input)
	return out, req.Send()
}

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

const opDisassociateMembers = "DisassociateMembers"

// DisassociateMembersRequest generates a "aws/request.Request" representing the
// client's request for the DisassociateMembers 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 DisassociateMembers for more information on using the DisassociateMembers
// 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 DisassociateMembersRequest method.
//	req, resp := client.DisassociateMembersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DisassociateMembers
func (c *SecurityHub) DisassociateMembersRequest(input *DisassociateMembersInput) (req *request.Request, output *DisassociateMembersOutput) {
	op := &request.Operation{
		Name:       opDisassociateMembers,
		HTTPMethod: "POST",
		HTTPPath:   "/members/disassociate",
	}

	if input == nil {
		input = &DisassociateMembersInput{}
	}

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

// DisassociateMembers API operation for AWS SecurityHub.
//
// Disassociates the specified member accounts from the associated administrator
// account.
//
// Can be used to disassociate both accounts that are managed using Organizations
// and accounts that were invited manually.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation DisassociateMembers for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DisassociateMembers
func (c *SecurityHub) DisassociateMembers(input *DisassociateMembersInput) (*DisassociateMembersOutput, error) {
	req, out := c.DisassociateMembersRequest(input)
	return out, req.Send()
}

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

const opEnableImportFindingsForProduct = "EnableImportFindingsForProduct"

// EnableImportFindingsForProductRequest generates a "aws/request.Request" representing the
// client's request for the EnableImportFindingsForProduct 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 EnableImportFindingsForProduct for more information on using the EnableImportFindingsForProduct
// 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 EnableImportFindingsForProductRequest method.
//	req, resp := client.EnableImportFindingsForProductRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/EnableImportFindingsForProduct
func (c *SecurityHub) EnableImportFindingsForProductRequest(input *EnableImportFindingsForProductInput) (req *request.Request, output *EnableImportFindingsForProductOutput) {
	op := &request.Operation{
		Name:       opEnableImportFindingsForProduct,
		HTTPMethod: "POST",
		HTTPPath:   "/productSubscriptions",
	}

	if input == nil {
		input = &EnableImportFindingsForProductInput{}
	}

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

// EnableImportFindingsForProduct API operation for AWS SecurityHub.
//
// Enables the integration of a partner product with Security Hub. Integrated
// products send findings to Security Hub.
//
// When you enable a product integration, a permissions policy that grants permission
// for the product to send findings to Security Hub is applied.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation EnableImportFindingsForProduct for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - ResourceConflictException
//     The resource specified in the request conflicts with an existing resource.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/EnableImportFindingsForProduct
func (c *SecurityHub) EnableImportFindingsForProduct(input *EnableImportFindingsForProductInput) (*EnableImportFindingsForProductOutput, error) {
	req, out := c.EnableImportFindingsForProductRequest(input)
	return out, req.Send()
}

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

const opEnableOrganizationAdminAccount = "EnableOrganizationAdminAccount"

// EnableOrganizationAdminAccountRequest generates a "aws/request.Request" representing the
// client's request for the EnableOrganizationAdminAccount 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 EnableOrganizationAdminAccount for more information on using the EnableOrganizationAdminAccount
// 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 EnableOrganizationAdminAccountRequest method.
//	req, resp := client.EnableOrganizationAdminAccountRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/EnableOrganizationAdminAccount
func (c *SecurityHub) EnableOrganizationAdminAccountRequest(input *EnableOrganizationAdminAccountInput) (req *request.Request, output *EnableOrganizationAdminAccountOutput) {
	op := &request.Operation{
		Name:       opEnableOrganizationAdminAccount,
		HTTPMethod: "POST",
		HTTPPath:   "/organization/admin/enable",
	}

	if input == nil {
		input = &EnableOrganizationAdminAccountInput{}
	}

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

// EnableOrganizationAdminAccount API operation for AWS SecurityHub.
//
// Designates the Security Hub administrator account for an organization. Can
// only be called by the organization management account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation EnableOrganizationAdminAccount for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/EnableOrganizationAdminAccount
func (c *SecurityHub) EnableOrganizationAdminAccount(input *EnableOrganizationAdminAccountInput) (*EnableOrganizationAdminAccountOutput, error) {
	req, out := c.EnableOrganizationAdminAccountRequest(input)
	return out, req.Send()
}

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

const opEnableSecurityHub = "EnableSecurityHub"

// EnableSecurityHubRequest generates a "aws/request.Request" representing the
// client's request for the EnableSecurityHub 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 EnableSecurityHub for more information on using the EnableSecurityHub
// 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 EnableSecurityHubRequest method.
//	req, resp := client.EnableSecurityHubRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/EnableSecurityHub
func (c *SecurityHub) EnableSecurityHubRequest(input *EnableSecurityHubInput) (req *request.Request, output *EnableSecurityHubOutput) {
	op := &request.Operation{
		Name:       opEnableSecurityHub,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts",
	}

	if input == nil {
		input = &EnableSecurityHubInput{}
	}

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

// EnableSecurityHub API operation for AWS SecurityHub.
//
// Enables Security Hub for your account in the current Region or the Region
// you specify in the request.
//
// When you enable Security Hub, you grant to Security Hub the permissions necessary
// to gather findings from other services that are integrated with Security
// Hub.
//
// When you use the EnableSecurityHub operation to enable Security Hub, you
// also automatically enable the following standards:
//
//   - Center for Internet Security (CIS) Amazon Web Services Foundations Benchmark
//     v1.2.0
//
//   - Amazon Web Services Foundational Security Best Practices
//
// Other standards are not automatically enabled.
//
// To opt out of automatically enabled standards, set EnableDefaultStandards
// to false.
//
// After you enable Security Hub, to enable a standard, use the BatchEnableStandards
// operation. To disable a standard, use the BatchDisableStandards operation.
//
// To learn more, see the setup information (https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-settingup.html)
// in the Security Hub User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation EnableSecurityHub for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - ResourceConflictException
//     The resource specified in the request conflicts with an existing resource.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/EnableSecurityHub
func (c *SecurityHub) EnableSecurityHub(input *EnableSecurityHubInput) (*EnableSecurityHubOutput, error) {
	req, out := c.EnableSecurityHubRequest(input)
	return out, req.Send()
}

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

const opGetAdministratorAccount = "GetAdministratorAccount"

// GetAdministratorAccountRequest generates a "aws/request.Request" representing the
// client's request for the GetAdministratorAccount 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 GetAdministratorAccount for more information on using the GetAdministratorAccount
// 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 GetAdministratorAccountRequest method.
//	req, resp := client.GetAdministratorAccountRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetAdministratorAccount
func (c *SecurityHub) GetAdministratorAccountRequest(input *GetAdministratorAccountInput) (req *request.Request, output *GetAdministratorAccountOutput) {
	op := &request.Operation{
		Name:       opGetAdministratorAccount,
		HTTPMethod: "GET",
		HTTPPath:   "/administrator",
	}

	if input == nil {
		input = &GetAdministratorAccountInput{}
	}

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

// GetAdministratorAccount API operation for AWS SecurityHub.
//
// Provides the details for the Security Hub administrator account for the current
// member account.
//
// Can be used by both member accounts that are managed using Organizations
// and accounts that were invited manually.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation GetAdministratorAccount for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetAdministratorAccount
func (c *SecurityHub) GetAdministratorAccount(input *GetAdministratorAccountInput) (*GetAdministratorAccountOutput, error) {
	req, out := c.GetAdministratorAccountRequest(input)
	return out, req.Send()
}

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

const opGetConfigurationPolicy = "GetConfigurationPolicy"

// GetConfigurationPolicyRequest generates a "aws/request.Request" representing the
// client's request for the GetConfigurationPolicy 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 GetConfigurationPolicy for more information on using the GetConfigurationPolicy
// 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 GetConfigurationPolicyRequest method.
//	req, resp := client.GetConfigurationPolicyRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetConfigurationPolicy
func (c *SecurityHub) GetConfigurationPolicyRequest(input *GetConfigurationPolicyInput) (req *request.Request, output *GetConfigurationPolicyOutput) {
	op := &request.Operation{
		Name:       opGetConfigurationPolicy,
		HTTPMethod: "GET",
		HTTPPath:   "/configurationPolicy/get/{Identifier}",
	}

	if input == nil {
		input = &GetConfigurationPolicyInput{}
	}

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

// GetConfigurationPolicy API operation for AWS SecurityHub.
//
// Provides information about a configuration policy. Only the Security Hub
// delegated administrator can invoke this operation from the home Region.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation GetConfigurationPolicy for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetConfigurationPolicy
func (c *SecurityHub) GetConfigurationPolicy(input *GetConfigurationPolicyInput) (*GetConfigurationPolicyOutput, error) {
	req, out := c.GetConfigurationPolicyRequest(input)
	return out, req.Send()
}

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

const opGetConfigurationPolicyAssociation = "GetConfigurationPolicyAssociation"

// GetConfigurationPolicyAssociationRequest generates a "aws/request.Request" representing the
// client's request for the GetConfigurationPolicyAssociation 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 GetConfigurationPolicyAssociation for more information on using the GetConfigurationPolicyAssociation
// 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 GetConfigurationPolicyAssociationRequest method.
//	req, resp := client.GetConfigurationPolicyAssociationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetConfigurationPolicyAssociation
func (c *SecurityHub) GetConfigurationPolicyAssociationRequest(input *GetConfigurationPolicyAssociationInput) (req *request.Request, output *GetConfigurationPolicyAssociationOutput) {
	op := &request.Operation{
		Name:       opGetConfigurationPolicyAssociation,
		HTTPMethod: "POST",
		HTTPPath:   "/configurationPolicyAssociation/get",
	}

	if input == nil {
		input = &GetConfigurationPolicyAssociationInput{}
	}

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

// GetConfigurationPolicyAssociation API operation for AWS SecurityHub.
//
// Returns the association between a configuration and a target account, organizational
// unit, or the root. The configuration can be a configuration policy or self-managed
// behavior. Only the Security Hub delegated administrator can invoke this operation
// from the home Region.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation GetConfigurationPolicyAssociation for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetConfigurationPolicyAssociation
func (c *SecurityHub) GetConfigurationPolicyAssociation(input *GetConfigurationPolicyAssociationInput) (*GetConfigurationPolicyAssociationOutput, error) {
	req, out := c.GetConfigurationPolicyAssociationRequest(input)
	return out, req.Send()
}

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

const opGetEnabledStandards = "GetEnabledStandards"

// GetEnabledStandardsRequest generates a "aws/request.Request" representing the
// client's request for the GetEnabledStandards 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 GetEnabledStandards for more information on using the GetEnabledStandards
// 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 GetEnabledStandardsRequest method.
//	req, resp := client.GetEnabledStandardsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetEnabledStandards
func (c *SecurityHub) GetEnabledStandardsRequest(input *GetEnabledStandardsInput) (req *request.Request, output *GetEnabledStandardsOutput) {
	op := &request.Operation{
		Name:       opGetEnabledStandards,
		HTTPMethod: "POST",
		HTTPPath:   "/standards/get",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetEnabledStandardsInput{}
	}

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

// GetEnabledStandards API operation for AWS SecurityHub.
//
// Returns a list of the standards that are currently enabled.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation GetEnabledStandards for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetEnabledStandards
func (c *SecurityHub) GetEnabledStandards(input *GetEnabledStandardsInput) (*GetEnabledStandardsOutput, error) {
	req, out := c.GetEnabledStandardsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetFindingAggregator = "GetFindingAggregator"

// GetFindingAggregatorRequest generates a "aws/request.Request" representing the
// client's request for the GetFindingAggregator 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 GetFindingAggregator for more information on using the GetFindingAggregator
// 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 GetFindingAggregatorRequest method.
//	req, resp := client.GetFindingAggregatorRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetFindingAggregator
func (c *SecurityHub) GetFindingAggregatorRequest(input *GetFindingAggregatorInput) (req *request.Request, output *GetFindingAggregatorOutput) {
	op := &request.Operation{
		Name:       opGetFindingAggregator,
		HTTPMethod: "GET",
		HTTPPath:   "/findingAggregator/get/{FindingAggregatorArn+}",
	}

	if input == nil {
		input = &GetFindingAggregatorInput{}
	}

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

// GetFindingAggregator API operation for AWS SecurityHub.
//
// Returns the current finding aggregation 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 AWS SecurityHub's
// API operation GetFindingAggregator for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetFindingAggregator
func (c *SecurityHub) GetFindingAggregator(input *GetFindingAggregatorInput) (*GetFindingAggregatorOutput, error) {
	req, out := c.GetFindingAggregatorRequest(input)
	return out, req.Send()
}

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

const opGetFindingHistory = "GetFindingHistory"

// GetFindingHistoryRequest generates a "aws/request.Request" representing the
// client's request for the GetFindingHistory 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 GetFindingHistory for more information on using the GetFindingHistory
// 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 GetFindingHistoryRequest method.
//	req, resp := client.GetFindingHistoryRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetFindingHistory
func (c *SecurityHub) GetFindingHistoryRequest(input *GetFindingHistoryInput) (req *request.Request, output *GetFindingHistoryOutput) {
	op := &request.Operation{
		Name:       opGetFindingHistory,
		HTTPMethod: "POST",
		HTTPPath:   "/findingHistory/get",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetFindingHistoryInput{}
	}

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

// GetFindingHistory API operation for AWS SecurityHub.
//
// Returns history for a Security Hub finding in the last 90 days. The history
// includes changes made to any fields in the Amazon Web Services Security Finding
// Format (ASFF).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation GetFindingHistory for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetFindingHistory
func (c *SecurityHub) GetFindingHistory(input *GetFindingHistoryInput) (*GetFindingHistoryOutput, error) {
	req, out := c.GetFindingHistoryRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetFindings = "GetFindings"

// GetFindingsRequest generates a "aws/request.Request" representing the
// client's request for the GetFindings 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 GetFindings for more information on using the GetFindings
// 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 GetFindingsRequest method.
//	req, resp := client.GetFindingsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetFindings
func (c *SecurityHub) GetFindingsRequest(input *GetFindingsInput) (req *request.Request, output *GetFindingsOutput) {
	op := &request.Operation{
		Name:       opGetFindings,
		HTTPMethod: "POST",
		HTTPPath:   "/findings",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetFindingsInput{}
	}

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

// GetFindings API operation for AWS SecurityHub.
//
// Returns a list of findings that match the specified criteria.
//
// If finding aggregation is enabled, then when you call GetFindings from the
// aggregation Region, the results include all of the matching findings from
// both the aggregation Region and the linked Regions.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation GetFindings for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetFindings
func (c *SecurityHub) GetFindings(input *GetFindingsInput) (*GetFindingsOutput, error) {
	req, out := c.GetFindingsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetInsightResults = "GetInsightResults"

// GetInsightResultsRequest generates a "aws/request.Request" representing the
// client's request for the GetInsightResults 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 GetInsightResults for more information on using the GetInsightResults
// 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 GetInsightResultsRequest method.
//	req, resp := client.GetInsightResultsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetInsightResults
func (c *SecurityHub) GetInsightResultsRequest(input *GetInsightResultsInput) (req *request.Request, output *GetInsightResultsOutput) {
	op := &request.Operation{
		Name:       opGetInsightResults,
		HTTPMethod: "GET",
		HTTPPath:   "/insights/results/{InsightArn+}",
	}

	if input == nil {
		input = &GetInsightResultsInput{}
	}

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

// GetInsightResults API operation for AWS SecurityHub.
//
// Lists the results of the Security Hub insight specified by the insight ARN.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation GetInsightResults for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetInsightResults
func (c *SecurityHub) GetInsightResults(input *GetInsightResultsInput) (*GetInsightResultsOutput, error) {
	req, out := c.GetInsightResultsRequest(input)
	return out, req.Send()
}

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

const opGetInsights = "GetInsights"

// GetInsightsRequest generates a "aws/request.Request" representing the
// client's request for the GetInsights 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 GetInsights for more information on using the GetInsights
// 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 GetInsightsRequest method.
//	req, resp := client.GetInsightsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetInsights
func (c *SecurityHub) GetInsightsRequest(input *GetInsightsInput) (req *request.Request, output *GetInsightsOutput) {
	op := &request.Operation{
		Name:       opGetInsights,
		HTTPMethod: "POST",
		HTTPPath:   "/insights/get",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetInsightsInput{}
	}

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

// GetInsights API operation for AWS SecurityHub.
//
// Lists and describes insights for the specified insight ARNs.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation GetInsights for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetInsights
func (c *SecurityHub) GetInsights(input *GetInsightsInput) (*GetInsightsOutput, error) {
	req, out := c.GetInsightsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetInvitationsCount = "GetInvitationsCount"

// GetInvitationsCountRequest generates a "aws/request.Request" representing the
// client's request for the GetInvitationsCount 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 GetInvitationsCount for more information on using the GetInvitationsCount
// 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 GetInvitationsCountRequest method.
//	req, resp := client.GetInvitationsCountRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetInvitationsCount
func (c *SecurityHub) GetInvitationsCountRequest(input *GetInvitationsCountInput) (req *request.Request, output *GetInvitationsCountOutput) {
	op := &request.Operation{
		Name:       opGetInvitationsCount,
		HTTPMethod: "GET",
		HTTPPath:   "/invitations/count",
	}

	if input == nil {
		input = &GetInvitationsCountInput{}
	}

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

// GetInvitationsCount API operation for AWS SecurityHub.
//
// Returns the count of all Security Hub membership invitations that were sent
// to the current member account, not including the currently accepted invitation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation GetInvitationsCount for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetInvitationsCount
func (c *SecurityHub) GetInvitationsCount(input *GetInvitationsCountInput) (*GetInvitationsCountOutput, error) {
	req, out := c.GetInvitationsCountRequest(input)
	return out, req.Send()
}

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

const opGetMasterAccount = "GetMasterAccount"

// GetMasterAccountRequest generates a "aws/request.Request" representing the
// client's request for the GetMasterAccount 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 GetMasterAccount for more information on using the GetMasterAccount
// 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 GetMasterAccountRequest method.
//	req, resp := client.GetMasterAccountRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetMasterAccount
//
// Deprecated: This API has been deprecated, use GetAdministratorAccount API instead.
func (c *SecurityHub) GetMasterAccountRequest(input *GetMasterAccountInput) (req *request.Request, output *GetMasterAccountOutput) {
	if c.Client.Config.Logger != nil {
		c.Client.Config.Logger.Log("This operation, GetMasterAccount, has been deprecated")
	}
	op := &request.Operation{
		Name:       opGetMasterAccount,
		HTTPMethod: "GET",
		HTTPPath:   "/master",
	}

	if input == nil {
		input = &GetMasterAccountInput{}
	}

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

// GetMasterAccount API operation for AWS SecurityHub.
//
// This method is deprecated. Instead, use GetAdministratorAccount.
//
// The Security Hub console continues to use GetMasterAccount. It will eventually
// change to use GetAdministratorAccount. Any IAM policies that specifically
// control access to this function must continue to use GetMasterAccount. You
// should also add GetAdministratorAccount to your policies to ensure that the
// correct permissions are in place after the console begins to use GetAdministratorAccount.
//
// Provides the details for the Security Hub administrator account for the current
// member account.
//
// Can be used by both member accounts that are managed using Organizations
// and accounts that were invited manually.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation GetMasterAccount for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetMasterAccount
//
// Deprecated: This API has been deprecated, use GetAdministratorAccount API instead.
func (c *SecurityHub) GetMasterAccount(input *GetMasterAccountInput) (*GetMasterAccountOutput, error) {
	req, out := c.GetMasterAccountRequest(input)
	return out, req.Send()
}

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

const opGetMembers = "GetMembers"

// GetMembersRequest generates a "aws/request.Request" representing the
// client's request for the GetMembers 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 GetMembers for more information on using the GetMembers
// 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 GetMembersRequest method.
//	req, resp := client.GetMembersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetMembers
func (c *SecurityHub) GetMembersRequest(input *GetMembersInput) (req *request.Request, output *GetMembersOutput) {
	op := &request.Operation{
		Name:       opGetMembers,
		HTTPMethod: "POST",
		HTTPPath:   "/members/get",
	}

	if input == nil {
		input = &GetMembersInput{}
	}

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

// GetMembers API operation for AWS SecurityHub.
//
// Returns the details for the Security Hub member accounts for the specified
// account IDs.
//
// An administrator account can be either the delegated Security Hub administrator
// account for an organization or an administrator account that enabled Security
// Hub manually.
//
// The results include both member accounts that are managed using Organizations
// and accounts that were invited manually.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation GetMembers for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetMembers
func (c *SecurityHub) GetMembers(input *GetMembersInput) (*GetMembersOutput, error) {
	req, out := c.GetMembersRequest(input)
	return out, req.Send()
}

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

const opGetSecurityControlDefinition = "GetSecurityControlDefinition"

// GetSecurityControlDefinitionRequest generates a "aws/request.Request" representing the
// client's request for the GetSecurityControlDefinition 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 GetSecurityControlDefinition for more information on using the GetSecurityControlDefinition
// 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 GetSecurityControlDefinitionRequest method.
//	req, resp := client.GetSecurityControlDefinitionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetSecurityControlDefinition
func (c *SecurityHub) GetSecurityControlDefinitionRequest(input *GetSecurityControlDefinitionInput) (req *request.Request, output *GetSecurityControlDefinitionOutput) {
	op := &request.Operation{
		Name:       opGetSecurityControlDefinition,
		HTTPMethod: "GET",
		HTTPPath:   "/securityControl/definition",
	}

	if input == nil {
		input = &GetSecurityControlDefinitionInput{}
	}

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

// GetSecurityControlDefinition API operation for AWS SecurityHub.
//
// Retrieves the definition of a security control. The definition includes the
// control title, description, Region availability, parameter definitions, and
// other details.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation GetSecurityControlDefinition for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetSecurityControlDefinition
func (c *SecurityHub) GetSecurityControlDefinition(input *GetSecurityControlDefinitionInput) (*GetSecurityControlDefinitionOutput, error) {
	req, out := c.GetSecurityControlDefinitionRequest(input)
	return out, req.Send()
}

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

const opInviteMembers = "InviteMembers"

// InviteMembersRequest generates a "aws/request.Request" representing the
// client's request for the InviteMembers 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 InviteMembers for more information on using the InviteMembers
// 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 InviteMembersRequest method.
//	req, resp := client.InviteMembersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/InviteMembers
func (c *SecurityHub) InviteMembersRequest(input *InviteMembersInput) (req *request.Request, output *InviteMembersOutput) {
	op := &request.Operation{
		Name:       opInviteMembers,
		HTTPMethod: "POST",
		HTTPPath:   "/members/invite",
	}

	if input == nil {
		input = &InviteMembersInput{}
	}

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

// InviteMembers API operation for AWS SecurityHub.
//
// Invites other Amazon Web Services accounts to become member accounts for
// the Security Hub administrator account that the invitation is sent from.
//
// This operation is only used to invite accounts that do not belong to an organization.
// Organization accounts do not receive invitations.
//
// Before you can use this action to invite a member, you must first use the
// CreateMembers action to create the member account in Security Hub.
//
// When the account owner enables Security Hub and accepts the invitation to
// become a member account, the administrator account can view the findings
// generated from the member account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation InviteMembers for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/InviteMembers
func (c *SecurityHub) InviteMembers(input *InviteMembersInput) (*InviteMembersOutput, error) {
	req, out := c.InviteMembersRequest(input)
	return out, req.Send()
}

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

const opListAutomationRules = "ListAutomationRules"

// ListAutomationRulesRequest generates a "aws/request.Request" representing the
// client's request for the ListAutomationRules 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 ListAutomationRules for more information on using the ListAutomationRules
// 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 ListAutomationRulesRequest method.
//	req, resp := client.ListAutomationRulesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ListAutomationRules
func (c *SecurityHub) ListAutomationRulesRequest(input *ListAutomationRulesInput) (req *request.Request, output *ListAutomationRulesOutput) {
	op := &request.Operation{
		Name:       opListAutomationRules,
		HTTPMethod: "GET",
		HTTPPath:   "/automationrules/list",
	}

	if input == nil {
		input = &ListAutomationRulesInput{}
	}

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

// ListAutomationRules API operation for AWS SecurityHub.
//
// A list of automation rules and their metadata for the calling account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation ListAutomationRules for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
//   - InternalException
//     Internal server error.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ListAutomationRules
func (c *SecurityHub) ListAutomationRules(input *ListAutomationRulesInput) (*ListAutomationRulesOutput, error) {
	req, out := c.ListAutomationRulesRequest(input)
	return out, req.Send()
}

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

const opListConfigurationPolicies = "ListConfigurationPolicies"

// ListConfigurationPoliciesRequest generates a "aws/request.Request" representing the
// client's request for the ListConfigurationPolicies 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 ListConfigurationPolicies for more information on using the ListConfigurationPolicies
// 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 ListConfigurationPoliciesRequest method.
//	req, resp := client.ListConfigurationPoliciesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ListConfigurationPolicies
func (c *SecurityHub) ListConfigurationPoliciesRequest(input *ListConfigurationPoliciesInput) (req *request.Request, output *ListConfigurationPoliciesOutput) {
	op := &request.Operation{
		Name:       opListConfigurationPolicies,
		HTTPMethod: "GET",
		HTTPPath:   "/configurationPolicy/list",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListConfigurationPoliciesInput{}
	}

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

// ListConfigurationPolicies API operation for AWS SecurityHub.
//
// Lists the configuration policies that the Security Hub delegated administrator
// has created for your organization. Only the delegated administrator can invoke
// this operation from the home Region.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation ListConfigurationPolicies for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ListConfigurationPolicies
func (c *SecurityHub) ListConfigurationPolicies(input *ListConfigurationPoliciesInput) (*ListConfigurationPoliciesOutput, error) {
	req, out := c.ListConfigurationPoliciesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListConfigurationPolicyAssociations = "ListConfigurationPolicyAssociations"

// ListConfigurationPolicyAssociationsRequest generates a "aws/request.Request" representing the
// client's request for the ListConfigurationPolicyAssociations 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 ListConfigurationPolicyAssociations for more information on using the ListConfigurationPolicyAssociations
// 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 ListConfigurationPolicyAssociationsRequest method.
//	req, resp := client.ListConfigurationPolicyAssociationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ListConfigurationPolicyAssociations
func (c *SecurityHub) ListConfigurationPolicyAssociationsRequest(input *ListConfigurationPolicyAssociationsInput) (req *request.Request, output *ListConfigurationPolicyAssociationsOutput) {
	op := &request.Operation{
		Name:       opListConfigurationPolicyAssociations,
		HTTPMethod: "POST",
		HTTPPath:   "/configurationPolicyAssociation/list",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListConfigurationPolicyAssociationsInput{}
	}

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

// ListConfigurationPolicyAssociations API operation for AWS SecurityHub.
//
// Provides information about the associations for your configuration policies
// and self-managed behavior. Only the Security Hub delegated administrator
// can invoke this operation from the home Region.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation ListConfigurationPolicyAssociations for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ListConfigurationPolicyAssociations
func (c *SecurityHub) ListConfigurationPolicyAssociations(input *ListConfigurationPolicyAssociationsInput) (*ListConfigurationPolicyAssociationsOutput, error) {
	req, out := c.ListConfigurationPolicyAssociationsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListEnabledProductsForImport = "ListEnabledProductsForImport"

// ListEnabledProductsForImportRequest generates a "aws/request.Request" representing the
// client's request for the ListEnabledProductsForImport 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 ListEnabledProductsForImport for more information on using the ListEnabledProductsForImport
// 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 ListEnabledProductsForImportRequest method.
//	req, resp := client.ListEnabledProductsForImportRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ListEnabledProductsForImport
func (c *SecurityHub) ListEnabledProductsForImportRequest(input *ListEnabledProductsForImportInput) (req *request.Request, output *ListEnabledProductsForImportOutput) {
	op := &request.Operation{
		Name:       opListEnabledProductsForImport,
		HTTPMethod: "GET",
		HTTPPath:   "/productSubscriptions",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListEnabledProductsForImportInput{}
	}

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

// ListEnabledProductsForImport API operation for AWS SecurityHub.
//
// Lists all findings-generating solutions (products) that you are subscribed
// to receive findings from in Security Hub.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation ListEnabledProductsForImport for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ListEnabledProductsForImport
func (c *SecurityHub) ListEnabledProductsForImport(input *ListEnabledProductsForImportInput) (*ListEnabledProductsForImportOutput, error) {
	req, out := c.ListEnabledProductsForImportRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListFindingAggregators = "ListFindingAggregators"

// ListFindingAggregatorsRequest generates a "aws/request.Request" representing the
// client's request for the ListFindingAggregators 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 ListFindingAggregators for more information on using the ListFindingAggregators
// 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 ListFindingAggregatorsRequest method.
//	req, resp := client.ListFindingAggregatorsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ListFindingAggregators
func (c *SecurityHub) ListFindingAggregatorsRequest(input *ListFindingAggregatorsInput) (req *request.Request, output *ListFindingAggregatorsOutput) {
	op := &request.Operation{
		Name:       opListFindingAggregators,
		HTTPMethod: "GET",
		HTTPPath:   "/findingAggregator/list",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListFindingAggregatorsInput{}
	}

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

// ListFindingAggregators API operation for AWS SecurityHub.
//
// If finding aggregation is enabled, then ListFindingAggregators returns the
// ARN of the finding aggregator. You can run this operation from any Region.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation ListFindingAggregators for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ListFindingAggregators
func (c *SecurityHub) ListFindingAggregators(input *ListFindingAggregatorsInput) (*ListFindingAggregatorsOutput, error) {
	req, out := c.ListFindingAggregatorsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListInvitations = "ListInvitations"

// ListInvitationsRequest generates a "aws/request.Request" representing the
// client's request for the ListInvitations 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 ListInvitations for more information on using the ListInvitations
// 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 ListInvitationsRequest method.
//	req, resp := client.ListInvitationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ListInvitations
func (c *SecurityHub) ListInvitationsRequest(input *ListInvitationsInput) (req *request.Request, output *ListInvitationsOutput) {
	op := &request.Operation{
		Name:       opListInvitations,
		HTTPMethod: "GET",
		HTTPPath:   "/invitations",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListInvitationsInput{}
	}

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

// ListInvitations API operation for AWS SecurityHub.
//
// Lists all Security Hub membership invitations that were sent to the current
// Amazon Web Services account.
//
// This operation is only used by accounts that are managed by invitation. Accounts
// that are managed using the integration with Organizations do not receive
// invitations.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation ListInvitations for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ListInvitations
func (c *SecurityHub) ListInvitations(input *ListInvitationsInput) (*ListInvitationsOutput, error) {
	req, out := c.ListInvitationsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListMembers = "ListMembers"

// ListMembersRequest generates a "aws/request.Request" representing the
// client's request for the ListMembers 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 ListMembers for more information on using the ListMembers
// 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 ListMembersRequest method.
//	req, resp := client.ListMembersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ListMembers
func (c *SecurityHub) ListMembersRequest(input *ListMembersInput) (req *request.Request, output *ListMembersOutput) {
	op := &request.Operation{
		Name:       opListMembers,
		HTTPMethod: "GET",
		HTTPPath:   "/members",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListMembersInput{}
	}

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

// ListMembers API operation for AWS SecurityHub.
//
// Lists details about all member accounts for the current Security Hub administrator
// account.
//
// The results include both member accounts that belong to an organization and
// member accounts that were invited manually.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation ListMembers for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ListMembers
func (c *SecurityHub) ListMembers(input *ListMembersInput) (*ListMembersOutput, error) {
	req, out := c.ListMembersRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListOrganizationAdminAccounts = "ListOrganizationAdminAccounts"

// ListOrganizationAdminAccountsRequest generates a "aws/request.Request" representing the
// client's request for the ListOrganizationAdminAccounts 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 ListOrganizationAdminAccounts for more information on using the ListOrganizationAdminAccounts
// 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 ListOrganizationAdminAccountsRequest method.
//	req, resp := client.ListOrganizationAdminAccountsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ListOrganizationAdminAccounts
func (c *SecurityHub) ListOrganizationAdminAccountsRequest(input *ListOrganizationAdminAccountsInput) (req *request.Request, output *ListOrganizationAdminAccountsOutput) {
	op := &request.Operation{
		Name:       opListOrganizationAdminAccounts,
		HTTPMethod: "GET",
		HTTPPath:   "/organization/admin",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListOrganizationAdminAccountsInput{}
	}

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

// ListOrganizationAdminAccounts API operation for AWS SecurityHub.
//
// Lists the Security Hub administrator accounts. Can only be called by the
// organization management account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation ListOrganizationAdminAccounts for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ListOrganizationAdminAccounts
func (c *SecurityHub) ListOrganizationAdminAccounts(input *ListOrganizationAdminAccountsInput) (*ListOrganizationAdminAccountsOutput, error) {
	req, out := c.ListOrganizationAdminAccountsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListSecurityControlDefinitions = "ListSecurityControlDefinitions"

// ListSecurityControlDefinitionsRequest generates a "aws/request.Request" representing the
// client's request for the ListSecurityControlDefinitions 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 ListSecurityControlDefinitions for more information on using the ListSecurityControlDefinitions
// 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 ListSecurityControlDefinitionsRequest method.
//	req, resp := client.ListSecurityControlDefinitionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ListSecurityControlDefinitions
func (c *SecurityHub) ListSecurityControlDefinitionsRequest(input *ListSecurityControlDefinitionsInput) (req *request.Request, output *ListSecurityControlDefinitionsOutput) {
	op := &request.Operation{
		Name:       opListSecurityControlDefinitions,
		HTTPMethod: "GET",
		HTTPPath:   "/securityControls/definitions",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListSecurityControlDefinitionsInput{}
	}

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

// ListSecurityControlDefinitions API operation for AWS SecurityHub.
//
// Lists all of the security controls that apply to a specified standard.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation ListSecurityControlDefinitions for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ListSecurityControlDefinitions
func (c *SecurityHub) ListSecurityControlDefinitions(input *ListSecurityControlDefinitionsInput) (*ListSecurityControlDefinitionsOutput, error) {
	req, out := c.ListSecurityControlDefinitionsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListStandardsControlAssociations = "ListStandardsControlAssociations"

// ListStandardsControlAssociationsRequest generates a "aws/request.Request" representing the
// client's request for the ListStandardsControlAssociations 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 ListStandardsControlAssociations for more information on using the ListStandardsControlAssociations
// 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 ListStandardsControlAssociationsRequest method.
//	req, resp := client.ListStandardsControlAssociationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ListStandardsControlAssociations
func (c *SecurityHub) ListStandardsControlAssociationsRequest(input *ListStandardsControlAssociationsInput) (req *request.Request, output *ListStandardsControlAssociationsOutput) {
	op := &request.Operation{
		Name:       opListStandardsControlAssociations,
		HTTPMethod: "GET",
		HTTPPath:   "/associations",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListStandardsControlAssociationsInput{}
	}

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

// ListStandardsControlAssociations API operation for AWS SecurityHub.
//
// Specifies whether a control is currently enabled or disabled in each enabled
// standard in the calling account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation ListStandardsControlAssociations for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ListStandardsControlAssociations
func (c *SecurityHub) ListStandardsControlAssociations(input *ListStandardsControlAssociationsInput) (*ListStandardsControlAssociationsOutput, error) {
	req, out := c.ListStandardsControlAssociationsRequest(input)
	return out, req.Send()
}

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

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

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

	for p.Next() {
		if !fn(p.Page().(*ListStandardsControlAssociationsOutput), !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/securityhub-2018-10-26/ListTagsForResource
func (c *SecurityHub) 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 AWS SecurityHub.
//
// Returns a list of tags associated with 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 AWS SecurityHub's
// API operation ListTagsForResource for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ListTagsForResource
func (c *SecurityHub) 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 *SecurityHub) 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 opStartConfigurationPolicyAssociation = "StartConfigurationPolicyAssociation"

// StartConfigurationPolicyAssociationRequest generates a "aws/request.Request" representing the
// client's request for the StartConfigurationPolicyAssociation 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 StartConfigurationPolicyAssociation for more information on using the StartConfigurationPolicyAssociation
// 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 StartConfigurationPolicyAssociationRequest method.
//	req, resp := client.StartConfigurationPolicyAssociationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/StartConfigurationPolicyAssociation
func (c *SecurityHub) StartConfigurationPolicyAssociationRequest(input *StartConfigurationPolicyAssociationInput) (req *request.Request, output *StartConfigurationPolicyAssociationOutput) {
	op := &request.Operation{
		Name:       opStartConfigurationPolicyAssociation,
		HTTPMethod: "POST",
		HTTPPath:   "/configurationPolicyAssociation/associate",
	}

	if input == nil {
		input = &StartConfigurationPolicyAssociationInput{}
	}

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

// StartConfigurationPolicyAssociation API operation for AWS SecurityHub.
//
// Associates a target account, organizational unit, or the root with a specified
// configuration. The target can be associated with a configuration policy or
// self-managed behavior. Only the Security Hub delegated administrator can
// invoke this operation from the home Region.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation StartConfigurationPolicyAssociation for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/StartConfigurationPolicyAssociation
func (c *SecurityHub) StartConfigurationPolicyAssociation(input *StartConfigurationPolicyAssociationInput) (*StartConfigurationPolicyAssociationOutput, error) {
	req, out := c.StartConfigurationPolicyAssociationRequest(input)
	return out, req.Send()
}

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

const opStartConfigurationPolicyDisassociation = "StartConfigurationPolicyDisassociation"

// StartConfigurationPolicyDisassociationRequest generates a "aws/request.Request" representing the
// client's request for the StartConfigurationPolicyDisassociation 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 StartConfigurationPolicyDisassociation for more information on using the StartConfigurationPolicyDisassociation
// 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 StartConfigurationPolicyDisassociationRequest method.
//	req, resp := client.StartConfigurationPolicyDisassociationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/StartConfigurationPolicyDisassociation
func (c *SecurityHub) StartConfigurationPolicyDisassociationRequest(input *StartConfigurationPolicyDisassociationInput) (req *request.Request, output *StartConfigurationPolicyDisassociationOutput) {
	op := &request.Operation{
		Name:       opStartConfigurationPolicyDisassociation,
		HTTPMethod: "POST",
		HTTPPath:   "/configurationPolicyAssociation/disassociate",
	}

	if input == nil {
		input = &StartConfigurationPolicyDisassociationInput{}
	}

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

// StartConfigurationPolicyDisassociation API operation for AWS SecurityHub.
//
// Disassociates a target account, organizational unit, or the root from a specified
// configuration. When you disassociate a configuration from its target, the
// target inherits the configuration of the closest parent. If there’s no
// configuration to inherit, the target retains its settings but becomes a self-managed
// account. A target can be disassociated from a configuration policy or self-managed
// behavior. Only the Security Hub delegated administrator can invoke this operation
// from the home Region.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation StartConfigurationPolicyDisassociation for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/StartConfigurationPolicyDisassociation
func (c *SecurityHub) StartConfigurationPolicyDisassociation(input *StartConfigurationPolicyDisassociationInput) (*StartConfigurationPolicyDisassociationOutput, error) {
	req, out := c.StartConfigurationPolicyDisassociationRequest(input)
	return out, req.Send()
}

// StartConfigurationPolicyDisassociationWithContext is the same as StartConfigurationPolicyDisassociation with the addition of
// the ability to pass a context and additional request options.
//
// See StartConfigurationPolicyDisassociation 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 *SecurityHub) StartConfigurationPolicyDisassociationWithContext(ctx aws.Context, input *StartConfigurationPolicyDisassociationInput, opts ...request.Option) (*StartConfigurationPolicyDisassociationOutput, error) {
	req, out := c.StartConfigurationPolicyDisassociationRequest(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/securityhub-2018-10-26/TagResource
func (c *SecurityHub) 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 AWS SecurityHub.
//
// Adds one or more tags 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 AWS SecurityHub's
// API operation TagResource for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/TagResource
func (c *SecurityHub) 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 *SecurityHub) 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/securityhub-2018-10-26/UntagResource
func (c *SecurityHub) 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 AWS SecurityHub.
//
// Removes one or more tags 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 AWS SecurityHub's
// API operation UntagResource for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/UntagResource
func (c *SecurityHub) 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 *SecurityHub) 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 opUpdateActionTarget = "UpdateActionTarget"

// UpdateActionTargetRequest generates a "aws/request.Request" representing the
// client's request for the UpdateActionTarget 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 UpdateActionTarget for more information on using the UpdateActionTarget
// 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 UpdateActionTargetRequest method.
//	req, resp := client.UpdateActionTargetRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/UpdateActionTarget
func (c *SecurityHub) UpdateActionTargetRequest(input *UpdateActionTargetInput) (req *request.Request, output *UpdateActionTargetOutput) {
	op := &request.Operation{
		Name:       opUpdateActionTarget,
		HTTPMethod: "PATCH",
		HTTPPath:   "/actionTargets/{ActionTargetArn+}",
	}

	if input == nil {
		input = &UpdateActionTargetInput{}
	}

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

// UpdateActionTarget API operation for AWS SecurityHub.
//
// Updates the name and description of a custom action target in Security Hub.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation UpdateActionTarget for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/UpdateActionTarget
func (c *SecurityHub) UpdateActionTarget(input *UpdateActionTargetInput) (*UpdateActionTargetOutput, error) {
	req, out := c.UpdateActionTargetRequest(input)
	return out, req.Send()
}

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

const opUpdateConfigurationPolicy = "UpdateConfigurationPolicy"

// UpdateConfigurationPolicyRequest generates a "aws/request.Request" representing the
// client's request for the UpdateConfigurationPolicy 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 UpdateConfigurationPolicy for more information on using the UpdateConfigurationPolicy
// 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 UpdateConfigurationPolicyRequest method.
//	req, resp := client.UpdateConfigurationPolicyRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/UpdateConfigurationPolicy
func (c *SecurityHub) UpdateConfigurationPolicyRequest(input *UpdateConfigurationPolicyInput) (req *request.Request, output *UpdateConfigurationPolicyOutput) {
	op := &request.Operation{
		Name:       opUpdateConfigurationPolicy,
		HTTPMethod: "PATCH",
		HTTPPath:   "/configurationPolicy/{Identifier}",
	}

	if input == nil {
		input = &UpdateConfigurationPolicyInput{}
	}

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

// UpdateConfigurationPolicy API operation for AWS SecurityHub.
//
// Updates a configuration policy. Only the Security Hub delegated administrator
// can invoke this operation from the home Region.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation UpdateConfigurationPolicy for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
//   - ResourceConflictException
//     The resource specified in the request conflicts with an existing resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/UpdateConfigurationPolicy
func (c *SecurityHub) UpdateConfigurationPolicy(input *UpdateConfigurationPolicyInput) (*UpdateConfigurationPolicyOutput, error) {
	req, out := c.UpdateConfigurationPolicyRequest(input)
	return out, req.Send()
}

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

const opUpdateFindingAggregator = "UpdateFindingAggregator"

// UpdateFindingAggregatorRequest generates a "aws/request.Request" representing the
// client's request for the UpdateFindingAggregator 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 UpdateFindingAggregator for more information on using the UpdateFindingAggregator
// 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 UpdateFindingAggregatorRequest method.
//	req, resp := client.UpdateFindingAggregatorRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/UpdateFindingAggregator
func (c *SecurityHub) UpdateFindingAggregatorRequest(input *UpdateFindingAggregatorInput) (req *request.Request, output *UpdateFindingAggregatorOutput) {
	op := &request.Operation{
		Name:       opUpdateFindingAggregator,
		HTTPMethod: "PATCH",
		HTTPPath:   "/findingAggregator/update",
	}

	if input == nil {
		input = &UpdateFindingAggregatorInput{}
	}

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

// UpdateFindingAggregator API operation for AWS SecurityHub.
//
// Updates the finding aggregation configuration. Used to update the Region
// linking mode and the list of included or excluded Regions. You cannot use
// UpdateFindingAggregator to change the aggregation Region.
//
// You must run UpdateFindingAggregator from the current aggregation Region.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation UpdateFindingAggregator for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/UpdateFindingAggregator
func (c *SecurityHub) UpdateFindingAggregator(input *UpdateFindingAggregatorInput) (*UpdateFindingAggregatorOutput, error) {
	req, out := c.UpdateFindingAggregatorRequest(input)
	return out, req.Send()
}

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

const opUpdateFindings = "UpdateFindings"

// UpdateFindingsRequest generates a "aws/request.Request" representing the
// client's request for the UpdateFindings 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 UpdateFindings for more information on using the UpdateFindings
// 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 UpdateFindingsRequest method.
//	req, resp := client.UpdateFindingsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/UpdateFindings
func (c *SecurityHub) UpdateFindingsRequest(input *UpdateFindingsInput) (req *request.Request, output *UpdateFindingsOutput) {
	op := &request.Operation{
		Name:       opUpdateFindings,
		HTTPMethod: "PATCH",
		HTTPPath:   "/findings",
	}

	if input == nil {
		input = &UpdateFindingsInput{}
	}

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

// UpdateFindings API operation for AWS SecurityHub.
//
// UpdateFindings is a deprecated operation. Instead of UpdateFindings, use
// the BatchUpdateFindings operation.
//
// Updates the Note and RecordState of the Security Hub-aggregated findings
// that the filter attributes specify. Any member account that can view the
// finding also sees the update to the finding.
//
// Finding updates made with UpdateFindings might not be persisted if the same
// finding is later updated by the finding provider through the BatchImportFindings
// operation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation UpdateFindings for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/UpdateFindings
func (c *SecurityHub) UpdateFindings(input *UpdateFindingsInput) (*UpdateFindingsOutput, error) {
	req, out := c.UpdateFindingsRequest(input)
	return out, req.Send()
}

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

const opUpdateInsight = "UpdateInsight"

// UpdateInsightRequest generates a "aws/request.Request" representing the
// client's request for the UpdateInsight 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 UpdateInsight for more information on using the UpdateInsight
// 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 UpdateInsightRequest method.
//	req, resp := client.UpdateInsightRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/UpdateInsight
func (c *SecurityHub) UpdateInsightRequest(input *UpdateInsightInput) (req *request.Request, output *UpdateInsightOutput) {
	op := &request.Operation{
		Name:       opUpdateInsight,
		HTTPMethod: "PATCH",
		HTTPPath:   "/insights/{InsightArn+}",
	}

	if input == nil {
		input = &UpdateInsightInput{}
	}

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

// UpdateInsight API operation for AWS SecurityHub.
//
// Updates the Security Hub insight identified by the specified insight ARN.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation UpdateInsight for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/UpdateInsight
func (c *SecurityHub) UpdateInsight(input *UpdateInsightInput) (*UpdateInsightOutput, error) {
	req, out := c.UpdateInsightRequest(input)
	return out, req.Send()
}

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

const opUpdateOrganizationConfiguration = "UpdateOrganizationConfiguration"

// UpdateOrganizationConfigurationRequest generates a "aws/request.Request" representing the
// client's request for the UpdateOrganizationConfiguration 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 UpdateOrganizationConfiguration for more information on using the UpdateOrganizationConfiguration
// 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 UpdateOrganizationConfigurationRequest method.
//	req, resp := client.UpdateOrganizationConfigurationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/UpdateOrganizationConfiguration
func (c *SecurityHub) UpdateOrganizationConfigurationRequest(input *UpdateOrganizationConfigurationInput) (req *request.Request, output *UpdateOrganizationConfigurationOutput) {
	op := &request.Operation{
		Name:       opUpdateOrganizationConfiguration,
		HTTPMethod: "POST",
		HTTPPath:   "/organization/configuration",
	}

	if input == nil {
		input = &UpdateOrganizationConfigurationInput{}
	}

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

// UpdateOrganizationConfiguration API operation for AWS SecurityHub.
//
// Updates the configuration of your organization in Security Hub. Only the
// Security Hub administrator account can invoke this operation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation UpdateOrganizationConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
//   - ResourceConflictException
//     The resource specified in the request conflicts with an existing resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/UpdateOrganizationConfiguration
func (c *SecurityHub) UpdateOrganizationConfiguration(input *UpdateOrganizationConfigurationInput) (*UpdateOrganizationConfigurationOutput, error) {
	req, out := c.UpdateOrganizationConfigurationRequest(input)
	return out, req.Send()
}

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

const opUpdateSecurityControl = "UpdateSecurityControl"

// UpdateSecurityControlRequest generates a "aws/request.Request" representing the
// client's request for the UpdateSecurityControl 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 UpdateSecurityControl for more information on using the UpdateSecurityControl
// 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 UpdateSecurityControlRequest method.
//	req, resp := client.UpdateSecurityControlRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/UpdateSecurityControl
func (c *SecurityHub) UpdateSecurityControlRequest(input *UpdateSecurityControlInput) (req *request.Request, output *UpdateSecurityControlOutput) {
	op := &request.Operation{
		Name:       opUpdateSecurityControl,
		HTTPMethod: "PATCH",
		HTTPPath:   "/securityControl/update",
	}

	if input == nil {
		input = &UpdateSecurityControlInput{}
	}

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

// UpdateSecurityControl API operation for AWS SecurityHub.
//
// Updates the properties of a security control.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation UpdateSecurityControl for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
//   - ResourceInUseException
//     The request was rejected because it conflicts with the resource's availability.
//     For example, you tried to update a security control that's currently in the
//     UPDATING state.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
//   - ResourceInUseException
//     The request was rejected because it conflicts with the resource's availability.
//     For example, you tried to update a security control that's currently in the
//     UPDATING state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/UpdateSecurityControl
func (c *SecurityHub) UpdateSecurityControl(input *UpdateSecurityControlInput) (*UpdateSecurityControlOutput, error) {
	req, out := c.UpdateSecurityControlRequest(input)
	return out, req.Send()
}

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

const opUpdateSecurityHubConfiguration = "UpdateSecurityHubConfiguration"

// UpdateSecurityHubConfigurationRequest generates a "aws/request.Request" representing the
// client's request for the UpdateSecurityHubConfiguration 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 UpdateSecurityHubConfiguration for more information on using the UpdateSecurityHubConfiguration
// 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 UpdateSecurityHubConfigurationRequest method.
//	req, resp := client.UpdateSecurityHubConfigurationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/UpdateSecurityHubConfiguration
func (c *SecurityHub) UpdateSecurityHubConfigurationRequest(input *UpdateSecurityHubConfigurationInput) (req *request.Request, output *UpdateSecurityHubConfigurationOutput) {
	op := &request.Operation{
		Name:       opUpdateSecurityHubConfiguration,
		HTTPMethod: "PATCH",
		HTTPPath:   "/accounts",
	}

	if input == nil {
		input = &UpdateSecurityHubConfigurationInput{}
	}

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

// UpdateSecurityHubConfiguration API operation for AWS SecurityHub.
//
// Updates configuration options for Security Hub.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation UpdateSecurityHubConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - LimitExceededException
//     The request was rejected because it attempted to create resources beyond
//     the current Amazon Web Services account or throttling limits. The error code
//     describes the limit exceeded.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/UpdateSecurityHubConfiguration
func (c *SecurityHub) UpdateSecurityHubConfiguration(input *UpdateSecurityHubConfigurationInput) (*UpdateSecurityHubConfigurationOutput, error) {
	req, out := c.UpdateSecurityHubConfigurationRequest(input)
	return out, req.Send()
}

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

const opUpdateStandardsControl = "UpdateStandardsControl"

// UpdateStandardsControlRequest generates a "aws/request.Request" representing the
// client's request for the UpdateStandardsControl 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 UpdateStandardsControl for more information on using the UpdateStandardsControl
// 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 UpdateStandardsControlRequest method.
//	req, resp := client.UpdateStandardsControlRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/UpdateStandardsControl
func (c *SecurityHub) UpdateStandardsControlRequest(input *UpdateStandardsControlInput) (req *request.Request, output *UpdateStandardsControlOutput) {
	op := &request.Operation{
		Name:       opUpdateStandardsControl,
		HTTPMethod: "PATCH",
		HTTPPath:   "/standards/control/{StandardsControlArn+}",
	}

	if input == nil {
		input = &UpdateStandardsControlInput{}
	}

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

// UpdateStandardsControl API operation for AWS SecurityHub.
//
// Used to control whether an individual security standard control is enabled
// or disabled.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS SecurityHub's
// API operation UpdateStandardsControl for usage and error information.
//
// Returned Error Types:
//
//   - InternalException
//     Internal server error.
//
//   - InvalidInputException
//     The request was rejected because you supplied an invalid or out-of-range
//     value for an input parameter.
//
//   - InvalidAccessException
//     The account doesn't have permission to perform this action.
//
//   - ResourceNotFoundException
//     The request was rejected because we can't find the specified resource.
//
//   - AccessDeniedException
//     You don't have permission to perform the action specified in the request.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/UpdateStandardsControl
func (c *SecurityHub) UpdateStandardsControl(input *UpdateStandardsControlInput) (*UpdateStandardsControlOutput, error) {
	req, out := c.UpdateStandardsControlRequest(input)
	return out, req.Send()
}

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

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

	// The account ID of the Security Hub administrator account that sent the invitation.
	//
	// AdministratorId is a required field
	AdministratorId *string `type:"string" required:"true"`

	// The identifier of the invitation sent from the Security Hub administrator
	// account.
	//
	// InvitationId is a required field
	InvitationId *string `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 AcceptAdministratorInvitationInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAdministratorId sets the AdministratorId field's value.
func (s *AcceptAdministratorInvitationInput) SetAdministratorId(v string) *AcceptAdministratorInvitationInput {
	s.AdministratorId = &v
	return s
}

// SetInvitationId sets the InvitationId field's value.
func (s *AcceptAdministratorInvitationInput) SetInvitationId(v string) *AcceptAdministratorInvitationInput {
	s.InvitationId = &v
	return s
}

type AcceptAdministratorInvitationOutput 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 AcceptAdministratorInvitationOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

	// The identifier of the invitation sent from the Security Hub administrator
	// account.
	//
	// InvitationId is a required field
	InvitationId *string `type:"string" required:"true"`

	// The account ID of the Security Hub administrator account that sent the invitation.
	//
	// MasterId is a required field
	MasterId *string `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 AcceptInvitationInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetInvitationId sets the InvitationId field's value.
func (s *AcceptInvitationInput) SetInvitationId(v string) *AcceptInvitationInput {
	s.InvitationId = &v
	return s
}

// SetMasterId sets the MasterId field's value.
func (s *AcceptInvitationInput) SetMasterId(v string) *AcceptInvitationInput {
	s.MasterId = &v
	return s
}

type AcceptInvitationOutput 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 AcceptInvitationOutput) String() string {
	return awsutil.Prettify(s)
}

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

// You don't have permission to perform the action specified in the request.
type AccessDeniedException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Code_ *string `locationName:"Code" type:"string"`

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

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

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

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

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

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

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

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

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

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

// The details of an Amazon Web Services account.
type AccountDetails struct {
	_ struct{} `type:"structure"`

	// The ID of an Amazon Web Services account.
	//
	// AccountId is a required field
	AccountId *string `type:"string" required:"true"`

	// The email of an Amazon Web Services account.
	Email *string `type:"string"`
}

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

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

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

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

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

// SetEmail sets the Email field's value.
func (s *AccountDetails) SetEmail(v string) *AccountDetails {
	s.Email = &v
	return s
}

// Provides details about one of the following actions that affects or that
// was taken on a resource:
//
//   - A remote IP address issued an Amazon Web Services API call
//
//   - A DNS request was received
//
//   - A remote IP address attempted to connect to an EC2 instance
//
//   - A remote IP address attempted a port probe on an EC2 instance
type Action struct {
	_ struct{} `type:"structure"`

	// The type of action that was detected. The possible action types are:
	//
	//    * NETWORK_CONNECTION
	//
	//    * AWS_API_CALL
	//
	//    * DNS_REQUEST
	//
	//    * PORT_PROBE
	ActionType *string `type:"string"`

	// Included if ActionType is AWS_API_CALL. Provides details about the API call
	// that was detected.
	AwsApiCallAction *AwsApiCallAction `type:"structure"`

	// Included if ActionType is DNS_REQUEST. Provides details about the DNS request
	// that was detected.
	DnsRequestAction *DnsRequestAction `type:"structure"`

	// Included if ActionType is NETWORK_CONNECTION. Provides details about the
	// network connection that was detected.
	NetworkConnectionAction *NetworkConnectionAction `type:"structure"`

	// Included if ActionType is PORT_PROBE. Provides details about the port probe
	// that was detected.
	PortProbeAction *PortProbeAction `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 Action) String() string {
	return awsutil.Prettify(s)
}

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

// SetActionType sets the ActionType field's value.
func (s *Action) SetActionType(v string) *Action {
	s.ActionType = &v
	return s
}

// SetAwsApiCallAction sets the AwsApiCallAction field's value.
func (s *Action) SetAwsApiCallAction(v *AwsApiCallAction) *Action {
	s.AwsApiCallAction = v
	return s
}

// SetDnsRequestAction sets the DnsRequestAction field's value.
func (s *Action) SetDnsRequestAction(v *DnsRequestAction) *Action {
	s.DnsRequestAction = v
	return s
}

// SetNetworkConnectionAction sets the NetworkConnectionAction field's value.
func (s *Action) SetNetworkConnectionAction(v *NetworkConnectionAction) *Action {
	s.NetworkConnectionAction = v
	return s
}

// SetPortProbeAction sets the PortProbeAction field's value.
func (s *Action) SetPortProbeAction(v *PortProbeAction) *Action {
	s.PortProbeAction = v
	return s
}

// Provides information about the IP address where the scanned port is located.
type ActionLocalIpDetails struct {
	_ struct{} `type:"structure"`

	// The IP address.
	IpAddressV4 *string `type:"string"`
}

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

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

// SetIpAddressV4 sets the IpAddressV4 field's value.
func (s *ActionLocalIpDetails) SetIpAddressV4(v string) *ActionLocalIpDetails {
	s.IpAddressV4 = &v
	return s
}

// For NetworkConnectionAction and PortProbeDetails, LocalPortDetails provides
// information about the local port that was involved in the action.
type ActionLocalPortDetails struct {
	_ struct{} `type:"structure"`

	// The number of the port.
	Port *int64 `type:"integer"`

	// The port name of the local connection.
	//
	// Length Constraints: 128.
	PortName *string `type:"string"`
}

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

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

// SetPort sets the Port field's value.
func (s *ActionLocalPortDetails) SetPort(v int64) *ActionLocalPortDetails {
	s.Port = &v
	return s
}

// SetPortName sets the PortName field's value.
func (s *ActionLocalPortDetails) SetPortName(v string) *ActionLocalPortDetails {
	s.PortName = &v
	return s
}

// For AwsApiAction, NetworkConnectionAction, and PortProbeAction, RemoteIpDetails
// provides information about the remote IP address that was involved in the
// action.
type ActionRemoteIpDetails struct {
	_ struct{} `type:"structure"`

	// The city where the remote IP address is located.
	City *City `type:"structure"`

	// The country where the remote IP address is located.
	Country *Country `type:"structure"`

	// The coordinates of the location of the remote IP address.
	GeoLocation *GeoLocation `type:"structure"`

	// The IP address.
	IpAddressV4 *string `type:"string"`

	// The internet service provider (ISP) organization associated with the remote
	// IP address.
	Organization *IpOrganizationDetails `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 ActionRemoteIpDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetCity sets the City field's value.
func (s *ActionRemoteIpDetails) SetCity(v *City) *ActionRemoteIpDetails {
	s.City = v
	return s
}

// SetCountry sets the Country field's value.
func (s *ActionRemoteIpDetails) SetCountry(v *Country) *ActionRemoteIpDetails {
	s.Country = v
	return s
}

// SetGeoLocation sets the GeoLocation field's value.
func (s *ActionRemoteIpDetails) SetGeoLocation(v *GeoLocation) *ActionRemoteIpDetails {
	s.GeoLocation = v
	return s
}

// SetIpAddressV4 sets the IpAddressV4 field's value.
func (s *ActionRemoteIpDetails) SetIpAddressV4(v string) *ActionRemoteIpDetails {
	s.IpAddressV4 = &v
	return s
}

// SetOrganization sets the Organization field's value.
func (s *ActionRemoteIpDetails) SetOrganization(v *IpOrganizationDetails) *ActionRemoteIpDetails {
	s.Organization = v
	return s
}

// Provides information about the remote port that was involved in an attempted
// network connection.
type ActionRemotePortDetails struct {
	_ struct{} `type:"structure"`

	// The number of the port.
	Port *int64 `type:"integer"`

	// The port name of the remote connection.
	//
	// Length Constraints: 128.
	PortName *string `type:"string"`
}

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

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

// SetPort sets the Port field's value.
func (s *ActionRemotePortDetails) SetPort(v int64) *ActionRemotePortDetails {
	s.Port = &v
	return s
}

// SetPortName sets the PortName field's value.
func (s *ActionRemotePortDetails) SetPortName(v string) *ActionRemotePortDetails {
	s.PortName = &v
	return s
}

// An ActionTarget object.
type ActionTarget struct {
	_ struct{} `type:"structure"`

	// The ARN for the target action.
	//
	// ActionTargetArn is a required field
	ActionTargetArn *string `type:"string" required:"true"`

	// The description of the target action.
	//
	// Description is a required field
	Description *string `type:"string" required:"true"`

	// The name of the action target.
	//
	// Name is a required field
	Name *string `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 ActionTarget) String() string {
	return awsutil.Prettify(s)
}

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

// SetActionTargetArn sets the ActionTargetArn field's value.
func (s *ActionTarget) SetActionTargetArn(v string) *ActionTarget {
	s.ActionTargetArn = &v
	return s
}

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

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

// An adjustment to the CVSS metric.
type Adjustment struct {
	_ struct{} `type:"structure"`

	// The metric to adjust.
	Metric *string `type:"string"`

	// The reason for the adjustment.
	Reason *string `type:"string"`
}

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

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

// SetMetric sets the Metric field's value.
func (s *Adjustment) SetMetric(v string) *Adjustment {
	s.Metric = &v
	return s
}

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

// Represents a Security Hub administrator account designated by an organization
// management account.
type AdminAccount struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account identifier of the Security Hub administrator
	// account.
	AccountId *string `type:"string"`

	// The current status of the Security Hub administrator account. Indicates whether
	// the account is currently enabled as a Security Hub administrator.
	Status *string `type:"string" enum:"AdminStatus"`
}

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

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

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

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

// Information about an enabled security standard in which a security control
// is enabled.
type AssociatedStandard struct {
	_ struct{} `type:"structure"`

	// The unique identifier of a standard in which a control is enabled. This field
	// consists of the resource portion of the Amazon Resource Name (ARN) returned
	// for a standard in the DescribeStandards (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_DescribeStandards.html)
	// API response.
	StandardsId *string `type:"string"`
}

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

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

// SetStandardsId sets the StandardsId field's value.
func (s *AssociatedStandard) SetStandardsId(v string) *AssociatedStandard {
	s.StandardsId = &v
	return s
}

// Options for filtering the ListConfigurationPolicyAssociations response. You
// can filter by the Amazon Resource Name (ARN) or universally unique identifier
// (UUID) of a configuration policy, AssociationType, or AssociationStatus.
type AssociationFilters struct {
	_ struct{} `type:"structure"`

	// The current status of the association between a target and a configuration
	// policy.
	AssociationStatus *string `type:"string" enum:"ConfigurationPolicyAssociationStatus"`

	// Indicates whether the association between a target and a configuration was
	// directly applied by the Security Hub delegated administrator or inherited
	// from a parent.
	AssociationType *string `type:"string" enum:"AssociationType"`

	// The ARN or UUID of the configuration policy.
	ConfigurationPolicyId *string `type:"string"`
}

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

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

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

// SetAssociationType sets the AssociationType field's value.
func (s *AssociationFilters) SetAssociationType(v string) *AssociationFilters {
	s.AssociationType = &v
	return s
}

// SetConfigurationPolicyId sets the ConfigurationPolicyId field's value.
func (s *AssociationFilters) SetConfigurationPolicyId(v string) *AssociationFilters {
	s.ConfigurationPolicyId = &v
	return s
}

// The associations between a route table and one or more subnets or a gateway.
type AssociationSetDetails struct {
	_ struct{} `type:"structure"`

	// The state of the association between a route table and a subnet or gateway.
	AssociationState *AssociationStateDetails `type:"structure"`

	// The ID of the internet gateway or virtual private gateway.
	GatewayId *string `type:"string"`

	// Indicates whether this is the main route table.
	Main *bool `type:"boolean"`

	// The ID of the association.
	RouteTableAssociationId *string `type:"string"`

	// The ID of the route table.
	RouteTableId *string `type:"string"`

	// The ID of the subnet. A subnet ID is not returned for an implicit association.
	SubnetId *string `type:"string"`
}

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

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

// SetAssociationState sets the AssociationState field's value.
func (s *AssociationSetDetails) SetAssociationState(v *AssociationStateDetails) *AssociationSetDetails {
	s.AssociationState = v
	return s
}

// SetGatewayId sets the GatewayId field's value.
func (s *AssociationSetDetails) SetGatewayId(v string) *AssociationSetDetails {
	s.GatewayId = &v
	return s
}

// SetMain sets the Main field's value.
func (s *AssociationSetDetails) SetMain(v bool) *AssociationSetDetails {
	s.Main = &v
	return s
}

// SetRouteTableAssociationId sets the RouteTableAssociationId field's value.
func (s *AssociationSetDetails) SetRouteTableAssociationId(v string) *AssociationSetDetails {
	s.RouteTableAssociationId = &v
	return s
}

// SetRouteTableId sets the RouteTableId field's value.
func (s *AssociationSetDetails) SetRouteTableId(v string) *AssociationSetDetails {
	s.RouteTableId = &v
	return s
}

// SetSubnetId sets the SubnetId field's value.
func (s *AssociationSetDetails) SetSubnetId(v string) *AssociationSetDetails {
	s.SubnetId = &v
	return s
}

// Describes the state of an association between a route table and a subnet
// or gateway.
type AssociationStateDetails struct {
	_ struct{} `type:"structure"`

	// The state of the association.
	State *string `type:"string"`

	// The status message, if applicable.
	StatusMessage *string `type:"string"`
}

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

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

// SetState sets the State field's value.
func (s *AssociationStateDetails) SetState(v string) *AssociationStateDetails {
	s.State = &v
	return s
}

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

// One or more actions to update finding fields if a finding matches the defined
// criteria of the rule.
type AutomationRulesAction struct {
	_ struct{} `type:"structure"`

	// Specifies that the automation rule action is an update to a finding field.
	FindingFieldsUpdate *AutomationRulesFindingFieldsUpdate `type:"structure"`

	// Specifies that the rule action should update the Types finding field. The
	// Types finding field classifies findings in the format of namespace/category/classifier.
	// For more information, see Types taxonomy for ASFF (https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-findings-format-type-taxonomy.html)
	// in the Security Hub User Guide.
	Type *string `type:"string" enum:"AutomationRulesActionType"`
}

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

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

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

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

// SetFindingFieldsUpdate sets the FindingFieldsUpdate field's value.
func (s *AutomationRulesAction) SetFindingFieldsUpdate(v *AutomationRulesFindingFieldsUpdate) *AutomationRulesAction {
	s.FindingFieldsUpdate = v
	return s
}

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

// Defines the configuration of an automation rule.
type AutomationRulesConfig struct {
	_ struct{} `type:"structure"`

	// One or more actions to update finding fields if a finding matches the defined
	// criteria of the rule.
	Actions []*AutomationRulesAction `min:"1" type:"list"`

	// A timestamp that indicates when the rule was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreatedAt *time.Time `type:"timestamp" timestampFormat:"iso8601"`

	// The principal that created a rule.
	CreatedBy *string `type:"string"`

	// A set of Amazon Web Services Security Finding Format (https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-findings-format.html)
	// finding field attributes and corresponding expected values that Security
	// Hub uses to filter findings. If a rule is enabled and a finding matches the
	// conditions specified in this parameter, Security Hub applies the rule action
	// to the finding.
	Criteria *AutomationRulesFindingFilters `type:"structure"`

	// A description of the rule.
	Description *string `type:"string"`

	// Specifies whether a rule is the last to be applied with respect to a finding
	// that matches the rule criteria. This is useful when a finding matches the
	// criteria for multiple rules, and each rule has different actions. If a rule
	// is terminal, Security Hub applies the rule action to a finding that matches
	// the rule criteria and doesn't evaluate other rules for the finding. By default,
	// a rule isn't terminal.
	IsTerminal *bool `type:"boolean"`

	// The Amazon Resource Name (ARN) of a rule.
	RuleArn *string `type:"string"`

	// The name of the rule.
	RuleName *string `type:"string"`

	// An integer ranging from 1 to 1000 that represents the order in which the
	// rule action is applied to findings. Security Hub applies rules with lower
	// values for this parameter first.
	RuleOrder *int64 `min:"1" type:"integer"`

	// Whether the rule is active after it is created. If this parameter is equal
	// to ENABLED, Security Hub starts applying the rule to findings and finding
	// updates after the rule is created.
	RuleStatus *string `type:"string" enum:"RuleStatus"`

	// A timestamp that indicates when the rule was most recently updated.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	UpdatedAt *time.Time `type:"timestamp" timestampFormat:"iso8601"`
}

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

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

// SetActions sets the Actions field's value.
func (s *AutomationRulesConfig) SetActions(v []*AutomationRulesAction) *AutomationRulesConfig {
	s.Actions = v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *AutomationRulesConfig) SetCreatedAt(v time.Time) *AutomationRulesConfig {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *AutomationRulesConfig) SetCreatedBy(v string) *AutomationRulesConfig {
	s.CreatedBy = &v
	return s
}

// SetCriteria sets the Criteria field's value.
func (s *AutomationRulesConfig) SetCriteria(v *AutomationRulesFindingFilters) *AutomationRulesConfig {
	s.Criteria = v
	return s
}

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

// SetIsTerminal sets the IsTerminal field's value.
func (s *AutomationRulesConfig) SetIsTerminal(v bool) *AutomationRulesConfig {
	s.IsTerminal = &v
	return s
}

// SetRuleArn sets the RuleArn field's value.
func (s *AutomationRulesConfig) SetRuleArn(v string) *AutomationRulesConfig {
	s.RuleArn = &v
	return s
}

// SetRuleName sets the RuleName field's value.
func (s *AutomationRulesConfig) SetRuleName(v string) *AutomationRulesConfig {
	s.RuleName = &v
	return s
}

// SetRuleOrder sets the RuleOrder field's value.
func (s *AutomationRulesConfig) SetRuleOrder(v int64) *AutomationRulesConfig {
	s.RuleOrder = &v
	return s
}

// SetRuleStatus sets the RuleStatus field's value.
func (s *AutomationRulesConfig) SetRuleStatus(v string) *AutomationRulesConfig {
	s.RuleStatus = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *AutomationRulesConfig) SetUpdatedAt(v time.Time) *AutomationRulesConfig {
	s.UpdatedAt = &v
	return s
}

// Identifies the finding fields that the automation rule action updates when
// a finding matches the defined criteria.
type AutomationRulesFindingFieldsUpdate struct {
	_ struct{} `type:"structure"`

	// The rule action updates the Confidence field of a finding.
	Confidence *int64 `type:"integer"`

	// The rule action updates the Criticality field of a finding.
	Criticality *int64 `type:"integer"`

	// The updated note.
	Note *NoteUpdate `type:"structure"`

	// The rule action updates the RelatedFindings field of a finding.
	RelatedFindings []*RelatedFinding `type:"list"`

	// Updates to the severity information for a finding.
	Severity *SeverityUpdate `type:"structure"`

	// The rule action updates the Types field of a finding.
	Types []*string `type:"list"`

	// The rule action updates the UserDefinedFields field of a finding.
	UserDefinedFields map[string]*string `type:"map"`

	// The rule action updates the VerificationState field of a finding.
	VerificationState *string `type:"string" enum:"VerificationState"`

	// Used to update information about the investigation into the finding.
	Workflow *WorkflowUpdate `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 AutomationRulesFindingFieldsUpdate) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetConfidence sets the Confidence field's value.
func (s *AutomationRulesFindingFieldsUpdate) SetConfidence(v int64) *AutomationRulesFindingFieldsUpdate {
	s.Confidence = &v
	return s
}

// SetCriticality sets the Criticality field's value.
func (s *AutomationRulesFindingFieldsUpdate) SetCriticality(v int64) *AutomationRulesFindingFieldsUpdate {
	s.Criticality = &v
	return s
}

// SetNote sets the Note field's value.
func (s *AutomationRulesFindingFieldsUpdate) SetNote(v *NoteUpdate) *AutomationRulesFindingFieldsUpdate {
	s.Note = v
	return s
}

// SetRelatedFindings sets the RelatedFindings field's value.
func (s *AutomationRulesFindingFieldsUpdate) SetRelatedFindings(v []*RelatedFinding) *AutomationRulesFindingFieldsUpdate {
	s.RelatedFindings = v
	return s
}

// SetSeverity sets the Severity field's value.
func (s *AutomationRulesFindingFieldsUpdate) SetSeverity(v *SeverityUpdate) *AutomationRulesFindingFieldsUpdate {
	s.Severity = v
	return s
}

// SetTypes sets the Types field's value.
func (s *AutomationRulesFindingFieldsUpdate) SetTypes(v []*string) *AutomationRulesFindingFieldsUpdate {
	s.Types = v
	return s
}

// SetUserDefinedFields sets the UserDefinedFields field's value.
func (s *AutomationRulesFindingFieldsUpdate) SetUserDefinedFields(v map[string]*string) *AutomationRulesFindingFieldsUpdate {
	s.UserDefinedFields = v
	return s
}

// SetVerificationState sets the VerificationState field's value.
func (s *AutomationRulesFindingFieldsUpdate) SetVerificationState(v string) *AutomationRulesFindingFieldsUpdate {
	s.VerificationState = &v
	return s
}

// SetWorkflow sets the Workflow field's value.
func (s *AutomationRulesFindingFieldsUpdate) SetWorkflow(v *WorkflowUpdate) *AutomationRulesFindingFieldsUpdate {
	s.Workflow = v
	return s
}

// The criteria that determine which findings a rule applies to.
type AutomationRulesFindingFilters struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID in which a finding was generated.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 100 items.
	AwsAccountId []*StringFilter `type:"list"`

	// The name of the Amazon Web Services account in which a finding was generated.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	AwsAccountName []*StringFilter `type:"list"`

	// The name of the company for the product that generated the finding. For control-based
	// findings, the company is Amazon Web Services.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	CompanyName []*StringFilter `type:"list"`

	// The unique identifier of a standard in which a control is enabled. This field
	// consists of the resource portion of the Amazon Resource Name (ARN) returned
	// for a standard in the DescribeStandards (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_DescribeStandards.html)
	// API response.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	ComplianceAssociatedStandardsId []*StringFilter `type:"list"`

	// The security control ID for which a finding was generated. Security control
	// IDs are the same across standards.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	ComplianceSecurityControlId []*StringFilter `type:"list"`

	// The result of a security check. This field is only used for findings generated
	// from controls.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	ComplianceStatus []*StringFilter `type:"list"`

	// The likelihood that a finding accurately identifies the behavior or issue
	// that it was intended to identify. Confidence is scored on a 0–100 basis
	// using a ratio scale. A value of 0 means 0 percent confidence, and a value
	// of 100 means 100 percent confidence. For example, a data exfiltration detection
	// based on a statistical deviation of network traffic has low confidence because
	// an actual exfiltration hasn't been verified. For more information, see Confidence
	// (https://docs.aws.amazon.com/securityhub/latest/userguide/asff-top-level-attributes.html#asff-confidence)
	// in the Security Hub User Guide.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	Confidence []*NumberFilter `type:"list"`

	// A timestamp that indicates when this finding record was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	CreatedAt []*DateFilter `type:"list"`

	// The level of importance that is assigned to the resources that are associated
	// with a finding. Criticality is scored on a 0–100 basis, using a ratio scale
	// that supports only full integers. A score of 0 means that the underlying
	// resources have no criticality, and a score of 100 is reserved for the most
	// critical resources. For more information, see Criticality (https://docs.aws.amazon.com/securityhub/latest/userguide/asff-top-level-attributes.html#asff-criticality)
	// in the Security Hub User Guide.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	Criticality []*NumberFilter `type:"list"`

	// A finding's description.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	Description []*StringFilter `type:"list"`

	// A timestamp that indicates when the potential security issue captured by
	// a finding was first observed by the security findings product.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	FirstObservedAt []*DateFilter `type:"list"`

	// The identifier for the solution-specific component that generated a finding.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 100 items.
	GeneratorId []*StringFilter `type:"list"`

	// The product-specific identifier for a finding.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	Id []*StringFilter `type:"list"`

	// A timestamp that indicates when the potential security issue captured by
	// a finding was most recently observed by the security findings product.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	LastObservedAt []*DateFilter `type:"list"`

	// The text of a user-defined note that's added to a finding.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	NoteText []*StringFilter `type:"list"`

	// The timestamp of when the note was updated.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	NoteUpdatedAt []*DateFilter `type:"list"`

	// The principal that created a note.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	NoteUpdatedBy []*StringFilter `type:"list"`

	// The Amazon Resource Name (ARN) for a third-party product that generated a
	// finding in Security Hub.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	ProductArn []*StringFilter `type:"list"`

	// Provides the name of the product that generated the finding. For control-based
	// findings, the product name is Security Hub.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	ProductName []*StringFilter `type:"list"`

	// Provides the current state of a finding.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	RecordState []*StringFilter `type:"list"`

	// The product-generated identifier for a related finding.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	RelatedFindingsId []*StringFilter `type:"list"`

	// The ARN for the product that generated a related finding.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	RelatedFindingsProductArn []*StringFilter `type:"list"`

	// The Amazon Resource Name (ARN) of the application that is related to a finding.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	ResourceApplicationArn []*StringFilter `type:"list"`

	// The name of the application that is related to a finding.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	ResourceApplicationName []*StringFilter `type:"list"`

	// Custom fields and values about the resource that a finding pertains to.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	ResourceDetailsOther []*MapFilter `type:"list"`

	// The identifier for the given resource type. For Amazon Web Services resources
	// that are identified by Amazon Resource Names (ARNs), this is the ARN. For
	// Amazon Web Services resources that lack ARNs, this is the identifier as defined
	// by the Amazon Web Service that created the resource. For non-Amazon Web Services
	// resources, this is a unique identifier that is associated with the resource.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 100 items.
	ResourceId []*StringFilter `type:"list"`

	// The partition in which the resource that the finding pertains to is located.
	// A partition is a group of Amazon Web Services Regions. Each Amazon Web Services
	// account is scoped to one partition.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	ResourcePartition []*StringFilter `type:"list"`

	// The Amazon Web Services Region where the resource that a finding pertains
	// to is located.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	ResourceRegion []*StringFilter `type:"list"`

	// A list of Amazon Web Services tags associated with a resource at the time
	// the finding was processed.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	ResourceTags []*MapFilter `type:"list"`

	// The type of resource that the finding pertains to.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	ResourceType []*StringFilter `type:"list"`

	// The severity value of the finding.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	SeverityLabel []*StringFilter `type:"list"`

	// Provides a URL that links to a page about the current finding in the finding
	// product.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	SourceUrl []*StringFilter `type:"list"`

	// A finding's title.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 100 items.
	Title []*StringFilter `type:"list"`

	// One or more finding types in the format of namespace/category/classifier
	// that classify a finding. For a list of namespaces, classifiers, and categories,
	// see Types taxonomy for ASFF (https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-findings-format-type-taxonomy.html)
	// in the Security Hub User Guide.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	Type []*StringFilter `type:"list"`

	// A timestamp that indicates when the finding record was most recently updated.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	UpdatedAt []*DateFilter `type:"list"`

	// A list of user-defined name and value string pairs added to a finding.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	UserDefinedFields []*MapFilter `type:"list"`

	// Provides the veracity of a finding.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	VerificationState []*StringFilter `type:"list"`

	// Provides information about the status of the investigation into a finding.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 20 items.
	WorkflowStatus []*StringFilter `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 AutomationRulesFindingFilters) String() string {
	return awsutil.Prettify(s)
}

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

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *AutomationRulesFindingFilters) SetAwsAccountId(v []*StringFilter) *AutomationRulesFindingFilters {
	s.AwsAccountId = v
	return s
}

// SetAwsAccountName sets the AwsAccountName field's value.
func (s *AutomationRulesFindingFilters) SetAwsAccountName(v []*StringFilter) *AutomationRulesFindingFilters {
	s.AwsAccountName = v
	return s
}

// SetCompanyName sets the CompanyName field's value.
func (s *AutomationRulesFindingFilters) SetCompanyName(v []*StringFilter) *AutomationRulesFindingFilters {
	s.CompanyName = v
	return s
}

// SetComplianceAssociatedStandardsId sets the ComplianceAssociatedStandardsId field's value.
func (s *AutomationRulesFindingFilters) SetComplianceAssociatedStandardsId(v []*StringFilter) *AutomationRulesFindingFilters {
	s.ComplianceAssociatedStandardsId = v
	return s
}

// SetComplianceSecurityControlId sets the ComplianceSecurityControlId field's value.
func (s *AutomationRulesFindingFilters) SetComplianceSecurityControlId(v []*StringFilter) *AutomationRulesFindingFilters {
	s.ComplianceSecurityControlId = v
	return s
}

// SetComplianceStatus sets the ComplianceStatus field's value.
func (s *AutomationRulesFindingFilters) SetComplianceStatus(v []*StringFilter) *AutomationRulesFindingFilters {
	s.ComplianceStatus = v
	return s
}

// SetConfidence sets the Confidence field's value.
func (s *AutomationRulesFindingFilters) SetConfidence(v []*NumberFilter) *AutomationRulesFindingFilters {
	s.Confidence = v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *AutomationRulesFindingFilters) SetCreatedAt(v []*DateFilter) *AutomationRulesFindingFilters {
	s.CreatedAt = v
	return s
}

// SetCriticality sets the Criticality field's value.
func (s *AutomationRulesFindingFilters) SetCriticality(v []*NumberFilter) *AutomationRulesFindingFilters {
	s.Criticality = v
	return s
}

// SetDescription sets the Description field's value.
func (s *AutomationRulesFindingFilters) SetDescription(v []*StringFilter) *AutomationRulesFindingFilters {
	s.Description = v
	return s
}

// SetFirstObservedAt sets the FirstObservedAt field's value.
func (s *AutomationRulesFindingFilters) SetFirstObservedAt(v []*DateFilter) *AutomationRulesFindingFilters {
	s.FirstObservedAt = v
	return s
}

// SetGeneratorId sets the GeneratorId field's value.
func (s *AutomationRulesFindingFilters) SetGeneratorId(v []*StringFilter) *AutomationRulesFindingFilters {
	s.GeneratorId = v
	return s
}

// SetId sets the Id field's value.
func (s *AutomationRulesFindingFilters) SetId(v []*StringFilter) *AutomationRulesFindingFilters {
	s.Id = v
	return s
}

// SetLastObservedAt sets the LastObservedAt field's value.
func (s *AutomationRulesFindingFilters) SetLastObservedAt(v []*DateFilter) *AutomationRulesFindingFilters {
	s.LastObservedAt = v
	return s
}

// SetNoteText sets the NoteText field's value.
func (s *AutomationRulesFindingFilters) SetNoteText(v []*StringFilter) *AutomationRulesFindingFilters {
	s.NoteText = v
	return s
}

// SetNoteUpdatedAt sets the NoteUpdatedAt field's value.
func (s *AutomationRulesFindingFilters) SetNoteUpdatedAt(v []*DateFilter) *AutomationRulesFindingFilters {
	s.NoteUpdatedAt = v
	return s
}

// SetNoteUpdatedBy sets the NoteUpdatedBy field's value.
func (s *AutomationRulesFindingFilters) SetNoteUpdatedBy(v []*StringFilter) *AutomationRulesFindingFilters {
	s.NoteUpdatedBy = v
	return s
}

// SetProductArn sets the ProductArn field's value.
func (s *AutomationRulesFindingFilters) SetProductArn(v []*StringFilter) *AutomationRulesFindingFilters {
	s.ProductArn = v
	return s
}

// SetProductName sets the ProductName field's value.
func (s *AutomationRulesFindingFilters) SetProductName(v []*StringFilter) *AutomationRulesFindingFilters {
	s.ProductName = v
	return s
}

// SetRecordState sets the RecordState field's value.
func (s *AutomationRulesFindingFilters) SetRecordState(v []*StringFilter) *AutomationRulesFindingFilters {
	s.RecordState = v
	return s
}

// SetRelatedFindingsId sets the RelatedFindingsId field's value.
func (s *AutomationRulesFindingFilters) SetRelatedFindingsId(v []*StringFilter) *AutomationRulesFindingFilters {
	s.RelatedFindingsId = v
	return s
}

// SetRelatedFindingsProductArn sets the RelatedFindingsProductArn field's value.
func (s *AutomationRulesFindingFilters) SetRelatedFindingsProductArn(v []*StringFilter) *AutomationRulesFindingFilters {
	s.RelatedFindingsProductArn = v
	return s
}

// SetResourceApplicationArn sets the ResourceApplicationArn field's value.
func (s *AutomationRulesFindingFilters) SetResourceApplicationArn(v []*StringFilter) *AutomationRulesFindingFilters {
	s.ResourceApplicationArn = v
	return s
}

// SetResourceApplicationName sets the ResourceApplicationName field's value.
func (s *AutomationRulesFindingFilters) SetResourceApplicationName(v []*StringFilter) *AutomationRulesFindingFilters {
	s.ResourceApplicationName = v
	return s
}

// SetResourceDetailsOther sets the ResourceDetailsOther field's value.
func (s *AutomationRulesFindingFilters) SetResourceDetailsOther(v []*MapFilter) *AutomationRulesFindingFilters {
	s.ResourceDetailsOther = v
	return s
}

// SetResourceId sets the ResourceId field's value.
func (s *AutomationRulesFindingFilters) SetResourceId(v []*StringFilter) *AutomationRulesFindingFilters {
	s.ResourceId = v
	return s
}

// SetResourcePartition sets the ResourcePartition field's value.
func (s *AutomationRulesFindingFilters) SetResourcePartition(v []*StringFilter) *AutomationRulesFindingFilters {
	s.ResourcePartition = v
	return s
}

// SetResourceRegion sets the ResourceRegion field's value.
func (s *AutomationRulesFindingFilters) SetResourceRegion(v []*StringFilter) *AutomationRulesFindingFilters {
	s.ResourceRegion = v
	return s
}

// SetResourceTags sets the ResourceTags field's value.
func (s *AutomationRulesFindingFilters) SetResourceTags(v []*MapFilter) *AutomationRulesFindingFilters {
	s.ResourceTags = v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *AutomationRulesFindingFilters) SetResourceType(v []*StringFilter) *AutomationRulesFindingFilters {
	s.ResourceType = v
	return s
}

// SetSeverityLabel sets the SeverityLabel field's value.
func (s *AutomationRulesFindingFilters) SetSeverityLabel(v []*StringFilter) *AutomationRulesFindingFilters {
	s.SeverityLabel = v
	return s
}

// SetSourceUrl sets the SourceUrl field's value.
func (s *AutomationRulesFindingFilters) SetSourceUrl(v []*StringFilter) *AutomationRulesFindingFilters {
	s.SourceUrl = v
	return s
}

// SetTitle sets the Title field's value.
func (s *AutomationRulesFindingFilters) SetTitle(v []*StringFilter) *AutomationRulesFindingFilters {
	s.Title = v
	return s
}

// SetType sets the Type field's value.
func (s *AutomationRulesFindingFilters) SetType(v []*StringFilter) *AutomationRulesFindingFilters {
	s.Type = v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *AutomationRulesFindingFilters) SetUpdatedAt(v []*DateFilter) *AutomationRulesFindingFilters {
	s.UpdatedAt = v
	return s
}

// SetUserDefinedFields sets the UserDefinedFields field's value.
func (s *AutomationRulesFindingFilters) SetUserDefinedFields(v []*MapFilter) *AutomationRulesFindingFilters {
	s.UserDefinedFields = v
	return s
}

// SetVerificationState sets the VerificationState field's value.
func (s *AutomationRulesFindingFilters) SetVerificationState(v []*StringFilter) *AutomationRulesFindingFilters {
	s.VerificationState = v
	return s
}

// SetWorkflowStatus sets the WorkflowStatus field's value.
func (s *AutomationRulesFindingFilters) SetWorkflowStatus(v []*StringFilter) *AutomationRulesFindingFilters {
	s.WorkflowStatus = v
	return s
}

// Metadata for automation rules in the calling account. The response includes
// rules with a RuleStatus of ENABLED and DISABLED.
type AutomationRulesMetadata struct {
	_ struct{} `type:"structure"`

	// A timestamp that indicates when the rule was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreatedAt *time.Time `type:"timestamp" timestampFormat:"iso8601"`

	// The principal that created a rule.
	CreatedBy *string `type:"string"`

	// A description of the rule.
	Description *string `type:"string"`

	// Specifies whether a rule is the last to be applied with respect to a finding
	// that matches the rule criteria. This is useful when a finding matches the
	// criteria for multiple rules, and each rule has different actions. If a rule
	// is terminal, Security Hub applies the rule action to a finding that matches
	// the rule criteria and doesn't evaluate other rules for the finding. By default,
	// a rule isn't terminal.
	IsTerminal *bool `type:"boolean"`

	// The Amazon Resource Name (ARN) for the rule.
	RuleArn *string `type:"string"`

	// The name of the rule.
	RuleName *string `type:"string"`

	// An integer ranging from 1 to 1000 that represents the order in which the
	// rule action is applied to findings. Security Hub applies rules with lower
	// values for this parameter first.
	RuleOrder *int64 `min:"1" type:"integer"`

	// Whether the rule is active after it is created. If this parameter is equal
	// to ENABLED, Security Hub starts applying the rule to findings and finding
	// updates after the rule is created. To change the value of this parameter
	// after creating a rule, use BatchUpdateAutomationRules (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_BatchUpdateAutomationRules.html).
	RuleStatus *string `type:"string" enum:"RuleStatus"`

	// A timestamp that indicates when the rule was most recently updated.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	UpdatedAt *time.Time `type:"timestamp" timestampFormat:"iso8601"`
}

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

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

// SetCreatedAt sets the CreatedAt field's value.
func (s *AutomationRulesMetadata) SetCreatedAt(v time.Time) *AutomationRulesMetadata {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *AutomationRulesMetadata) SetCreatedBy(v string) *AutomationRulesMetadata {
	s.CreatedBy = &v
	return s
}

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

// SetIsTerminal sets the IsTerminal field's value.
func (s *AutomationRulesMetadata) SetIsTerminal(v bool) *AutomationRulesMetadata {
	s.IsTerminal = &v
	return s
}

// SetRuleArn sets the RuleArn field's value.
func (s *AutomationRulesMetadata) SetRuleArn(v string) *AutomationRulesMetadata {
	s.RuleArn = &v
	return s
}

// SetRuleName sets the RuleName field's value.
func (s *AutomationRulesMetadata) SetRuleName(v string) *AutomationRulesMetadata {
	s.RuleName = &v
	return s
}

// SetRuleOrder sets the RuleOrder field's value.
func (s *AutomationRulesMetadata) SetRuleOrder(v int64) *AutomationRulesMetadata {
	s.RuleOrder = &v
	return s
}

// SetRuleStatus sets the RuleStatus field's value.
func (s *AutomationRulesMetadata) SetRuleStatus(v string) *AutomationRulesMetadata {
	s.RuleStatus = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *AutomationRulesMetadata) SetUpdatedAt(v time.Time) *AutomationRulesMetadata {
	s.UpdatedAt = &v
	return s
}

// Information about an Availability Zone.
type AvailabilityZone struct {
	_ struct{} `type:"structure"`

	// The ID of the subnet. You can specify one subnet per Availability Zone.
	SubnetId *string `type:"string"`

	// The name of the Availability Zone.
	ZoneName *string `type:"string"`
}

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

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

// SetSubnetId sets the SubnetId field's value.
func (s *AvailabilityZone) SetSubnetId(v string) *AvailabilityZone {
	s.SubnetId = &v
	return s
}

// SetZoneName sets the ZoneName field's value.
func (s *AvailabilityZone) SetZoneName(v string) *AvailabilityZone {
	s.ZoneName = &v
	return s
}

// Provides details about an Amazon MQ message broker. A message broker allows
// software applications and components to communicate using various programming
// languages, operating systems, and formal messaging protocols.
type AwsAmazonMqBrokerDetails struct {
	_ struct{} `type:"structure"`

	// The authentication strategy used to secure the broker. The default is SIMPLE.
	AuthenticationStrategy *string `type:"string"`

	// Whether automatically upgrade new minor versions for brokers, as new versions
	// are released and supported by Amazon MQ. Automatic upgrades occur during
	// the scheduled maintenance window of the broker or after a manual broker reboot.
	AutoMinorVersionUpgrade *bool `type:"boolean"`

	// The Amazon Resource Name (ARN) of the broker.
	BrokerArn *string `type:"string"`

	// The unique ID that Amazon MQ generates for the broker.
	BrokerId *string `type:"string"`

	// The broker's name.
	BrokerName *string `type:"string"`

	// The broker's deployment mode.
	DeploymentMode *string `type:"string"`

	// Encryption options for the broker. Doesn’t apply to RabbitMQ brokers.
	EncryptionOptions *AwsAmazonMqBrokerEncryptionOptionsDetails `type:"structure"`

	// The type of broker engine.
	EngineType *string `type:"string"`

	// The version of the broker engine.
	EngineVersion *string `type:"string"`

	// The broker's instance type.
	HostInstanceType *string `type:"string"`

	// The metadata of the Lightweight Directory Access Protocol (LDAP) server used
	// to authenticate and authorize connections to the broker. This is an optional
	// failover server.
	LdapServerMetadata *AwsAmazonMqBrokerLdapServerMetadataDetails `type:"structure"`

	// Turns on Amazon CloudWatch logging for brokers.
	Logs *AwsAmazonMqBrokerLogsDetails `type:"structure"`

	// The scheduled time period (UTC) during which Amazon MQ begins to apply pending
	// updates or patches to the broker.
	MaintenanceWindowStartTime *AwsAmazonMqBrokerMaintenanceWindowStartTimeDetails `type:"structure"`

	// Permits connections from applications outside of the VPC that hosts the broker's
	// subnets.
	PubliclyAccessible *bool `type:"boolean"`

	// The list of rules (one minimum, 125 maximum) that authorize connections to
	// brokers.
	SecurityGroups []*string `type:"list"`

	// The broker's storage type.
	StorageType *string `type:"string"`

	// The list of groups that define which subnets and IP ranges the broker can
	// use from different Availability Zones.
	SubnetIds []*string `type:"list"`

	// The list of all broker usernames for the specified broker. Doesn't apply
	// to RabbitMQ brokers.
	Users []*AwsAmazonMqBrokerUsersDetails `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 AwsAmazonMqBrokerDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetAuthenticationStrategy sets the AuthenticationStrategy field's value.
func (s *AwsAmazonMqBrokerDetails) SetAuthenticationStrategy(v string) *AwsAmazonMqBrokerDetails {
	s.AuthenticationStrategy = &v
	return s
}

// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
func (s *AwsAmazonMqBrokerDetails) SetAutoMinorVersionUpgrade(v bool) *AwsAmazonMqBrokerDetails {
	s.AutoMinorVersionUpgrade = &v
	return s
}

// SetBrokerArn sets the BrokerArn field's value.
func (s *AwsAmazonMqBrokerDetails) SetBrokerArn(v string) *AwsAmazonMqBrokerDetails {
	s.BrokerArn = &v
	return s
}

// SetBrokerId sets the BrokerId field's value.
func (s *AwsAmazonMqBrokerDetails) SetBrokerId(v string) *AwsAmazonMqBrokerDetails {
	s.BrokerId = &v
	return s
}

// SetBrokerName sets the BrokerName field's value.
func (s *AwsAmazonMqBrokerDetails) SetBrokerName(v string) *AwsAmazonMqBrokerDetails {
	s.BrokerName = &v
	return s
}

// SetDeploymentMode sets the DeploymentMode field's value.
func (s *AwsAmazonMqBrokerDetails) SetDeploymentMode(v string) *AwsAmazonMqBrokerDetails {
	s.DeploymentMode = &v
	return s
}

// SetEncryptionOptions sets the EncryptionOptions field's value.
func (s *AwsAmazonMqBrokerDetails) SetEncryptionOptions(v *AwsAmazonMqBrokerEncryptionOptionsDetails) *AwsAmazonMqBrokerDetails {
	s.EncryptionOptions = v
	return s
}

// SetEngineType sets the EngineType field's value.
func (s *AwsAmazonMqBrokerDetails) SetEngineType(v string) *AwsAmazonMqBrokerDetails {
	s.EngineType = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *AwsAmazonMqBrokerDetails) SetEngineVersion(v string) *AwsAmazonMqBrokerDetails {
	s.EngineVersion = &v
	return s
}

// SetHostInstanceType sets the HostInstanceType field's value.
func (s *AwsAmazonMqBrokerDetails) SetHostInstanceType(v string) *AwsAmazonMqBrokerDetails {
	s.HostInstanceType = &v
	return s
}

// SetLdapServerMetadata sets the LdapServerMetadata field's value.
func (s *AwsAmazonMqBrokerDetails) SetLdapServerMetadata(v *AwsAmazonMqBrokerLdapServerMetadataDetails) *AwsAmazonMqBrokerDetails {
	s.LdapServerMetadata = v
	return s
}

// SetLogs sets the Logs field's value.
func (s *AwsAmazonMqBrokerDetails) SetLogs(v *AwsAmazonMqBrokerLogsDetails) *AwsAmazonMqBrokerDetails {
	s.Logs = v
	return s
}

// SetMaintenanceWindowStartTime sets the MaintenanceWindowStartTime field's value.
func (s *AwsAmazonMqBrokerDetails) SetMaintenanceWindowStartTime(v *AwsAmazonMqBrokerMaintenanceWindowStartTimeDetails) *AwsAmazonMqBrokerDetails {
	s.MaintenanceWindowStartTime = v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *AwsAmazonMqBrokerDetails) SetPubliclyAccessible(v bool) *AwsAmazonMqBrokerDetails {
	s.PubliclyAccessible = &v
	return s
}

// SetSecurityGroups sets the SecurityGroups field's value.
func (s *AwsAmazonMqBrokerDetails) SetSecurityGroups(v []*string) *AwsAmazonMqBrokerDetails {
	s.SecurityGroups = v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *AwsAmazonMqBrokerDetails) SetStorageType(v string) *AwsAmazonMqBrokerDetails {
	s.StorageType = &v
	return s
}

// SetSubnetIds sets the SubnetIds field's value.
func (s *AwsAmazonMqBrokerDetails) SetSubnetIds(v []*string) *AwsAmazonMqBrokerDetails {
	s.SubnetIds = v
	return s
}

// SetUsers sets the Users field's value.
func (s *AwsAmazonMqBrokerDetails) SetUsers(v []*AwsAmazonMqBrokerUsersDetails) *AwsAmazonMqBrokerDetails {
	s.Users = v
	return s
}

// Provides details about broker encryption options.
type AwsAmazonMqBrokerEncryptionOptionsDetails struct {
	_ struct{} `type:"structure"`

	// The KMS key that’s used to encrypt your data at rest. If not provided,
	// Amazon MQ will use a default KMS key to encrypt your data.
	KmsKeyId *string `type:"string"`

	// Specifies that an KMS key should be used for at-rest encryption. Set to true
	// by default if no value is provided (for example, for RabbitMQ brokers).
	UseAwsOwnedKey *bool `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 AwsAmazonMqBrokerEncryptionOptionsDetails) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetUseAwsOwnedKey sets the UseAwsOwnedKey field's value.
func (s *AwsAmazonMqBrokerEncryptionOptionsDetails) SetUseAwsOwnedKey(v bool) *AwsAmazonMqBrokerEncryptionOptionsDetails {
	s.UseAwsOwnedKey = &v
	return s
}

// The metadata of the Lightweight Directory Access Protocol (LDAP) server used
// to authenticate and authorize connections to the broker. This is an optional
// failover server.
type AwsAmazonMqBrokerLdapServerMetadataDetails struct {
	_ struct{} `type:"structure"`

	// Specifies the location of the LDAP server, such as Amazon Web Services Directory
	// Service for Microsoft Active Directory.
	Hosts []*string `type:"list"`

	// The distinguished name of the node in the directory information tree (DIT)
	// to search for roles or groups.
	RoleBase *string `type:"string"`

	// The group name attribute in a role entry whose value is the name of that
	// role.
	RoleName *string `type:"string"`

	// The LDAP search filter used to find roles within the roleBase.
	RoleSearchMatching *string `type:"string"`

	// The directory search scope for the role. If set to true, the scope is to
	// search the entire subtree.
	RoleSearchSubtree *bool `type:"boolean"`

	// A username for the service account, which is an account in your LDAP server
	// that has access to initiate a connection.
	ServiceAccountUsername *string `type:"string"`

	// Selects a particular subtree of the directory information tree (DIT) to search
	// for user entries.
	UserBase *string `type:"string"`

	// The name of the LDAP attribute in the user's directory entry for the user's
	// group membership.
	UserRoleName *string `type:"string"`

	// The LDAP search filter used to find users within the userBase.
	UserSearchMatching *string `type:"string"`

	// The directory search scope for the user. If set to true, the scope is to
	// search the entire subtree.
	UserSearchSubtree *bool `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 AwsAmazonMqBrokerLdapServerMetadataDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetHosts sets the Hosts field's value.
func (s *AwsAmazonMqBrokerLdapServerMetadataDetails) SetHosts(v []*string) *AwsAmazonMqBrokerLdapServerMetadataDetails {
	s.Hosts = v
	return s
}

// SetRoleBase sets the RoleBase field's value.
func (s *AwsAmazonMqBrokerLdapServerMetadataDetails) SetRoleBase(v string) *AwsAmazonMqBrokerLdapServerMetadataDetails {
	s.RoleBase = &v
	return s
}

// SetRoleName sets the RoleName field's value.
func (s *AwsAmazonMqBrokerLdapServerMetadataDetails) SetRoleName(v string) *AwsAmazonMqBrokerLdapServerMetadataDetails {
	s.RoleName = &v
	return s
}

// SetRoleSearchMatching sets the RoleSearchMatching field's value.
func (s *AwsAmazonMqBrokerLdapServerMetadataDetails) SetRoleSearchMatching(v string) *AwsAmazonMqBrokerLdapServerMetadataDetails {
	s.RoleSearchMatching = &v
	return s
}

// SetRoleSearchSubtree sets the RoleSearchSubtree field's value.
func (s *AwsAmazonMqBrokerLdapServerMetadataDetails) SetRoleSearchSubtree(v bool) *AwsAmazonMqBrokerLdapServerMetadataDetails {
	s.RoleSearchSubtree = &v
	return s
}

// SetServiceAccountUsername sets the ServiceAccountUsername field's value.
func (s *AwsAmazonMqBrokerLdapServerMetadataDetails) SetServiceAccountUsername(v string) *AwsAmazonMqBrokerLdapServerMetadataDetails {
	s.ServiceAccountUsername = &v
	return s
}

// SetUserBase sets the UserBase field's value.
func (s *AwsAmazonMqBrokerLdapServerMetadataDetails) SetUserBase(v string) *AwsAmazonMqBrokerLdapServerMetadataDetails {
	s.UserBase = &v
	return s
}

// SetUserRoleName sets the UserRoleName field's value.
func (s *AwsAmazonMqBrokerLdapServerMetadataDetails) SetUserRoleName(v string) *AwsAmazonMqBrokerLdapServerMetadataDetails {
	s.UserRoleName = &v
	return s
}

// SetUserSearchMatching sets the UserSearchMatching field's value.
func (s *AwsAmazonMqBrokerLdapServerMetadataDetails) SetUserSearchMatching(v string) *AwsAmazonMqBrokerLdapServerMetadataDetails {
	s.UserSearchMatching = &v
	return s
}

// SetUserSearchSubtree sets the UserSearchSubtree field's value.
func (s *AwsAmazonMqBrokerLdapServerMetadataDetails) SetUserSearchSubtree(v bool) *AwsAmazonMqBrokerLdapServerMetadataDetails {
	s.UserSearchSubtree = &v
	return s
}

// Provides information about logs to be activated for the specified broker.
type AwsAmazonMqBrokerLogsDetails struct {
	_ struct{} `type:"structure"`

	// Activates audit logging. Every user management action made using JMX or the
	// ActiveMQ Web Console is logged. Doesn't apply to RabbitMQ brokers.
	Audit *bool `type:"boolean"`

	// The location of the CloudWatch Logs log group where audit logs are sent.
	AuditLogGroup *string `type:"string"`

	// Activates general logging.
	General *bool `type:"boolean"`

	// The location of the CloudWatch Logs log group where general logs are sent.
	GeneralLogGroup *string `type:"string"`

	// The list of information about logs that are to be turned on for the specified
	// broker.
	Pending *AwsAmazonMqBrokerLogsPendingDetails `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 AwsAmazonMqBrokerLogsDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetAudit sets the Audit field's value.
func (s *AwsAmazonMqBrokerLogsDetails) SetAudit(v bool) *AwsAmazonMqBrokerLogsDetails {
	s.Audit = &v
	return s
}

// SetAuditLogGroup sets the AuditLogGroup field's value.
func (s *AwsAmazonMqBrokerLogsDetails) SetAuditLogGroup(v string) *AwsAmazonMqBrokerLogsDetails {
	s.AuditLogGroup = &v
	return s
}

// SetGeneral sets the General field's value.
func (s *AwsAmazonMqBrokerLogsDetails) SetGeneral(v bool) *AwsAmazonMqBrokerLogsDetails {
	s.General = &v
	return s
}

// SetGeneralLogGroup sets the GeneralLogGroup field's value.
func (s *AwsAmazonMqBrokerLogsDetails) SetGeneralLogGroup(v string) *AwsAmazonMqBrokerLogsDetails {
	s.GeneralLogGroup = &v
	return s
}

// SetPending sets the Pending field's value.
func (s *AwsAmazonMqBrokerLogsDetails) SetPending(v *AwsAmazonMqBrokerLogsPendingDetails) *AwsAmazonMqBrokerLogsDetails {
	s.Pending = v
	return s
}

// Provides information about logs to be activated for the specified broker.
type AwsAmazonMqBrokerLogsPendingDetails struct {
	_ struct{} `type:"structure"`

	// Activates audit logging. Every user management action made using JMX or the
	// ActiveMQ Web Console is logged. Doesn't apply to RabbitMQ brokers.
	Audit *bool `type:"boolean"`

	// Activates general logging.
	General *bool `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 AwsAmazonMqBrokerLogsPendingDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetAudit sets the Audit field's value.
func (s *AwsAmazonMqBrokerLogsPendingDetails) SetAudit(v bool) *AwsAmazonMqBrokerLogsPendingDetails {
	s.Audit = &v
	return s
}

// SetGeneral sets the General field's value.
func (s *AwsAmazonMqBrokerLogsPendingDetails) SetGeneral(v bool) *AwsAmazonMqBrokerLogsPendingDetails {
	s.General = &v
	return s
}

// The scheduled time period (UTC) during which Amazon MQ begins to apply pending
// updates or patches to the broker.
type AwsAmazonMqBrokerMaintenanceWindowStartTimeDetails struct {
	_ struct{} `type:"structure"`

	// The day of the week on which the maintenance window falls.
	DayOfWeek *string `type:"string"`

	// The time, in 24-hour format, on which the maintenance window falls.
	TimeOfDay *string `type:"string"`

	// The time zone in either the Country/City format or the UTC offset format.
	// UTC is the default format.
	TimeZone *string `type:"string"`
}

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

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

// SetDayOfWeek sets the DayOfWeek field's value.
func (s *AwsAmazonMqBrokerMaintenanceWindowStartTimeDetails) SetDayOfWeek(v string) *AwsAmazonMqBrokerMaintenanceWindowStartTimeDetails {
	s.DayOfWeek = &v
	return s
}

// SetTimeOfDay sets the TimeOfDay field's value.
func (s *AwsAmazonMqBrokerMaintenanceWindowStartTimeDetails) SetTimeOfDay(v string) *AwsAmazonMqBrokerMaintenanceWindowStartTimeDetails {
	s.TimeOfDay = &v
	return s
}

// SetTimeZone sets the TimeZone field's value.
func (s *AwsAmazonMqBrokerMaintenanceWindowStartTimeDetails) SetTimeZone(v string) *AwsAmazonMqBrokerMaintenanceWindowStartTimeDetails {
	s.TimeZone = &v
	return s
}

// Provides details about the broker usernames for the specified broker. Doesn't
// apply to RabbitMQ brokers.
type AwsAmazonMqBrokerUsersDetails struct {
	_ struct{} `type:"structure"`

	// The type of change pending for the broker user.
	PendingChange *string `type:"string"`

	// The username of the broker user.
	Username *string `type:"string"`
}

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

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

// SetPendingChange sets the PendingChange field's value.
func (s *AwsAmazonMqBrokerUsersDetails) SetPendingChange(v string) *AwsAmazonMqBrokerUsersDetails {
	s.PendingChange = &v
	return s
}

// SetUsername sets the Username field's value.
func (s *AwsAmazonMqBrokerUsersDetails) SetUsername(v string) *AwsAmazonMqBrokerUsersDetails {
	s.Username = &v
	return s
}

// Provided if ActionType is AWS_API_CALL. It provides details about the API
// call that was detected.
type AwsApiCallAction struct {
	_ struct{} `type:"structure"`

	// Identifies the resources that were affected by the API call.
	AffectedResources map[string]*string `type:"map"`

	// The name of the API method that was issued.
	//
	// Length Constraints: 128.
	Api *string `type:"string"`

	// Indicates whether the API call originated from a remote IP address (remoteip)
	// or from a DNS domain (domain).
	CallerType *string `type:"string"`

	// Provided if CallerType is domain. Provides information about the DNS domain
	// that the API call originated from.
	DomainDetails *AwsApiCallActionDomainDetails `type:"structure"`

	// A timestamp that indicates when the API call was first observed.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	FirstSeen *string `type:"string"`

	// A timestamp that indicates when the API call was most recently observed.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	LastSeen *string `type:"string"`

	// Provided if CallerType is remoteIp. Provides information about the remote
	// IP address that the API call originated from.
	RemoteIpDetails *ActionRemoteIpDetails `type:"structure"`

	// The name of the Amazon Web Services service that the API method belongs to.
	//
	// Length Constraints: 128.
	ServiceName *string `type:"string"`
}

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

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

// SetAffectedResources sets the AffectedResources field's value.
func (s *AwsApiCallAction) SetAffectedResources(v map[string]*string) *AwsApiCallAction {
	s.AffectedResources = v
	return s
}

// SetApi sets the Api field's value.
func (s *AwsApiCallAction) SetApi(v string) *AwsApiCallAction {
	s.Api = &v
	return s
}

// SetCallerType sets the CallerType field's value.
func (s *AwsApiCallAction) SetCallerType(v string) *AwsApiCallAction {
	s.CallerType = &v
	return s
}

// SetDomainDetails sets the DomainDetails field's value.
func (s *AwsApiCallAction) SetDomainDetails(v *AwsApiCallActionDomainDetails) *AwsApiCallAction {
	s.DomainDetails = v
	return s
}

// SetFirstSeen sets the FirstSeen field's value.
func (s *AwsApiCallAction) SetFirstSeen(v string) *AwsApiCallAction {
	s.FirstSeen = &v
	return s
}

// SetLastSeen sets the LastSeen field's value.
func (s *AwsApiCallAction) SetLastSeen(v string) *AwsApiCallAction {
	s.LastSeen = &v
	return s
}

// SetRemoteIpDetails sets the RemoteIpDetails field's value.
func (s *AwsApiCallAction) SetRemoteIpDetails(v *ActionRemoteIpDetails) *AwsApiCallAction {
	s.RemoteIpDetails = v
	return s
}

// SetServiceName sets the ServiceName field's value.
func (s *AwsApiCallAction) SetServiceName(v string) *AwsApiCallAction {
	s.ServiceName = &v
	return s
}

// Provided if CallerType is domain. It provides information about the DNS domain
// that issued the API call.
type AwsApiCallActionDomainDetails struct {
	_ struct{} `type:"structure"`

	// The name of the DNS domain that issued the API call.
	//
	// Length Constraints: 128.
	Domain *string `type:"string"`
}

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

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

// SetDomain sets the Domain field's value.
func (s *AwsApiCallActionDomainDetails) SetDomain(v string) *AwsApiCallActionDomainDetails {
	s.Domain = &v
	return s
}

// Contains information about settings for logging access for the stage.
type AwsApiGatewayAccessLogSettings struct {
	_ struct{} `type:"structure"`

	// The ARN of the CloudWatch Logs log group that receives the access logs.
	DestinationArn *string `type:"string"`

	// A single-line format of the access logs of data, as specified by selected
	// $context variables. The format must include at least $context.requestId.
	Format *string `type:"string"`
}

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

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

// SetDestinationArn sets the DestinationArn field's value.
func (s *AwsApiGatewayAccessLogSettings) SetDestinationArn(v string) *AwsApiGatewayAccessLogSettings {
	s.DestinationArn = &v
	return s
}

// SetFormat sets the Format field's value.
func (s *AwsApiGatewayAccessLogSettings) SetFormat(v string) *AwsApiGatewayAccessLogSettings {
	s.Format = &v
	return s
}

// Contains information about settings for canary deployment in the stage.
type AwsApiGatewayCanarySettings struct {
	_ struct{} `type:"structure"`

	// The deployment identifier for the canary deployment.
	DeploymentId *string `type:"string"`

	// The percentage of traffic that is diverted to a canary deployment.
	PercentTraffic *float64 `type:"double"`

	// Stage variables that are overridden in the canary release deployment. The
	// variables include new stage variables that are introduced in the canary.
	//
	// Each variable is represented as a string-to-string map between the stage
	// variable name and the variable value.
	StageVariableOverrides map[string]*string `type:"map"`

	// Indicates whether the canary deployment uses the stage cache.
	UseStageCache *bool `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 AwsApiGatewayCanarySettings) String() string {
	return awsutil.Prettify(s)
}

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

// SetDeploymentId sets the DeploymentId field's value.
func (s *AwsApiGatewayCanarySettings) SetDeploymentId(v string) *AwsApiGatewayCanarySettings {
	s.DeploymentId = &v
	return s
}

// SetPercentTraffic sets the PercentTraffic field's value.
func (s *AwsApiGatewayCanarySettings) SetPercentTraffic(v float64) *AwsApiGatewayCanarySettings {
	s.PercentTraffic = &v
	return s
}

// SetStageVariableOverrides sets the StageVariableOverrides field's value.
func (s *AwsApiGatewayCanarySettings) SetStageVariableOverrides(v map[string]*string) *AwsApiGatewayCanarySettings {
	s.StageVariableOverrides = v
	return s
}

// SetUseStageCache sets the UseStageCache field's value.
func (s *AwsApiGatewayCanarySettings) SetUseStageCache(v bool) *AwsApiGatewayCanarySettings {
	s.UseStageCache = &v
	return s
}

// Contains information about the endpoints for the API.
type AwsApiGatewayEndpointConfiguration struct {
	_ struct{} `type:"structure"`

	// A list of endpoint types for the REST API.
	//
	// For an edge-optimized API, the endpoint type is EDGE. For a Regional API,
	// the endpoint type is REGIONAL. For a private API, the endpoint type is PRIVATE.
	Types []*string `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 AwsApiGatewayEndpointConfiguration) String() string {
	return awsutil.Prettify(s)
}

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

// SetTypes sets the Types field's value.
func (s *AwsApiGatewayEndpointConfiguration) SetTypes(v []*string) *AwsApiGatewayEndpointConfiguration {
	s.Types = v
	return s
}

// Defines settings for a method for the stage.
type AwsApiGatewayMethodSettings struct {
	_ struct{} `type:"structure"`

	// Indicates whether the cached responses are encrypted.
	CacheDataEncrypted *bool `type:"boolean"`

	// Specifies the time to live (TTL), in seconds, for cached responses. The higher
	// the TTL, the longer the response is cached.
	CacheTtlInSeconds *int64 `type:"integer"`

	// Indicates whether responses are cached and returned for requests. For responses
	// to be cached, a cache cluster must be enabled on the stage.
	CachingEnabled *bool `type:"boolean"`

	// Indicates whether data trace logging is enabled for the method. Data trace
	// logging affects the log entries that are pushed to CloudWatch Logs.
	DataTraceEnabled *bool `type:"boolean"`

	// The HTTP method. You can use an asterisk (*) as a wildcard to apply method
	// settings to multiple methods.
	HttpMethod *string `type:"string"`

	// The logging level for this method. The logging level affects the log entries
	// that are pushed to CloudWatch Logs.
	//
	// If the logging level is ERROR, then the logs only include error-level entries.
	//
	// If the logging level is INFO, then the logs include both ERROR events and
	// extra informational events.
	//
	// Valid values: OFF | ERROR | INFO
	LoggingLevel *string `type:"string"`

	// Indicates whether CloudWatch metrics are enabled for the method.
	MetricsEnabled *bool `type:"boolean"`

	// Indicates whether authorization is required for a cache invalidation request.
	RequireAuthorizationForCacheControl *bool `type:"boolean"`

	// The resource path for this method. Forward slashes (/) are encoded as ~1
	// . The initial slash must include a forward slash.
	//
	// For example, the path value /resource/subresource must be encoded as /~1resource~1subresource.
	//
	// To specify the root path, use only a slash (/). You can use an asterisk (*)
	// as a wildcard to apply method settings to multiple methods.
	ResourcePath *string `type:"string"`

	// The throttling burst limit for the method.
	ThrottlingBurstLimit *int64 `type:"integer"`

	// The throttling rate limit for the method.
	ThrottlingRateLimit *float64 `type:"double"`

	// Indicates how to handle unauthorized requests for cache invalidation.
	//
	// Valid values: FAIL_WITH_403 | SUCCEED_WITH_RESPONSE_HEADER | SUCCEED_WITHOUT_RESPONSE_HEADER
	UnauthorizedCacheControlHeaderStrategy *string `type:"string"`
}

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

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

// SetCacheDataEncrypted sets the CacheDataEncrypted field's value.
func (s *AwsApiGatewayMethodSettings) SetCacheDataEncrypted(v bool) *AwsApiGatewayMethodSettings {
	s.CacheDataEncrypted = &v
	return s
}

// SetCacheTtlInSeconds sets the CacheTtlInSeconds field's value.
func (s *AwsApiGatewayMethodSettings) SetCacheTtlInSeconds(v int64) *AwsApiGatewayMethodSettings {
	s.CacheTtlInSeconds = &v
	return s
}

// SetCachingEnabled sets the CachingEnabled field's value.
func (s *AwsApiGatewayMethodSettings) SetCachingEnabled(v bool) *AwsApiGatewayMethodSettings {
	s.CachingEnabled = &v
	return s
}

// SetDataTraceEnabled sets the DataTraceEnabled field's value.
func (s *AwsApiGatewayMethodSettings) SetDataTraceEnabled(v bool) *AwsApiGatewayMethodSettings {
	s.DataTraceEnabled = &v
	return s
}

// SetHttpMethod sets the HttpMethod field's value.
func (s *AwsApiGatewayMethodSettings) SetHttpMethod(v string) *AwsApiGatewayMethodSettings {
	s.HttpMethod = &v
	return s
}

// SetLoggingLevel sets the LoggingLevel field's value.
func (s *AwsApiGatewayMethodSettings) SetLoggingLevel(v string) *AwsApiGatewayMethodSettings {
	s.LoggingLevel = &v
	return s
}

// SetMetricsEnabled sets the MetricsEnabled field's value.
func (s *AwsApiGatewayMethodSettings) SetMetricsEnabled(v bool) *AwsApiGatewayMethodSettings {
	s.MetricsEnabled = &v
	return s
}

// SetRequireAuthorizationForCacheControl sets the RequireAuthorizationForCacheControl field's value.
func (s *AwsApiGatewayMethodSettings) SetRequireAuthorizationForCacheControl(v bool) *AwsApiGatewayMethodSettings {
	s.RequireAuthorizationForCacheControl = &v
	return s
}

// SetResourcePath sets the ResourcePath field's value.
func (s *AwsApiGatewayMethodSettings) SetResourcePath(v string) *AwsApiGatewayMethodSettings {
	s.ResourcePath = &v
	return s
}

// SetThrottlingBurstLimit sets the ThrottlingBurstLimit field's value.
func (s *AwsApiGatewayMethodSettings) SetThrottlingBurstLimit(v int64) *AwsApiGatewayMethodSettings {
	s.ThrottlingBurstLimit = &v
	return s
}

// SetThrottlingRateLimit sets the ThrottlingRateLimit field's value.
func (s *AwsApiGatewayMethodSettings) SetThrottlingRateLimit(v float64) *AwsApiGatewayMethodSettings {
	s.ThrottlingRateLimit = &v
	return s
}

// SetUnauthorizedCacheControlHeaderStrategy sets the UnauthorizedCacheControlHeaderStrategy field's value.
func (s *AwsApiGatewayMethodSettings) SetUnauthorizedCacheControlHeaderStrategy(v string) *AwsApiGatewayMethodSettings {
	s.UnauthorizedCacheControlHeaderStrategy = &v
	return s
}

// Contains information about a REST API in version 1 of Amazon API Gateway.
type AwsApiGatewayRestApiDetails struct {
	_ struct{} `type:"structure"`

	// The source of the API key for metering requests according to a usage plan.
	//
	// HEADER indicates whether to read the API key from the X-API-Key header of
	// a request.
	//
	// AUTHORIZER indicates whether to read the API key from the UsageIdentifierKey
	// from a custom authorizer.
	ApiKeySource *string `type:"string"`

	// The list of binary media types supported by the REST API.
	BinaryMediaTypes []*string `type:"list"`

	// Indicates when the API was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreatedDate *string `type:"string"`

	// A description of the REST API.
	Description *string `type:"string"`

	// The endpoint configuration of the REST API.
	EndpointConfiguration *AwsApiGatewayEndpointConfiguration `type:"structure"`

	// The identifier of the REST API.
	Id *string `type:"string"`

	// The minimum size in bytes of a payload before compression is enabled.
	//
	// If null, then compression is disabled.
	//
	// If 0, then all payloads are compressed.
	MinimumCompressionSize *int64 `type:"integer"`

	// The name of the REST API.
	Name *string `type:"string"`

	// The version identifier for the REST API.
	Version *string `type:"string"`
}

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

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

// SetApiKeySource sets the ApiKeySource field's value.
func (s *AwsApiGatewayRestApiDetails) SetApiKeySource(v string) *AwsApiGatewayRestApiDetails {
	s.ApiKeySource = &v
	return s
}

// SetBinaryMediaTypes sets the BinaryMediaTypes field's value.
func (s *AwsApiGatewayRestApiDetails) SetBinaryMediaTypes(v []*string) *AwsApiGatewayRestApiDetails {
	s.BinaryMediaTypes = v
	return s
}

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

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

// SetEndpointConfiguration sets the EndpointConfiguration field's value.
func (s *AwsApiGatewayRestApiDetails) SetEndpointConfiguration(v *AwsApiGatewayEndpointConfiguration) *AwsApiGatewayRestApiDetails {
	s.EndpointConfiguration = v
	return s
}

// SetId sets the Id field's value.
func (s *AwsApiGatewayRestApiDetails) SetId(v string) *AwsApiGatewayRestApiDetails {
	s.Id = &v
	return s
}

// SetMinimumCompressionSize sets the MinimumCompressionSize field's value.
func (s *AwsApiGatewayRestApiDetails) SetMinimumCompressionSize(v int64) *AwsApiGatewayRestApiDetails {
	s.MinimumCompressionSize = &v
	return s
}

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

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

// Provides information about a version 1 Amazon API Gateway stage.
type AwsApiGatewayStageDetails struct {
	_ struct{} `type:"structure"`

	// Settings for logging access for the stage.
	AccessLogSettings *AwsApiGatewayAccessLogSettings `type:"structure"`

	// Indicates whether a cache cluster is enabled for the stage.
	CacheClusterEnabled *bool `type:"boolean"`

	// If a cache cluster is enabled, the size of the cache cluster.
	CacheClusterSize *string `type:"string"`

	// If a cache cluster is enabled, the status of the cache cluster.
	CacheClusterStatus *string `type:"string"`

	// Information about settings for canary deployment in the stage.
	CanarySettings *AwsApiGatewayCanarySettings `type:"structure"`

	// The identifier of the client certificate for the stage.
	ClientCertificateId *string `type:"string"`

	// Indicates when the stage was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreatedDate *string `type:"string"`

	// The identifier of the deployment that the stage points to.
	DeploymentId *string `type:"string"`

	// A description of the stage.
	Description *string `type:"string"`

	// The version of the API documentation that is associated with the stage.
	DocumentationVersion *string `type:"string"`

	// Indicates when the stage was most recently updated.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	LastUpdatedDate *string `type:"string"`

	// Defines the method settings for the stage.
	MethodSettings []*AwsApiGatewayMethodSettings `type:"list"`

	// The name of the stage.
	StageName *string `type:"string"`

	// Indicates whether active tracing with X-Ray is enabled for the stage.
	TracingEnabled *bool `type:"boolean"`

	// A map that defines the stage variables for the stage.
	//
	// Variable names can have alphanumeric and underscore characters.
	//
	// Variable values can contain the following characters:
	//
	//    * Uppercase and lowercase letters
	//
	//    * Numbers
	//
	//    * Special characters -._~:/?#&=,
	Variables map[string]*string `type:"map"`

	// The ARN of the web ACL associated with the stage.
	WebAclArn *string `type:"string"`
}

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

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

// SetAccessLogSettings sets the AccessLogSettings field's value.
func (s *AwsApiGatewayStageDetails) SetAccessLogSettings(v *AwsApiGatewayAccessLogSettings) *AwsApiGatewayStageDetails {
	s.AccessLogSettings = v
	return s
}

// SetCacheClusterEnabled sets the CacheClusterEnabled field's value.
func (s *AwsApiGatewayStageDetails) SetCacheClusterEnabled(v bool) *AwsApiGatewayStageDetails {
	s.CacheClusterEnabled = &v
	return s
}

// SetCacheClusterSize sets the CacheClusterSize field's value.
func (s *AwsApiGatewayStageDetails) SetCacheClusterSize(v string) *AwsApiGatewayStageDetails {
	s.CacheClusterSize = &v
	return s
}

// SetCacheClusterStatus sets the CacheClusterStatus field's value.
func (s *AwsApiGatewayStageDetails) SetCacheClusterStatus(v string) *AwsApiGatewayStageDetails {
	s.CacheClusterStatus = &v
	return s
}

// SetCanarySettings sets the CanarySettings field's value.
func (s *AwsApiGatewayStageDetails) SetCanarySettings(v *AwsApiGatewayCanarySettings) *AwsApiGatewayStageDetails {
	s.CanarySettings = v
	return s
}

// SetClientCertificateId sets the ClientCertificateId field's value.
func (s *AwsApiGatewayStageDetails) SetClientCertificateId(v string) *AwsApiGatewayStageDetails {
	s.ClientCertificateId = &v
	return s
}

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

// SetDeploymentId sets the DeploymentId field's value.
func (s *AwsApiGatewayStageDetails) SetDeploymentId(v string) *AwsApiGatewayStageDetails {
	s.DeploymentId = &v
	return s
}

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

// SetDocumentationVersion sets the DocumentationVersion field's value.
func (s *AwsApiGatewayStageDetails) SetDocumentationVersion(v string) *AwsApiGatewayStageDetails {
	s.DocumentationVersion = &v
	return s
}

// SetLastUpdatedDate sets the LastUpdatedDate field's value.
func (s *AwsApiGatewayStageDetails) SetLastUpdatedDate(v string) *AwsApiGatewayStageDetails {
	s.LastUpdatedDate = &v
	return s
}

// SetMethodSettings sets the MethodSettings field's value.
func (s *AwsApiGatewayStageDetails) SetMethodSettings(v []*AwsApiGatewayMethodSettings) *AwsApiGatewayStageDetails {
	s.MethodSettings = v
	return s
}

// SetStageName sets the StageName field's value.
func (s *AwsApiGatewayStageDetails) SetStageName(v string) *AwsApiGatewayStageDetails {
	s.StageName = &v
	return s
}

// SetTracingEnabled sets the TracingEnabled field's value.
func (s *AwsApiGatewayStageDetails) SetTracingEnabled(v bool) *AwsApiGatewayStageDetails {
	s.TracingEnabled = &v
	return s
}

// SetVariables sets the Variables field's value.
func (s *AwsApiGatewayStageDetails) SetVariables(v map[string]*string) *AwsApiGatewayStageDetails {
	s.Variables = v
	return s
}

// SetWebAclArn sets the WebAclArn field's value.
func (s *AwsApiGatewayStageDetails) SetWebAclArn(v string) *AwsApiGatewayStageDetails {
	s.WebAclArn = &v
	return s
}

// Contains information about a version 2 API in Amazon API Gateway.
type AwsApiGatewayV2ApiDetails struct {
	_ struct{} `type:"structure"`

	// The URI of the API.
	//
	// Uses the format <api-id>.execute-api.<region>.amazonaws.com
	//
	// The stage name is typically appended to the URI to form a complete path to
	// a deployed API stage.
	ApiEndpoint *string `type:"string"`

	// The identifier of the API.
	ApiId *string `type:"string"`

	// An API key selection expression. Supported only for WebSocket APIs.
	ApiKeySelectionExpression *string `type:"string"`

	// A cross-origin resource sharing (CORS) configuration. Supported only for
	// HTTP APIs.
	CorsConfiguration *AwsCorsConfiguration `type:"structure"`

	// Indicates when the API was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreatedDate *string `type:"string"`

	// A description of the API.
	Description *string `type:"string"`

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

	// The API protocol for the API.
	//
	// Valid values: WEBSOCKET | HTTP
	ProtocolType *string `type:"string"`

	// The route selection expression for the API.
	//
	// For HTTP APIs, must be ${request.method} ${request.path}. This is the default
	// value for HTTP APIs.
	//
	// For WebSocket APIs, there is no default value.
	RouteSelectionExpression *string `type:"string"`

	// The version identifier for the API.
	Version *string `type:"string"`
}

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

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

// SetApiEndpoint sets the ApiEndpoint field's value.
func (s *AwsApiGatewayV2ApiDetails) SetApiEndpoint(v string) *AwsApiGatewayV2ApiDetails {
	s.ApiEndpoint = &v
	return s
}

// SetApiId sets the ApiId field's value.
func (s *AwsApiGatewayV2ApiDetails) SetApiId(v string) *AwsApiGatewayV2ApiDetails {
	s.ApiId = &v
	return s
}

// SetApiKeySelectionExpression sets the ApiKeySelectionExpression field's value.
func (s *AwsApiGatewayV2ApiDetails) SetApiKeySelectionExpression(v string) *AwsApiGatewayV2ApiDetails {
	s.ApiKeySelectionExpression = &v
	return s
}

// SetCorsConfiguration sets the CorsConfiguration field's value.
func (s *AwsApiGatewayV2ApiDetails) SetCorsConfiguration(v *AwsCorsConfiguration) *AwsApiGatewayV2ApiDetails {
	s.CorsConfiguration = v
	return s
}

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

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

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

// SetProtocolType sets the ProtocolType field's value.
func (s *AwsApiGatewayV2ApiDetails) SetProtocolType(v string) *AwsApiGatewayV2ApiDetails {
	s.ProtocolType = &v
	return s
}

// SetRouteSelectionExpression sets the RouteSelectionExpression field's value.
func (s *AwsApiGatewayV2ApiDetails) SetRouteSelectionExpression(v string) *AwsApiGatewayV2ApiDetails {
	s.RouteSelectionExpression = &v
	return s
}

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

// Contains route settings for a stage.
type AwsApiGatewayV2RouteSettings struct {
	_ struct{} `type:"structure"`

	// Indicates whether data trace logging is enabled. Data trace logging affects
	// the log entries that are pushed to CloudWatch Logs. Supported only for WebSocket
	// APIs.
	DataTraceEnabled *bool `type:"boolean"`

	// Indicates whether detailed metrics are enabled.
	DetailedMetricsEnabled *bool `type:"boolean"`

	// The logging level. The logging level affects the log entries that are pushed
	// to CloudWatch Logs. Supported only for WebSocket APIs.
	//
	// If the logging level is ERROR, then the logs only include error-level entries.
	//
	// If the logging level is INFO, then the logs include both ERROR events and
	// extra informational events.
	//
	// Valid values: OFF | ERROR | INFO
	LoggingLevel *string `type:"string"`

	// The throttling burst limit.
	ThrottlingBurstLimit *int64 `type:"integer"`

	// The throttling rate limit.
	ThrottlingRateLimit *float64 `type:"double"`
}

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

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

// SetDataTraceEnabled sets the DataTraceEnabled field's value.
func (s *AwsApiGatewayV2RouteSettings) SetDataTraceEnabled(v bool) *AwsApiGatewayV2RouteSettings {
	s.DataTraceEnabled = &v
	return s
}

// SetDetailedMetricsEnabled sets the DetailedMetricsEnabled field's value.
func (s *AwsApiGatewayV2RouteSettings) SetDetailedMetricsEnabled(v bool) *AwsApiGatewayV2RouteSettings {
	s.DetailedMetricsEnabled = &v
	return s
}

// SetLoggingLevel sets the LoggingLevel field's value.
func (s *AwsApiGatewayV2RouteSettings) SetLoggingLevel(v string) *AwsApiGatewayV2RouteSettings {
	s.LoggingLevel = &v
	return s
}

// SetThrottlingBurstLimit sets the ThrottlingBurstLimit field's value.
func (s *AwsApiGatewayV2RouteSettings) SetThrottlingBurstLimit(v int64) *AwsApiGatewayV2RouteSettings {
	s.ThrottlingBurstLimit = &v
	return s
}

// SetThrottlingRateLimit sets the ThrottlingRateLimit field's value.
func (s *AwsApiGatewayV2RouteSettings) SetThrottlingRateLimit(v float64) *AwsApiGatewayV2RouteSettings {
	s.ThrottlingRateLimit = &v
	return s
}

// Contains information about a version 2 stage for Amazon API Gateway.
type AwsApiGatewayV2StageDetails struct {
	_ struct{} `type:"structure"`

	// Information about settings for logging access for the stage.
	AccessLogSettings *AwsApiGatewayAccessLogSettings `type:"structure"`

	// Indicates whether the stage is managed by API Gateway.
	ApiGatewayManaged *bool `type:"boolean"`

	// Indicates whether updates to an API automatically trigger a new deployment.
	AutoDeploy *bool `type:"boolean"`

	// The identifier of a client certificate for a stage. Supported only for WebSocket
	// API calls.
	ClientCertificateId *string `type:"string"`

	// Indicates when the stage was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreatedDate *string `type:"string"`

	// Default route settings for the stage.
	DefaultRouteSettings *AwsApiGatewayV2RouteSettings `type:"structure"`

	// The identifier of the deployment that the stage is associated with.
	DeploymentId *string `type:"string"`

	// The description of the stage.
	Description *string `type:"string"`

	// The status of the last deployment of a stage. Supported only if the stage
	// has automatic deployment enabled.
	LastDeploymentStatusMessage *string `type:"string"`

	// Indicates when the stage was most recently updated.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	LastUpdatedDate *string `type:"string"`

	// The route settings for the stage.
	RouteSettings *AwsApiGatewayV2RouteSettings `type:"structure"`

	// The name of the stage.
	StageName *string `type:"string"`

	// A map that defines the stage variables for the stage.
	//
	// Variable names can have alphanumeric and underscore characters.
	//
	// Variable values can contain the following characters:
	//
	//    * Uppercase and lowercase letters
	//
	//    * Numbers
	//
	//    * Special characters -._~:/?#&=,
	StageVariables map[string]*string `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 AwsApiGatewayV2StageDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetAccessLogSettings sets the AccessLogSettings field's value.
func (s *AwsApiGatewayV2StageDetails) SetAccessLogSettings(v *AwsApiGatewayAccessLogSettings) *AwsApiGatewayV2StageDetails {
	s.AccessLogSettings = v
	return s
}

// SetApiGatewayManaged sets the ApiGatewayManaged field's value.
func (s *AwsApiGatewayV2StageDetails) SetApiGatewayManaged(v bool) *AwsApiGatewayV2StageDetails {
	s.ApiGatewayManaged = &v
	return s
}

// SetAutoDeploy sets the AutoDeploy field's value.
func (s *AwsApiGatewayV2StageDetails) SetAutoDeploy(v bool) *AwsApiGatewayV2StageDetails {
	s.AutoDeploy = &v
	return s
}

// SetClientCertificateId sets the ClientCertificateId field's value.
func (s *AwsApiGatewayV2StageDetails) SetClientCertificateId(v string) *AwsApiGatewayV2StageDetails {
	s.ClientCertificateId = &v
	return s
}

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

// SetDefaultRouteSettings sets the DefaultRouteSettings field's value.
func (s *AwsApiGatewayV2StageDetails) SetDefaultRouteSettings(v *AwsApiGatewayV2RouteSettings) *AwsApiGatewayV2StageDetails {
	s.DefaultRouteSettings = v
	return s
}

// SetDeploymentId sets the DeploymentId field's value.
func (s *AwsApiGatewayV2StageDetails) SetDeploymentId(v string) *AwsApiGatewayV2StageDetails {
	s.DeploymentId = &v
	return s
}

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

// SetLastDeploymentStatusMessage sets the LastDeploymentStatusMessage field's value.
func (s *AwsApiGatewayV2StageDetails) SetLastDeploymentStatusMessage(v string) *AwsApiGatewayV2StageDetails {
	s.LastDeploymentStatusMessage = &v
	return s
}

// SetLastUpdatedDate sets the LastUpdatedDate field's value.
func (s *AwsApiGatewayV2StageDetails) SetLastUpdatedDate(v string) *AwsApiGatewayV2StageDetails {
	s.LastUpdatedDate = &v
	return s
}

// SetRouteSettings sets the RouteSettings field's value.
func (s *AwsApiGatewayV2StageDetails) SetRouteSettings(v *AwsApiGatewayV2RouteSettings) *AwsApiGatewayV2StageDetails {
	s.RouteSettings = v
	return s
}

// SetStageName sets the StageName field's value.
func (s *AwsApiGatewayV2StageDetails) SetStageName(v string) *AwsApiGatewayV2StageDetails {
	s.StageName = &v
	return s
}

// SetStageVariables sets the StageVariables field's value.
func (s *AwsApiGatewayV2StageDetails) SetStageVariables(v map[string]*string) *AwsApiGatewayV2StageDetails {
	s.StageVariables = v
	return s
}

// A list of additional authentication providers for the GraphqlApi API.
type AwsAppSyncGraphQlApiAdditionalAuthenticationProvidersDetails struct {
	_ struct{} `type:"structure"`

	// The type of security configuration for your GraphQL API: API key, Identity
	// and Access Management (IAM), OpenID Connect (OIDC), Amazon Cognito user pools,
	// or Lambda.
	AuthenticationType *string `type:"string"`

	// The configuration for Lambda function authorization.
	LambdaAuthorizerConfig *AwsAppSyncGraphQlApiLambdaAuthorizerConfigDetails `type:"structure"`

	// The OpenID Connect configuration.
	OpenIdConnectConfig *AwsAppSyncGraphQlApiOpenIdConnectConfigDetails `type:"structure"`

	// The Amazon Cognito user pools configuration.
	UserPoolConfig *AwsAppSyncGraphQlApiUserPoolConfigDetails `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 AwsAppSyncGraphQlApiAdditionalAuthenticationProvidersDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetAuthenticationType sets the AuthenticationType field's value.
func (s *AwsAppSyncGraphQlApiAdditionalAuthenticationProvidersDetails) SetAuthenticationType(v string) *AwsAppSyncGraphQlApiAdditionalAuthenticationProvidersDetails {
	s.AuthenticationType = &v
	return s
}

// SetLambdaAuthorizerConfig sets the LambdaAuthorizerConfig field's value.
func (s *AwsAppSyncGraphQlApiAdditionalAuthenticationProvidersDetails) SetLambdaAuthorizerConfig(v *AwsAppSyncGraphQlApiLambdaAuthorizerConfigDetails) *AwsAppSyncGraphQlApiAdditionalAuthenticationProvidersDetails {
	s.LambdaAuthorizerConfig = v
	return s
}

// SetOpenIdConnectConfig sets the OpenIdConnectConfig field's value.
func (s *AwsAppSyncGraphQlApiAdditionalAuthenticationProvidersDetails) SetOpenIdConnectConfig(v *AwsAppSyncGraphQlApiOpenIdConnectConfigDetails) *AwsAppSyncGraphQlApiAdditionalAuthenticationProvidersDetails {
	s.OpenIdConnectConfig = v
	return s
}

// SetUserPoolConfig sets the UserPoolConfig field's value.
func (s *AwsAppSyncGraphQlApiAdditionalAuthenticationProvidersDetails) SetUserPoolConfig(v *AwsAppSyncGraphQlApiUserPoolConfigDetails) *AwsAppSyncGraphQlApiAdditionalAuthenticationProvidersDetails {
	s.UserPoolConfig = v
	return s
}

// Provides details about an AppSync Graph QL API, which lets you query multiple
// databases, microservices, and APIs from a single GraphQL endpoint.
type AwsAppSyncGraphQlApiDetails struct {
	_ struct{} `type:"structure"`

	// A list of additional authentication providers for the GraphQL API.
	AdditionalAuthenticationProviders []*AwsAppSyncGraphQlApiAdditionalAuthenticationProvidersDetails `type:"list"`

	// The unique identifier for the API.
	ApiId *string `type:"string"`

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

	// The type of security configuration for your GraphQL API: API key, Identity
	// and Access Management (IAM), OpenID Connect (OIDC), Amazon Cognito user pools,
	// or Lambda.
	AuthenticationType *string `type:"string"`

	// The unique identifier for the API.
	Id *string `type:"string"`

	// Specifies the configuration for Lambda function authorization.
	LambdaAuthorizerConfig *AwsAppSyncGraphQlApiLambdaAuthorizerConfigDetails `type:"structure"`

	// The Amazon CloudWatch Logs configuration.
	LogConfig *AwsAppSyncGraphQlApiLogConfigDetails `type:"structure"`

	// The API name.
	Name *string `type:"string"`

	// Specifies the authorization configuration for using an OpenID Connect compliant
	// service with an AppSync GraphQL API endpoint.
	OpenIdConnectConfig *AwsAppSyncGraphQlApiOpenIdConnectConfigDetails `type:"structure"`

	// The Amazon Cognito user pools configuration.
	UserPoolConfig *AwsAppSyncGraphQlApiUserPoolConfigDetails `type:"structure"`

	// The Amazon Resource Name (ARN) of the WAF web access control list (web ACL)
	// associated with this GraphQL API, if one exists.
	WafWebAclArn *string `type:"string"`

	// Indicates whether to use X-Ray tracing for the GraphQL API.
	XrayEnabled *bool `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 AwsAppSyncGraphQlApiDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetAdditionalAuthenticationProviders sets the AdditionalAuthenticationProviders field's value.
func (s *AwsAppSyncGraphQlApiDetails) SetAdditionalAuthenticationProviders(v []*AwsAppSyncGraphQlApiAdditionalAuthenticationProvidersDetails) *AwsAppSyncGraphQlApiDetails {
	s.AdditionalAuthenticationProviders = v
	return s
}

// SetApiId sets the ApiId field's value.
func (s *AwsAppSyncGraphQlApiDetails) SetApiId(v string) *AwsAppSyncGraphQlApiDetails {
	s.ApiId = &v
	return s
}

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

// SetAuthenticationType sets the AuthenticationType field's value.
func (s *AwsAppSyncGraphQlApiDetails) SetAuthenticationType(v string) *AwsAppSyncGraphQlApiDetails {
	s.AuthenticationType = &v
	return s
}

// SetId sets the Id field's value.
func (s *AwsAppSyncGraphQlApiDetails) SetId(v string) *AwsAppSyncGraphQlApiDetails {
	s.Id = &v
	return s
}

// SetLambdaAuthorizerConfig sets the LambdaAuthorizerConfig field's value.
func (s *AwsAppSyncGraphQlApiDetails) SetLambdaAuthorizerConfig(v *AwsAppSyncGraphQlApiLambdaAuthorizerConfigDetails) *AwsAppSyncGraphQlApiDetails {
	s.LambdaAuthorizerConfig = v
	return s
}

// SetLogConfig sets the LogConfig field's value.
func (s *AwsAppSyncGraphQlApiDetails) SetLogConfig(v *AwsAppSyncGraphQlApiLogConfigDetails) *AwsAppSyncGraphQlApiDetails {
	s.LogConfig = v
	return s
}

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

// SetOpenIdConnectConfig sets the OpenIdConnectConfig field's value.
func (s *AwsAppSyncGraphQlApiDetails) SetOpenIdConnectConfig(v *AwsAppSyncGraphQlApiOpenIdConnectConfigDetails) *AwsAppSyncGraphQlApiDetails {
	s.OpenIdConnectConfig = v
	return s
}

// SetUserPoolConfig sets the UserPoolConfig field's value.
func (s *AwsAppSyncGraphQlApiDetails) SetUserPoolConfig(v *AwsAppSyncGraphQlApiUserPoolConfigDetails) *AwsAppSyncGraphQlApiDetails {
	s.UserPoolConfig = v
	return s
}

// SetWafWebAclArn sets the WafWebAclArn field's value.
func (s *AwsAppSyncGraphQlApiDetails) SetWafWebAclArn(v string) *AwsAppSyncGraphQlApiDetails {
	s.WafWebAclArn = &v
	return s
}

// SetXrayEnabled sets the XrayEnabled field's value.
func (s *AwsAppSyncGraphQlApiDetails) SetXrayEnabled(v bool) *AwsAppSyncGraphQlApiDetails {
	s.XrayEnabled = &v
	return s
}

// Specifies the authorization configuration for using an Lambda function with
// your AppSync GraphQL API endpoint.
type AwsAppSyncGraphQlApiLambdaAuthorizerConfigDetails struct {
	_ struct{} `type:"structure"`

	// The number of seconds a response should be cached for. The default is 5 minutes
	// (300 seconds).
	AuthorizerResultTtlInSeconds *int64 `type:"integer"`

	// The Amazon Resource Name (ARN) of the Lambda function to be called for authorization.
	// This can be a standard Lambda ARN, a version ARN (.../v3), or an alias ARN.
	AuthorizerUri *string `type:"string"`

	// A regular expression for validation of tokens before the Lambda function
	// is called.
	IdentityValidationExpression *string `type:"string"`
}

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

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

// SetAuthorizerResultTtlInSeconds sets the AuthorizerResultTtlInSeconds field's value.
func (s *AwsAppSyncGraphQlApiLambdaAuthorizerConfigDetails) SetAuthorizerResultTtlInSeconds(v int64) *AwsAppSyncGraphQlApiLambdaAuthorizerConfigDetails {
	s.AuthorizerResultTtlInSeconds = &v
	return s
}

// SetAuthorizerUri sets the AuthorizerUri field's value.
func (s *AwsAppSyncGraphQlApiLambdaAuthorizerConfigDetails) SetAuthorizerUri(v string) *AwsAppSyncGraphQlApiLambdaAuthorizerConfigDetails {
	s.AuthorizerUri = &v
	return s
}

// SetIdentityValidationExpression sets the IdentityValidationExpression field's value.
func (s *AwsAppSyncGraphQlApiLambdaAuthorizerConfigDetails) SetIdentityValidationExpression(v string) *AwsAppSyncGraphQlApiLambdaAuthorizerConfigDetails {
	s.IdentityValidationExpression = &v
	return s
}

// Specifies the logging configuration when writing GraphQL operations and tracing
// to Amazon CloudWatch for an AppSync GraphQL API.
type AwsAppSyncGraphQlApiLogConfigDetails struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the service role that AppSync assumes to
	// publish to CloudWatch Logs in your account.
	CloudWatchLogsRoleArn *string `type:"string"`

	// Set to TRUE to exclude sections that contain information such as headers,
	// context, and evaluated mapping templates, regardless of logging level.
	ExcludeVerboseContent *bool `type:"boolean"`

	// The field logging level.
	FieldLogLevel *string `type:"string"`
}

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

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

// SetCloudWatchLogsRoleArn sets the CloudWatchLogsRoleArn field's value.
func (s *AwsAppSyncGraphQlApiLogConfigDetails) SetCloudWatchLogsRoleArn(v string) *AwsAppSyncGraphQlApiLogConfigDetails {
	s.CloudWatchLogsRoleArn = &v
	return s
}

// SetExcludeVerboseContent sets the ExcludeVerboseContent field's value.
func (s *AwsAppSyncGraphQlApiLogConfigDetails) SetExcludeVerboseContent(v bool) *AwsAppSyncGraphQlApiLogConfigDetails {
	s.ExcludeVerboseContent = &v
	return s
}

// SetFieldLogLevel sets the FieldLogLevel field's value.
func (s *AwsAppSyncGraphQlApiLogConfigDetails) SetFieldLogLevel(v string) *AwsAppSyncGraphQlApiLogConfigDetails {
	s.FieldLogLevel = &v
	return s
}

// Specifies the authorization configuration for using an OpenID Connect compliant
// service with your AppSync GraphQL API endpoint.
type AwsAppSyncGraphQlApiOpenIdConnectConfigDetails struct {
	_ struct{} `type:"structure"`

	// The number of milliseconds that a token is valid after being authenticated.
	AuthTtL *int64 `type:"long"`

	// The client identifier of the relying party at the OpenID identity provider.
	// This identifier is typically obtained when the relying party is registered
	// with the OpenID identity provider. You can specify a regular expression so
	// that AppSync can validate against multiple client identifiers at a time.
	ClientId *string `type:"string"`

	// The number of milliseconds that a token is valid after it's issued to a user.
	IatTtL *int64 `type:"long"`

	// The issuer for the OIDC configuration. The issuer returned by discovery must
	// exactly match the value of iss in the ID token.
	Issuer *string `type:"string"`
}

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

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

// SetAuthTtL sets the AuthTtL field's value.
func (s *AwsAppSyncGraphQlApiOpenIdConnectConfigDetails) SetAuthTtL(v int64) *AwsAppSyncGraphQlApiOpenIdConnectConfigDetails {
	s.AuthTtL = &v
	return s
}

// SetClientId sets the ClientId field's value.
func (s *AwsAppSyncGraphQlApiOpenIdConnectConfigDetails) SetClientId(v string) *AwsAppSyncGraphQlApiOpenIdConnectConfigDetails {
	s.ClientId = &v
	return s
}

// SetIatTtL sets the IatTtL field's value.
func (s *AwsAppSyncGraphQlApiOpenIdConnectConfigDetails) SetIatTtL(v int64) *AwsAppSyncGraphQlApiOpenIdConnectConfigDetails {
	s.IatTtL = &v
	return s
}

// SetIssuer sets the Issuer field's value.
func (s *AwsAppSyncGraphQlApiOpenIdConnectConfigDetails) SetIssuer(v string) *AwsAppSyncGraphQlApiOpenIdConnectConfigDetails {
	s.Issuer = &v
	return s
}

// Specifies the authorization configuration for using Amazon Cognito user pools
// with your AppSync GraphQL API endpoint.
type AwsAppSyncGraphQlApiUserPoolConfigDetails struct {
	_ struct{} `type:"structure"`

	// A regular expression for validating the incoming Amazon Cognito user pools
	// app client ID. If this value isn't set, no filtering is applied.
	AppIdClientRegex *string `type:"string"`

	// The Amazon Web Services Region in which the user pool was created.
	AwsRegion *string `type:"string"`

	// The action that you want your GraphQL API to take when a request that uses
	// Amazon Cognito user pools authentication doesn't match the Amazon Cognito
	// user pools configuration.
	DefaultAction *string `type:"string"`

	// The user pool ID.
	UserPoolId *string `type:"string"`
}

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

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

// SetAppIdClientRegex sets the AppIdClientRegex field's value.
func (s *AwsAppSyncGraphQlApiUserPoolConfigDetails) SetAppIdClientRegex(v string) *AwsAppSyncGraphQlApiUserPoolConfigDetails {
	s.AppIdClientRegex = &v
	return s
}

// SetAwsRegion sets the AwsRegion field's value.
func (s *AwsAppSyncGraphQlApiUserPoolConfigDetails) SetAwsRegion(v string) *AwsAppSyncGraphQlApiUserPoolConfigDetails {
	s.AwsRegion = &v
	return s
}

// SetDefaultAction sets the DefaultAction field's value.
func (s *AwsAppSyncGraphQlApiUserPoolConfigDetails) SetDefaultAction(v string) *AwsAppSyncGraphQlApiUserPoolConfigDetails {
	s.DefaultAction = &v
	return s
}

// SetUserPoolId sets the UserPoolId field's value.
func (s *AwsAppSyncGraphQlApiUserPoolConfigDetails) SetUserPoolId(v string) *AwsAppSyncGraphQlApiUserPoolConfigDetails {
	s.UserPoolId = &v
	return s
}

// The configuration of the workgroup, which includes the location in Amazon
// Simple Storage Service (Amazon S3) where query results are stored, the encryption
// option, if any, used for query results, whether Amazon CloudWatch metrics
// are enabled for the workgroup, and the limit for the amount of bytes scanned
// (cutoff) per query, if it is specified.
type AwsAthenaWorkGroupConfigurationDetails struct {
	_ struct{} `type:"structure"`

	// The location in Amazon S3 where query and calculation results are stored
	// and the encryption option, if any, used for query and calculation results.
	// These are known as client-side settings. If workgroup settings override client-side
	// settings, then the query uses the workgroup settings.
	ResultConfiguration *AwsAthenaWorkGroupConfigurationResultConfigurationDetails `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 AwsAthenaWorkGroupConfigurationDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetResultConfiguration sets the ResultConfiguration field's value.
func (s *AwsAthenaWorkGroupConfigurationDetails) SetResultConfiguration(v *AwsAthenaWorkGroupConfigurationResultConfigurationDetails) *AwsAthenaWorkGroupConfigurationDetails {
	s.ResultConfiguration = v
	return s
}

// The location in Amazon Simple Storage Service (Amazon S3) where query and
// calculation results are stored and the encryption option, if any, used for
// query and calculation results. These are known as client-side settings. If
// workgroup settings override client-side settings, then the query uses the
// workgroup settings.
type AwsAthenaWorkGroupConfigurationResultConfigurationDetails struct {
	_ struct{} `type:"structure"`

	// Specifies the method used to encrypt the user’s data stores in the Athena
	// workgroup.
	EncryptionConfiguration *AwsAthenaWorkGroupConfigurationResultConfigurationEncryptionConfigurationDetails `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 AwsAthenaWorkGroupConfigurationResultConfigurationDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetEncryptionConfiguration sets the EncryptionConfiguration field's value.
func (s *AwsAthenaWorkGroupConfigurationResultConfigurationDetails) SetEncryptionConfiguration(v *AwsAthenaWorkGroupConfigurationResultConfigurationEncryptionConfigurationDetails) *AwsAthenaWorkGroupConfigurationResultConfigurationDetails {
	s.EncryptionConfiguration = v
	return s
}

// Specifies the method used to encrypt the user’s data stores in the Athena
// workgroup.
type AwsAthenaWorkGroupConfigurationResultConfigurationEncryptionConfigurationDetails struct {
	_ struct{} `type:"structure"`

	// Indicates whether Amazon Simple Storage Service (Amazon S3) server-side encryption
	// with Amazon S3 managed keys (SSE_S3), server-side encryption with KMS keys
	// (SSE_KMS), or client-side encryption with KMS customer managed keys (CSE_KMS)
	// is used.
	EncryptionOption *string `type:"string"`

	// For SSE_KMS and CSE_KMS, this is the KMS key Amazon Resource Name (ARN) or
	// ID.
	KmsKey *string `type:"string"`
}

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

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

// SetEncryptionOption sets the EncryptionOption field's value.
func (s *AwsAthenaWorkGroupConfigurationResultConfigurationEncryptionConfigurationDetails) SetEncryptionOption(v string) *AwsAthenaWorkGroupConfigurationResultConfigurationEncryptionConfigurationDetails {
	s.EncryptionOption = &v
	return s
}

// SetKmsKey sets the KmsKey field's value.
func (s *AwsAthenaWorkGroupConfigurationResultConfigurationEncryptionConfigurationDetails) SetKmsKey(v string) *AwsAthenaWorkGroupConfigurationResultConfigurationEncryptionConfigurationDetails {
	s.KmsKey = &v
	return s
}

// Provides information about an Amazon Athena workgroup.
type AwsAthenaWorkGroupDetails struct {
	_ struct{} `type:"structure"`

	// The configuration of the workgroup, which includes the location in Amazon
	// Simple Storage Service (Amazon S3) where query results are stored, the encryption
	// option, if any, used for query results, whether Amazon CloudWatch metrics
	// are enabled for the workgroup, and the limit for the amount of bytes scanned
	// (cutoff) per query, if it is specified.
	Configuration *AwsAthenaWorkGroupConfigurationDetails `type:"structure"`

	// The workgroup description.
	Description *string `type:"string"`

	// The workgroup name.
	Name *string `type:"string"`

	// Whether the workgroup is enabled or disabled.
	State *string `type:"string"`
}

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

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

// SetConfiguration sets the Configuration field's value.
func (s *AwsAthenaWorkGroupDetails) SetConfiguration(v *AwsAthenaWorkGroupConfigurationDetails) *AwsAthenaWorkGroupDetails {
	s.Configuration = v
	return s
}

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

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

// SetState sets the State field's value.
func (s *AwsAthenaWorkGroupDetails) SetState(v string) *AwsAthenaWorkGroupDetails {
	s.State = &v
	return s
}

// An Availability Zone for the automatic scaling group.
type AwsAutoScalingAutoScalingGroupAvailabilityZonesListDetails struct {
	_ struct{} `type:"structure"`

	// The name of the Availability Zone.
	Value *string `type:"string"`
}

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

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

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

// Provides details about an auto scaling group.
type AwsAutoScalingAutoScalingGroupDetails struct {
	_ struct{} `type:"structure"`

	// The list of Availability Zones for the automatic scaling group.
	AvailabilityZones []*AwsAutoScalingAutoScalingGroupAvailabilityZonesListDetails `type:"list"`

	// Indicates whether capacity rebalancing is enabled.
	CapacityRebalance *bool `type:"boolean"`

	// Indicates when the auto scaling group was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreatedTime *string `type:"string"`

	// The amount of time, in seconds, that Amazon EC2 Auto Scaling waits before
	// it checks the health status of an EC2 instance that has come into service.
	HealthCheckGracePeriod *int64 `type:"integer"`

	// The service to use for the health checks. Valid values are EC2 or ELB.
	HealthCheckType *string `type:"string"`

	// The name of the launch configuration.
	LaunchConfigurationName *string `type:"string"`

	// The launch template to use.
	LaunchTemplate *AwsAutoScalingAutoScalingGroupLaunchTemplateLaunchTemplateSpecification `type:"structure"`

	// The list of load balancers associated with the group.
	LoadBalancerNames []*string `type:"list"`

	// The mixed instances policy for the automatic scaling group.
	MixedInstancesPolicy *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyDetails `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 AwsAutoScalingAutoScalingGroupDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetAvailabilityZones sets the AvailabilityZones field's value.
func (s *AwsAutoScalingAutoScalingGroupDetails) SetAvailabilityZones(v []*AwsAutoScalingAutoScalingGroupAvailabilityZonesListDetails) *AwsAutoScalingAutoScalingGroupDetails {
	s.AvailabilityZones = v
	return s
}

// SetCapacityRebalance sets the CapacityRebalance field's value.
func (s *AwsAutoScalingAutoScalingGroupDetails) SetCapacityRebalance(v bool) *AwsAutoScalingAutoScalingGroupDetails {
	s.CapacityRebalance = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *AwsAutoScalingAutoScalingGroupDetails) SetCreatedTime(v string) *AwsAutoScalingAutoScalingGroupDetails {
	s.CreatedTime = &v
	return s
}

// SetHealthCheckGracePeriod sets the HealthCheckGracePeriod field's value.
func (s *AwsAutoScalingAutoScalingGroupDetails) SetHealthCheckGracePeriod(v int64) *AwsAutoScalingAutoScalingGroupDetails {
	s.HealthCheckGracePeriod = &v
	return s
}

// SetHealthCheckType sets the HealthCheckType field's value.
func (s *AwsAutoScalingAutoScalingGroupDetails) SetHealthCheckType(v string) *AwsAutoScalingAutoScalingGroupDetails {
	s.HealthCheckType = &v
	return s
}

// SetLaunchConfigurationName sets the LaunchConfigurationName field's value.
func (s *AwsAutoScalingAutoScalingGroupDetails) SetLaunchConfigurationName(v string) *AwsAutoScalingAutoScalingGroupDetails {
	s.LaunchConfigurationName = &v
	return s
}

// SetLaunchTemplate sets the LaunchTemplate field's value.
func (s *AwsAutoScalingAutoScalingGroupDetails) SetLaunchTemplate(v *AwsAutoScalingAutoScalingGroupLaunchTemplateLaunchTemplateSpecification) *AwsAutoScalingAutoScalingGroupDetails {
	s.LaunchTemplate = v
	return s
}

// SetLoadBalancerNames sets the LoadBalancerNames field's value.
func (s *AwsAutoScalingAutoScalingGroupDetails) SetLoadBalancerNames(v []*string) *AwsAutoScalingAutoScalingGroupDetails {
	s.LoadBalancerNames = v
	return s
}

// SetMixedInstancesPolicy sets the MixedInstancesPolicy field's value.
func (s *AwsAutoScalingAutoScalingGroupDetails) SetMixedInstancesPolicy(v *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyDetails) *AwsAutoScalingAutoScalingGroupDetails {
	s.MixedInstancesPolicy = v
	return s
}

// Details about the launch template to use.
type AwsAutoScalingAutoScalingGroupLaunchTemplateLaunchTemplateSpecification struct {
	_ struct{} `type:"structure"`

	// The identifier of the launch template. You must specify either LaunchTemplateId
	// or LaunchTemplateName.
	LaunchTemplateId *string `type:"string"`

	// The name of the launch template. You must specify either LaunchTemplateId
	// or LaunchTemplateName.
	LaunchTemplateName *string `type:"string"`

	// Identifies the version of the launch template. You can specify a version
	// identifier, or use the values $Latest or $Default.
	Version *string `type:"string"`
}

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

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

// SetLaunchTemplateId sets the LaunchTemplateId field's value.
func (s *AwsAutoScalingAutoScalingGroupLaunchTemplateLaunchTemplateSpecification) SetLaunchTemplateId(v string) *AwsAutoScalingAutoScalingGroupLaunchTemplateLaunchTemplateSpecification {
	s.LaunchTemplateId = &v
	return s
}

// SetLaunchTemplateName sets the LaunchTemplateName field's value.
func (s *AwsAutoScalingAutoScalingGroupLaunchTemplateLaunchTemplateSpecification) SetLaunchTemplateName(v string) *AwsAutoScalingAutoScalingGroupLaunchTemplateLaunchTemplateSpecification {
	s.LaunchTemplateName = &v
	return s
}

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

// The mixed instances policy for the automatic scaling group.
type AwsAutoScalingAutoScalingGroupMixedInstancesPolicyDetails struct {
	_ struct{} `type:"structure"`

	// The instances distribution. The instances distribution specifies the distribution
	// of On-Demand Instances and Spot Instances, the maximum price to pay for Spot
	// Instances, and how the Auto Scaling group allocates instance types to fulfill
	// On-Demand and Spot capacity.
	InstancesDistribution *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistributionDetails `type:"structure"`

	// The launch template to use and the instance types (overrides) to use to provision
	// EC2 instances to fulfill On-Demand and Spot capacities.
	LaunchTemplate *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateDetails `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 AwsAutoScalingAutoScalingGroupMixedInstancesPolicyDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetInstancesDistribution sets the InstancesDistribution field's value.
func (s *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyDetails) SetInstancesDistribution(v *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistributionDetails) *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyDetails {
	s.InstancesDistribution = v
	return s
}

// SetLaunchTemplate sets the LaunchTemplate field's value.
func (s *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyDetails) SetLaunchTemplate(v *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateDetails) *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyDetails {
	s.LaunchTemplate = v
	return s
}

// Information about the instances distribution.
type AwsAutoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistributionDetails struct {
	_ struct{} `type:"structure"`

	// How to allocate instance types to fulfill On-Demand capacity. The valid value
	// is prioritized.
	OnDemandAllocationStrategy *string `type:"string"`

	// The minimum amount of the Auto Scaling group's capacity that must be fulfilled
	// by On-Demand Instances.
	OnDemandBaseCapacity *int64 `type:"integer"`

	// The percentage of On-Demand Instances and Spot Instances for additional capacity
	// beyond OnDemandBaseCapacity.
	OnDemandPercentageAboveBaseCapacity *int64 `type:"integer"`

	// How to allocate instances across Spot Instance pools. Valid values are as
	// follows:
	//
	//    * lowest-price
	//
	//    * capacity-optimized
	//
	//    * capacity-optimized-prioritized
	SpotAllocationStrategy *string `type:"string"`

	// The number of Spot Instance pools across which to allocate your Spot Instances.
	SpotInstancePools *int64 `type:"integer"`

	// The maximum price per unit hour that you are willing to pay for a Spot Instance.
	SpotMaxPrice *string `type:"string"`
}

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

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

// SetOnDemandAllocationStrategy sets the OnDemandAllocationStrategy field's value.
func (s *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistributionDetails) SetOnDemandAllocationStrategy(v string) *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistributionDetails {
	s.OnDemandAllocationStrategy = &v
	return s
}

// SetOnDemandBaseCapacity sets the OnDemandBaseCapacity field's value.
func (s *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistributionDetails) SetOnDemandBaseCapacity(v int64) *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistributionDetails {
	s.OnDemandBaseCapacity = &v
	return s
}

// SetOnDemandPercentageAboveBaseCapacity sets the OnDemandPercentageAboveBaseCapacity field's value.
func (s *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistributionDetails) SetOnDemandPercentageAboveBaseCapacity(v int64) *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistributionDetails {
	s.OnDemandPercentageAboveBaseCapacity = &v
	return s
}

// SetSpotAllocationStrategy sets the SpotAllocationStrategy field's value.
func (s *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistributionDetails) SetSpotAllocationStrategy(v string) *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistributionDetails {
	s.SpotAllocationStrategy = &v
	return s
}

// SetSpotInstancePools sets the SpotInstancePools field's value.
func (s *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistributionDetails) SetSpotInstancePools(v int64) *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistributionDetails {
	s.SpotInstancePools = &v
	return s
}

// SetSpotMaxPrice sets the SpotMaxPrice field's value.
func (s *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistributionDetails) SetSpotMaxPrice(v string) *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistributionDetails {
	s.SpotMaxPrice = &v
	return s
}

// Describes a launch template and overrides for a mixed instances policy.
type AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateDetails struct {
	_ struct{} `type:"structure"`

	// The launch template to use for a mixed instances policy.
	LaunchTemplateSpecification *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateLaunchTemplateSpecification `type:"structure"`

	// Property values to use to override the values in the launch template.
	Overrides []*AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateOverridesListDetails `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 AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetLaunchTemplateSpecification sets the LaunchTemplateSpecification field's value.
func (s *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateDetails) SetLaunchTemplateSpecification(v *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateLaunchTemplateSpecification) *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateDetails {
	s.LaunchTemplateSpecification = v
	return s
}

// SetOverrides sets the Overrides field's value.
func (s *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateDetails) SetOverrides(v []*AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateOverridesListDetails) *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateDetails {
	s.Overrides = v
	return s
}

// Details about the launch template to use for a mixed instances policy.
type AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateLaunchTemplateSpecification struct {
	_ struct{} `type:"structure"`

	// The identifier of the launch template. You must specify either LaunchTemplateId
	// or LaunchTemplateName.
	LaunchTemplateId *string `type:"string"`

	// The name of the launch template. You must specify either LaunchTemplateId
	// or LaunchTemplateName.
	LaunchTemplateName *string `type:"string"`

	// Identifies the version of the launch template. You can specify a version
	// identifier, or use the values $Latest or $Default.
	Version *string `type:"string"`
}

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

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

// SetLaunchTemplateId sets the LaunchTemplateId field's value.
func (s *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateLaunchTemplateSpecification) SetLaunchTemplateId(v string) *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateLaunchTemplateSpecification {
	s.LaunchTemplateId = &v
	return s
}

// SetLaunchTemplateName sets the LaunchTemplateName field's value.
func (s *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateLaunchTemplateSpecification) SetLaunchTemplateName(v string) *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateLaunchTemplateSpecification {
	s.LaunchTemplateName = &v
	return s
}

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

// Property values to use to override the values in the launch template.
type AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateOverridesListDetails struct {
	_ struct{} `type:"structure"`

	// The instance type. For example, m3.xlarge.
	InstanceType *string `type:"string"`

	// The number of capacity units provided by the specified instance type in terms
	// of virtual CPUs, memory, storage, throughput, or other relative performance
	// characteristic.
	WeightedCapacity *string `type:"string"`
}

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

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

// SetInstanceType sets the InstanceType field's value.
func (s *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateOverridesListDetails) SetInstanceType(v string) *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateOverridesListDetails {
	s.InstanceType = &v
	return s
}

// SetWeightedCapacity sets the WeightedCapacity field's value.
func (s *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateOverridesListDetails) SetWeightedCapacity(v string) *AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateOverridesListDetails {
	s.WeightedCapacity = &v
	return s
}

// A block device for the instance.
type AwsAutoScalingLaunchConfigurationBlockDeviceMappingsDetails struct {
	_ struct{} `type:"structure"`

	// The device name that is exposed to the EC2 instance. For example, /dev/sdh
	// or xvdh.
	DeviceName *string `type:"string"`

	// Parameters that are used to automatically set up Amazon EBS volumes when
	// an instance is launched.
	Ebs *AwsAutoScalingLaunchConfigurationBlockDeviceMappingsEbsDetails `type:"structure"`

	// Whether to suppress the device that is included in the block device mapping
	// of the Amazon Machine Image (AMI).
	//
	// If NoDevice is true, then you cannot specify Ebs.>
	NoDevice *bool `type:"boolean"`

	// The name of the virtual device (for example, ephemeral0).
	//
	// You can provide either VirtualName or Ebs, but not both.
	VirtualName *string `type:"string"`
}

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

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

// SetDeviceName sets the DeviceName field's value.
func (s *AwsAutoScalingLaunchConfigurationBlockDeviceMappingsDetails) SetDeviceName(v string) *AwsAutoScalingLaunchConfigurationBlockDeviceMappingsDetails {
	s.DeviceName = &v
	return s
}

// SetEbs sets the Ebs field's value.
func (s *AwsAutoScalingLaunchConfigurationBlockDeviceMappingsDetails) SetEbs(v *AwsAutoScalingLaunchConfigurationBlockDeviceMappingsEbsDetails) *AwsAutoScalingLaunchConfigurationBlockDeviceMappingsDetails {
	s.Ebs = v
	return s
}

// SetNoDevice sets the NoDevice field's value.
func (s *AwsAutoScalingLaunchConfigurationBlockDeviceMappingsDetails) SetNoDevice(v bool) *AwsAutoScalingLaunchConfigurationBlockDeviceMappingsDetails {
	s.NoDevice = &v
	return s
}

// SetVirtualName sets the VirtualName field's value.
func (s *AwsAutoScalingLaunchConfigurationBlockDeviceMappingsDetails) SetVirtualName(v string) *AwsAutoScalingLaunchConfigurationBlockDeviceMappingsDetails {
	s.VirtualName = &v
	return s
}

// Parameters that are used to automatically set up EBS volumes when an instance
// is launched.
type AwsAutoScalingLaunchConfigurationBlockDeviceMappingsEbsDetails struct {
	_ struct{} `type:"structure"`

	// Whether to delete the volume when the instance is terminated.
	DeleteOnTermination *bool `type:"boolean"`

	// Whether to encrypt the volume.
	Encrypted *bool `type:"boolean"`

	// The number of input/output (I/O) operations per second (IOPS) to provision
	// for the volume.
	//
	// Only supported for gp3 or io1 volumes. Required for io1 volumes. Not used
	// with standard, gp2, st1, or sc1 volumes.
	Iops *int64 `type:"integer"`

	// The snapshot ID of the volume to use.
	//
	// You must specify either VolumeSize or SnapshotId.
	SnapshotId *string `type:"string"`

	// The volume size, in GiBs. The following are the supported volumes sizes for
	// each volume type:
	//
	//    * gp2 and gp3: 1-16,384
	//
	//    * io1: 4-16,384
	//
	//    * st1 and sc1: 125-16,384
	//
	//    * standard: 1-1,024
	//
	// You must specify either SnapshotId or VolumeSize. If you specify both SnapshotId
	// and VolumeSize, the volume size must be equal or greater than the size of
	// the snapshot.
	VolumeSize *int64 `type:"integer"`

	// The volume type. Valid values are as follows:
	//
	//    * gp2
	//
	//    * gp3
	//
	//    * io1
	//
	//    * sc1
	//
	//    * st1
	//
	//    * standard
	VolumeType *string `type:"string"`
}

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

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

// SetDeleteOnTermination sets the DeleteOnTermination field's value.
func (s *AwsAutoScalingLaunchConfigurationBlockDeviceMappingsEbsDetails) SetDeleteOnTermination(v bool) *AwsAutoScalingLaunchConfigurationBlockDeviceMappingsEbsDetails {
	s.DeleteOnTermination = &v
	return s
}

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

// SetIops sets the Iops field's value.
func (s *AwsAutoScalingLaunchConfigurationBlockDeviceMappingsEbsDetails) SetIops(v int64) *AwsAutoScalingLaunchConfigurationBlockDeviceMappingsEbsDetails {
	s.Iops = &v
	return s
}

// SetSnapshotId sets the SnapshotId field's value.
func (s *AwsAutoScalingLaunchConfigurationBlockDeviceMappingsEbsDetails) SetSnapshotId(v string) *AwsAutoScalingLaunchConfigurationBlockDeviceMappingsEbsDetails {
	s.SnapshotId = &v
	return s
}

// SetVolumeSize sets the VolumeSize field's value.
func (s *AwsAutoScalingLaunchConfigurationBlockDeviceMappingsEbsDetails) SetVolumeSize(v int64) *AwsAutoScalingLaunchConfigurationBlockDeviceMappingsEbsDetails {
	s.VolumeSize = &v
	return s
}

// SetVolumeType sets the VolumeType field's value.
func (s *AwsAutoScalingLaunchConfigurationBlockDeviceMappingsEbsDetails) SetVolumeType(v string) *AwsAutoScalingLaunchConfigurationBlockDeviceMappingsEbsDetails {
	s.VolumeType = &v
	return s
}

// Details about a launch configuration.
type AwsAutoScalingLaunchConfigurationDetails struct {
	_ struct{} `type:"structure"`

	// For Auto Scaling groups that run in a VPC, specifies whether to assign a
	// public IP address to the group's instances.
	AssociatePublicIpAddress *bool `type:"boolean"`

	// Specifies the block devices for the instance.
	BlockDeviceMappings []*AwsAutoScalingLaunchConfigurationBlockDeviceMappingsDetails `type:"list"`

	// The identifier of a ClassicLink-enabled VPC that EC2-Classic instances are
	// linked to.
	ClassicLinkVpcId *string `type:"string"`

	// The identifiers of one or more security groups for the VPC that is specified
	// in ClassicLinkVPCId.
	ClassicLinkVpcSecurityGroups []*string `type:"list"`

	// The creation date and time for the launch configuration.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreatedTime *string `type:"string"`

	// Whether the launch configuration is optimized for Amazon EBS I/O.
	EbsOptimized *bool `type:"boolean"`

	// The name or the ARN of the instance profile associated with the IAM role
	// for the instance. The instance profile contains the IAM role.
	IamInstanceProfile *string `type:"string"`

	// The identifier of the Amazon Machine Image (AMI) that is used to launch EC2
	// instances.
	ImageId *string `type:"string"`

	// Indicates the type of monitoring for instances in the group.
	InstanceMonitoring *AwsAutoScalingLaunchConfigurationInstanceMonitoringDetails `type:"structure"`

	// The instance type for the instances.
	InstanceType *string `type:"string"`

	// The identifier of the kernel associated with the AMI.
	KernelId *string `type:"string"`

	// The name of the key pair.
	KeyName *string `type:"string"`

	// The name of the launch configuration.
	LaunchConfigurationName *string `type:"string"`

	// The metadata options for the instances.
	MetadataOptions *AwsAutoScalingLaunchConfigurationMetadataOptions `type:"structure"`

	// The tenancy of the instance. An instance with dedicated tenancy runs on isolated,
	// single-tenant hardware and can only be launched into a VPC.
	PlacementTenancy *string `type:"string"`

	// The identifier of the RAM disk associated with the AMI.
	RamdiskId *string `type:"string"`

	// The security groups to assign to the instances in the Auto Scaling group.
	SecurityGroups []*string `type:"list"`

	// The maximum hourly price to be paid for any Spot Instance that is launched
	// to fulfill the request.
	SpotPrice *string `type:"string"`

	// The user data to make available to the launched EC2 instances. Must be base64-encoded
	// text.
	UserData *string `type:"string"`
}

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

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

// SetAssociatePublicIpAddress sets the AssociatePublicIpAddress field's value.
func (s *AwsAutoScalingLaunchConfigurationDetails) SetAssociatePublicIpAddress(v bool) *AwsAutoScalingLaunchConfigurationDetails {
	s.AssociatePublicIpAddress = &v
	return s
}

// SetBlockDeviceMappings sets the BlockDeviceMappings field's value.
func (s *AwsAutoScalingLaunchConfigurationDetails) SetBlockDeviceMappings(v []*AwsAutoScalingLaunchConfigurationBlockDeviceMappingsDetails) *AwsAutoScalingLaunchConfigurationDetails {
	s.BlockDeviceMappings = v
	return s
}

// SetClassicLinkVpcId sets the ClassicLinkVpcId field's value.
func (s *AwsAutoScalingLaunchConfigurationDetails) SetClassicLinkVpcId(v string) *AwsAutoScalingLaunchConfigurationDetails {
	s.ClassicLinkVpcId = &v
	return s
}

// SetClassicLinkVpcSecurityGroups sets the ClassicLinkVpcSecurityGroups field's value.
func (s *AwsAutoScalingLaunchConfigurationDetails) SetClassicLinkVpcSecurityGroups(v []*string) *AwsAutoScalingLaunchConfigurationDetails {
	s.ClassicLinkVpcSecurityGroups = v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *AwsAutoScalingLaunchConfigurationDetails) SetCreatedTime(v string) *AwsAutoScalingLaunchConfigurationDetails {
	s.CreatedTime = &v
	return s
}

// SetEbsOptimized sets the EbsOptimized field's value.
func (s *AwsAutoScalingLaunchConfigurationDetails) SetEbsOptimized(v bool) *AwsAutoScalingLaunchConfigurationDetails {
	s.EbsOptimized = &v
	return s
}

// SetIamInstanceProfile sets the IamInstanceProfile field's value.
func (s *AwsAutoScalingLaunchConfigurationDetails) SetIamInstanceProfile(v string) *AwsAutoScalingLaunchConfigurationDetails {
	s.IamInstanceProfile = &v
	return s
}

// SetImageId sets the ImageId field's value.
func (s *AwsAutoScalingLaunchConfigurationDetails) SetImageId(v string) *AwsAutoScalingLaunchConfigurationDetails {
	s.ImageId = &v
	return s
}

// SetInstanceMonitoring sets the InstanceMonitoring field's value.
func (s *AwsAutoScalingLaunchConfigurationDetails) SetInstanceMonitoring(v *AwsAutoScalingLaunchConfigurationInstanceMonitoringDetails) *AwsAutoScalingLaunchConfigurationDetails {
	s.InstanceMonitoring = v
	return s
}

// SetInstanceType sets the InstanceType field's value.
func (s *AwsAutoScalingLaunchConfigurationDetails) SetInstanceType(v string) *AwsAutoScalingLaunchConfigurationDetails {
	s.InstanceType = &v
	return s
}

// SetKernelId sets the KernelId field's value.
func (s *AwsAutoScalingLaunchConfigurationDetails) SetKernelId(v string) *AwsAutoScalingLaunchConfigurationDetails {
	s.KernelId = &v
	return s
}

// SetKeyName sets the KeyName field's value.
func (s *AwsAutoScalingLaunchConfigurationDetails) SetKeyName(v string) *AwsAutoScalingLaunchConfigurationDetails {
	s.KeyName = &v
	return s
}

// SetLaunchConfigurationName sets the LaunchConfigurationName field's value.
func (s *AwsAutoScalingLaunchConfigurationDetails) SetLaunchConfigurationName(v string) *AwsAutoScalingLaunchConfigurationDetails {
	s.LaunchConfigurationName = &v
	return s
}

// SetMetadataOptions sets the MetadataOptions field's value.
func (s *AwsAutoScalingLaunchConfigurationDetails) SetMetadataOptions(v *AwsAutoScalingLaunchConfigurationMetadataOptions) *AwsAutoScalingLaunchConfigurationDetails {
	s.MetadataOptions = v
	return s
}

// SetPlacementTenancy sets the PlacementTenancy field's value.
func (s *AwsAutoScalingLaunchConfigurationDetails) SetPlacementTenancy(v string) *AwsAutoScalingLaunchConfigurationDetails {
	s.PlacementTenancy = &v
	return s
}

// SetRamdiskId sets the RamdiskId field's value.
func (s *AwsAutoScalingLaunchConfigurationDetails) SetRamdiskId(v string) *AwsAutoScalingLaunchConfigurationDetails {
	s.RamdiskId = &v
	return s
}

// SetSecurityGroups sets the SecurityGroups field's value.
func (s *AwsAutoScalingLaunchConfigurationDetails) SetSecurityGroups(v []*string) *AwsAutoScalingLaunchConfigurationDetails {
	s.SecurityGroups = v
	return s
}

// SetSpotPrice sets the SpotPrice field's value.
func (s *AwsAutoScalingLaunchConfigurationDetails) SetSpotPrice(v string) *AwsAutoScalingLaunchConfigurationDetails {
	s.SpotPrice = &v
	return s
}

// SetUserData sets the UserData field's value.
func (s *AwsAutoScalingLaunchConfigurationDetails) SetUserData(v string) *AwsAutoScalingLaunchConfigurationDetails {
	s.UserData = &v
	return s
}

// Information about the type of monitoring for instances in the group.
type AwsAutoScalingLaunchConfigurationInstanceMonitoringDetails struct {
	_ struct{} `type:"structure"`

	// If set to true, then instances in the group launch with detailed monitoring.
	//
	// If set to false, then instances in the group launch with basic monitoring.
	Enabled *bool `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 AwsAutoScalingLaunchConfigurationInstanceMonitoringDetails) String() string {
	return awsutil.Prettify(s)
}

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

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

// The metadata options for the instances.
type AwsAutoScalingLaunchConfigurationMetadataOptions struct {
	_ struct{} `type:"structure"`

	// Enables or disables the HTTP metadata endpoint on your instances. By default,
	// the metadata endpoint is enabled.
	HttpEndpoint *string `type:"string"`

	// The HTTP PUT response hop limit for instance metadata requests. The larger
	// the number, the further instance metadata requests can travel.
	HttpPutResponseHopLimit *int64 `type:"integer"`

	// Indicates whether token usage is required or optional for metadata requests.
	// By default, token usage is optional.
	HttpTokens *string `type:"string"`
}

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

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

// SetHttpEndpoint sets the HttpEndpoint field's value.
func (s *AwsAutoScalingLaunchConfigurationMetadataOptions) SetHttpEndpoint(v string) *AwsAutoScalingLaunchConfigurationMetadataOptions {
	s.HttpEndpoint = &v
	return s
}

// SetHttpPutResponseHopLimit sets the HttpPutResponseHopLimit field's value.
func (s *AwsAutoScalingLaunchConfigurationMetadataOptions) SetHttpPutResponseHopLimit(v int64) *AwsAutoScalingLaunchConfigurationMetadataOptions {
	s.HttpPutResponseHopLimit = &v
	return s
}

// SetHttpTokens sets the HttpTokens field's value.
func (s *AwsAutoScalingLaunchConfigurationMetadataOptions) SetHttpTokens(v string) *AwsAutoScalingLaunchConfigurationMetadataOptions {
	s.HttpTokens = &v
	return s
}

// Provides a list of backup options for each resource type.
type AwsBackupBackupPlanAdvancedBackupSettingsDetails struct {
	_ struct{} `type:"structure"`

	// Specifies the backup option for a selected resource. This option is only
	// available for Windows Volume Shadow Copy Service (VSS) backup jobs. Valid
	// values are as follows:
	//
	//    * Set to WindowsVSS: enabled to enable the WindowsVSS backup option and
	//    create a Windows VSS backup.
	//
	//    * Set to WindowsVSS: disabled to create a regular backup. The WindowsVSS
	//    option is not enabled by default.
	BackupOptions map[string]*string `type:"map"`

	// The name of a resource type. The only supported resource type is Amazon EC2
	// instances with Windows VSS.
	//
	// The only valid value is EC2.
	ResourceType *string `type:"string"`
}

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

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

// SetBackupOptions sets the BackupOptions field's value.
func (s *AwsBackupBackupPlanAdvancedBackupSettingsDetails) SetBackupOptions(v map[string]*string) *AwsBackupBackupPlanAdvancedBackupSettingsDetails {
	s.BackupOptions = v
	return s
}

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

// Provides details about an Backup backup plan and an array of BackupRule objects,
// each of which specifies a backup rule.
type AwsBackupBackupPlanBackupPlanDetails struct {
	_ struct{} `type:"structure"`

	// A list of backup options for each resource type.
	AdvancedBackupSettings []*AwsBackupBackupPlanAdvancedBackupSettingsDetails `type:"list"`

	// The display name of a backup plan.
	BackupPlanName *string `type:"string"`

	// An array of BackupRule objects, each of which specifies a scheduled task
	// that is used to back up a selection of resources.
	BackupPlanRule []*AwsBackupBackupPlanRuleDetails `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 AwsBackupBackupPlanBackupPlanDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetAdvancedBackupSettings sets the AdvancedBackupSettings field's value.
func (s *AwsBackupBackupPlanBackupPlanDetails) SetAdvancedBackupSettings(v []*AwsBackupBackupPlanAdvancedBackupSettingsDetails) *AwsBackupBackupPlanBackupPlanDetails {
	s.AdvancedBackupSettings = v
	return s
}

// SetBackupPlanName sets the BackupPlanName field's value.
func (s *AwsBackupBackupPlanBackupPlanDetails) SetBackupPlanName(v string) *AwsBackupBackupPlanBackupPlanDetails {
	s.BackupPlanName = &v
	return s
}

// SetBackupPlanRule sets the BackupPlanRule field's value.
func (s *AwsBackupBackupPlanBackupPlanDetails) SetBackupPlanRule(v []*AwsBackupBackupPlanRuleDetails) *AwsBackupBackupPlanBackupPlanDetails {
	s.BackupPlanRule = v
	return s
}

// Provides details about an Backup backup plan and an array of BackupRule objects,
// each of which specifies a backup rule.
type AwsBackupBackupPlanDetails struct {
	_ struct{} `type:"structure"`

	// Uniquely identifies the backup plan to be associated with the selection of
	// resources.
	BackupPlan *AwsBackupBackupPlanBackupPlanDetails `type:"structure"`

	// An Amazon Resource Name (ARN) that uniquely identifies the backup plan.
	BackupPlanArn *string `type:"string"`

	// A unique ID for the backup plan.
	BackupPlanId *string `type:"string"`

	// Unique, randomly generated, Unicode, UTF-8 encoded strings. Version IDs cannot
	// be edited.
	VersionId *string `type:"string"`
}

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

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

// SetBackupPlan sets the BackupPlan field's value.
func (s *AwsBackupBackupPlanDetails) SetBackupPlan(v *AwsBackupBackupPlanBackupPlanDetails) *AwsBackupBackupPlanDetails {
	s.BackupPlan = v
	return s
}

// SetBackupPlanArn sets the BackupPlanArn field's value.
func (s *AwsBackupBackupPlanDetails) SetBackupPlanArn(v string) *AwsBackupBackupPlanDetails {
	s.BackupPlanArn = &v
	return s
}

// SetBackupPlanId sets the BackupPlanId field's value.
func (s *AwsBackupBackupPlanDetails) SetBackupPlanId(v string) *AwsBackupBackupPlanDetails {
	s.BackupPlanId = &v
	return s
}

// SetVersionId sets the VersionId field's value.
func (s *AwsBackupBackupPlanDetails) SetVersionId(v string) *AwsBackupBackupPlanDetails {
	s.VersionId = &v
	return s
}

// Provides lifecycle details for the backup plan. A lifecycle defines when
// a backup is transitioned to cold storage and when it expires.
type AwsBackupBackupPlanLifecycleDetails struct {
	_ struct{} `type:"structure"`

	// Specifies the number of days after creation that a recovery point is deleted.
	// Must be greater than 90 days plus MoveToColdStorageAfterDays.
	DeleteAfterDays *int64 `type:"long"`

	// Specifies the number of days after creation that a recovery point is moved
	// to cold storage.
	MoveToColdStorageAfterDays *int64 `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 AwsBackupBackupPlanLifecycleDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetDeleteAfterDays sets the DeleteAfterDays field's value.
func (s *AwsBackupBackupPlanLifecycleDetails) SetDeleteAfterDays(v int64) *AwsBackupBackupPlanLifecycleDetails {
	s.DeleteAfterDays = &v
	return s
}

// SetMoveToColdStorageAfterDays sets the MoveToColdStorageAfterDays field's value.
func (s *AwsBackupBackupPlanLifecycleDetails) SetMoveToColdStorageAfterDays(v int64) *AwsBackupBackupPlanLifecycleDetails {
	s.MoveToColdStorageAfterDays = &v
	return s
}

// An array of CopyAction objects, each of which contains details of the copy
// operation.
type AwsBackupBackupPlanRuleCopyActionsDetails struct {
	_ struct{} `type:"structure"`

	// An Amazon Resource Name (ARN) that uniquely identifies the destination backup
	// vault for the copied backup.
	DestinationBackupVaultArn *string `type:"string"`

	// Defines when a protected resource is transitioned to cold storage and when
	// it expires. Backup transitions and expires backups automatically according
	// to the lifecycle that you define. If you do not specify a lifecycle, Backup
	// applies the lifecycle policy of the source backup to the destination backup.
	//
	// Backups transitioned to cold storage must be stored in cold storage for a
	// minimum of 90 days.
	Lifecycle *AwsBackupBackupPlanLifecycleDetails `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 AwsBackupBackupPlanRuleCopyActionsDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetDestinationBackupVaultArn sets the DestinationBackupVaultArn field's value.
func (s *AwsBackupBackupPlanRuleCopyActionsDetails) SetDestinationBackupVaultArn(v string) *AwsBackupBackupPlanRuleCopyActionsDetails {
	s.DestinationBackupVaultArn = &v
	return s
}

// SetLifecycle sets the Lifecycle field's value.
func (s *AwsBackupBackupPlanRuleCopyActionsDetails) SetLifecycle(v *AwsBackupBackupPlanLifecycleDetails) *AwsBackupBackupPlanRuleCopyActionsDetails {
	s.Lifecycle = v
	return s
}

// Provides details about an array of BackupRule objects, each of which specifies
// a scheduled task that is used to back up a selection of resources.
type AwsBackupBackupPlanRuleDetails struct {
	_ struct{} `type:"structure"`

	// A value in minutes after a backup job is successfully started before it must
	// be completed, or it is canceled by Backup.
	CompletionWindowMinutes *int64 `type:"long"`

	// An array of CopyAction objects, each of which contains details of the copy
	// operation.
	CopyActions []*AwsBackupBackupPlanRuleCopyActionsDetails `type:"list"`

	// Specifies whether Backup creates continuous backups capable of point-in-time
	// restore (PITR).
	EnableContinuousBackup *bool `type:"boolean"`

	// Defines when a protected resource is transitioned to cold storage and when
	// it expires. Backup transitions and expires backups automatically according
	// to the lifecycle that you define. If you do not specify a lifecycle, Backup
	// applies the lifecycle policy of the source backup to the destination backup.
	//
	// Backups transitioned to cold storage must be stored in cold storage for a
	// minimum of 90 days.
	Lifecycle *AwsBackupBackupPlanLifecycleDetails `type:"structure"`

	// Uniquely identifies a rule that is used to schedule the backup of a selection
	// of resources.
	RuleId *string `type:"string"`

	// A display name for a backup rule. Must contain 1 to 50 alphanumeric or '-_.'
	// characters.
	RuleName *string `type:"string"`

	// A cron expression in UTC specifying when Backup initiates a backup job.
	ScheduleExpression *string `type:"string"`

	// A value in minutes after a backup is scheduled before a job will be canceled
	// if it doesn't start successfully.
	StartWindowMinutes *int64 `type:"long"`

	// The name of a logical container where backups are stored. Backup vaults are
	// identified by names that are unique to the Amazon Web Services account used
	// to create them and the Amazon Web Services Region where they are created.
	// They consist of letters, numbers, and hyphens.
	TargetBackupVault *string `type:"string"`
}

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

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

// SetCompletionWindowMinutes sets the CompletionWindowMinutes field's value.
func (s *AwsBackupBackupPlanRuleDetails) SetCompletionWindowMinutes(v int64) *AwsBackupBackupPlanRuleDetails {
	s.CompletionWindowMinutes = &v
	return s
}

// SetCopyActions sets the CopyActions field's value.
func (s *AwsBackupBackupPlanRuleDetails) SetCopyActions(v []*AwsBackupBackupPlanRuleCopyActionsDetails) *AwsBackupBackupPlanRuleDetails {
	s.CopyActions = v
	return s
}

// SetEnableContinuousBackup sets the EnableContinuousBackup field's value.
func (s *AwsBackupBackupPlanRuleDetails) SetEnableContinuousBackup(v bool) *AwsBackupBackupPlanRuleDetails {
	s.EnableContinuousBackup = &v
	return s
}

// SetLifecycle sets the Lifecycle field's value.
func (s *AwsBackupBackupPlanRuleDetails) SetLifecycle(v *AwsBackupBackupPlanLifecycleDetails) *AwsBackupBackupPlanRuleDetails {
	s.Lifecycle = v
	return s
}

// SetRuleId sets the RuleId field's value.
func (s *AwsBackupBackupPlanRuleDetails) SetRuleId(v string) *AwsBackupBackupPlanRuleDetails {
	s.RuleId = &v
	return s
}

// SetRuleName sets the RuleName field's value.
func (s *AwsBackupBackupPlanRuleDetails) SetRuleName(v string) *AwsBackupBackupPlanRuleDetails {
	s.RuleName = &v
	return s
}

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

// SetStartWindowMinutes sets the StartWindowMinutes field's value.
func (s *AwsBackupBackupPlanRuleDetails) SetStartWindowMinutes(v int64) *AwsBackupBackupPlanRuleDetails {
	s.StartWindowMinutes = &v
	return s
}

// SetTargetBackupVault sets the TargetBackupVault field's value.
func (s *AwsBackupBackupPlanRuleDetails) SetTargetBackupVault(v string) *AwsBackupBackupPlanRuleDetails {
	s.TargetBackupVault = &v
	return s
}

// Provides details about an Backup backup vault. In Backup, a backup vault
// is a container that stores and organizes your backups.
type AwsBackupBackupVaultDetails struct {
	_ struct{} `type:"structure"`

	// A resource-based policy that is used to manage access permissions on the
	// target backup vault.
	AccessPolicy *string `type:"string"`

	// An Amazon Resource Name (ARN) that uniquely identifies a backup vault.
	BackupVaultArn *string `type:"string"`

	// The name of a logical container where backups are stored. Backup vaults are
	// identified by names that are unique to the Amazon Web Services account used
	// to create them and the Amazon Web Services Region where they are created.
	// They consist of lowercase letters, numbers, and hyphens.
	BackupVaultName *string `type:"string"`

	// The unique ARN associated with the server-side encryption key. You can specify
	// a key to encrypt your backups from services that support full Backup management.
	// If you do not specify a key, Backup creates an KMS key for you by default.
	EncryptionKeyArn *string `type:"string"`

	// The Amazon SNS event notifications for the specified backup vault.
	Notifications *AwsBackupBackupVaultNotificationsDetails `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 AwsBackupBackupVaultDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetAccessPolicy sets the AccessPolicy field's value.
func (s *AwsBackupBackupVaultDetails) SetAccessPolicy(v string) *AwsBackupBackupVaultDetails {
	s.AccessPolicy = &v
	return s
}

// SetBackupVaultArn sets the BackupVaultArn field's value.
func (s *AwsBackupBackupVaultDetails) SetBackupVaultArn(v string) *AwsBackupBackupVaultDetails {
	s.BackupVaultArn = &v
	return s
}

// SetBackupVaultName sets the BackupVaultName field's value.
func (s *AwsBackupBackupVaultDetails) SetBackupVaultName(v string) *AwsBackupBackupVaultDetails {
	s.BackupVaultName = &v
	return s
}

// SetEncryptionKeyArn sets the EncryptionKeyArn field's value.
func (s *AwsBackupBackupVaultDetails) SetEncryptionKeyArn(v string) *AwsBackupBackupVaultDetails {
	s.EncryptionKeyArn = &v
	return s
}

// SetNotifications sets the Notifications field's value.
func (s *AwsBackupBackupVaultDetails) SetNotifications(v *AwsBackupBackupVaultNotificationsDetails) *AwsBackupBackupVaultDetails {
	s.Notifications = v
	return s
}

// Provides details about the Amazon SNS event notifications for the specified
// backup vault.
type AwsBackupBackupVaultNotificationsDetails struct {
	_ struct{} `type:"structure"`

	// An array of events that indicate the status of jobs to back up resources
	// to the backup vault. The following events are supported:
	//
	//    * BACKUP_JOB_STARTED | BACKUP_JOB_COMPLETED
	//
	//    * COPY_JOB_STARTED | COPY_JOB_SUCCESSFUL | COPY_JOB_FAILED
	//
	//    * RESTORE_JOB_STARTED | RESTORE_JOB_COMPLETED | RECOVERY_POINT_MODIFIED
	//
	//    * S3_BACKUP_OBJECT_FAILED | S3_RESTORE_OBJECT_FAILED
	BackupVaultEvents []*string `type:"list"`

	// The Amazon Resource Name (ARN) that uniquely identifies the Amazon SNS topic
	// for a backup vault's events.
	SnsTopicArn *string `type:"string"`
}

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

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

// SetBackupVaultEvents sets the BackupVaultEvents field's value.
func (s *AwsBackupBackupVaultNotificationsDetails) SetBackupVaultEvents(v []*string) *AwsBackupBackupVaultNotificationsDetails {
	s.BackupVaultEvents = v
	return s
}

// SetSnsTopicArn sets the SnsTopicArn field's value.
func (s *AwsBackupBackupVaultNotificationsDetails) SetSnsTopicArn(v string) *AwsBackupBackupVaultNotificationsDetails {
	s.SnsTopicArn = &v
	return s
}

// Specifies how long in days before a recovery point transitions to cold storage
// or is deleted.
type AwsBackupRecoveryPointCalculatedLifecycleDetails struct {
	_ struct{} `type:"structure"`

	// Specifies the number of days after creation that a recovery point is deleted.
	// Must be greater than 90 days plus MoveToColdStorageAfterDays.
	DeleteAt *string `type:"string"`

	// Specifies the number of days after creation that a recovery point is moved
	// to cold storage.
	MoveToColdStorageAt *string `type:"string"`
}

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

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

// SetDeleteAt sets the DeleteAt field's value.
func (s *AwsBackupRecoveryPointCalculatedLifecycleDetails) SetDeleteAt(v string) *AwsBackupRecoveryPointCalculatedLifecycleDetails {
	s.DeleteAt = &v
	return s
}

// SetMoveToColdStorageAt sets the MoveToColdStorageAt field's value.
func (s *AwsBackupRecoveryPointCalculatedLifecycleDetails) SetMoveToColdStorageAt(v string) *AwsBackupRecoveryPointCalculatedLifecycleDetails {
	s.MoveToColdStorageAt = &v
	return s
}

// Contains information about the backup plan and rule that Backup used to initiate
// the recovery point backup.
type AwsBackupRecoveryPointCreatedByDetails struct {
	_ struct{} `type:"structure"`

	// An Amazon Resource Name (ARN) that uniquely identifies a backup plan.
	BackupPlanArn *string `type:"string"`

	// Uniquely identifies a backup plan.
	BackupPlanId *string `type:"string"`

	// Unique, randomly generated, Unicode, UTF-8 encoded strings that are at most
	// 1,024 bytes long. Version IDs cannot be edited.
	BackupPlanVersion *string `type:"string"`

	// Uniquely identifies a rule used to schedule the backup of a selection of
	// resources.
	BackupRuleId *string `type:"string"`
}

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

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

// SetBackupPlanArn sets the BackupPlanArn field's value.
func (s *AwsBackupRecoveryPointCreatedByDetails) SetBackupPlanArn(v string) *AwsBackupRecoveryPointCreatedByDetails {
	s.BackupPlanArn = &v
	return s
}

// SetBackupPlanId sets the BackupPlanId field's value.
func (s *AwsBackupRecoveryPointCreatedByDetails) SetBackupPlanId(v string) *AwsBackupRecoveryPointCreatedByDetails {
	s.BackupPlanId = &v
	return s
}

// SetBackupPlanVersion sets the BackupPlanVersion field's value.
func (s *AwsBackupRecoveryPointCreatedByDetails) SetBackupPlanVersion(v string) *AwsBackupRecoveryPointCreatedByDetails {
	s.BackupPlanVersion = &v
	return s
}

// SetBackupRuleId sets the BackupRuleId field's value.
func (s *AwsBackupRecoveryPointCreatedByDetails) SetBackupRuleId(v string) *AwsBackupRecoveryPointCreatedByDetails {
	s.BackupRuleId = &v
	return s
}

// Contains detailed information about the recovery points stored in an Backup
// backup vault. A backup, or recovery point, represents the content of a resource
// at a specified time.
type AwsBackupRecoveryPointDetails struct {
	_ struct{} `type:"structure"`

	// The size, in bytes, of a backup.
	BackupSizeInBytes *int64 `type:"long"`

	// An Amazon Resource Name (ARN) that uniquely identifies a backup vault.
	BackupVaultArn *string `type:"string"`

	// The name of a logical container where backups are stored. Backup vaults are
	// identified by names that are unique to the Amazon Web Services account used
	// to create them and the Amazon Web Services Region where they are created.
	// They consist of lowercase letters, numbers, and hyphens.
	BackupVaultName *string `type:"string"`

	// A CalculatedLifecycle object containing DeleteAt and MoveToColdStorageAt
	// timestamps.
	CalculatedLifecycle *AwsBackupRecoveryPointCalculatedLifecycleDetails `type:"structure"`

	// The date and time that a job to create a recovery point is completed, in
	// Unix format and UTC. The value of CompletionDate is accurate to milliseconds.
	// For example, the value 1516925490.087 represents Friday, January 26, 2018
	// 12:11:30.087 AM.
	CompletionDate *string `type:"string"`

	// Contains identifying information about the creation of a recovery point,
	// including the BackupPlanArn, BackupPlanId, BackupPlanVersion, and BackupRuleId
	// of the backup plan that is used to create it.
	CreatedBy *AwsBackupRecoveryPointCreatedByDetails `type:"structure"`

	// The date and time a recovery point is created, in Unix format and UTC. The
	// value of CreationDate is accurate to milliseconds. For example, the value
	// 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.
	CreationDate *string `type:"string"`

	// The ARN for the server-side encryption key that is used to protect your backups.
	EncryptionKeyArn *string `type:"string"`

	// Specifies the IAM role ARN used to create the target recovery point
	IamRoleArn *string `type:"string"`

	// A Boolean value that is returned as TRUE if the specified recovery point
	// is encrypted, or FALSE if the recovery point is not encrypted.
	IsEncrypted *bool `type:"boolean"`

	// The date and time that a recovery point was last restored, in Unix format
	// and UTC. The value of LastRestoreTime is accurate to milliseconds. For example,
	// the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087
	// AM.
	LastRestoreTime *string `type:"string"`

	// The lifecycle defines when a protected resource is transitioned to cold storage
	// and when it expires. Backup transitions and expires backups automatically
	// according to the lifecycle that you define
	Lifecycle *AwsBackupRecoveryPointLifecycleDetails `type:"structure"`

	// An ARN that uniquely identifies a recovery point.
	RecoveryPointArn *string `type:"string"`

	// An ARN that uniquely identifies a resource. The format of the ARN depends
	// on the resource type.
	ResourceArn *string `type:"string"`

	// The type of Amazon Web Services resource saved as a recovery point, such
	// as an Amazon EBS volume or an Amazon RDS database.
	ResourceType *string `type:"string"`

	// The ARN for the backup vault where the recovery point was originally copied
	// from. If the recovery point is restored to the same account, this value will
	// be null.
	SourceBackupVaultArn *string `type:"string"`

	// A status code specifying the state of the recovery point. Valid values are
	// as follows:
	//
	//    * COMPLETED
	//
	//    * DELETING
	//
	//    * EXPIRED
	//
	//    * PARTIAL
	Status *string `type:"string"`

	// A message explaining the reason of the recovery point deletion failure.
	StatusMessage *string `type:"string"`

	// Specifies the storage class of the recovery point. Valid values are as follows:
	//
	//    * COLD
	//
	//    * DELETED
	//
	//    * WARM
	StorageClass *string `type:"string"`
}

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

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

// SetBackupSizeInBytes sets the BackupSizeInBytes field's value.
func (s *AwsBackupRecoveryPointDetails) SetBackupSizeInBytes(v int64) *AwsBackupRecoveryPointDetails {
	s.BackupSizeInBytes = &v
	return s
}

// SetBackupVaultArn sets the BackupVaultArn field's value.
func (s *AwsBackupRecoveryPointDetails) SetBackupVaultArn(v string) *AwsBackupRecoveryPointDetails {
	s.BackupVaultArn = &v
	return s
}

// SetBackupVaultName sets the BackupVaultName field's value.
func (s *AwsBackupRecoveryPointDetails) SetBackupVaultName(v string) *AwsBackupRecoveryPointDetails {
	s.BackupVaultName = &v
	return s
}

// SetCalculatedLifecycle sets the CalculatedLifecycle field's value.
func (s *AwsBackupRecoveryPointDetails) SetCalculatedLifecycle(v *AwsBackupRecoveryPointCalculatedLifecycleDetails) *AwsBackupRecoveryPointDetails {
	s.CalculatedLifecycle = v
	return s
}

// SetCompletionDate sets the CompletionDate field's value.
func (s *AwsBackupRecoveryPointDetails) SetCompletionDate(v string) *AwsBackupRecoveryPointDetails {
	s.CompletionDate = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *AwsBackupRecoveryPointDetails) SetCreatedBy(v *AwsBackupRecoveryPointCreatedByDetails) *AwsBackupRecoveryPointDetails {
	s.CreatedBy = v
	return s
}

// SetCreationDate sets the CreationDate field's value.
func (s *AwsBackupRecoveryPointDetails) SetCreationDate(v string) *AwsBackupRecoveryPointDetails {
	s.CreationDate = &v
	return s
}

// SetEncryptionKeyArn sets the EncryptionKeyArn field's value.
func (s *AwsBackupRecoveryPointDetails) SetEncryptionKeyArn(v string) *AwsBackupRecoveryPointDetails {
	s.EncryptionKeyArn = &v
	return s
}

// SetIamRoleArn sets the IamRoleArn field's value.
func (s *AwsBackupRecoveryPointDetails) SetIamRoleArn(v string) *AwsBackupRecoveryPointDetails {
	s.IamRoleArn = &v
	return s
}

// SetIsEncrypted sets the IsEncrypted field's value.
func (s *AwsBackupRecoveryPointDetails) SetIsEncrypted(v bool) *AwsBackupRecoveryPointDetails {
	s.IsEncrypted = &v
	return s
}

// SetLastRestoreTime sets the LastRestoreTime field's value.
func (s *AwsBackupRecoveryPointDetails) SetLastRestoreTime(v string) *AwsBackupRecoveryPointDetails {
	s.LastRestoreTime = &v
	return s
}

// SetLifecycle sets the Lifecycle field's value.
func (s *AwsBackupRecoveryPointDetails) SetLifecycle(v *AwsBackupRecoveryPointLifecycleDetails) *AwsBackupRecoveryPointDetails {
	s.Lifecycle = v
	return s
}

// SetRecoveryPointArn sets the RecoveryPointArn field's value.
func (s *AwsBackupRecoveryPointDetails) SetRecoveryPointArn(v string) *AwsBackupRecoveryPointDetails {
	s.RecoveryPointArn = &v
	return s
}

// SetResourceArn sets the ResourceArn field's value.
func (s *AwsBackupRecoveryPointDetails) SetResourceArn(v string) *AwsBackupRecoveryPointDetails {
	s.ResourceArn = &v
	return s
}

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

// SetSourceBackupVaultArn sets the SourceBackupVaultArn field's value.
func (s *AwsBackupRecoveryPointDetails) SetSourceBackupVaultArn(v string) *AwsBackupRecoveryPointDetails {
	s.SourceBackupVaultArn = &v
	return s
}

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

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

// SetStorageClass sets the StorageClass field's value.
func (s *AwsBackupRecoveryPointDetails) SetStorageClass(v string) *AwsBackupRecoveryPointDetails {
	s.StorageClass = &v
	return s
}

// Contains an array of Transition objects specifying how long in days before
// a recovery point transitions to cold storage or is deleted.
type AwsBackupRecoveryPointLifecycleDetails struct {
	_ struct{} `type:"structure"`

	// Specifies the number of days after creation that a recovery point is deleted.
	// Must be greater than 90 days plus MoveToColdStorageAfterDays.
	DeleteAfterDays *int64 `type:"long"`

	// Specifies the number of days after creation that a recovery point is moved
	// to cold storage.
	MoveToColdStorageAfterDays *int64 `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 AwsBackupRecoveryPointLifecycleDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetDeleteAfterDays sets the DeleteAfterDays field's value.
func (s *AwsBackupRecoveryPointLifecycleDetails) SetDeleteAfterDays(v int64) *AwsBackupRecoveryPointLifecycleDetails {
	s.DeleteAfterDays = &v
	return s
}

// SetMoveToColdStorageAfterDays sets the MoveToColdStorageAfterDays field's value.
func (s *AwsBackupRecoveryPointLifecycleDetails) SetMoveToColdStorageAfterDays(v int64) *AwsBackupRecoveryPointLifecycleDetails {
	s.MoveToColdStorageAfterDays = &v
	return s
}

// Provides details about an Certificate Manager certificate.
type AwsCertificateManagerCertificateDetails struct {
	_ struct{} `type:"structure"`

	// The ARN of the private certificate authority (CA) that will be used to issue
	// the certificate.
	CertificateAuthorityArn *string `type:"string"`

	// Indicates when the certificate was requested.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreatedAt *string `type:"string"`

	// The fully qualified domain name (FQDN), such as www.example.com, that is
	// secured by the certificate.
	DomainName *string `type:"string"`

	// Contains information about the initial validation of each domain name that
	// occurs as a result of the RequestCertificate request.
	//
	// Only provided if the certificate type is AMAZON_ISSUED.
	DomainValidationOptions []*AwsCertificateManagerCertificateDomainValidationOption `type:"list"`

	// Contains a list of Extended Key Usage X.509 v3 extension objects. Each object
	// specifies a purpose for which the certificate public key can be used and
	// consists of a name and an object identifier (OID).
	ExtendedKeyUsages []*AwsCertificateManagerCertificateExtendedKeyUsage `type:"list"`

	// For a failed certificate request, the reason for the failure.
	//
	// Valid values: NO_AVAILABLE_CONTACTS | ADDITIONAL_VERIFICATION_REQUIRED |
	// DOMAIN_NOT_ALLOWED | INVALID_PUBLIC_DOMAIN | DOMAIN_VALIDATION_DENIED | CAA_ERROR
	// | PCA_LIMIT_EXCEEDED | PCA_INVALID_ARN | PCA_INVALID_STATE | PCA_REQUEST_FAILED
	// | PCA_NAME_CONSTRAINTS_VALIDATION | PCA_RESOURCE_NOT_FOUND | PCA_INVALID_ARGS
	// | PCA_INVALID_DURATION | PCA_ACCESS_DENIED | SLR_NOT_FOUND | OTHER
	FailureReason *string `type:"string"`

	// Indicates when the certificate was imported. Provided if the certificate
	// type is IMPORTED.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	ImportedAt *string `type:"string"`

	// The list of ARNs for the Amazon Web Services resources that use the certificate.
	InUseBy []*string `type:"list"`

	// Indicates when the certificate was issued. Provided if the certificate type
	// is AMAZON_ISSUED.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	IssuedAt *string `type:"string"`

	// The name of the certificate authority that issued and signed the certificate.
	Issuer *string `type:"string"`

	// The algorithm that was used to generate the public-private key pair.
	//
	// Valid values: RSA_2048 | RSA_1024 |RSA_4096 | EC_prime256v1 | EC_secp384r1
	// | EC_secp521r1
	KeyAlgorithm *string `type:"string"`

	// A list of key usage X.509 v3 extension objects.
	KeyUsages []*AwsCertificateManagerCertificateKeyUsage `type:"list"`

	// The time after which the certificate becomes invalid.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	NotAfter *string `type:"string"`

	// The time before which the certificate is not valid.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	NotBefore *string `type:"string"`

	// Provides a value that specifies whether to add the certificate to a transparency
	// log.
	Options *AwsCertificateManagerCertificateOptions `type:"structure"`

	// Whether the certificate is eligible for renewal.
	//
	// Valid values: ELIGIBLE | INELIGIBLE
	RenewalEligibility *string `type:"string"`

	// Information about the status of the Certificate Manager managed renewal for
	// the certificate. Provided only when the certificate type is AMAZON_ISSUED.
	RenewalSummary *AwsCertificateManagerCertificateRenewalSummary `type:"structure"`

	// The serial number of the certificate.
	Serial *string `type:"string"`

	// The algorithm that was used to sign the certificate.
	SignatureAlgorithm *string `type:"string"`

	// The status of the certificate.
	//
	// Valid values: PENDING_VALIDATION | ISSUED | INACTIVE | EXPIRED | VALIDATION_TIMED_OUT
	// | REVOKED | FAILED
	Status *string `type:"string"`

	// The name of the entity that is associated with the public key contained in
	// the certificate.
	Subject *string `type:"string"`

	// One or more domain names (subject alternative names) included in the certificate.
	// This list contains the domain names that are bound to the public key that
	// is contained in the certificate.
	//
	// The subject alternative names include the canonical domain name (CN) of the
	// certificate and additional domain names that can be used to connect to the
	// website.
	SubjectAlternativeNames []*string `type:"list"`

	// The source of the certificate. For certificates that Certificate Manager
	// provides, Type is AMAZON_ISSUED. For certificates that are imported with
	// ImportCertificate, Type is IMPORTED.
	//
	// Valid values: IMPORTED | AMAZON_ISSUED | PRIVATE
	Type *string `type:"string"`
}

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

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

// SetCertificateAuthorityArn sets the CertificateAuthorityArn field's value.
func (s *AwsCertificateManagerCertificateDetails) SetCertificateAuthorityArn(v string) *AwsCertificateManagerCertificateDetails {
	s.CertificateAuthorityArn = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *AwsCertificateManagerCertificateDetails) SetCreatedAt(v string) *AwsCertificateManagerCertificateDetails {
	s.CreatedAt = &v
	return s
}

// SetDomainName sets the DomainName field's value.
func (s *AwsCertificateManagerCertificateDetails) SetDomainName(v string) *AwsCertificateManagerCertificateDetails {
	s.DomainName = &v
	return s
}

// SetDomainValidationOptions sets the DomainValidationOptions field's value.
func (s *AwsCertificateManagerCertificateDetails) SetDomainValidationOptions(v []*AwsCertificateManagerCertificateDomainValidationOption) *AwsCertificateManagerCertificateDetails {
	s.DomainValidationOptions = v
	return s
}

// SetExtendedKeyUsages sets the ExtendedKeyUsages field's value.
func (s *AwsCertificateManagerCertificateDetails) SetExtendedKeyUsages(v []*AwsCertificateManagerCertificateExtendedKeyUsage) *AwsCertificateManagerCertificateDetails {
	s.ExtendedKeyUsages = v
	return s
}

// SetFailureReason sets the FailureReason field's value.
func (s *AwsCertificateManagerCertificateDetails) SetFailureReason(v string) *AwsCertificateManagerCertificateDetails {
	s.FailureReason = &v
	return s
}

// SetImportedAt sets the ImportedAt field's value.
func (s *AwsCertificateManagerCertificateDetails) SetImportedAt(v string) *AwsCertificateManagerCertificateDetails {
	s.ImportedAt = &v
	return s
}

// SetInUseBy sets the InUseBy field's value.
func (s *AwsCertificateManagerCertificateDetails) SetInUseBy(v []*string) *AwsCertificateManagerCertificateDetails {
	s.InUseBy = v
	return s
}

// SetIssuedAt sets the IssuedAt field's value.
func (s *AwsCertificateManagerCertificateDetails) SetIssuedAt(v string) *AwsCertificateManagerCertificateDetails {
	s.IssuedAt = &v
	return s
}

// SetIssuer sets the Issuer field's value.
func (s *AwsCertificateManagerCertificateDetails) SetIssuer(v string) *AwsCertificateManagerCertificateDetails {
	s.Issuer = &v
	return s
}

// SetKeyAlgorithm sets the KeyAlgorithm field's value.
func (s *AwsCertificateManagerCertificateDetails) SetKeyAlgorithm(v string) *AwsCertificateManagerCertificateDetails {
	s.KeyAlgorithm = &v
	return s
}

// SetKeyUsages sets the KeyUsages field's value.
func (s *AwsCertificateManagerCertificateDetails) SetKeyUsages(v []*AwsCertificateManagerCertificateKeyUsage) *AwsCertificateManagerCertificateDetails {
	s.KeyUsages = v
	return s
}

// SetNotAfter sets the NotAfter field's value.
func (s *AwsCertificateManagerCertificateDetails) SetNotAfter(v string) *AwsCertificateManagerCertificateDetails {
	s.NotAfter = &v
	return s
}

// SetNotBefore sets the NotBefore field's value.
func (s *AwsCertificateManagerCertificateDetails) SetNotBefore(v string) *AwsCertificateManagerCertificateDetails {
	s.NotBefore = &v
	return s
}

// SetOptions sets the Options field's value.
func (s *AwsCertificateManagerCertificateDetails) SetOptions(v *AwsCertificateManagerCertificateOptions) *AwsCertificateManagerCertificateDetails {
	s.Options = v
	return s
}

// SetRenewalEligibility sets the RenewalEligibility field's value.
func (s *AwsCertificateManagerCertificateDetails) SetRenewalEligibility(v string) *AwsCertificateManagerCertificateDetails {
	s.RenewalEligibility = &v
	return s
}

// SetRenewalSummary sets the RenewalSummary field's value.
func (s *AwsCertificateManagerCertificateDetails) SetRenewalSummary(v *AwsCertificateManagerCertificateRenewalSummary) *AwsCertificateManagerCertificateDetails {
	s.RenewalSummary = v
	return s
}

// SetSerial sets the Serial field's value.
func (s *AwsCertificateManagerCertificateDetails) SetSerial(v string) *AwsCertificateManagerCertificateDetails {
	s.Serial = &v
	return s
}

// SetSignatureAlgorithm sets the SignatureAlgorithm field's value.
func (s *AwsCertificateManagerCertificateDetails) SetSignatureAlgorithm(v string) *AwsCertificateManagerCertificateDetails {
	s.SignatureAlgorithm = &v
	return s
}

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

// SetSubject sets the Subject field's value.
func (s *AwsCertificateManagerCertificateDetails) SetSubject(v string) *AwsCertificateManagerCertificateDetails {
	s.Subject = &v
	return s
}

// SetSubjectAlternativeNames sets the SubjectAlternativeNames field's value.
func (s *AwsCertificateManagerCertificateDetails) SetSubjectAlternativeNames(v []*string) *AwsCertificateManagerCertificateDetails {
	s.SubjectAlternativeNames = v
	return s
}

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

// Contains information about one of the following:
//
//   - The initial validation of each domain name that occurs as a result of
//     the RequestCertificate request
//
//   - The validation of each domain name in the certificate, as it pertains
//     to Certificate Manager managed renewal
type AwsCertificateManagerCertificateDomainValidationOption struct {
	_ struct{} `type:"structure"`

	// A fully qualified domain name (FQDN) in the certificate.
	DomainName *string `type:"string"`

	// The CNAME record that is added to the DNS database for domain validation.
	ResourceRecord *AwsCertificateManagerCertificateResourceRecord `type:"structure"`

	// The domain name that Certificate Manager uses to send domain validation emails.
	ValidationDomain *string `type:"string"`

	// A list of email addresses that Certificate Manager uses to send domain validation
	// emails.
	ValidationEmails []*string `type:"list"`

	// The method used to validate the domain name.
	ValidationMethod *string `type:"string"`

	// The validation status of the domain name.
	ValidationStatus *string `type:"string"`
}

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

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

// SetDomainName sets the DomainName field's value.
func (s *AwsCertificateManagerCertificateDomainValidationOption) SetDomainName(v string) *AwsCertificateManagerCertificateDomainValidationOption {
	s.DomainName = &v
	return s
}

// SetResourceRecord sets the ResourceRecord field's value.
func (s *AwsCertificateManagerCertificateDomainValidationOption) SetResourceRecord(v *AwsCertificateManagerCertificateResourceRecord) *AwsCertificateManagerCertificateDomainValidationOption {
	s.ResourceRecord = v
	return s
}

// SetValidationDomain sets the ValidationDomain field's value.
func (s *AwsCertificateManagerCertificateDomainValidationOption) SetValidationDomain(v string) *AwsCertificateManagerCertificateDomainValidationOption {
	s.ValidationDomain = &v
	return s
}

// SetValidationEmails sets the ValidationEmails field's value.
func (s *AwsCertificateManagerCertificateDomainValidationOption) SetValidationEmails(v []*string) *AwsCertificateManagerCertificateDomainValidationOption {
	s.ValidationEmails = v
	return s
}

// SetValidationMethod sets the ValidationMethod field's value.
func (s *AwsCertificateManagerCertificateDomainValidationOption) SetValidationMethod(v string) *AwsCertificateManagerCertificateDomainValidationOption {
	s.ValidationMethod = &v
	return s
}

// SetValidationStatus sets the ValidationStatus field's value.
func (s *AwsCertificateManagerCertificateDomainValidationOption) SetValidationStatus(v string) *AwsCertificateManagerCertificateDomainValidationOption {
	s.ValidationStatus = &v
	return s
}

// Contains information about an extended key usage X.509 v3 extension object.
type AwsCertificateManagerCertificateExtendedKeyUsage struct {
	_ struct{} `type:"structure"`

	// The name of an extension value. Indicates the purpose for which the certificate
	// public key can be used.
	Name *string `type:"string"`

	// An object identifier (OID) for the extension value.
	//
	// The format is numbers separated by periods.
	OId *string `type:"string"`
}

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

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

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

// SetOId sets the OId field's value.
func (s *AwsCertificateManagerCertificateExtendedKeyUsage) SetOId(v string) *AwsCertificateManagerCertificateExtendedKeyUsage {
	s.OId = &v
	return s
}

// Contains information about a key usage X.509 v3 extension object.
type AwsCertificateManagerCertificateKeyUsage struct {
	_ struct{} `type:"structure"`

	// The key usage extension name.
	Name *string `type:"string"`
}

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

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

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

// Contains other options for the certificate.
type AwsCertificateManagerCertificateOptions struct {
	_ struct{} `type:"structure"`

	// Whether to add the certificate to a transparency log.
	//
	// Valid values: DISABLED | ENABLED
	CertificateTransparencyLoggingPreference *string `type:"string"`
}

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

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

// SetCertificateTransparencyLoggingPreference sets the CertificateTransparencyLoggingPreference field's value.
func (s *AwsCertificateManagerCertificateOptions) SetCertificateTransparencyLoggingPreference(v string) *AwsCertificateManagerCertificateOptions {
	s.CertificateTransparencyLoggingPreference = &v
	return s
}

// Contains information about the Certificate Manager managed renewal for an
// AMAZON_ISSUED certificate.
type AwsCertificateManagerCertificateRenewalSummary struct {
	_ struct{} `type:"structure"`

	// Information about the validation of each domain name in the certificate,
	// as it pertains to Certificate Manager managed renewal. Provided only when
	// the certificate type is AMAZON_ISSUED.
	DomainValidationOptions []*AwsCertificateManagerCertificateDomainValidationOption `type:"list"`

	// The status of the Certificate Manager managed renewal of the certificate.
	//
	// Valid values: PENDING_AUTO_RENEWAL | PENDING_VALIDATION | SUCCESS | FAILED
	RenewalStatus *string `type:"string"`

	// The reason that a renewal request was unsuccessful. This attribute is used
	// only when RenewalStatus is FAILED.
	//
	// Valid values: NO_AVAILABLE_CONTACTS | ADDITIONAL_VERIFICATION_REQUIRED |
	// DOMAIN_NOT_ALLOWED | INVALID_PUBLIC_DOMAIN | DOMAIN_VALIDATION_DENIED | CAA_ERROR
	// | PCA_LIMIT_EXCEEDED | PCA_INVALID_ARN | PCA_INVALID_STATE | PCA_REQUEST_FAILED
	// | PCA_NAME_CONSTRAINTS_VALIDATION | PCA_RESOURCE_NOT_FOUND | PCA_INVALID_ARGS
	// | PCA_INVALID_DURATION | PCA_ACCESS_DENIED | SLR_NOT_FOUND | OTHER
	RenewalStatusReason *string `type:"string"`

	// Indicates when the renewal summary was last updated.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	UpdatedAt *string `type:"string"`
}

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

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

// SetDomainValidationOptions sets the DomainValidationOptions field's value.
func (s *AwsCertificateManagerCertificateRenewalSummary) SetDomainValidationOptions(v []*AwsCertificateManagerCertificateDomainValidationOption) *AwsCertificateManagerCertificateRenewalSummary {
	s.DomainValidationOptions = v
	return s
}

// SetRenewalStatus sets the RenewalStatus field's value.
func (s *AwsCertificateManagerCertificateRenewalSummary) SetRenewalStatus(v string) *AwsCertificateManagerCertificateRenewalSummary {
	s.RenewalStatus = &v
	return s
}

// SetRenewalStatusReason sets the RenewalStatusReason field's value.
func (s *AwsCertificateManagerCertificateRenewalSummary) SetRenewalStatusReason(v string) *AwsCertificateManagerCertificateRenewalSummary {
	s.RenewalStatusReason = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *AwsCertificateManagerCertificateRenewalSummary) SetUpdatedAt(v string) *AwsCertificateManagerCertificateRenewalSummary {
	s.UpdatedAt = &v
	return s
}

// Provides details about the CNAME record that is added to the DNS database
// for domain validation.
type AwsCertificateManagerCertificateResourceRecord struct {
	_ struct{} `type:"structure"`

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

	// The type of resource.
	Type *string `type:"string"`

	// The value of the resource.
	Value *string `type:"string"`
}

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

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

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

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

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

// Nests a stack as a resource in a top-level template. Nested stacks are stacks
// created as resources for another stack.
type AwsCloudFormationStackDetails struct {
	_ struct{} `type:"structure"`

	// The capabilities allowed in the stack.
	Capabilities []*string `type:"list"`

	// The time at which the stack was created.
	CreationTime *string `type:"string"`

	// A user-defined description associated with the stack.
	Description *string `type:"string"`

	// Boolean to enable or disable rollback on stack creation failures.
	DisableRollback *bool `type:"boolean"`

	// Information about whether a stack's actual configuration differs, or has
	// drifted, from its expected configuration, as defined in the stack template
	// and any values specified as template parameters.
	DriftInformation *AwsCloudFormationStackDriftInformationDetails `type:"structure"`

	// Whether termination protection is enabled for the stack.
	EnableTerminationProtection *bool `type:"boolean"`

	// The time the nested stack was last updated. This field will only be returned
	// if the stack has been updated at least once.
	LastUpdatedTime *string `type:"string"`

	// The Amazon Resource Names (ARNs) of the Amazon SNS topic to which stack-related
	// events are published.
	NotificationArns []*string `type:"list"`

	// A list of output structures.
	Outputs []*AwsCloudFormationStackOutputsDetails `type:"list"`

	// The ARN of an IAM role that's associated with the stack.
	RoleArn *string `type:"string"`

	// Unique identifier of the stack.
	StackId *string `type:"string"`

	// The name associated with the stack.
	StackName *string `type:"string"`

	// Current status of the stack.
	StackStatus *string `type:"string"`

	// Success or failure message associated with the stack status.
	StackStatusReason *string `type:"string"`

	// The length of time, in minutes, that CloudFormation waits for the nested
	// stack to reach the CREATE_COMPLETE state.
	TimeoutInMinutes *int64 `type:"integer"`
}

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

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

// SetCapabilities sets the Capabilities field's value.
func (s *AwsCloudFormationStackDetails) SetCapabilities(v []*string) *AwsCloudFormationStackDetails {
	s.Capabilities = v
	return s
}

// SetCreationTime sets the CreationTime field's value.
func (s *AwsCloudFormationStackDetails) SetCreationTime(v string) *AwsCloudFormationStackDetails {
	s.CreationTime = &v
	return s
}

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

// SetDisableRollback sets the DisableRollback field's value.
func (s *AwsCloudFormationStackDetails) SetDisableRollback(v bool) *AwsCloudFormationStackDetails {
	s.DisableRollback = &v
	return s
}

// SetDriftInformation sets the DriftInformation field's value.
func (s *AwsCloudFormationStackDetails) SetDriftInformation(v *AwsCloudFormationStackDriftInformationDetails) *AwsCloudFormationStackDetails {
	s.DriftInformation = v
	return s
}

// SetEnableTerminationProtection sets the EnableTerminationProtection field's value.
func (s *AwsCloudFormationStackDetails) SetEnableTerminationProtection(v bool) *AwsCloudFormationStackDetails {
	s.EnableTerminationProtection = &v
	return s
}

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

// SetNotificationArns sets the NotificationArns field's value.
func (s *AwsCloudFormationStackDetails) SetNotificationArns(v []*string) *AwsCloudFormationStackDetails {
	s.NotificationArns = v
	return s
}

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

// SetRoleArn sets the RoleArn field's value.
func (s *AwsCloudFormationStackDetails) SetRoleArn(v string) *AwsCloudFormationStackDetails {
	s.RoleArn = &v
	return s
}

// SetStackId sets the StackId field's value.
func (s *AwsCloudFormationStackDetails) SetStackId(v string) *AwsCloudFormationStackDetails {
	s.StackId = &v
	return s
}

// SetStackName sets the StackName field's value.
func (s *AwsCloudFormationStackDetails) SetStackName(v string) *AwsCloudFormationStackDetails {
	s.StackName = &v
	return s
}

// SetStackStatus sets the StackStatus field's value.
func (s *AwsCloudFormationStackDetails) SetStackStatus(v string) *AwsCloudFormationStackDetails {
	s.StackStatus = &v
	return s
}

// SetStackStatusReason sets the StackStatusReason field's value.
func (s *AwsCloudFormationStackDetails) SetStackStatusReason(v string) *AwsCloudFormationStackDetails {
	s.StackStatusReason = &v
	return s
}

// SetTimeoutInMinutes sets the TimeoutInMinutes field's value.
func (s *AwsCloudFormationStackDetails) SetTimeoutInMinutes(v int64) *AwsCloudFormationStackDetails {
	s.TimeoutInMinutes = &v
	return s
}

// Provides information about the stack's conformity to its expected template
// configuration.
type AwsCloudFormationStackDriftInformationDetails struct {
	_ struct{} `type:"structure"`

	// Status of the stack's actual configuration compared to its expected template
	// configuration.
	StackDriftStatus *string `type:"string"`
}

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

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

// SetStackDriftStatus sets the StackDriftStatus field's value.
func (s *AwsCloudFormationStackDriftInformationDetails) SetStackDriftStatus(v string) *AwsCloudFormationStackDriftInformationDetails {
	s.StackDriftStatus = &v
	return s
}

// Provides information about the CloudFormation stack output.
type AwsCloudFormationStackOutputsDetails struct {
	_ struct{} `type:"structure"`

	// A user-defined description associated with the output.
	Description *string `type:"string"`

	// The key associated with the output.
	OutputKey *string `type:"string"`

	// The value associated with the output.
	OutputValue *string `type:"string"`
}

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

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

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

// SetOutputKey sets the OutputKey field's value.
func (s *AwsCloudFormationStackOutputsDetails) SetOutputKey(v string) *AwsCloudFormationStackOutputsDetails {
	s.OutputKey = &v
	return s
}

// SetOutputValue sets the OutputValue field's value.
func (s *AwsCloudFormationStackOutputsDetails) SetOutputValue(v string) *AwsCloudFormationStackOutputsDetails {
	s.OutputValue = &v
	return s
}

// Information about a cache behavior for the distribution.
type AwsCloudFrontDistributionCacheBehavior struct {
	_ struct{} `type:"structure"`

	// The protocol that viewers can use to access the files in an origin. You can
	// specify the following options:
	//
	//    * allow-all - Viewers can use HTTP or HTTPS.
	//
	//    * redirect-to-https - CloudFront responds to HTTP requests with an HTTP
	//    status code of 301 (Moved Permanently) and the HTTPS URL. The viewer then
	//    uses the new URL to resubmit.
	//
	//    * https-only - CloudFront responds to HTTP request with an HTTP status
	//    code of 403 (Forbidden).
	ViewerProtocolPolicy *string `type:"string"`
}

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

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

// SetViewerProtocolPolicy sets the ViewerProtocolPolicy field's value.
func (s *AwsCloudFrontDistributionCacheBehavior) SetViewerProtocolPolicy(v string) *AwsCloudFrontDistributionCacheBehavior {
	s.ViewerProtocolPolicy = &v
	return s
}

// Provides information about caching for the CloudFront distribution.
type AwsCloudFrontDistributionCacheBehaviors struct {
	_ struct{} `type:"structure"`

	// The cache behaviors for the distribution.
	Items []*AwsCloudFrontDistributionCacheBehavior `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 AwsCloudFrontDistributionCacheBehaviors) String() string {
	return awsutil.Prettify(s)
}

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

// SetItems sets the Items field's value.
func (s *AwsCloudFrontDistributionCacheBehaviors) SetItems(v []*AwsCloudFrontDistributionCacheBehavior) *AwsCloudFrontDistributionCacheBehaviors {
	s.Items = v
	return s
}

// Contains information about the default cache configuration for the CloudFront
// distribution.
type AwsCloudFrontDistributionDefaultCacheBehavior struct {
	_ struct{} `type:"structure"`

	// The protocol that viewers can use to access the files in an origin. You can
	// specify the following options:
	//
	//    * allow-all - Viewers can use HTTP or HTTPS.
	//
	//    * redirect-to-https - CloudFront responds to HTTP requests with an HTTP
	//    status code of 301 (Moved Permanently) and the HTTPS URL. The viewer then
	//    uses the new URL to resubmit.
	//
	//    * https-only - CloudFront responds to HTTP request with an HTTP status
	//    code of 403 (Forbidden).
	ViewerProtocolPolicy *string `type:"string"`
}

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

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

// SetViewerProtocolPolicy sets the ViewerProtocolPolicy field's value.
func (s *AwsCloudFrontDistributionDefaultCacheBehavior) SetViewerProtocolPolicy(v string) *AwsCloudFrontDistributionDefaultCacheBehavior {
	s.ViewerProtocolPolicy = &v
	return s
}

// A CloudFront distribution configuration.
type AwsCloudFrontDistributionDetails struct {
	_ struct{} `type:"structure"`

	// Provides information about the cache configuration for the distribution.
	CacheBehaviors *AwsCloudFrontDistributionCacheBehaviors `type:"structure"`

	// The default cache behavior for the configuration.
	DefaultCacheBehavior *AwsCloudFrontDistributionDefaultCacheBehavior `type:"structure"`

	// The object that CloudFront sends in response to requests from the origin
	// (for example, index.html) when a viewer requests the root URL for the distribution
	// (http://www.example.com) instead of an object in your distribution (http://www.example.com/product-description.html).
	DefaultRootObject *string `type:"string"`

	// The domain name corresponding to the distribution.
	DomainName *string `type:"string"`

	// The entity tag is a hash of the object.
	ETag *string `type:"string"`

	// Indicates when that the distribution was last modified.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	LastModifiedTime *string `type:"string"`

	// A complex type that controls whether access logs are written for the distribution.
	Logging *AwsCloudFrontDistributionLogging `type:"structure"`

	// Provides information about the origin groups in the distribution.
	OriginGroups *AwsCloudFrontDistributionOriginGroups `type:"structure"`

	// A complex type that contains information about origins for this distribution.
	Origins *AwsCloudFrontDistributionOrigins `type:"structure"`

	// Indicates the current status of the distribution.
	Status *string `type:"string"`

	// Provides information about the TLS/SSL configuration that the distribution
	// uses to communicate with viewers.
	ViewerCertificate *AwsCloudFrontDistributionViewerCertificate `type:"structure"`

	// A unique identifier that specifies the WAF web ACL, if any, to associate
	// with this distribution.
	WebAclId *string `type:"string"`
}

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

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

// SetCacheBehaviors sets the CacheBehaviors field's value.
func (s *AwsCloudFrontDistributionDetails) SetCacheBehaviors(v *AwsCloudFrontDistributionCacheBehaviors) *AwsCloudFrontDistributionDetails {
	s.CacheBehaviors = v
	return s
}

// SetDefaultCacheBehavior sets the DefaultCacheBehavior field's value.
func (s *AwsCloudFrontDistributionDetails) SetDefaultCacheBehavior(v *AwsCloudFrontDistributionDefaultCacheBehavior) *AwsCloudFrontDistributionDetails {
	s.DefaultCacheBehavior = v
	return s
}

// SetDefaultRootObject sets the DefaultRootObject field's value.
func (s *AwsCloudFrontDistributionDetails) SetDefaultRootObject(v string) *AwsCloudFrontDistributionDetails {
	s.DefaultRootObject = &v
	return s
}

// SetDomainName sets the DomainName field's value.
func (s *AwsCloudFrontDistributionDetails) SetDomainName(v string) *AwsCloudFrontDistributionDetails {
	s.DomainName = &v
	return s
}

// SetETag sets the ETag field's value.
func (s *AwsCloudFrontDistributionDetails) SetETag(v string) *AwsCloudFrontDistributionDetails {
	s.ETag = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *AwsCloudFrontDistributionDetails) SetLastModifiedTime(v string) *AwsCloudFrontDistributionDetails {
	s.LastModifiedTime = &v
	return s
}

// SetLogging sets the Logging field's value.
func (s *AwsCloudFrontDistributionDetails) SetLogging(v *AwsCloudFrontDistributionLogging) *AwsCloudFrontDistributionDetails {
	s.Logging = v
	return s
}

// SetOriginGroups sets the OriginGroups field's value.
func (s *AwsCloudFrontDistributionDetails) SetOriginGroups(v *AwsCloudFrontDistributionOriginGroups) *AwsCloudFrontDistributionDetails {
	s.OriginGroups = v
	return s
}

// SetOrigins sets the Origins field's value.
func (s *AwsCloudFrontDistributionDetails) SetOrigins(v *AwsCloudFrontDistributionOrigins) *AwsCloudFrontDistributionDetails {
	s.Origins = v
	return s
}

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

// SetViewerCertificate sets the ViewerCertificate field's value.
func (s *AwsCloudFrontDistributionDetails) SetViewerCertificate(v *AwsCloudFrontDistributionViewerCertificate) *AwsCloudFrontDistributionDetails {
	s.ViewerCertificate = v
	return s
}

// SetWebAclId sets the WebAclId field's value.
func (s *AwsCloudFrontDistributionDetails) SetWebAclId(v string) *AwsCloudFrontDistributionDetails {
	s.WebAclId = &v
	return s
}

// A complex type that controls whether access logs are written for the CloudFront
// distribution.
type AwsCloudFrontDistributionLogging struct {
	_ struct{} `type:"structure"`

	// The S3 bucket to store the access logs in.
	Bucket *string `type:"string"`

	// With this field, you can enable or disable the selected distribution.
	Enabled *bool `type:"boolean"`

	// Specifies whether you want CloudFront to include cookies in access logs.
	IncludeCookies *bool `type:"boolean"`

	// An optional string that you want CloudFront to use as a prefix to the access
	// log filenames for this distribution.
	Prefix *string `type:"string"`
}

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

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

// SetBucket sets the Bucket field's value.
func (s *AwsCloudFrontDistributionLogging) SetBucket(v string) *AwsCloudFrontDistributionLogging {
	s.Bucket = &v
	return s
}

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

// SetIncludeCookies sets the IncludeCookies field's value.
func (s *AwsCloudFrontDistributionLogging) SetIncludeCookies(v bool) *AwsCloudFrontDistributionLogging {
	s.IncludeCookies = &v
	return s
}

// SetPrefix sets the Prefix field's value.
func (s *AwsCloudFrontDistributionLogging) SetPrefix(v string) *AwsCloudFrontDistributionLogging {
	s.Prefix = &v
	return s
}

// A custom origin. A custom origin is any origin that is not an Amazon S3 bucket,
// with one exception. An Amazon S3 bucket that is configured with static website
// hosting (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html)
// is a custom origin.
type AwsCloudFrontDistributionOriginCustomOriginConfig struct {
	_ struct{} `type:"structure"`

	// The HTTP port that CloudFront uses to connect to the origin.
	HttpPort *int64 `type:"integer"`

	// The HTTPS port that CloudFront uses to connect to the origin.
	HttpsPort *int64 `type:"integer"`

	// Specifies how long, in seconds, CloudFront persists its connection to the
	// origin.
	OriginKeepaliveTimeout *int64 `type:"integer"`

	// Specifies the protocol (HTTP or HTTPS) that CloudFront uses to connect to
	// the origin.
	OriginProtocolPolicy *string `type:"string"`

	// Specifies how long, in seconds, CloudFront waits for a response from the
	// origin.
	OriginReadTimeout *int64 `type:"integer"`

	// Specifies the minimum SSL/TLS protocol that CloudFront uses when connecting
	// to your origin over HTTPS.
	OriginSslProtocols *AwsCloudFrontDistributionOriginSslProtocols `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 AwsCloudFrontDistributionOriginCustomOriginConfig) String() string {
	return awsutil.Prettify(s)
}

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

// SetHttpPort sets the HttpPort field's value.
func (s *AwsCloudFrontDistributionOriginCustomOriginConfig) SetHttpPort(v int64) *AwsCloudFrontDistributionOriginCustomOriginConfig {
	s.HttpPort = &v
	return s
}

// SetHttpsPort sets the HttpsPort field's value.
func (s *AwsCloudFrontDistributionOriginCustomOriginConfig) SetHttpsPort(v int64) *AwsCloudFrontDistributionOriginCustomOriginConfig {
	s.HttpsPort = &v
	return s
}

// SetOriginKeepaliveTimeout sets the OriginKeepaliveTimeout field's value.
func (s *AwsCloudFrontDistributionOriginCustomOriginConfig) SetOriginKeepaliveTimeout(v int64) *AwsCloudFrontDistributionOriginCustomOriginConfig {
	s.OriginKeepaliveTimeout = &v
	return s
}

// SetOriginProtocolPolicy sets the OriginProtocolPolicy field's value.
func (s *AwsCloudFrontDistributionOriginCustomOriginConfig) SetOriginProtocolPolicy(v string) *AwsCloudFrontDistributionOriginCustomOriginConfig {
	s.OriginProtocolPolicy = &v
	return s
}

// SetOriginReadTimeout sets the OriginReadTimeout field's value.
func (s *AwsCloudFrontDistributionOriginCustomOriginConfig) SetOriginReadTimeout(v int64) *AwsCloudFrontDistributionOriginCustomOriginConfig {
	s.OriginReadTimeout = &v
	return s
}

// SetOriginSslProtocols sets the OriginSslProtocols field's value.
func (s *AwsCloudFrontDistributionOriginCustomOriginConfig) SetOriginSslProtocols(v *AwsCloudFrontDistributionOriginSslProtocols) *AwsCloudFrontDistributionOriginCustomOriginConfig {
	s.OriginSslProtocols = v
	return s
}

// Information about an origin group for the CloudFront distribution.
type AwsCloudFrontDistributionOriginGroup struct {
	_ struct{} `type:"structure"`

	// Provides the criteria for an origin group to fail over.
	FailoverCriteria *AwsCloudFrontDistributionOriginGroupFailover `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 AwsCloudFrontDistributionOriginGroup) String() string {
	return awsutil.Prettify(s)
}

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

// SetFailoverCriteria sets the FailoverCriteria field's value.
func (s *AwsCloudFrontDistributionOriginGroup) SetFailoverCriteria(v *AwsCloudFrontDistributionOriginGroupFailover) *AwsCloudFrontDistributionOriginGroup {
	s.FailoverCriteria = v
	return s
}

// Provides information about when an origin group fails over.
type AwsCloudFrontDistributionOriginGroupFailover struct {
	_ struct{} `type:"structure"`

	// Information about the status codes that cause an origin group to fail over.
	StatusCodes *AwsCloudFrontDistributionOriginGroupFailoverStatusCodes `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 AwsCloudFrontDistributionOriginGroupFailover) String() string {
	return awsutil.Prettify(s)
}

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

// SetStatusCodes sets the StatusCodes field's value.
func (s *AwsCloudFrontDistributionOriginGroupFailover) SetStatusCodes(v *AwsCloudFrontDistributionOriginGroupFailoverStatusCodes) *AwsCloudFrontDistributionOriginGroupFailover {
	s.StatusCodes = v
	return s
}

// The status codes that cause an origin group to fail over.
type AwsCloudFrontDistributionOriginGroupFailoverStatusCodes struct {
	_ struct{} `type:"structure"`

	// The list of status code values that can cause a failover to the next origin.
	Items []*int64 `type:"list"`

	// The number of status codes that can cause a failover.
	Quantity *int64 `type:"integer"`
}

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

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

// SetItems sets the Items field's value.
func (s *AwsCloudFrontDistributionOriginGroupFailoverStatusCodes) SetItems(v []*int64) *AwsCloudFrontDistributionOriginGroupFailoverStatusCodes {
	s.Items = v
	return s
}

// SetQuantity sets the Quantity field's value.
func (s *AwsCloudFrontDistributionOriginGroupFailoverStatusCodes) SetQuantity(v int64) *AwsCloudFrontDistributionOriginGroupFailoverStatusCodes {
	s.Quantity = &v
	return s
}

// Provides information about origin groups that are associated with the CloudFront
// distribution.
type AwsCloudFrontDistributionOriginGroups struct {
	_ struct{} `type:"structure"`

	// The list of origin groups.
	Items []*AwsCloudFrontDistributionOriginGroup `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 AwsCloudFrontDistributionOriginGroups) String() string {
	return awsutil.Prettify(s)
}

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

// SetItems sets the Items field's value.
func (s *AwsCloudFrontDistributionOriginGroups) SetItems(v []*AwsCloudFrontDistributionOriginGroup) *AwsCloudFrontDistributionOriginGroups {
	s.Items = v
	return s
}

// A complex type that describes the Amazon S3 bucket, HTTP server (for example,
// a web server), Elemental MediaStore, or other server from which CloudFront
// gets your files.
type AwsCloudFrontDistributionOriginItem struct {
	_ struct{} `type:"structure"`

	// An origin that is not an Amazon S3 bucket, with one exception. If the Amazon
	// S3 bucket is configured with static website hosting, use this attribute.
	// If the Amazon S3 bucket is not configured with static website hosting, use
	// the S3OriginConfig type instead.
	CustomOriginConfig *AwsCloudFrontDistributionOriginCustomOriginConfig `type:"structure"`

	// Amazon S3 origins: The DNS name of the S3 bucket from which you want CloudFront
	// to get objects for this origin.
	DomainName *string `type:"string"`

	// A unique identifier for the origin or origin group.
	Id *string `type:"string"`

	// An optional element that causes CloudFront to request your content from a
	// directory in your Amazon S3 bucket or your custom origin.
	OriginPath *string `type:"string"`

	// An origin that is an S3 bucket that is not configured with static website
	// hosting.
	S3OriginConfig *AwsCloudFrontDistributionOriginS3OriginConfig `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 AwsCloudFrontDistributionOriginItem) String() string {
	return awsutil.Prettify(s)
}

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

// SetCustomOriginConfig sets the CustomOriginConfig field's value.
func (s *AwsCloudFrontDistributionOriginItem) SetCustomOriginConfig(v *AwsCloudFrontDistributionOriginCustomOriginConfig) *AwsCloudFrontDistributionOriginItem {
	s.CustomOriginConfig = v
	return s
}

// SetDomainName sets the DomainName field's value.
func (s *AwsCloudFrontDistributionOriginItem) SetDomainName(v string) *AwsCloudFrontDistributionOriginItem {
	s.DomainName = &v
	return s
}

// SetId sets the Id field's value.
func (s *AwsCloudFrontDistributionOriginItem) SetId(v string) *AwsCloudFrontDistributionOriginItem {
	s.Id = &v
	return s
}

// SetOriginPath sets the OriginPath field's value.
func (s *AwsCloudFrontDistributionOriginItem) SetOriginPath(v string) *AwsCloudFrontDistributionOriginItem {
	s.OriginPath = &v
	return s
}

// SetS3OriginConfig sets the S3OriginConfig field's value.
func (s *AwsCloudFrontDistributionOriginItem) SetS3OriginConfig(v *AwsCloudFrontDistributionOriginS3OriginConfig) *AwsCloudFrontDistributionOriginItem {
	s.S3OriginConfig = v
	return s
}

// Information about an origin that is an Amazon S3 bucket that is not configured
// with static website hosting.
type AwsCloudFrontDistributionOriginS3OriginConfig struct {
	_ struct{} `type:"structure"`

	// The CloudFront origin access identity to associate with the origin.
	OriginAccessIdentity *string `type:"string"`
}

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

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

// SetOriginAccessIdentity sets the OriginAccessIdentity field's value.
func (s *AwsCloudFrontDistributionOriginS3OriginConfig) SetOriginAccessIdentity(v string) *AwsCloudFrontDistributionOriginS3OriginConfig {
	s.OriginAccessIdentity = &v
	return s
}

// A complex type that contains information about the SSL/TLS protocols that
// CloudFront can use when establishing an HTTPS connection with your origin.
type AwsCloudFrontDistributionOriginSslProtocols struct {
	_ struct{} `type:"structure"`

	// A list that contains allowed SSL/TLS protocols for this distribution.
	Items []*string `type:"list"`

	// The number of SSL/TLS protocols that you want to allow CloudFront to use
	// when establishing an HTTPS connection with this origin.
	Quantity *int64 `type:"integer"`
}

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

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

// SetItems sets the Items field's value.
func (s *AwsCloudFrontDistributionOriginSslProtocols) SetItems(v []*string) *AwsCloudFrontDistributionOriginSslProtocols {
	s.Items = v
	return s
}

// SetQuantity sets the Quantity field's value.
func (s *AwsCloudFrontDistributionOriginSslProtocols) SetQuantity(v int64) *AwsCloudFrontDistributionOriginSslProtocols {
	s.Quantity = &v
	return s
}

// A complex type that contains information about origins and origin groups
// for this CloudFront distribution.
type AwsCloudFrontDistributionOrigins struct {
	_ struct{} `type:"structure"`

	// A complex type that contains origins or origin groups for this distribution.
	Items []*AwsCloudFrontDistributionOriginItem `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 AwsCloudFrontDistributionOrigins) String() string {
	return awsutil.Prettify(s)
}

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

// SetItems sets the Items field's value.
func (s *AwsCloudFrontDistributionOrigins) SetItems(v []*AwsCloudFrontDistributionOriginItem) *AwsCloudFrontDistributionOrigins {
	s.Items = v
	return s
}

// Provides information about the TLS/SSL configuration that the CloudFront
// distribution uses to communicate with viewers.
type AwsCloudFrontDistributionViewerCertificate struct {
	_ struct{} `type:"structure"`

	// The ARN of the ACM certificate. Used if the certificate is stored in ACM.
	// If you provide an ACM certificate ARN, you must also provide MinimumCertificateVersion
	// and SslSupportMethod.
	AcmCertificateArn *string `type:"string"`

	// The identifier of the certificate. Note that in CloudFront, this attribute
	// is deprecated.
	Certificate *string `type:"string"`

	// The source of the certificate identified by Certificate. Note that in CloudFront,
	// this attribute is deprecated.
	CertificateSource *string `type:"string"`

	// Whether the distribution uses the CloudFront domain name. If set to false,
	// then you provide either AcmCertificateArn or IamCertificateId.
	CloudFrontDefaultCertificate *bool `type:"boolean"`

	// The identifier of the IAM certificate. Used if the certificate is stored
	// in IAM. If you provide IamCertificateId, then you also must provide MinimumProtocolVersion
	// and SslSupportMethod.
	IamCertificateId *string `type:"string"`

	// The security policy that CloudFront uses for HTTPS connections with viewers.
	// If SslSupportMethod is sni-only, then MinimumProtocolVersion must be TLSv1
	// or higher.
	MinimumProtocolVersion *string `type:"string"`

	// The viewers that the distribution accepts HTTPS connections from.
	SslSupportMethod *string `type:"string"`
}

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

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

// SetAcmCertificateArn sets the AcmCertificateArn field's value.
func (s *AwsCloudFrontDistributionViewerCertificate) SetAcmCertificateArn(v string) *AwsCloudFrontDistributionViewerCertificate {
	s.AcmCertificateArn = &v
	return s
}

// SetCertificate sets the Certificate field's value.
func (s *AwsCloudFrontDistributionViewerCertificate) SetCertificate(v string) *AwsCloudFrontDistributionViewerCertificate {
	s.Certificate = &v
	return s
}

// SetCertificateSource sets the CertificateSource field's value.
func (s *AwsCloudFrontDistributionViewerCertificate) SetCertificateSource(v string) *AwsCloudFrontDistributionViewerCertificate {
	s.CertificateSource = &v
	return s
}

// SetCloudFrontDefaultCertificate sets the CloudFrontDefaultCertificate field's value.
func (s *AwsCloudFrontDistributionViewerCertificate) SetCloudFrontDefaultCertificate(v bool) *AwsCloudFrontDistributionViewerCertificate {
	s.CloudFrontDefaultCertificate = &v
	return s
}

// SetIamCertificateId sets the IamCertificateId field's value.
func (s *AwsCloudFrontDistributionViewerCertificate) SetIamCertificateId(v string) *AwsCloudFrontDistributionViewerCertificate {
	s.IamCertificateId = &v
	return s
}

// SetMinimumProtocolVersion sets the MinimumProtocolVersion field's value.
func (s *AwsCloudFrontDistributionViewerCertificate) SetMinimumProtocolVersion(v string) *AwsCloudFrontDistributionViewerCertificate {
	s.MinimumProtocolVersion = &v
	return s
}

// SetSslSupportMethod sets the SslSupportMethod field's value.
func (s *AwsCloudFrontDistributionViewerCertificate) SetSslSupportMethod(v string) *AwsCloudFrontDistributionViewerCertificate {
	s.SslSupportMethod = &v
	return s
}

// Provides details about a CloudTrail trail.
type AwsCloudTrailTrailDetails struct {
	_ struct{} `type:"structure"`

	// The ARN of the log group that CloudTrail logs are delivered to.
	CloudWatchLogsLogGroupArn *string `type:"string"`

	// The ARN of the role that the CloudWatch Events endpoint assumes when it writes
	// to the log group.
	CloudWatchLogsRoleArn *string `type:"string"`

	// Indicates whether the trail has custom event selectors.
	HasCustomEventSelectors *bool `type:"boolean"`

	// The Region where the trail was created.
	HomeRegion *string `type:"string"`

	// Indicates whether the trail publishes events from global services such as
	// IAM to the log files.
	IncludeGlobalServiceEvents *bool `type:"boolean"`

	// Indicates whether the trail applies only to the current Region or to all
	// Regions.
	IsMultiRegionTrail *bool `type:"boolean"`

	// Whether the trail is created for all accounts in an organization in Organizations,
	// or only for the current Amazon Web Services account.
	IsOrganizationTrail *bool `type:"boolean"`

	// The KMS key ID to use to encrypt the logs.
	KmsKeyId *string `type:"string"`

	// Indicates whether CloudTrail log file validation is enabled.
	LogFileValidationEnabled *bool `type:"boolean"`

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

	// The name of the S3 bucket where the log files are published.
	S3BucketName *string `type:"string"`

	// The S3 key prefix. The key prefix is added after the name of the S3 bucket
	// where the log files are published.
	S3KeyPrefix *string `type:"string"`

	// The ARN of the SNS topic that is used for notifications of log file delivery.
	SnsTopicArn *string `type:"string"`

	// The name of the SNS topic that is used for notifications of log file delivery.
	SnsTopicName *string `type:"string"`

	// The ARN of the trail.
	TrailArn *string `type:"string"`
}

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

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

// SetCloudWatchLogsLogGroupArn sets the CloudWatchLogsLogGroupArn field's value.
func (s *AwsCloudTrailTrailDetails) SetCloudWatchLogsLogGroupArn(v string) *AwsCloudTrailTrailDetails {
	s.CloudWatchLogsLogGroupArn = &v
	return s
}

// SetCloudWatchLogsRoleArn sets the CloudWatchLogsRoleArn field's value.
func (s *AwsCloudTrailTrailDetails) SetCloudWatchLogsRoleArn(v string) *AwsCloudTrailTrailDetails {
	s.CloudWatchLogsRoleArn = &v
	return s
}

// SetHasCustomEventSelectors sets the HasCustomEventSelectors field's value.
func (s *AwsCloudTrailTrailDetails) SetHasCustomEventSelectors(v bool) *AwsCloudTrailTrailDetails {
	s.HasCustomEventSelectors = &v
	return s
}

// SetHomeRegion sets the HomeRegion field's value.
func (s *AwsCloudTrailTrailDetails) SetHomeRegion(v string) *AwsCloudTrailTrailDetails {
	s.HomeRegion = &v
	return s
}

// SetIncludeGlobalServiceEvents sets the IncludeGlobalServiceEvents field's value.
func (s *AwsCloudTrailTrailDetails) SetIncludeGlobalServiceEvents(v bool) *AwsCloudTrailTrailDetails {
	s.IncludeGlobalServiceEvents = &v
	return s
}

// SetIsMultiRegionTrail sets the IsMultiRegionTrail field's value.
func (s *AwsCloudTrailTrailDetails) SetIsMultiRegionTrail(v bool) *AwsCloudTrailTrailDetails {
	s.IsMultiRegionTrail = &v
	return s
}

// SetIsOrganizationTrail sets the IsOrganizationTrail field's value.
func (s *AwsCloudTrailTrailDetails) SetIsOrganizationTrail(v bool) *AwsCloudTrailTrailDetails {
	s.IsOrganizationTrail = &v
	return s
}

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

// SetLogFileValidationEnabled sets the LogFileValidationEnabled field's value.
func (s *AwsCloudTrailTrailDetails) SetLogFileValidationEnabled(v bool) *AwsCloudTrailTrailDetails {
	s.LogFileValidationEnabled = &v
	return s
}

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

// SetS3BucketName sets the S3BucketName field's value.
func (s *AwsCloudTrailTrailDetails) SetS3BucketName(v string) *AwsCloudTrailTrailDetails {
	s.S3BucketName = &v
	return s
}

// SetS3KeyPrefix sets the S3KeyPrefix field's value.
func (s *AwsCloudTrailTrailDetails) SetS3KeyPrefix(v string) *AwsCloudTrailTrailDetails {
	s.S3KeyPrefix = &v
	return s
}

// SetSnsTopicArn sets the SnsTopicArn field's value.
func (s *AwsCloudTrailTrailDetails) SetSnsTopicArn(v string) *AwsCloudTrailTrailDetails {
	s.SnsTopicArn = &v
	return s
}

// SetSnsTopicName sets the SnsTopicName field's value.
func (s *AwsCloudTrailTrailDetails) SetSnsTopicName(v string) *AwsCloudTrailTrailDetails {
	s.SnsTopicName = &v
	return s
}

// SetTrailArn sets the TrailArn field's value.
func (s *AwsCloudTrailTrailDetails) SetTrailArn(v string) *AwsCloudTrailTrailDetails {
	s.TrailArn = &v
	return s
}

// Specifies an alarm and associates it with the specified metric or metric
// math expression.
type AwsCloudWatchAlarmDetails struct {
	_ struct{} `type:"structure"`

	// Indicates whether actions should be executed during any changes to the alarm
	// state.
	ActionsEnabled *bool `type:"boolean"`

	// The list of actions, specified as Amazon Resource Names (ARNs) to execute
	// when this alarm transitions into an ALARM state from any other state.
	AlarmActions []*string `type:"list"`

	// The ARN of the alarm.
	AlarmArn *string `type:"string"`

	// The time stamp of the last update to the alarm configuration.
	AlarmConfigurationUpdatedTimestamp *string `type:"string"`

	// The description of the alarm.
	AlarmDescription *string `type:"string"`

	// The name of the alarm. If you don't specify a name, CloudFront generates
	// a unique physical ID and uses that ID for the alarm name.
	AlarmName *string `type:"string"`

	// The arithmetic operation to use when comparing the specified statistic and
	// threshold. The specified statistic value is used as the first operand.
	ComparisonOperator *string `type:"string"`

	// The number of datapoints that must be breaching to trigger the alarm.
	DatapointsToAlarm *int64 `type:"integer"`

	// The dimensions for the metric associated with the alarm.
	Dimensions []*AwsCloudWatchAlarmDimensionsDetails `type:"list"`

	// Used only for alarms based on percentiles. If ignore, the alarm state does
	// not change during periods with too few data points to be statistically significant.
	// If evaluate or this parameter is not used, the alarm is always evaluated
	// and possibly changes state no matter how many data points are available.
	EvaluateLowSampleCountPercentile *string `type:"string"`

	// The number of periods over which data is compared to the specified threshold.
	EvaluationPeriods *int64 `type:"integer"`

	// The percentile statistic for the metric associated with the alarm.
	ExtendedStatistic *string `type:"string"`

	// The actions to execute when this alarm transitions to the INSUFFICIENT_DATA
	// state from any other state. Each action is specified as an ARN.
	InsufficientDataActions []*string `type:"list"`

	// The name of the metric associated with the alarm. This is required for an
	// alarm based on a metric. For an alarm based on a math expression, you use
	// Metrics instead and you can't specify MetricName.
	MetricName *string `type:"string"`

	// The namespace of the metric associated with the alarm. This is required for
	// an alarm based on a metric. For an alarm based on a math expression, you
	// can't specify Namespace and you use Metrics instead.
	Namespace *string `type:"string"`

	// The actions to execute when this alarm transitions to the OK state from any
	// other state. Each action is specified as an ARN.
	OkActions []*string `type:"list"`

	// The period, in seconds, over which the statistic is applied. This is required
	// for an alarm based on a metric.
	Period *int64 `type:"integer"`

	// The statistic for the metric associated with the alarm, other than percentile.
	// For percentile statistics, use ExtendedStatistic.
	//
	// For an alarm based on a metric, you must specify either Statistic or ExtendedStatistic
	// but not both.
	//
	// For an alarm based on a math expression, you can't specify Statistic. Instead,
	// you use Metrics.
	Statistic *string `type:"string"`

	// The value to compare with the specified statistic.
	Threshold *float64 `type:"double"`

	// n an alarm based on an anomaly detection model, this is the ID of the ANOMALY_DETECTION_BAND
	// function used as the threshold for the alarm.
	ThresholdMetricId *string `type:"string"`

	// Sets how this alarm is to handle missing data points.
	TreatMissingData *string `type:"string"`

	// The unit of the metric associated with the alarm.
	Unit *string `type:"string"`
}

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

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

// SetActionsEnabled sets the ActionsEnabled field's value.
func (s *AwsCloudWatchAlarmDetails) SetActionsEnabled(v bool) *AwsCloudWatchAlarmDetails {
	s.ActionsEnabled = &v
	return s
}

// SetAlarmActions sets the AlarmActions field's value.
func (s *AwsCloudWatchAlarmDetails) SetAlarmActions(v []*string) *AwsCloudWatchAlarmDetails {
	s.AlarmActions = v
	return s
}

// SetAlarmArn sets the AlarmArn field's value.
func (s *AwsCloudWatchAlarmDetails) SetAlarmArn(v string) *AwsCloudWatchAlarmDetails {
	s.AlarmArn = &v
	return s
}

// SetAlarmConfigurationUpdatedTimestamp sets the AlarmConfigurationUpdatedTimestamp field's value.
func (s *AwsCloudWatchAlarmDetails) SetAlarmConfigurationUpdatedTimestamp(v string) *AwsCloudWatchAlarmDetails {
	s.AlarmConfigurationUpdatedTimestamp = &v
	return s
}

// SetAlarmDescription sets the AlarmDescription field's value.
func (s *AwsCloudWatchAlarmDetails) SetAlarmDescription(v string) *AwsCloudWatchAlarmDetails {
	s.AlarmDescription = &v
	return s
}

// SetAlarmName sets the AlarmName field's value.
func (s *AwsCloudWatchAlarmDetails) SetAlarmName(v string) *AwsCloudWatchAlarmDetails {
	s.AlarmName = &v
	return s
}

// SetComparisonOperator sets the ComparisonOperator field's value.
func (s *AwsCloudWatchAlarmDetails) SetComparisonOperator(v string) *AwsCloudWatchAlarmDetails {
	s.ComparisonOperator = &v
	return s
}

// SetDatapointsToAlarm sets the DatapointsToAlarm field's value.
func (s *AwsCloudWatchAlarmDetails) SetDatapointsToAlarm(v int64) *AwsCloudWatchAlarmDetails {
	s.DatapointsToAlarm = &v
	return s
}

// SetDimensions sets the Dimensions field's value.
func (s *AwsCloudWatchAlarmDetails) SetDimensions(v []*AwsCloudWatchAlarmDimensionsDetails) *AwsCloudWatchAlarmDetails {
	s.Dimensions = v
	return s
}

// SetEvaluateLowSampleCountPercentile sets the EvaluateLowSampleCountPercentile field's value.
func (s *AwsCloudWatchAlarmDetails) SetEvaluateLowSampleCountPercentile(v string) *AwsCloudWatchAlarmDetails {
	s.EvaluateLowSampleCountPercentile = &v
	return s
}

// SetEvaluationPeriods sets the EvaluationPeriods field's value.
func (s *AwsCloudWatchAlarmDetails) SetEvaluationPeriods(v int64) *AwsCloudWatchAlarmDetails {
	s.EvaluationPeriods = &v
	return s
}

// SetExtendedStatistic sets the ExtendedStatistic field's value.
func (s *AwsCloudWatchAlarmDetails) SetExtendedStatistic(v string) *AwsCloudWatchAlarmDetails {
	s.ExtendedStatistic = &v
	return s
}

// SetInsufficientDataActions sets the InsufficientDataActions field's value.
func (s *AwsCloudWatchAlarmDetails) SetInsufficientDataActions(v []*string) *AwsCloudWatchAlarmDetails {
	s.InsufficientDataActions = v
	return s
}

// SetMetricName sets the MetricName field's value.
func (s *AwsCloudWatchAlarmDetails) SetMetricName(v string) *AwsCloudWatchAlarmDetails {
	s.MetricName = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *AwsCloudWatchAlarmDetails) SetNamespace(v string) *AwsCloudWatchAlarmDetails {
	s.Namespace = &v
	return s
}

// SetOkActions sets the OkActions field's value.
func (s *AwsCloudWatchAlarmDetails) SetOkActions(v []*string) *AwsCloudWatchAlarmDetails {
	s.OkActions = v
	return s
}

// SetPeriod sets the Period field's value.
func (s *AwsCloudWatchAlarmDetails) SetPeriod(v int64) *AwsCloudWatchAlarmDetails {
	s.Period = &v
	return s
}

// SetStatistic sets the Statistic field's value.
func (s *AwsCloudWatchAlarmDetails) SetStatistic(v string) *AwsCloudWatchAlarmDetails {
	s.Statistic = &v
	return s
}

// SetThreshold sets the Threshold field's value.
func (s *AwsCloudWatchAlarmDetails) SetThreshold(v float64) *AwsCloudWatchAlarmDetails {
	s.Threshold = &v
	return s
}

// SetThresholdMetricId sets the ThresholdMetricId field's value.
func (s *AwsCloudWatchAlarmDetails) SetThresholdMetricId(v string) *AwsCloudWatchAlarmDetails {
	s.ThresholdMetricId = &v
	return s
}

// SetTreatMissingData sets the TreatMissingData field's value.
func (s *AwsCloudWatchAlarmDetails) SetTreatMissingData(v string) *AwsCloudWatchAlarmDetails {
	s.TreatMissingData = &v
	return s
}

// SetUnit sets the Unit field's value.
func (s *AwsCloudWatchAlarmDetails) SetUnit(v string) *AwsCloudWatchAlarmDetails {
	s.Unit = &v
	return s
}

// Details about the dimensions for the metric associated with the alarm.
type AwsCloudWatchAlarmDimensionsDetails struct {
	_ struct{} `type:"structure"`

	// The name of a dimension.
	Name *string `type:"string"`

	// The value of a dimension.
	Value *string `type:"string"`
}

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

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

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

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

// Information about the build artifacts for the CodeBuild project.
type AwsCodeBuildProjectArtifactsDetails struct {
	_ struct{} `type:"structure"`

	// An identifier for the artifact definition.
	ArtifactIdentifier *string `type:"string"`

	// Indicates whether to disable encryption on the artifact. Only valid when
	// Type is S3.
	EncryptionDisabled *bool `type:"boolean"`

	// Only used when Type is S3. The name of the S3 bucket where the artifact is
	// located.
	Location *string `type:"string"`

	// Only used when Type is S3. The name of the artifact. Used with NamepaceType
	// and Path to determine the pattern for storing the artifact.
	Name *string `type:"string"`

	// Only used when Type is S3. The value to use for the namespace. Used with
	// Name and Path to determine the pattern for storing the artifact.
	NamespaceType *string `type:"string"`

	// Whether the name specified in the buildspec file overrides the artifact name.
	OverrideArtifactName *bool `type:"boolean"`

	// Only used when Type is S3. The type of output artifact to create.
	Packaging *string `type:"string"`

	// Only used when Type is S3. The path to the artifact. Used with Name and NamespaceType
	// to determine the pattern for storing the artifact.
	Path *string `type:"string"`

	// The type of build artifact.
	Type *string `type:"string"`
}

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

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

// SetArtifactIdentifier sets the ArtifactIdentifier field's value.
func (s *AwsCodeBuildProjectArtifactsDetails) SetArtifactIdentifier(v string) *AwsCodeBuildProjectArtifactsDetails {
	s.ArtifactIdentifier = &v
	return s
}

// SetEncryptionDisabled sets the EncryptionDisabled field's value.
func (s *AwsCodeBuildProjectArtifactsDetails) SetEncryptionDisabled(v bool) *AwsCodeBuildProjectArtifactsDetails {
	s.EncryptionDisabled = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *AwsCodeBuildProjectArtifactsDetails) SetLocation(v string) *AwsCodeBuildProjectArtifactsDetails {
	s.Location = &v
	return s
}

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

// SetNamespaceType sets the NamespaceType field's value.
func (s *AwsCodeBuildProjectArtifactsDetails) SetNamespaceType(v string) *AwsCodeBuildProjectArtifactsDetails {
	s.NamespaceType = &v
	return s
}

// SetOverrideArtifactName sets the OverrideArtifactName field's value.
func (s *AwsCodeBuildProjectArtifactsDetails) SetOverrideArtifactName(v bool) *AwsCodeBuildProjectArtifactsDetails {
	s.OverrideArtifactName = &v
	return s
}

// SetPackaging sets the Packaging field's value.
func (s *AwsCodeBuildProjectArtifactsDetails) SetPackaging(v string) *AwsCodeBuildProjectArtifactsDetails {
	s.Packaging = &v
	return s
}

// SetPath sets the Path field's value.
func (s *AwsCodeBuildProjectArtifactsDetails) SetPath(v string) *AwsCodeBuildProjectArtifactsDetails {
	s.Path = &v
	return s
}

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

// Information about an CodeBuild project.
type AwsCodeBuildProjectDetails struct {
	_ struct{} `type:"structure"`

	// Information about the build artifacts for the CodeBuild project.
	Artifacts []*AwsCodeBuildProjectArtifactsDetails `type:"list"`

	// The KMS key used to encrypt the build output artifacts.
	//
	// You can specify either the ARN of the KMS key or, if available, the KMS key
	// alias (using the format alias/alias-name).
	EncryptionKey *string `type:"string"`

	// Information about the build environment for this build project.
	Environment *AwsCodeBuildProjectEnvironment `type:"structure"`

	// Information about logs for the build project.
	LogsConfig *AwsCodeBuildProjectLogsConfigDetails `type:"structure"`

	// The name of the build project.
	Name *string `type:"string"`

	// Information about the secondary artifacts for the CodeBuild project.
	SecondaryArtifacts []*AwsCodeBuildProjectArtifactsDetails `type:"list"`

	// The ARN of the IAM role that enables CodeBuild to interact with dependent
	// Amazon Web Services services on behalf of the Amazon Web Services account.
	ServiceRole *string `type:"string"`

	// Information about the build input source code for this build project.
	Source *AwsCodeBuildProjectSource `type:"structure"`

	// Information about the VPC configuration that CodeBuild accesses.
	VpcConfig *AwsCodeBuildProjectVpcConfig `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 AwsCodeBuildProjectDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetArtifacts sets the Artifacts field's value.
func (s *AwsCodeBuildProjectDetails) SetArtifacts(v []*AwsCodeBuildProjectArtifactsDetails) *AwsCodeBuildProjectDetails {
	s.Artifacts = v
	return s
}

// SetEncryptionKey sets the EncryptionKey field's value.
func (s *AwsCodeBuildProjectDetails) SetEncryptionKey(v string) *AwsCodeBuildProjectDetails {
	s.EncryptionKey = &v
	return s
}

// SetEnvironment sets the Environment field's value.
func (s *AwsCodeBuildProjectDetails) SetEnvironment(v *AwsCodeBuildProjectEnvironment) *AwsCodeBuildProjectDetails {
	s.Environment = v
	return s
}

// SetLogsConfig sets the LogsConfig field's value.
func (s *AwsCodeBuildProjectDetails) SetLogsConfig(v *AwsCodeBuildProjectLogsConfigDetails) *AwsCodeBuildProjectDetails {
	s.LogsConfig = v
	return s
}

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

// SetSecondaryArtifacts sets the SecondaryArtifacts field's value.
func (s *AwsCodeBuildProjectDetails) SetSecondaryArtifacts(v []*AwsCodeBuildProjectArtifactsDetails) *AwsCodeBuildProjectDetails {
	s.SecondaryArtifacts = v
	return s
}

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

// SetSource sets the Source field's value.
func (s *AwsCodeBuildProjectDetails) SetSource(v *AwsCodeBuildProjectSource) *AwsCodeBuildProjectDetails {
	s.Source = v
	return s
}

// SetVpcConfig sets the VpcConfig field's value.
func (s *AwsCodeBuildProjectDetails) SetVpcConfig(v *AwsCodeBuildProjectVpcConfig) *AwsCodeBuildProjectDetails {
	s.VpcConfig = v
	return s
}

// Information about the build environment for this build project.
type AwsCodeBuildProjectEnvironment struct {
	_ struct{} `type:"structure"`

	// The certificate to use with this build project.
	Certificate *string `type:"string"`

	// A set of environment variables to make available to builds for the build
	// project.
	EnvironmentVariables []*AwsCodeBuildProjectEnvironmentEnvironmentVariablesDetails `type:"list"`

	// The type of credentials CodeBuild uses to pull images in your build.
	//
	// Valid values:
	//
	//    * CODEBUILD specifies that CodeBuild uses its own credentials. This requires
	//    that you modify your ECR repository policy to trust the CodeBuild service
	//    principal.
	//
	//    * SERVICE_ROLE specifies that CodeBuild uses your build project's service
	//    role.
	//
	// When you use a cross-account or private registry image, you must use SERVICE_ROLE
	// credentials. When you use an CodeBuild curated image, you must use CODEBUILD
	// credentials.
	ImagePullCredentialsType *string `type:"string"`

	// Whether to allow the Docker daemon to run inside a Docker container. Set
	// to true if the build project is used to build Docker images.
	PrivilegedMode *bool `type:"boolean"`

	// The credentials for access to a private registry.
	RegistryCredential *AwsCodeBuildProjectEnvironmentRegistryCredential `type:"structure"`

	// The type of build environment to use for related builds.
	//
	// The environment type ARM_CONTAINER is available only in Regions US East (N.
	// Virginia), US East (Ohio), US West (Oregon), Europe (Ireland), Asia Pacific
	// (Mumbai), Asia Pacific (Tokyo), Asia Pacific (Sydney), and Europe (Frankfurt).
	//
	// The environment type LINUX_CONTAINER with compute type build.general1.2xlarge
	// is available only in Regions US East (N. Virginia), US East (N. Virginia),
	// US West (Oregon), Canada (Central), Europe (Ireland), Europe (London), Europe
	// (Frankfurt), Asia Pacific (Tokyo), Asia Pacific (Seoul), Asia Pacific (Singapore),
	// Asia Pacific (Sydney), China (Beijing), and China (Ningxia).
	//
	// The environment type LINUX_GPU_CONTAINER is available only in Regions US
	// East (N. Virginia), US East (N. Virginia), US West (Oregon), Canada (Central),
	// Europe (Ireland), Europe (London), Europe (Frankfurt), Asia Pacific (Tokyo),
	// Asia Pacific (Seoul), Asia Pacific (Singapore), Asia Pacific (Sydney), China
	// (Beijing), and China (Ningxia).
	//
	// Valid values: WINDOWS_CONTAINER | LINUX_CONTAINER | LINUX_GPU_CONTAINER |
	// ARM_CONTAINER
	Type *string `type:"string"`
}

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

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

// SetCertificate sets the Certificate field's value.
func (s *AwsCodeBuildProjectEnvironment) SetCertificate(v string) *AwsCodeBuildProjectEnvironment {
	s.Certificate = &v
	return s
}

// SetEnvironmentVariables sets the EnvironmentVariables field's value.
func (s *AwsCodeBuildProjectEnvironment) SetEnvironmentVariables(v []*AwsCodeBuildProjectEnvironmentEnvironmentVariablesDetails) *AwsCodeBuildProjectEnvironment {
	s.EnvironmentVariables = v
	return s
}

// SetImagePullCredentialsType sets the ImagePullCredentialsType field's value.
func (s *AwsCodeBuildProjectEnvironment) SetImagePullCredentialsType(v string) *AwsCodeBuildProjectEnvironment {
	s.ImagePullCredentialsType = &v
	return s
}

// SetPrivilegedMode sets the PrivilegedMode field's value.
func (s *AwsCodeBuildProjectEnvironment) SetPrivilegedMode(v bool) *AwsCodeBuildProjectEnvironment {
	s.PrivilegedMode = &v
	return s
}

// SetRegistryCredential sets the RegistryCredential field's value.
func (s *AwsCodeBuildProjectEnvironment) SetRegistryCredential(v *AwsCodeBuildProjectEnvironmentRegistryCredential) *AwsCodeBuildProjectEnvironment {
	s.RegistryCredential = v
	return s
}

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

// Information about an environment variable that is available to builds for
// the build project.
type AwsCodeBuildProjectEnvironmentEnvironmentVariablesDetails struct {
	_ struct{} `type:"structure"`

	// The name of the environment variable.
	Name *string `type:"string"`

	// The type of environment variable.
	Type *string `type:"string"`

	// The value of the environment variable.
	Value *string `type:"string"`
}

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

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

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

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

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

// The credentials for access to a private registry.
type AwsCodeBuildProjectEnvironmentRegistryCredential struct {
	_ struct{} `type:"structure"`

	// The ARN or name of credentials created using Secrets Manager.
	//
	// The credential can use the name of the credentials only if they exist in
	// your current Amazon Web Services Region.
	Credential *string `type:"string"`

	// The service that created the credentials to access a private Docker registry.
	//
	// The valid value,SECRETS_MANAGER, is for Secrets Manager.
	CredentialProvider *string `type:"string"`
}

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

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

// SetCredential sets the Credential field's value.
func (s *AwsCodeBuildProjectEnvironmentRegistryCredential) SetCredential(v string) *AwsCodeBuildProjectEnvironmentRegistryCredential {
	s.Credential = &v
	return s
}

// SetCredentialProvider sets the CredentialProvider field's value.
func (s *AwsCodeBuildProjectEnvironmentRegistryCredential) SetCredentialProvider(v string) *AwsCodeBuildProjectEnvironmentRegistryCredential {
	s.CredentialProvider = &v
	return s
}

// Information about CloudWatch Logs for the build project.
type AwsCodeBuildProjectLogsConfigCloudWatchLogsDetails struct {
	_ struct{} `type:"structure"`

	// The group name of the logs in CloudWatch Logs.
	GroupName *string `type:"string"`

	// The current status of the logs in CloudWatch Logs for a build project.
	Status *string `type:"string"`

	// The prefix of the stream name of the CloudWatch Logs.
	StreamName *string `type:"string"`
}

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

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

// SetGroupName sets the GroupName field's value.
func (s *AwsCodeBuildProjectLogsConfigCloudWatchLogsDetails) SetGroupName(v string) *AwsCodeBuildProjectLogsConfigCloudWatchLogsDetails {
	s.GroupName = &v
	return s
}

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

// SetStreamName sets the StreamName field's value.
func (s *AwsCodeBuildProjectLogsConfigCloudWatchLogsDetails) SetStreamName(v string) *AwsCodeBuildProjectLogsConfigCloudWatchLogsDetails {
	s.StreamName = &v
	return s
}

// Information about logs for the build project.
type AwsCodeBuildProjectLogsConfigDetails struct {
	_ struct{} `type:"structure"`

	// Information about CloudWatch Logs for the build project.
	CloudWatchLogs *AwsCodeBuildProjectLogsConfigCloudWatchLogsDetails `type:"structure"`

	// Information about logs built to an S3 bucket for a build project.
	S3Logs *AwsCodeBuildProjectLogsConfigS3LogsDetails `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 AwsCodeBuildProjectLogsConfigDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetCloudWatchLogs sets the CloudWatchLogs field's value.
func (s *AwsCodeBuildProjectLogsConfigDetails) SetCloudWatchLogs(v *AwsCodeBuildProjectLogsConfigCloudWatchLogsDetails) *AwsCodeBuildProjectLogsConfigDetails {
	s.CloudWatchLogs = v
	return s
}

// SetS3Logs sets the S3Logs field's value.
func (s *AwsCodeBuildProjectLogsConfigDetails) SetS3Logs(v *AwsCodeBuildProjectLogsConfigS3LogsDetails) *AwsCodeBuildProjectLogsConfigDetails {
	s.S3Logs = v
	return s
}

// Information about logs built to an S3 bucket for a build project.
type AwsCodeBuildProjectLogsConfigS3LogsDetails struct {
	_ struct{} `type:"structure"`

	// Whether to disable encryption of the S3 build log output.
	EncryptionDisabled *bool `type:"boolean"`

	// The ARN of the S3 bucket and the path prefix for S3 logs.
	Location *string `type:"string"`

	// The current status of the S3 build logs.
	Status *string `type:"string"`
}

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

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

// SetEncryptionDisabled sets the EncryptionDisabled field's value.
func (s *AwsCodeBuildProjectLogsConfigS3LogsDetails) SetEncryptionDisabled(v bool) *AwsCodeBuildProjectLogsConfigS3LogsDetails {
	s.EncryptionDisabled = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *AwsCodeBuildProjectLogsConfigS3LogsDetails) SetLocation(v string) *AwsCodeBuildProjectLogsConfigS3LogsDetails {
	s.Location = &v
	return s
}

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

// Information about the build input source code for this build project.
type AwsCodeBuildProjectSource struct {
	_ struct{} `type:"structure"`

	// Information about the Git clone depth for the build project.
	GitCloneDepth *int64 `type:"integer"`

	// Whether to ignore SSL warnings while connecting to the project source code.
	InsecureSsl *bool `type:"boolean"`

	// Information about the location of the source code to be built.
	//
	// Valid values include:
	//
	//    * For source code settings that are specified in the source action of
	//    a pipeline in CodePipeline, location should not be specified. If it is
	//    specified, CodePipeline ignores it. This is because CodePipeline uses
	//    the settings in a pipeline's source action instead of this value.
	//
	//    * For source code in an CodeCommit repository, the HTTPS clone URL to
	//    the repository that contains the source code and the build spec file (for
	//    example, https://git-codecommit.region-ID.amazonaws.com/v1/repos/repo-name
	//    ).
	//
	//    * For source code in an S3 input bucket, one of the following. The path
	//    to the ZIP file that contains the source code (for example, bucket-name/path/to/object-name.zip).
	//    The path to the folder that contains the source code (for example, bucket-name/path/to/source-code/folder/).
	//
	//    * For source code in a GitHub repository, the HTTPS clone URL to the repository
	//    that contains the source and the build spec file.
	//
	//    * For source code in a Bitbucket repository, the HTTPS clone URL to the
	//    repository that contains the source and the build spec file.
	Location *string `type:"string"`

	// The type of repository that contains the source code to be built. Valid values
	// are:
	//
	//    * BITBUCKET - The source code is in a Bitbucket repository.
	//
	//    * CODECOMMIT - The source code is in an CodeCommit repository.
	//
	//    * CODEPIPELINE - The source code settings are specified in the source
	//    action of a pipeline in CodePipeline.
	//
	//    * GITHUB - The source code is in a GitHub repository.
	//
	//    * GITHUB_ENTERPRISE - The source code is in a GitHub Enterprise repository.
	//
	//    * NO_SOURCE - The project does not have input source code.
	//
	//    * S3 - The source code is in an S3 input bucket.
	Type *string `type:"string"`
}

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

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

// SetGitCloneDepth sets the GitCloneDepth field's value.
func (s *AwsCodeBuildProjectSource) SetGitCloneDepth(v int64) *AwsCodeBuildProjectSource {
	s.GitCloneDepth = &v
	return s
}

// SetInsecureSsl sets the InsecureSsl field's value.
func (s *AwsCodeBuildProjectSource) SetInsecureSsl(v bool) *AwsCodeBuildProjectSource {
	s.InsecureSsl = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *AwsCodeBuildProjectSource) SetLocation(v string) *AwsCodeBuildProjectSource {
	s.Location = &v
	return s
}

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

// Information about the VPC configuration that CodeBuild accesses.
type AwsCodeBuildProjectVpcConfig struct {
	_ struct{} `type:"structure"`

	// A list of one or more security group IDs in your VPC.
	SecurityGroupIds []*string `type:"list"`

	// A list of one or more subnet IDs in your VPC.
	Subnets []*string `type:"list"`

	// The ID of the VPC.
	VpcId *string `type:"string"`
}

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

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

// SetSecurityGroupIds sets the SecurityGroupIds field's value.
func (s *AwsCodeBuildProjectVpcConfig) SetSecurityGroupIds(v []*string) *AwsCodeBuildProjectVpcConfig {
	s.SecurityGroupIds = v
	return s
}

// SetSubnets sets the Subnets field's value.
func (s *AwsCodeBuildProjectVpcConfig) SetSubnets(v []*string) *AwsCodeBuildProjectVpcConfig {
	s.Subnets = v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *AwsCodeBuildProjectVpcConfig) SetVpcId(v string) *AwsCodeBuildProjectVpcConfig {
	s.VpcId = &v
	return s
}

// Contains the cross-origin resource sharing (CORS) configuration for the API.
// CORS is only supported for HTTP APIs.
type AwsCorsConfiguration struct {
	_ struct{} `type:"structure"`

	// Indicates whether the CORS request includes credentials.
	AllowCredentials *bool `type:"boolean"`

	// The allowed headers for CORS requests.
	AllowHeaders []*string `type:"list"`

	// The allowed methods for CORS requests.
	AllowMethods []*string `type:"list"`

	// The allowed origins for CORS requests.
	AllowOrigins []*string `type:"list"`

	// The exposed headers for CORS requests.
	ExposeHeaders []*string `type:"list"`

	// The number of seconds for which the browser caches preflight request results.
	MaxAge *int64 `type:"integer"`
}

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

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

// SetAllowCredentials sets the AllowCredentials field's value.
func (s *AwsCorsConfiguration) SetAllowCredentials(v bool) *AwsCorsConfiguration {
	s.AllowCredentials = &v
	return s
}

// SetAllowHeaders sets the AllowHeaders field's value.
func (s *AwsCorsConfiguration) SetAllowHeaders(v []*string) *AwsCorsConfiguration {
	s.AllowHeaders = v
	return s
}

// SetAllowMethods sets the AllowMethods field's value.
func (s *AwsCorsConfiguration) SetAllowMethods(v []*string) *AwsCorsConfiguration {
	s.AllowMethods = v
	return s
}

// SetAllowOrigins sets the AllowOrigins field's value.
func (s *AwsCorsConfiguration) SetAllowOrigins(v []*string) *AwsCorsConfiguration {
	s.AllowOrigins = v
	return s
}

// SetExposeHeaders sets the ExposeHeaders field's value.
func (s *AwsCorsConfiguration) SetExposeHeaders(v []*string) *AwsCorsConfiguration {
	s.ExposeHeaders = v
	return s
}

// SetMaxAge sets the MaxAge field's value.
func (s *AwsCorsConfiguration) SetMaxAge(v int64) *AwsCorsConfiguration {
	s.MaxAge = &v
	return s
}

// Provides details about an Database Migration Service (DMS) endpoint. An endpoint
// provides connection, data store type, and location information about your
// data store.
type AwsDmsEndpointDetails struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the SSL certificate that encrypts connections
	// between the DMS endpoint and the replication instance.
	CertificateArn *string `type:"string"`

	// The name of the endpoint database.
	DatabaseName *string `type:"string"`

	// The Amazon Resource Name (ARN) of the endpoint.
	EndpointArn *string `type:"string"`

	// The database endpoint identifier.
	EndpointIdentifier *string `type:"string"`

	// The type of endpoint. Valid values are source and target.
	EndpointType *string `type:"string"`

	// The type of engine for the endpoint, depending on the EndpointType value.
	EngineName *string `type:"string"`

	// A value that can be used for cross-account validation.
	ExternalId *string `type:"string"`

	// Additional attributes associated with the connection.
	ExtraConnectionAttributes *string `type:"string"`

	// An DMS key identifier that is used to encrypt the connection parameters for
	// the endpoint. If you don't specify a value for the KmsKeyId parameter, then
	// DMS uses your default encryption key. KMS creates the default encryption
	// key for your Amazon Web Services account. Your Amazon Web Services account
	// has a different default encryption key for each Amazon Web Services Region.
	KmsKeyId *string `type:"string"`

	// The port used to access the endpoint.
	Port *int64 `type:"integer"`

	// The name of the server where the endpoint database resides.
	ServerName *string `type:"string"`

	// The SSL mode used to connect to the endpoint. The default is none.
	SslMode *string `type:"string"`

	// The user name to be used to log in to the endpoint database.
	Username *string `type:"string"`
}

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

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

// SetCertificateArn sets the CertificateArn field's value.
func (s *AwsDmsEndpointDetails) SetCertificateArn(v string) *AwsDmsEndpointDetails {
	s.CertificateArn = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *AwsDmsEndpointDetails) SetDatabaseName(v string) *AwsDmsEndpointDetails {
	s.DatabaseName = &v
	return s
}

// SetEndpointArn sets the EndpointArn field's value.
func (s *AwsDmsEndpointDetails) SetEndpointArn(v string) *AwsDmsEndpointDetails {
	s.EndpointArn = &v
	return s
}

// SetEndpointIdentifier sets the EndpointIdentifier field's value.
func (s *AwsDmsEndpointDetails) SetEndpointIdentifier(v string) *AwsDmsEndpointDetails {
	s.EndpointIdentifier = &v
	return s
}

// SetEndpointType sets the EndpointType field's value.
func (s *AwsDmsEndpointDetails) SetEndpointType(v string) *AwsDmsEndpointDetails {
	s.EndpointType = &v
	return s
}

// SetEngineName sets the EngineName field's value.
func (s *AwsDmsEndpointDetails) SetEngineName(v string) *AwsDmsEndpointDetails {
	s.EngineName = &v
	return s
}

// SetExternalId sets the ExternalId field's value.
func (s *AwsDmsEndpointDetails) SetExternalId(v string) *AwsDmsEndpointDetails {
	s.ExternalId = &v
	return s
}

// SetExtraConnectionAttributes sets the ExtraConnectionAttributes field's value.
func (s *AwsDmsEndpointDetails) SetExtraConnectionAttributes(v string) *AwsDmsEndpointDetails {
	s.ExtraConnectionAttributes = &v
	return s
}

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

// SetPort sets the Port field's value.
func (s *AwsDmsEndpointDetails) SetPort(v int64) *AwsDmsEndpointDetails {
	s.Port = &v
	return s
}

// SetServerName sets the ServerName field's value.
func (s *AwsDmsEndpointDetails) SetServerName(v string) *AwsDmsEndpointDetails {
	s.ServerName = &v
	return s
}

// SetSslMode sets the SslMode field's value.
func (s *AwsDmsEndpointDetails) SetSslMode(v string) *AwsDmsEndpointDetails {
	s.SslMode = &v
	return s
}

// SetUsername sets the Username field's value.
func (s *AwsDmsEndpointDetails) SetUsername(v string) *AwsDmsEndpointDetails {
	s.Username = &v
	return s
}

// Provides details about an Database Migration Service (DMS) replication instance.
// DMS uses a replication instance to connect to your source data store, read
// the source data, and format the data for consumption by the target data store.
type AwsDmsReplicationInstanceDetails struct {
	_ struct{} `type:"structure"`

	// The amount of storage (in gigabytes) that is allocated for the replication
	// instance.
	AllocatedStorage *int64 `type:"integer"`

	// Indicates whether minor engine upgrades are applied automatically to the
	// replication instance during the maintenance window.
	AutoMinorVersionUpgrade *bool `type:"boolean"`

	// The Availability Zone that the replication instance is created in. The default
	// value is a random, system-chosen Availability Zone in the endpoint's Amazon
	// Web Services Region, such as us-east-1d.
	AvailabilityZone *string `type:"string"`

	// The engine version number of the replication instance. If an engine version
	// number is not specified when a replication instance is created, the default
	// is the latest engine version available.
	EngineVersion *string `type:"string"`

	// An KMS key identifier that is used to encrypt the data on the replication
	// instance. If you don't specify a value for the KmsKeyId parameter, DMS uses
	// your default encryption key. KMS creates the default encryption key for your
	// Amazon Web Services account. Your Amazon Web Services account has a different
	// default encryption key for each Amazon Web Services Region.
	KmsKeyId *string `type:"string"`

	// Specifies whether the replication instance is deployed across multiple Availability
	// Zones (AZs). You can't set the AvailabilityZone parameter if the MultiAZ
	// parameter is set to true.
	MultiAZ *bool `type:"boolean"`

	// The maintenance window times for the replication instance. Upgrades to the
	// replication instance are performed during this time.
	PreferredMaintenanceWindow *string `type:"string"`

	// Specifies the accessibility options for the replication instance. A value
	// of true represents an instance with a public IP address. A value of false
	// represents an instance with a private IP address. The default value is true.
	PubliclyAccessible *bool `type:"boolean"`

	// The compute and memory capacity of the replication instance as defined for
	// the specified replication instance class.
	ReplicationInstanceClass *string `type:"string"`

	// The replication instance identifier.
	ReplicationInstanceIdentifier *string `type:"string"`

	// The subnet group for the replication instance.
	ReplicationSubnetGroup *AwsDmsReplicationInstanceReplicationSubnetGroupDetails `type:"structure"`

	// The virtual private cloud (VPC) security group for the replication instance.
	VpcSecurityGroups []*AwsDmsReplicationInstanceVpcSecurityGroupsDetails `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 AwsDmsReplicationInstanceDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetAllocatedStorage sets the AllocatedStorage field's value.
func (s *AwsDmsReplicationInstanceDetails) SetAllocatedStorage(v int64) *AwsDmsReplicationInstanceDetails {
	s.AllocatedStorage = &v
	return s
}

// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
func (s *AwsDmsReplicationInstanceDetails) SetAutoMinorVersionUpgrade(v bool) *AwsDmsReplicationInstanceDetails {
	s.AutoMinorVersionUpgrade = &v
	return s
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *AwsDmsReplicationInstanceDetails) SetAvailabilityZone(v string) *AwsDmsReplicationInstanceDetails {
	s.AvailabilityZone = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *AwsDmsReplicationInstanceDetails) SetEngineVersion(v string) *AwsDmsReplicationInstanceDetails {
	s.EngineVersion = &v
	return s
}

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

// SetMultiAZ sets the MultiAZ field's value.
func (s *AwsDmsReplicationInstanceDetails) SetMultiAZ(v bool) *AwsDmsReplicationInstanceDetails {
	s.MultiAZ = &v
	return s
}

// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
func (s *AwsDmsReplicationInstanceDetails) SetPreferredMaintenanceWindow(v string) *AwsDmsReplicationInstanceDetails {
	s.PreferredMaintenanceWindow = &v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *AwsDmsReplicationInstanceDetails) SetPubliclyAccessible(v bool) *AwsDmsReplicationInstanceDetails {
	s.PubliclyAccessible = &v
	return s
}

// SetReplicationInstanceClass sets the ReplicationInstanceClass field's value.
func (s *AwsDmsReplicationInstanceDetails) SetReplicationInstanceClass(v string) *AwsDmsReplicationInstanceDetails {
	s.ReplicationInstanceClass = &v
	return s
}

// SetReplicationInstanceIdentifier sets the ReplicationInstanceIdentifier field's value.
func (s *AwsDmsReplicationInstanceDetails) SetReplicationInstanceIdentifier(v string) *AwsDmsReplicationInstanceDetails {
	s.ReplicationInstanceIdentifier = &v
	return s
}

// SetReplicationSubnetGroup sets the ReplicationSubnetGroup field's value.
func (s *AwsDmsReplicationInstanceDetails) SetReplicationSubnetGroup(v *AwsDmsReplicationInstanceReplicationSubnetGroupDetails) *AwsDmsReplicationInstanceDetails {
	s.ReplicationSubnetGroup = v
	return s
}

// SetVpcSecurityGroups sets the VpcSecurityGroups field's value.
func (s *AwsDmsReplicationInstanceDetails) SetVpcSecurityGroups(v []*AwsDmsReplicationInstanceVpcSecurityGroupsDetails) *AwsDmsReplicationInstanceDetails {
	s.VpcSecurityGroups = v
	return s
}

// Provides details about the replication subnet group.
type AwsDmsReplicationInstanceReplicationSubnetGroupDetails struct {
	_ struct{} `type:"structure"`

	// The identifier of the replication subnet group.
	ReplicationSubnetGroupIdentifier *string `type:"string"`
}

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

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

// SetReplicationSubnetGroupIdentifier sets the ReplicationSubnetGroupIdentifier field's value.
func (s *AwsDmsReplicationInstanceReplicationSubnetGroupDetails) SetReplicationSubnetGroupIdentifier(v string) *AwsDmsReplicationInstanceReplicationSubnetGroupDetails {
	s.ReplicationSubnetGroupIdentifier = &v
	return s
}

// Provides details about the virtual private cloud (VPC) security group that’s
// associated with the replication instance.
type AwsDmsReplicationInstanceVpcSecurityGroupsDetails struct {
	_ struct{} `type:"structure"`

	// The identifier of the VPC security group that’s associated with the replication
	// instance.
	VpcSecurityGroupId *string `type:"string"`
}

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

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

// SetVpcSecurityGroupId sets the VpcSecurityGroupId field's value.
func (s *AwsDmsReplicationInstanceVpcSecurityGroupsDetails) SetVpcSecurityGroupId(v string) *AwsDmsReplicationInstanceVpcSecurityGroupsDetails {
	s.VpcSecurityGroupId = &v
	return s
}

// Provides details about an Database Migration Service (DMS) replication task.
// A replication task moves a set of data from the source endpoint to the target
// endpoint.
type AwsDmsReplicationTaskDetails struct {
	_ struct{} `type:"structure"`

	// Indicates when you want a change data capture (CDC) operation to start. CCdcStartPosition
	// or CCdcStartTime specifies when you want a CDC operation to start. Only a
	// value for one of these fields is included.
	CdcStartPosition *string `type:"string"`

	// Indicates the start time for a CDC operation. CdcStartPosition or CCdcStartTime
	// specifies when you want a CDC operation to start. Only a value for one of
	// these fields is included.
	CdcStartTime *string `type:"string"`

	// Indicates when you want a CDC operation to stop. The value can be either
	// server time or commit time.
	CdcStopPosition *string `type:"string"`

	// The identifier of the replication task.
	Id *string `type:"string"`

	// The migration type.
	MigrationType *string `type:"string"`

	// The Amazon Resource Name (ARN) of a replication instance.
	ReplicationInstanceArn *string `type:"string"`

	// The user-defined replication task identifier or name.
	ReplicationTaskIdentifier *string `type:"string"`

	// The settings for the replication task.
	ReplicationTaskSettings *string `type:"string"`

	// A display name for the resource identifier at the end of the EndpointArn
	// response parameter. If you don't specify a ResourceIdentifier value, DMS
	// generates a default identifier value for the end of EndpointArn.
	ResourceIdentifier *string `type:"string"`

	// The ARN of the source endpoint.
	SourceEndpointArn *string `type:"string"`

	// The table mappings for the replication task, in JSON format.
	TableMappings *string `type:"string"`

	// The ARN of the target endpoint.
	TargetEndpointArn *string `type:"string"`

	// Supplemental information that the task requires to migrate the data for certain
	// source and target endpoints.
	TaskData *string `type:"string"`
}

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

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

// SetCdcStartPosition sets the CdcStartPosition field's value.
func (s *AwsDmsReplicationTaskDetails) SetCdcStartPosition(v string) *AwsDmsReplicationTaskDetails {
	s.CdcStartPosition = &v
	return s
}

// SetCdcStartTime sets the CdcStartTime field's value.
func (s *AwsDmsReplicationTaskDetails) SetCdcStartTime(v string) *AwsDmsReplicationTaskDetails {
	s.CdcStartTime = &v
	return s
}

// SetCdcStopPosition sets the CdcStopPosition field's value.
func (s *AwsDmsReplicationTaskDetails) SetCdcStopPosition(v string) *AwsDmsReplicationTaskDetails {
	s.CdcStopPosition = &v
	return s
}

// SetId sets the Id field's value.
func (s *AwsDmsReplicationTaskDetails) SetId(v string) *AwsDmsReplicationTaskDetails {
	s.Id = &v
	return s
}

// SetMigrationType sets the MigrationType field's value.
func (s *AwsDmsReplicationTaskDetails) SetMigrationType(v string) *AwsDmsReplicationTaskDetails {
	s.MigrationType = &v
	return s
}

// SetReplicationInstanceArn sets the ReplicationInstanceArn field's value.
func (s *AwsDmsReplicationTaskDetails) SetReplicationInstanceArn(v string) *AwsDmsReplicationTaskDetails {
	s.ReplicationInstanceArn = &v
	return s
}

// SetReplicationTaskIdentifier sets the ReplicationTaskIdentifier field's value.
func (s *AwsDmsReplicationTaskDetails) SetReplicationTaskIdentifier(v string) *AwsDmsReplicationTaskDetails {
	s.ReplicationTaskIdentifier = &v
	return s
}

// SetReplicationTaskSettings sets the ReplicationTaskSettings field's value.
func (s *AwsDmsReplicationTaskDetails) SetReplicationTaskSettings(v string) *AwsDmsReplicationTaskDetails {
	s.ReplicationTaskSettings = &v
	return s
}

// SetResourceIdentifier sets the ResourceIdentifier field's value.
func (s *AwsDmsReplicationTaskDetails) SetResourceIdentifier(v string) *AwsDmsReplicationTaskDetails {
	s.ResourceIdentifier = &v
	return s
}

// SetSourceEndpointArn sets the SourceEndpointArn field's value.
func (s *AwsDmsReplicationTaskDetails) SetSourceEndpointArn(v string) *AwsDmsReplicationTaskDetails {
	s.SourceEndpointArn = &v
	return s
}

// SetTableMappings sets the TableMappings field's value.
func (s *AwsDmsReplicationTaskDetails) SetTableMappings(v string) *AwsDmsReplicationTaskDetails {
	s.TableMappings = &v
	return s
}

// SetTargetEndpointArn sets the TargetEndpointArn field's value.
func (s *AwsDmsReplicationTaskDetails) SetTargetEndpointArn(v string) *AwsDmsReplicationTaskDetails {
	s.TargetEndpointArn = &v
	return s
}

// SetTaskData sets the TaskData field's value.
func (s *AwsDmsReplicationTaskDetails) SetTaskData(v string) *AwsDmsReplicationTaskDetails {
	s.TaskData = &v
	return s
}

// Contains a definition of an attribute for the table.
type AwsDynamoDbTableAttributeDefinition struct {
	_ struct{} `type:"structure"`

	// The name of the attribute.
	AttributeName *string `type:"string"`

	// The type of the attribute.
	AttributeType *string `type:"string"`
}

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

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

// SetAttributeName sets the AttributeName field's value.
func (s *AwsDynamoDbTableAttributeDefinition) SetAttributeName(v string) *AwsDynamoDbTableAttributeDefinition {
	s.AttributeName = &v
	return s
}

// SetAttributeType sets the AttributeType field's value.
func (s *AwsDynamoDbTableAttributeDefinition) SetAttributeType(v string) *AwsDynamoDbTableAttributeDefinition {
	s.AttributeType = &v
	return s
}

// Provides information about the billing for read/write capacity on the table.
type AwsDynamoDbTableBillingModeSummary struct {
	_ struct{} `type:"structure"`

	// The method used to charge for read and write throughput and to manage capacity.
	BillingMode *string `type:"string"`

	// If the billing mode is PAY_PER_REQUEST, indicates when the billing mode was
	// set to that value.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	LastUpdateToPayPerRequestDateTime *string `type:"string"`
}

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

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

// SetBillingMode sets the BillingMode field's value.
func (s *AwsDynamoDbTableBillingModeSummary) SetBillingMode(v string) *AwsDynamoDbTableBillingModeSummary {
	s.BillingMode = &v
	return s
}

// SetLastUpdateToPayPerRequestDateTime sets the LastUpdateToPayPerRequestDateTime field's value.
func (s *AwsDynamoDbTableBillingModeSummary) SetLastUpdateToPayPerRequestDateTime(v string) *AwsDynamoDbTableBillingModeSummary {
	s.LastUpdateToPayPerRequestDateTime = &v
	return s
}

// Provides details about a DynamoDB table.
type AwsDynamoDbTableDetails struct {
	_ struct{} `type:"structure"`

	// A list of attribute definitions for the table.
	AttributeDefinitions []*AwsDynamoDbTableAttributeDefinition `type:"list"`

	// Information about the billing for read/write capacity on the table.
	BillingModeSummary *AwsDynamoDbTableBillingModeSummary `type:"structure"`

	// Indicates when the table was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreationDateTime *string `type:"string"`

	// Indicates whether deletion protection is to be enabled (true) or disabled
	// (false) on the table.
	DeletionProtectionEnabled *bool `type:"boolean"`

	// List of global secondary indexes for the table.
	GlobalSecondaryIndexes []*AwsDynamoDbTableGlobalSecondaryIndex `type:"list"`

	// The version of global tables being used.
	GlobalTableVersion *string `type:"string"`

	// The number of items in the table.
	ItemCount *int64 `type:"integer"`

	// The primary key structure for the table.
	KeySchema []*AwsDynamoDbTableKeySchema `type:"list"`

	// The ARN of the latest stream for the table.
	LatestStreamArn *string `type:"string"`

	// The label of the latest stream. The label is not a unique identifier.
	LatestStreamLabel *string `type:"string"`

	// The list of local secondary indexes for the table.
	LocalSecondaryIndexes []*AwsDynamoDbTableLocalSecondaryIndex `type:"list"`

	// Information about the provisioned throughput for the table.
	ProvisionedThroughput *AwsDynamoDbTableProvisionedThroughput `type:"structure"`

	// The list of replicas of this table.
	Replicas []*AwsDynamoDbTableReplica `type:"list"`

	// Information about the restore for the table.
	RestoreSummary *AwsDynamoDbTableRestoreSummary `type:"structure"`

	// Information about the server-side encryption for the table.
	SseDescription *AwsDynamoDbTableSseDescription `type:"structure"`

	// The current DynamoDB Streams configuration for the table.
	StreamSpecification *AwsDynamoDbTableStreamSpecification `type:"structure"`

	// The identifier of the table.
	TableId *string `type:"string"`

	// The name of the table.
	TableName *string `type:"string"`

	// The total size of the table in bytes.
	TableSizeBytes *int64 `type:"long"`

	// The current status of the table. Valid values are as follows:
	//
	//    * ACTIVE
	//
	//    * ARCHIVED
	//
	//    * ARCHIVING
	//
	//    * CREATING
	//
	//    * DELETING
	//
	//    * INACCESSIBLE_ENCRYPTION_CREDENTIALS
	//
	//    * UPDATING
	TableStatus *string `type:"string"`
}

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

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

// SetAttributeDefinitions sets the AttributeDefinitions field's value.
func (s *AwsDynamoDbTableDetails) SetAttributeDefinitions(v []*AwsDynamoDbTableAttributeDefinition) *AwsDynamoDbTableDetails {
	s.AttributeDefinitions = v
	return s
}

// SetBillingModeSummary sets the BillingModeSummary field's value.
func (s *AwsDynamoDbTableDetails) SetBillingModeSummary(v *AwsDynamoDbTableBillingModeSummary) *AwsDynamoDbTableDetails {
	s.BillingModeSummary = v
	return s
}

// SetCreationDateTime sets the CreationDateTime field's value.
func (s *AwsDynamoDbTableDetails) SetCreationDateTime(v string) *AwsDynamoDbTableDetails {
	s.CreationDateTime = &v
	return s
}

// SetDeletionProtectionEnabled sets the DeletionProtectionEnabled field's value.
func (s *AwsDynamoDbTableDetails) SetDeletionProtectionEnabled(v bool) *AwsDynamoDbTableDetails {
	s.DeletionProtectionEnabled = &v
	return s
}

// SetGlobalSecondaryIndexes sets the GlobalSecondaryIndexes field's value.
func (s *AwsDynamoDbTableDetails) SetGlobalSecondaryIndexes(v []*AwsDynamoDbTableGlobalSecondaryIndex) *AwsDynamoDbTableDetails {
	s.GlobalSecondaryIndexes = v
	return s
}

// SetGlobalTableVersion sets the GlobalTableVersion field's value.
func (s *AwsDynamoDbTableDetails) SetGlobalTableVersion(v string) *AwsDynamoDbTableDetails {
	s.GlobalTableVersion = &v
	return s
}

// SetItemCount sets the ItemCount field's value.
func (s *AwsDynamoDbTableDetails) SetItemCount(v int64) *AwsDynamoDbTableDetails {
	s.ItemCount = &v
	return s
}

// SetKeySchema sets the KeySchema field's value.
func (s *AwsDynamoDbTableDetails) SetKeySchema(v []*AwsDynamoDbTableKeySchema) *AwsDynamoDbTableDetails {
	s.KeySchema = v
	return s
}

// SetLatestStreamArn sets the LatestStreamArn field's value.
func (s *AwsDynamoDbTableDetails) SetLatestStreamArn(v string) *AwsDynamoDbTableDetails {
	s.LatestStreamArn = &v
	return s
}

// SetLatestStreamLabel sets the LatestStreamLabel field's value.
func (s *AwsDynamoDbTableDetails) SetLatestStreamLabel(v string) *AwsDynamoDbTableDetails {
	s.LatestStreamLabel = &v
	return s
}

// SetLocalSecondaryIndexes sets the LocalSecondaryIndexes field's value.
func (s *AwsDynamoDbTableDetails) SetLocalSecondaryIndexes(v []*AwsDynamoDbTableLocalSecondaryIndex) *AwsDynamoDbTableDetails {
	s.LocalSecondaryIndexes = v
	return s
}

// SetProvisionedThroughput sets the ProvisionedThroughput field's value.
func (s *AwsDynamoDbTableDetails) SetProvisionedThroughput(v *AwsDynamoDbTableProvisionedThroughput) *AwsDynamoDbTableDetails {
	s.ProvisionedThroughput = v
	return s
}

// SetReplicas sets the Replicas field's value.
func (s *AwsDynamoDbTableDetails) SetReplicas(v []*AwsDynamoDbTableReplica) *AwsDynamoDbTableDetails {
	s.Replicas = v
	return s
}

// SetRestoreSummary sets the RestoreSummary field's value.
func (s *AwsDynamoDbTableDetails) SetRestoreSummary(v *AwsDynamoDbTableRestoreSummary) *AwsDynamoDbTableDetails {
	s.RestoreSummary = v
	return s
}

// SetSseDescription sets the SseDescription field's value.
func (s *AwsDynamoDbTableDetails) SetSseDescription(v *AwsDynamoDbTableSseDescription) *AwsDynamoDbTableDetails {
	s.SseDescription = v
	return s
}

// SetStreamSpecification sets the StreamSpecification field's value.
func (s *AwsDynamoDbTableDetails) SetStreamSpecification(v *AwsDynamoDbTableStreamSpecification) *AwsDynamoDbTableDetails {
	s.StreamSpecification = v
	return s
}

// SetTableId sets the TableId field's value.
func (s *AwsDynamoDbTableDetails) SetTableId(v string) *AwsDynamoDbTableDetails {
	s.TableId = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *AwsDynamoDbTableDetails) SetTableName(v string) *AwsDynamoDbTableDetails {
	s.TableName = &v
	return s
}

// SetTableSizeBytes sets the TableSizeBytes field's value.
func (s *AwsDynamoDbTableDetails) SetTableSizeBytes(v int64) *AwsDynamoDbTableDetails {
	s.TableSizeBytes = &v
	return s
}

// SetTableStatus sets the TableStatus field's value.
func (s *AwsDynamoDbTableDetails) SetTableStatus(v string) *AwsDynamoDbTableDetails {
	s.TableStatus = &v
	return s
}

// Information abut a global secondary index for the table.
type AwsDynamoDbTableGlobalSecondaryIndex struct {
	_ struct{} `type:"structure"`

	// Whether the index is currently backfilling.
	Backfilling *bool `type:"boolean"`

	// The ARN of the index.
	IndexArn *string `type:"string"`

	// The name of the index.
	IndexName *string `type:"string"`

	// The total size in bytes of the index.
	IndexSizeBytes *int64 `type:"long"`

	// The current status of the index.
	//
	//    * ACTIVE
	//
	//    * CREATING
	//
	//    * DELETING
	//
	//    * UPDATING
	IndexStatus *string `type:"string"`

	// The number of items in the index.
	ItemCount *int64 `type:"integer"`

	// The key schema for the index.
	KeySchema []*AwsDynamoDbTableKeySchema `type:"list"`

	// Attributes that are copied from the table into an index.
	Projection *AwsDynamoDbTableProjection `type:"structure"`

	// Information about the provisioned throughput settings for the indexes.
	ProvisionedThroughput *AwsDynamoDbTableProvisionedThroughput `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 AwsDynamoDbTableGlobalSecondaryIndex) String() string {
	return awsutil.Prettify(s)
}

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

// SetBackfilling sets the Backfilling field's value.
func (s *AwsDynamoDbTableGlobalSecondaryIndex) SetBackfilling(v bool) *AwsDynamoDbTableGlobalSecondaryIndex {
	s.Backfilling = &v
	return s
}

// SetIndexArn sets the IndexArn field's value.
func (s *AwsDynamoDbTableGlobalSecondaryIndex) SetIndexArn(v string) *AwsDynamoDbTableGlobalSecondaryIndex {
	s.IndexArn = &v
	return s
}

// SetIndexName sets the IndexName field's value.
func (s *AwsDynamoDbTableGlobalSecondaryIndex) SetIndexName(v string) *AwsDynamoDbTableGlobalSecondaryIndex {
	s.IndexName = &v
	return s
}

// SetIndexSizeBytes sets the IndexSizeBytes field's value.
func (s *AwsDynamoDbTableGlobalSecondaryIndex) SetIndexSizeBytes(v int64) *AwsDynamoDbTableGlobalSecondaryIndex {
	s.IndexSizeBytes = &v
	return s
}

// SetIndexStatus sets the IndexStatus field's value.
func (s *AwsDynamoDbTableGlobalSecondaryIndex) SetIndexStatus(v string) *AwsDynamoDbTableGlobalSecondaryIndex {
	s.IndexStatus = &v
	return s
}

// SetItemCount sets the ItemCount field's value.
func (s *AwsDynamoDbTableGlobalSecondaryIndex) SetItemCount(v int64) *AwsDynamoDbTableGlobalSecondaryIndex {
	s.ItemCount = &v
	return s
}

// SetKeySchema sets the KeySchema field's value.
func (s *AwsDynamoDbTableGlobalSecondaryIndex) SetKeySchema(v []*AwsDynamoDbTableKeySchema) *AwsDynamoDbTableGlobalSecondaryIndex {
	s.KeySchema = v
	return s
}

// SetProjection sets the Projection field's value.
func (s *AwsDynamoDbTableGlobalSecondaryIndex) SetProjection(v *AwsDynamoDbTableProjection) *AwsDynamoDbTableGlobalSecondaryIndex {
	s.Projection = v
	return s
}

// SetProvisionedThroughput sets the ProvisionedThroughput field's value.
func (s *AwsDynamoDbTableGlobalSecondaryIndex) SetProvisionedThroughput(v *AwsDynamoDbTableProvisionedThroughput) *AwsDynamoDbTableGlobalSecondaryIndex {
	s.ProvisionedThroughput = v
	return s
}

// A component of the key schema for the DynamoDB table, a global secondary
// index, or a local secondary index.
type AwsDynamoDbTableKeySchema struct {
	_ struct{} `type:"structure"`

	// The name of the key schema attribute.
	AttributeName *string `type:"string"`

	// The type of key used for the key schema attribute. Valid values are HASH
	// or RANGE.
	KeyType *string `type:"string"`
}

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

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

// SetAttributeName sets the AttributeName field's value.
func (s *AwsDynamoDbTableKeySchema) SetAttributeName(v string) *AwsDynamoDbTableKeySchema {
	s.AttributeName = &v
	return s
}

// SetKeyType sets the KeyType field's value.
func (s *AwsDynamoDbTableKeySchema) SetKeyType(v string) *AwsDynamoDbTableKeySchema {
	s.KeyType = &v
	return s
}

// Information about a local secondary index for a DynamoDB table.
type AwsDynamoDbTableLocalSecondaryIndex struct {
	_ struct{} `type:"structure"`

	// The ARN of the index.
	IndexArn *string `type:"string"`

	// The name of the index.
	IndexName *string `type:"string"`

	// The complete key schema for the index.
	KeySchema []*AwsDynamoDbTableKeySchema `type:"list"`

	// Attributes that are copied from the table into the index. These are in addition
	// to the primary key attributes and index key attributes, which are automatically
	// projected.
	Projection *AwsDynamoDbTableProjection `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 AwsDynamoDbTableLocalSecondaryIndex) String() string {
	return awsutil.Prettify(s)
}

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

// SetIndexArn sets the IndexArn field's value.
func (s *AwsDynamoDbTableLocalSecondaryIndex) SetIndexArn(v string) *AwsDynamoDbTableLocalSecondaryIndex {
	s.IndexArn = &v
	return s
}

// SetIndexName sets the IndexName field's value.
func (s *AwsDynamoDbTableLocalSecondaryIndex) SetIndexName(v string) *AwsDynamoDbTableLocalSecondaryIndex {
	s.IndexName = &v
	return s
}

// SetKeySchema sets the KeySchema field's value.
func (s *AwsDynamoDbTableLocalSecondaryIndex) SetKeySchema(v []*AwsDynamoDbTableKeySchema) *AwsDynamoDbTableLocalSecondaryIndex {
	s.KeySchema = v
	return s
}

// SetProjection sets the Projection field's value.
func (s *AwsDynamoDbTableLocalSecondaryIndex) SetProjection(v *AwsDynamoDbTableProjection) *AwsDynamoDbTableLocalSecondaryIndex {
	s.Projection = v
	return s
}

// For global and local secondary indexes, identifies the attributes that are
// copied from the table into the index.
type AwsDynamoDbTableProjection struct {
	_ struct{} `type:"structure"`

	// The nonkey attributes that are projected into the index. For each attribute,
	// provide the attribute name.
	NonKeyAttributes []*string `type:"list"`

	// The types of attributes that are projected into the index. Valid values are
	// as follows:
	//
	//    * ALL
	//
	//    * INCLUDE
	//
	//    * KEYS_ONLY
	ProjectionType *string `type:"string"`
}

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

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

// SetNonKeyAttributes sets the NonKeyAttributes field's value.
func (s *AwsDynamoDbTableProjection) SetNonKeyAttributes(v []*string) *AwsDynamoDbTableProjection {
	s.NonKeyAttributes = v
	return s
}

// SetProjectionType sets the ProjectionType field's value.
func (s *AwsDynamoDbTableProjection) SetProjectionType(v string) *AwsDynamoDbTableProjection {
	s.ProjectionType = &v
	return s
}

// Information about the provisioned throughput for the table or for a global
// secondary index.
type AwsDynamoDbTableProvisionedThroughput struct {
	_ struct{} `type:"structure"`

	// Indicates when the provisioned throughput was last decreased.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	LastDecreaseDateTime *string `type:"string"`

	// Indicates when the provisioned throughput was last increased.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	LastIncreaseDateTime *string `type:"string"`

	// The number of times during the current UTC calendar day that the provisioned
	// throughput was decreased.
	NumberOfDecreasesToday *int64 `type:"integer"`

	// The maximum number of strongly consistent reads consumed per second before
	// DynamoDB returns a ThrottlingException.
	ReadCapacityUnits *int64 `type:"integer"`

	// The maximum number of writes consumed per second before DynamoDB returns
	// a ThrottlingException.
	WriteCapacityUnits *int64 `type:"integer"`
}

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

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

// SetLastDecreaseDateTime sets the LastDecreaseDateTime field's value.
func (s *AwsDynamoDbTableProvisionedThroughput) SetLastDecreaseDateTime(v string) *AwsDynamoDbTableProvisionedThroughput {
	s.LastDecreaseDateTime = &v
	return s
}

// SetLastIncreaseDateTime sets the LastIncreaseDateTime field's value.
func (s *AwsDynamoDbTableProvisionedThroughput) SetLastIncreaseDateTime(v string) *AwsDynamoDbTableProvisionedThroughput {
	s.LastIncreaseDateTime = &v
	return s
}

// SetNumberOfDecreasesToday sets the NumberOfDecreasesToday field's value.
func (s *AwsDynamoDbTableProvisionedThroughput) SetNumberOfDecreasesToday(v int64) *AwsDynamoDbTableProvisionedThroughput {
	s.NumberOfDecreasesToday = &v
	return s
}

// SetReadCapacityUnits sets the ReadCapacityUnits field's value.
func (s *AwsDynamoDbTableProvisionedThroughput) SetReadCapacityUnits(v int64) *AwsDynamoDbTableProvisionedThroughput {
	s.ReadCapacityUnits = &v
	return s
}

// SetWriteCapacityUnits sets the WriteCapacityUnits field's value.
func (s *AwsDynamoDbTableProvisionedThroughput) SetWriteCapacityUnits(v int64) *AwsDynamoDbTableProvisionedThroughput {
	s.WriteCapacityUnits = &v
	return s
}

// Replica-specific configuration for the provisioned throughput.
type AwsDynamoDbTableProvisionedThroughputOverride struct {
	_ struct{} `type:"structure"`

	// The read capacity units for the replica.
	ReadCapacityUnits *int64 `type:"integer"`
}

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

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

// SetReadCapacityUnits sets the ReadCapacityUnits field's value.
func (s *AwsDynamoDbTableProvisionedThroughputOverride) SetReadCapacityUnits(v int64) *AwsDynamoDbTableProvisionedThroughputOverride {
	s.ReadCapacityUnits = &v
	return s
}

// Information about a replica of a DynamoDB table.
type AwsDynamoDbTableReplica struct {
	_ struct{} `type:"structure"`

	// List of global secondary indexes for the replica.
	GlobalSecondaryIndexes []*AwsDynamoDbTableReplicaGlobalSecondaryIndex `type:"list"`

	// The identifier of the KMS key that will be used for KMS encryption for the
	// replica.
	KmsMasterKeyId *string `type:"string"`

	// Replica-specific configuration for the provisioned throughput.
	ProvisionedThroughputOverride *AwsDynamoDbTableProvisionedThroughputOverride `type:"structure"`

	// The name of the Region where the replica is located.
	RegionName *string `type:"string"`

	// The current status of the replica. Valid values are as follows:
	//
	//    * ACTIVE
	//
	//    * CREATING
	//
	//    * CREATION_FAILED
	//
	//    * DELETING
	//
	//    * UPDATING
	ReplicaStatus *string `type:"string"`

	// Detailed information about the replica status.
	ReplicaStatusDescription *string `type:"string"`
}

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

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

// SetGlobalSecondaryIndexes sets the GlobalSecondaryIndexes field's value.
func (s *AwsDynamoDbTableReplica) SetGlobalSecondaryIndexes(v []*AwsDynamoDbTableReplicaGlobalSecondaryIndex) *AwsDynamoDbTableReplica {
	s.GlobalSecondaryIndexes = v
	return s
}

// SetKmsMasterKeyId sets the KmsMasterKeyId field's value.
func (s *AwsDynamoDbTableReplica) SetKmsMasterKeyId(v string) *AwsDynamoDbTableReplica {
	s.KmsMasterKeyId = &v
	return s
}

// SetProvisionedThroughputOverride sets the ProvisionedThroughputOverride field's value.
func (s *AwsDynamoDbTableReplica) SetProvisionedThroughputOverride(v *AwsDynamoDbTableProvisionedThroughputOverride) *AwsDynamoDbTableReplica {
	s.ProvisionedThroughputOverride = v
	return s
}

// SetRegionName sets the RegionName field's value.
func (s *AwsDynamoDbTableReplica) SetRegionName(v string) *AwsDynamoDbTableReplica {
	s.RegionName = &v
	return s
}

// SetReplicaStatus sets the ReplicaStatus field's value.
func (s *AwsDynamoDbTableReplica) SetReplicaStatus(v string) *AwsDynamoDbTableReplica {
	s.ReplicaStatus = &v
	return s
}

// SetReplicaStatusDescription sets the ReplicaStatusDescription field's value.
func (s *AwsDynamoDbTableReplica) SetReplicaStatusDescription(v string) *AwsDynamoDbTableReplica {
	s.ReplicaStatusDescription = &v
	return s
}

// Information about a global secondary index for a DynamoDB table replica.
type AwsDynamoDbTableReplicaGlobalSecondaryIndex struct {
	_ struct{} `type:"structure"`

	// The name of the index.
	IndexName *string `type:"string"`

	// Replica-specific configuration for the provisioned throughput for the index.
	ProvisionedThroughputOverride *AwsDynamoDbTableProvisionedThroughputOverride `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 AwsDynamoDbTableReplicaGlobalSecondaryIndex) String() string {
	return awsutil.Prettify(s)
}

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

// SetIndexName sets the IndexName field's value.
func (s *AwsDynamoDbTableReplicaGlobalSecondaryIndex) SetIndexName(v string) *AwsDynamoDbTableReplicaGlobalSecondaryIndex {
	s.IndexName = &v
	return s
}

// SetProvisionedThroughputOverride sets the ProvisionedThroughputOverride field's value.
func (s *AwsDynamoDbTableReplicaGlobalSecondaryIndex) SetProvisionedThroughputOverride(v *AwsDynamoDbTableProvisionedThroughputOverride) *AwsDynamoDbTableReplicaGlobalSecondaryIndex {
	s.ProvisionedThroughputOverride = v
	return s
}

// Information about the restore for the table.
type AwsDynamoDbTableRestoreSummary struct {
	_ struct{} `type:"structure"`

	// Indicates the point in time that the table was restored to.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	RestoreDateTime *string `type:"string"`

	// Whether a restore is currently in progress.
	RestoreInProgress *bool `type:"boolean"`

	// The ARN of the source backup from which the table was restored.
	SourceBackupArn *string `type:"string"`

	// The ARN of the source table for the backup.
	SourceTableArn *string `type:"string"`
}

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

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

// SetRestoreDateTime sets the RestoreDateTime field's value.
func (s *AwsDynamoDbTableRestoreSummary) SetRestoreDateTime(v string) *AwsDynamoDbTableRestoreSummary {
	s.RestoreDateTime = &v
	return s
}

// SetRestoreInProgress sets the RestoreInProgress field's value.
func (s *AwsDynamoDbTableRestoreSummary) SetRestoreInProgress(v bool) *AwsDynamoDbTableRestoreSummary {
	s.RestoreInProgress = &v
	return s
}

// SetSourceBackupArn sets the SourceBackupArn field's value.
func (s *AwsDynamoDbTableRestoreSummary) SetSourceBackupArn(v string) *AwsDynamoDbTableRestoreSummary {
	s.SourceBackupArn = &v
	return s
}

// SetSourceTableArn sets the SourceTableArn field's value.
func (s *AwsDynamoDbTableRestoreSummary) SetSourceTableArn(v string) *AwsDynamoDbTableRestoreSummary {
	s.SourceTableArn = &v
	return s
}

// Information about the server-side encryption for the table.
type AwsDynamoDbTableSseDescription struct {
	_ struct{} `type:"structure"`

	// If the key is inaccessible, the date and time when DynamoDB detected that
	// the key was inaccessible.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	InaccessibleEncryptionDateTime *string `type:"string"`

	// The ARN of the KMS key that is used for the KMS encryption.
	KmsMasterKeyArn *string `type:"string"`

	// The type of server-side encryption.
	SseType *string `type:"string"`

	// The status of the server-side encryption.
	Status *string `type:"string"`
}

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

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

// SetInaccessibleEncryptionDateTime sets the InaccessibleEncryptionDateTime field's value.
func (s *AwsDynamoDbTableSseDescription) SetInaccessibleEncryptionDateTime(v string) *AwsDynamoDbTableSseDescription {
	s.InaccessibleEncryptionDateTime = &v
	return s
}

// SetKmsMasterKeyArn sets the KmsMasterKeyArn field's value.
func (s *AwsDynamoDbTableSseDescription) SetKmsMasterKeyArn(v string) *AwsDynamoDbTableSseDescription {
	s.KmsMasterKeyArn = &v
	return s
}

// SetSseType sets the SseType field's value.
func (s *AwsDynamoDbTableSseDescription) SetSseType(v string) *AwsDynamoDbTableSseDescription {
	s.SseType = &v
	return s
}

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

// The current DynamoDB Streams configuration for the table.
type AwsDynamoDbTableStreamSpecification struct {
	_ struct{} `type:"structure"`

	// Indicates whether DynamoDB Streams is enabled on the table.
	StreamEnabled *bool `type:"boolean"`

	// Determines the information that is written to the table.
	StreamViewType *string `type:"string"`
}

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

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

// SetStreamEnabled sets the StreamEnabled field's value.
func (s *AwsDynamoDbTableStreamSpecification) SetStreamEnabled(v bool) *AwsDynamoDbTableStreamSpecification {
	s.StreamEnabled = &v
	return s
}

// SetStreamViewType sets the StreamViewType field's value.
func (s *AwsDynamoDbTableStreamSpecification) SetStreamViewType(v string) *AwsDynamoDbTableStreamSpecification {
	s.StreamViewType = &v
	return s
}

// Provides details about an Active Directory that’s used to authenticate
// an Client VPN endpoint.
type AwsEc2ClientVpnEndpointAuthenticationOptionsActiveDirectoryDetails struct {
	_ struct{} `type:"structure"`

	// The ID of the Active Directory used for authentication.
	DirectoryId *string `type:"string"`
}

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

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

// SetDirectoryId sets the DirectoryId field's value.
func (s *AwsEc2ClientVpnEndpointAuthenticationOptionsActiveDirectoryDetails) SetDirectoryId(v string) *AwsEc2ClientVpnEndpointAuthenticationOptionsActiveDirectoryDetails {
	s.DirectoryId = &v
	return s
}

// Information about the authentication method used by the Client VPN endpoint.
type AwsEc2ClientVpnEndpointAuthenticationOptionsDetails struct {
	_ struct{} `type:"structure"`

	// Information about the Active Directory, if applicable. With Active Directory
	// authentication, clients are authenticated against existing Active Directory
	// groups.
	ActiveDirectory *AwsEc2ClientVpnEndpointAuthenticationOptionsActiveDirectoryDetails `type:"structure"`

	// Information about the IAM SAML identity provider, if applicable.
	FederatedAuthentication *AwsEc2ClientVpnEndpointAuthenticationOptionsFederatedAuthenticationDetails `type:"structure"`

	// Information about the authentication certificates, if applicable.
	MutualAuthentication *AwsEc2ClientVpnEndpointAuthenticationOptionsMutualAuthenticationDetails `type:"structure"`

	// The authentication type used.
	Type *string `type:"string"`
}

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

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

// SetActiveDirectory sets the ActiveDirectory field's value.
func (s *AwsEc2ClientVpnEndpointAuthenticationOptionsDetails) SetActiveDirectory(v *AwsEc2ClientVpnEndpointAuthenticationOptionsActiveDirectoryDetails) *AwsEc2ClientVpnEndpointAuthenticationOptionsDetails {
	s.ActiveDirectory = v
	return s
}

// SetFederatedAuthentication sets the FederatedAuthentication field's value.
func (s *AwsEc2ClientVpnEndpointAuthenticationOptionsDetails) SetFederatedAuthentication(v *AwsEc2ClientVpnEndpointAuthenticationOptionsFederatedAuthenticationDetails) *AwsEc2ClientVpnEndpointAuthenticationOptionsDetails {
	s.FederatedAuthentication = v
	return s
}

// SetMutualAuthentication sets the MutualAuthentication field's value.
func (s *AwsEc2ClientVpnEndpointAuthenticationOptionsDetails) SetMutualAuthentication(v *AwsEc2ClientVpnEndpointAuthenticationOptionsMutualAuthenticationDetails) *AwsEc2ClientVpnEndpointAuthenticationOptionsDetails {
	s.MutualAuthentication = v
	return s
}

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

// Describes the IAM SAML identity providers used for federated authentication.
type AwsEc2ClientVpnEndpointAuthenticationOptionsFederatedAuthenticationDetails struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the IAM SAML identity provider.
	SamlProviderArn *string `type:"string"`

	// The Amazon Resource Name (ARN) of the IAM SAML identity provider for the
	// self-service portal.
	SelfServiceSamlProviderArn *string `type:"string"`
}

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

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

// SetSamlProviderArn sets the SamlProviderArn field's value.
func (s *AwsEc2ClientVpnEndpointAuthenticationOptionsFederatedAuthenticationDetails) SetSamlProviderArn(v string) *AwsEc2ClientVpnEndpointAuthenticationOptionsFederatedAuthenticationDetails {
	s.SamlProviderArn = &v
	return s
}

// SetSelfServiceSamlProviderArn sets the SelfServiceSamlProviderArn field's value.
func (s *AwsEc2ClientVpnEndpointAuthenticationOptionsFederatedAuthenticationDetails) SetSelfServiceSamlProviderArn(v string) *AwsEc2ClientVpnEndpointAuthenticationOptionsFederatedAuthenticationDetails {
	s.SelfServiceSamlProviderArn = &v
	return s
}

// Information about the client certificate used for authentication.
type AwsEc2ClientVpnEndpointAuthenticationOptionsMutualAuthenticationDetails struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the client certificate.
	ClientRootCertificateChain *string `type:"string"`
}

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

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

// SetClientRootCertificateChain sets the ClientRootCertificateChain field's value.
func (s *AwsEc2ClientVpnEndpointAuthenticationOptionsMutualAuthenticationDetails) SetClientRootCertificateChain(v string) *AwsEc2ClientVpnEndpointAuthenticationOptionsMutualAuthenticationDetails {
	s.ClientRootCertificateChain = &v
	return s
}

// The options for managing connection authorization for new client connections.
type AwsEc2ClientVpnEndpointClientConnectOptionsDetails struct {
	_ struct{} `type:"structure"`

	// Indicates whether client connect options are enabled.
	Enabled *bool `type:"boolean"`

	// The Amazon Resource Name (ARN) of the Lambda function used for connection
	// authorization.
	LambdaFunctionArn *string `type:"string"`

	// The status of any updates to the client connect options.
	Status *AwsEc2ClientVpnEndpointClientConnectOptionsStatusDetails `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 AwsEc2ClientVpnEndpointClientConnectOptionsDetails) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetLambdaFunctionArn sets the LambdaFunctionArn field's value.
func (s *AwsEc2ClientVpnEndpointClientConnectOptionsDetails) SetLambdaFunctionArn(v string) *AwsEc2ClientVpnEndpointClientConnectOptionsDetails {
	s.LambdaFunctionArn = &v
	return s
}

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

// Describes the status of the Client VPN endpoint attribute.
type AwsEc2ClientVpnEndpointClientConnectOptionsStatusDetails struct {
	_ struct{} `type:"structure"`

	// The status code.
	Code *string `type:"string"`

	// The status message.
	Message *string `type:"string"`
}

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

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

// SetCode sets the Code field's value.
func (s *AwsEc2ClientVpnEndpointClientConnectOptionsStatusDetails) SetCode(v string) *AwsEc2ClientVpnEndpointClientConnectOptionsStatusDetails {
	s.Code = &v
	return s
}

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

// Options for enabling a customizable text banner that will be displayed on
// Amazon Web Services provided clients when a VPN session is established.
type AwsEc2ClientVpnEndpointClientLoginBannerOptionsDetails struct {
	_ struct{} `type:"structure"`

	// Customizable text that will be displayed in a banner on Amazon Web Services
	// provided clients when a VPN session is established.
	BannerText *string `type:"string"`

	// Current state of text banner feature.
	Enabled *bool `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 AwsEc2ClientVpnEndpointClientLoginBannerOptionsDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetBannerText sets the BannerText field's value.
func (s *AwsEc2ClientVpnEndpointClientLoginBannerOptionsDetails) SetBannerText(v string) *AwsEc2ClientVpnEndpointClientLoginBannerOptionsDetails {
	s.BannerText = &v
	return s
}

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

// Information about the client connection logging options for the Client VPN
// endpoint.
type AwsEc2ClientVpnEndpointConnectionLogOptionsDetails struct {
	_ struct{} `type:"structure"`

	// The name of the Amazon CloudWatch Logs log group to which connection logging
	// data is published.
	CloudwatchLogGroup *string `type:"string"`

	// The name of the Amazon CloudWatch Logs log stream to which connection logging
	// data is published.
	CloudwatchLogStream *string `type:"string"`

	// Indicates whether client connection logging is enabled for the Client VPN
	// endpoint.
	Enabled *bool `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 AwsEc2ClientVpnEndpointConnectionLogOptionsDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetCloudwatchLogGroup sets the CloudwatchLogGroup field's value.
func (s *AwsEc2ClientVpnEndpointConnectionLogOptionsDetails) SetCloudwatchLogGroup(v string) *AwsEc2ClientVpnEndpointConnectionLogOptionsDetails {
	s.CloudwatchLogGroup = &v
	return s
}

// SetCloudwatchLogStream sets the CloudwatchLogStream field's value.
func (s *AwsEc2ClientVpnEndpointConnectionLogOptionsDetails) SetCloudwatchLogStream(v string) *AwsEc2ClientVpnEndpointConnectionLogOptionsDetails {
	s.CloudwatchLogStream = &v
	return s
}

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

// Describes an Client VPN endpoint. A Client VPN endpoint is the resource that
// you create and configure to enable and manage client VPN sessions. It's the
// termination point for all client VPN sessions.
type AwsEc2ClientVpnEndpointDetails struct {
	_ struct{} `type:"structure"`

	// Information about the authentication method used by the Client VPN endpoint.
	AuthenticationOptions []*AwsEc2ClientVpnEndpointAuthenticationOptionsDetails `type:"list"`

	// The IPv4 address range, in CIDR notation, from which client IP addresses
	// are assigned.
	ClientCidrBlock *string `type:"string"`

	// The options for managing connection authorization for new client connections.
	ClientConnectOptions *AwsEc2ClientVpnEndpointClientConnectOptionsDetails `type:"structure"`

	// Options for enabling a customizable text banner that will be displayed on
	// Amazon Web Services provided clients when a VPN session is established.
	ClientLoginBannerOptions *AwsEc2ClientVpnEndpointClientLoginBannerOptionsDetails `type:"structure"`

	// The ID of the Client VPN endpoint.
	ClientVpnEndpointId *string `type:"string"`

	// Information about the client connection logging options for the Client VPN
	// endpoint.
	ConnectionLogOptions *AwsEc2ClientVpnEndpointConnectionLogOptionsDetails `type:"structure"`

	// A brief description of the endpoint.
	Description *string `type:"string"`

	// Information about the DNS servers to be used for DNS resolution.
	DnsServer []*string `type:"list"`

	// The IDs of the security groups for the target network.
	SecurityGroupIdSet []*string `type:"list"`

	// The URL of the self-service portal.
	SelfServicePortalUrl *string `type:"string"`

	// The Amazon Resource Name (ARN) of the server certificate.
	ServerCertificateArn *string `type:"string"`

	// The maximum VPN session duration time in hours.
	SessionTimeoutHours *int64 `type:"integer"`

	// Indicates whether split-tunnel is enabled in the Client VPN endpoint.
	SplitTunnel *bool `type:"boolean"`

	// The transport protocol used by the Client VPN endpoint.
	TransportProtocol *string `type:"string"`

	// The ID of the VPC.
	VpcId *string `type:"string"`

	// The port number for the Client VPN endpoint.
	VpnPort *int64 `type:"integer"`
}

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

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

// SetAuthenticationOptions sets the AuthenticationOptions field's value.
func (s *AwsEc2ClientVpnEndpointDetails) SetAuthenticationOptions(v []*AwsEc2ClientVpnEndpointAuthenticationOptionsDetails) *AwsEc2ClientVpnEndpointDetails {
	s.AuthenticationOptions = v
	return s
}

// SetClientCidrBlock sets the ClientCidrBlock field's value.
func (s *AwsEc2ClientVpnEndpointDetails) SetClientCidrBlock(v string) *AwsEc2ClientVpnEndpointDetails {
	s.ClientCidrBlock = &v
	return s
}

// SetClientConnectOptions sets the ClientConnectOptions field's value.
func (s *AwsEc2ClientVpnEndpointDetails) SetClientConnectOptions(v *AwsEc2ClientVpnEndpointClientConnectOptionsDetails) *AwsEc2ClientVpnEndpointDetails {
	s.ClientConnectOptions = v
	return s
}

// SetClientLoginBannerOptions sets the ClientLoginBannerOptions field's value.
func (s *AwsEc2ClientVpnEndpointDetails) SetClientLoginBannerOptions(v *AwsEc2ClientVpnEndpointClientLoginBannerOptionsDetails) *AwsEc2ClientVpnEndpointDetails {
	s.ClientLoginBannerOptions = v
	return s
}

// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
func (s *AwsEc2ClientVpnEndpointDetails) SetClientVpnEndpointId(v string) *AwsEc2ClientVpnEndpointDetails {
	s.ClientVpnEndpointId = &v
	return s
}

// SetConnectionLogOptions sets the ConnectionLogOptions field's value.
func (s *AwsEc2ClientVpnEndpointDetails) SetConnectionLogOptions(v *AwsEc2ClientVpnEndpointConnectionLogOptionsDetails) *AwsEc2ClientVpnEndpointDetails {
	s.ConnectionLogOptions = v
	return s
}

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

// SetDnsServer sets the DnsServer field's value.
func (s *AwsEc2ClientVpnEndpointDetails) SetDnsServer(v []*string) *AwsEc2ClientVpnEndpointDetails {
	s.DnsServer = v
	return s
}

// SetSecurityGroupIdSet sets the SecurityGroupIdSet field's value.
func (s *AwsEc2ClientVpnEndpointDetails) SetSecurityGroupIdSet(v []*string) *AwsEc2ClientVpnEndpointDetails {
	s.SecurityGroupIdSet = v
	return s
}

// SetSelfServicePortalUrl sets the SelfServicePortalUrl field's value.
func (s *AwsEc2ClientVpnEndpointDetails) SetSelfServicePortalUrl(v string) *AwsEc2ClientVpnEndpointDetails {
	s.SelfServicePortalUrl = &v
	return s
}

// SetServerCertificateArn sets the ServerCertificateArn field's value.
func (s *AwsEc2ClientVpnEndpointDetails) SetServerCertificateArn(v string) *AwsEc2ClientVpnEndpointDetails {
	s.ServerCertificateArn = &v
	return s
}

// SetSessionTimeoutHours sets the SessionTimeoutHours field's value.
func (s *AwsEc2ClientVpnEndpointDetails) SetSessionTimeoutHours(v int64) *AwsEc2ClientVpnEndpointDetails {
	s.SessionTimeoutHours = &v
	return s
}

// SetSplitTunnel sets the SplitTunnel field's value.
func (s *AwsEc2ClientVpnEndpointDetails) SetSplitTunnel(v bool) *AwsEc2ClientVpnEndpointDetails {
	s.SplitTunnel = &v
	return s
}

// SetTransportProtocol sets the TransportProtocol field's value.
func (s *AwsEc2ClientVpnEndpointDetails) SetTransportProtocol(v string) *AwsEc2ClientVpnEndpointDetails {
	s.TransportProtocol = &v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *AwsEc2ClientVpnEndpointDetails) SetVpcId(v string) *AwsEc2ClientVpnEndpointDetails {
	s.VpcId = &v
	return s
}

// SetVpnPort sets the VpnPort field's value.
func (s *AwsEc2ClientVpnEndpointDetails) SetVpnPort(v int64) *AwsEc2ClientVpnEndpointDetails {
	s.VpnPort = &v
	return s
}

// Information about an Elastic IP address.
type AwsEc2EipDetails struct {
	_ struct{} `type:"structure"`

	// The identifier that Amazon Web Services assigns to represent the allocation
	// of the Elastic IP address for use with Amazon VPC.
	AllocationId *string `type:"string"`

	// The identifier that represents the association of the Elastic IP address
	// with an EC2 instance.
	AssociationId *string `type:"string"`

	// The domain in which to allocate the address.
	//
	// If the address is for use with EC2 instances in a VPC, then Domain is vpc.
	// Otherwise, Domain is standard.
	Domain *string `type:"string"`

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

	// The name of the location from which the Elastic IP address is advertised.
	NetworkBorderGroup *string `type:"string"`

	// The identifier of the network interface.
	NetworkInterfaceId *string `type:"string"`

	// The Amazon Web Services account ID of the owner of the network interface.
	NetworkInterfaceOwnerId *string `type:"string"`

	// The private IP address that is associated with the Elastic IP address.
	PrivateIpAddress *string `type:"string"`

	// A public IP address that is associated with the EC2 instance.
	PublicIp *string `type:"string"`

	// The identifier of an IP address pool. This parameter allows Amazon EC2 to
	// select an IP address from the address pool.
	PublicIpv4Pool *string `type:"string"`
}

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

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

// SetAllocationId sets the AllocationId field's value.
func (s *AwsEc2EipDetails) SetAllocationId(v string) *AwsEc2EipDetails {
	s.AllocationId = &v
	return s
}

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

// SetDomain sets the Domain field's value.
func (s *AwsEc2EipDetails) SetDomain(v string) *AwsEc2EipDetails {
	s.Domain = &v
	return s
}

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

// SetNetworkBorderGroup sets the NetworkBorderGroup field's value.
func (s *AwsEc2EipDetails) SetNetworkBorderGroup(v string) *AwsEc2EipDetails {
	s.NetworkBorderGroup = &v
	return s
}

// SetNetworkInterfaceId sets the NetworkInterfaceId field's value.
func (s *AwsEc2EipDetails) SetNetworkInterfaceId(v string) *AwsEc2EipDetails {
	s.NetworkInterfaceId = &v
	return s
}

// SetNetworkInterfaceOwnerId sets the NetworkInterfaceOwnerId field's value.
func (s *AwsEc2EipDetails) SetNetworkInterfaceOwnerId(v string) *AwsEc2EipDetails {
	s.NetworkInterfaceOwnerId = &v
	return s
}

// SetPrivateIpAddress sets the PrivateIpAddress field's value.
func (s *AwsEc2EipDetails) SetPrivateIpAddress(v string) *AwsEc2EipDetails {
	s.PrivateIpAddress = &v
	return s
}

// SetPublicIp sets the PublicIp field's value.
func (s *AwsEc2EipDetails) SetPublicIp(v string) *AwsEc2EipDetails {
	s.PublicIp = &v
	return s
}

// SetPublicIpv4Pool sets the PublicIpv4Pool field's value.
func (s *AwsEc2EipDetails) SetPublicIpv4Pool(v string) *AwsEc2EipDetails {
	s.PublicIpv4Pool = &v
	return s
}

// The details of an Amazon EC2 instance.
type AwsEc2InstanceDetails struct {
	_ struct{} `type:"structure"`

	// The IAM profile ARN of the instance.
	IamInstanceProfileArn *string `type:"string"`

	// The Amazon Machine Image (AMI) ID of the instance.
	ImageId *string `type:"string"`

	// The IPv4 addresses associated with the instance.
	IpV4Addresses []*string `type:"list"`

	// The IPv6 addresses associated with the instance.
	IpV6Addresses []*string `type:"list"`

	// The key name associated with the instance.
	KeyName *string `type:"string"`

	// Indicates when the instance was launched.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	LaunchedAt *string `type:"string"`

	// Details about the metadata options for the Amazon EC2 instance.
	MetadataOptions *AwsEc2InstanceMetadataOptions `type:"structure"`

	// Describes the type of monitoring that’s turned on for an instance.
	Monitoring *AwsEc2InstanceMonitoringDetails `type:"structure"`

	// The identifiers of the network interfaces for the EC2 instance. The details
	// for each network interface are in a corresponding AwsEc2NetworkInterfacesDetails
	// object.
	NetworkInterfaces []*AwsEc2InstanceNetworkInterfacesDetails `type:"list"`

	// The identifier of the subnet that the instance was launched in.
	SubnetId *string `type:"string"`

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

	// The virtualization type of the Amazon Machine Image (AMI) required to launch
	// the instance.
	VirtualizationType *string `type:"string"`

	// The identifier of the VPC that the instance was launched in.
	VpcId *string `type:"string"`
}

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

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

// SetIamInstanceProfileArn sets the IamInstanceProfileArn field's value.
func (s *AwsEc2InstanceDetails) SetIamInstanceProfileArn(v string) *AwsEc2InstanceDetails {
	s.IamInstanceProfileArn = &v
	return s
}

// SetImageId sets the ImageId field's value.
func (s *AwsEc2InstanceDetails) SetImageId(v string) *AwsEc2InstanceDetails {
	s.ImageId = &v
	return s
}

// SetIpV4Addresses sets the IpV4Addresses field's value.
func (s *AwsEc2InstanceDetails) SetIpV4Addresses(v []*string) *AwsEc2InstanceDetails {
	s.IpV4Addresses = v
	return s
}

// SetIpV6Addresses sets the IpV6Addresses field's value.
func (s *AwsEc2InstanceDetails) SetIpV6Addresses(v []*string) *AwsEc2InstanceDetails {
	s.IpV6Addresses = v
	return s
}

// SetKeyName sets the KeyName field's value.
func (s *AwsEc2InstanceDetails) SetKeyName(v string) *AwsEc2InstanceDetails {
	s.KeyName = &v
	return s
}

// SetLaunchedAt sets the LaunchedAt field's value.
func (s *AwsEc2InstanceDetails) SetLaunchedAt(v string) *AwsEc2InstanceDetails {
	s.LaunchedAt = &v
	return s
}

// SetMetadataOptions sets the MetadataOptions field's value.
func (s *AwsEc2InstanceDetails) SetMetadataOptions(v *AwsEc2InstanceMetadataOptions) *AwsEc2InstanceDetails {
	s.MetadataOptions = v
	return s
}

// SetMonitoring sets the Monitoring field's value.
func (s *AwsEc2InstanceDetails) SetMonitoring(v *AwsEc2InstanceMonitoringDetails) *AwsEc2InstanceDetails {
	s.Monitoring = v
	return s
}

// SetNetworkInterfaces sets the NetworkInterfaces field's value.
func (s *AwsEc2InstanceDetails) SetNetworkInterfaces(v []*AwsEc2InstanceNetworkInterfacesDetails) *AwsEc2InstanceDetails {
	s.NetworkInterfaces = v
	return s
}

// SetSubnetId sets the SubnetId field's value.
func (s *AwsEc2InstanceDetails) SetSubnetId(v string) *AwsEc2InstanceDetails {
	s.SubnetId = &v
	return s
}

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

// SetVirtualizationType sets the VirtualizationType field's value.
func (s *AwsEc2InstanceDetails) SetVirtualizationType(v string) *AwsEc2InstanceDetails {
	s.VirtualizationType = &v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *AwsEc2InstanceDetails) SetVpcId(v string) *AwsEc2InstanceDetails {
	s.VpcId = &v
	return s
}

// Metadata options that allow you to configure and secure the Amazon EC2 instance.
type AwsEc2InstanceMetadataOptions struct {
	_ struct{} `type:"structure"`

	// Enables or disables the HTTP metadata endpoint on the instance.
	HttpEndpoint *string `type:"string"`

	// Enables or disables the IPv6 endpoint for the instance metadata service.
	HttpProtocolIpv6 *string `type:"string"`

	// The desired HTTP PUT response hop limit for instance metadata requests. The
	// larger the number, the further instance metadata requests can travel.
	HttpPutResponseHopLimit *int64 `type:"integer"`

	// The state of token usage for your instance metadata requests.
	HttpTokens *string `type:"string"`

	// Specifies whether to allow access to instance tags from the instance metadata.
	InstanceMetadataTags *string `type:"string"`
}

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

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

// SetHttpEndpoint sets the HttpEndpoint field's value.
func (s *AwsEc2InstanceMetadataOptions) SetHttpEndpoint(v string) *AwsEc2InstanceMetadataOptions {
	s.HttpEndpoint = &v
	return s
}

// SetHttpProtocolIpv6 sets the HttpProtocolIpv6 field's value.
func (s *AwsEc2InstanceMetadataOptions) SetHttpProtocolIpv6(v string) *AwsEc2InstanceMetadataOptions {
	s.HttpProtocolIpv6 = &v
	return s
}

// SetHttpPutResponseHopLimit sets the HttpPutResponseHopLimit field's value.
func (s *AwsEc2InstanceMetadataOptions) SetHttpPutResponseHopLimit(v int64) *AwsEc2InstanceMetadataOptions {
	s.HttpPutResponseHopLimit = &v
	return s
}

// SetHttpTokens sets the HttpTokens field's value.
func (s *AwsEc2InstanceMetadataOptions) SetHttpTokens(v string) *AwsEc2InstanceMetadataOptions {
	s.HttpTokens = &v
	return s
}

// SetInstanceMetadataTags sets the InstanceMetadataTags field's value.
func (s *AwsEc2InstanceMetadataOptions) SetInstanceMetadataTags(v string) *AwsEc2InstanceMetadataOptions {
	s.InstanceMetadataTags = &v
	return s
}

// The type of monitoring that’s turned on for an Amazon EC2 instance.
type AwsEc2InstanceMonitoringDetails struct {
	_ struct{} `type:"structure"`

	// Indicates whether detailed monitoring is turned on. Otherwise, basic monitoring
	// is turned on.
	State *string `type:"string"`
}

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

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

// SetState sets the State field's value.
func (s *AwsEc2InstanceMonitoringDetails) SetState(v string) *AwsEc2InstanceMonitoringDetails {
	s.State = &v
	return s
}

// Identifies a network interface for the Amazon EC2 instance.
type AwsEc2InstanceNetworkInterfacesDetails struct {
	_ struct{} `type:"structure"`

	// The identifier of the network interface. The details are in a corresponding
	// AwsEc2NetworkInterfacesDetails object.
	NetworkInterfaceId *string `type:"string"`
}

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

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

// SetNetworkInterfaceId sets the NetworkInterfaceId field's value.
func (s *AwsEc2InstanceNetworkInterfacesDetails) SetNetworkInterfaceId(v string) *AwsEc2InstanceNetworkInterfacesDetails {
	s.NetworkInterfaceId = &v
	return s
}

// Information about a block device mapping for an Amazon Elastic Compute Cloud
// (Amazon EC2) launch template.
type AwsEc2LaunchTemplateDataBlockDeviceMappingSetDetails struct {
	_ struct{} `type:"structure"`

	// The device name.
	DeviceName *string `type:"string"`

	// Parameters used to automatically set up Amazon EBS volumes when the instance
	// is launched.
	Ebs *AwsEc2LaunchTemplateDataBlockDeviceMappingSetEbsDetails `type:"structure"`

	// Omits the device from the block device mapping when an empty string is specified.
	NoDevice *string `type:"string"`

	// The virtual device name (ephemeralN). Instance store volumes are numbered
	// starting from 0. An instance type with 2 available instance store volumes
	// can specify mappings for ephemeral0 and ephemeral1. The number of available
	// instance store volumes depends on the instance type.
	VirtualName *string `type:"string"`
}

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

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

// SetDeviceName sets the DeviceName field's value.
func (s *AwsEc2LaunchTemplateDataBlockDeviceMappingSetDetails) SetDeviceName(v string) *AwsEc2LaunchTemplateDataBlockDeviceMappingSetDetails {
	s.DeviceName = &v
	return s
}

// SetEbs sets the Ebs field's value.
func (s *AwsEc2LaunchTemplateDataBlockDeviceMappingSetDetails) SetEbs(v *AwsEc2LaunchTemplateDataBlockDeviceMappingSetEbsDetails) *AwsEc2LaunchTemplateDataBlockDeviceMappingSetDetails {
	s.Ebs = v
	return s
}

// SetNoDevice sets the NoDevice field's value.
func (s *AwsEc2LaunchTemplateDataBlockDeviceMappingSetDetails) SetNoDevice(v string) *AwsEc2LaunchTemplateDataBlockDeviceMappingSetDetails {
	s.NoDevice = &v
	return s
}

// SetVirtualName sets the VirtualName field's value.
func (s *AwsEc2LaunchTemplateDataBlockDeviceMappingSetDetails) SetVirtualName(v string) *AwsEc2LaunchTemplateDataBlockDeviceMappingSetDetails {
	s.VirtualName = &v
	return s
}

// Parameters for a block device for an Amazon Elastic Block Store (Amazon EBS)
// volume in an Amazon EC2 launch template.
type AwsEc2LaunchTemplateDataBlockDeviceMappingSetEbsDetails struct {
	_ struct{} `type:"structure"`

	// Indicates whether the EBS volume is deleted on instance termination.
	DeleteOnTermination *bool `type:"boolean"`

	// Indicates whether the EBS volume is encrypted. Encrypted volumes can only
	// be attached to instances that support Amazon EBS encryption. If you're creating
	// a volume from a snapshot, you can't specify an encryption value.
	Encrypted *bool `type:"boolean"`

	// The number of I/O operations per second (IOPS).
	Iops *int64 `type:"integer"`

	// The Amazon Resource Name (ARN) of the symmetric Key Management Service (KMS)
	// customer managed key used for encryption.
	KmsKeyId *string `type:"string"`

	// The ID of the EBS snapshot.
	SnapshotId *string `type:"string"`

	// The throughput to provision for a gp3 volume, with a maximum of 1,000 MiB/s.
	Throughput *int64 `type:"integer"`

	// The size of the volume, in GiBs. You must specify either a snapshot ID or
	// a volume size.
	VolumeSize *int64 `type:"integer"`

	// The volume type.
	VolumeType *string `type:"string"`
}

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

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

// SetDeleteOnTermination sets the DeleteOnTermination field's value.
func (s *AwsEc2LaunchTemplateDataBlockDeviceMappingSetEbsDetails) SetDeleteOnTermination(v bool) *AwsEc2LaunchTemplateDataBlockDeviceMappingSetEbsDetails {
	s.DeleteOnTermination = &v
	return s
}

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

// SetIops sets the Iops field's value.
func (s *AwsEc2LaunchTemplateDataBlockDeviceMappingSetEbsDetails) SetIops(v int64) *AwsEc2LaunchTemplateDataBlockDeviceMappingSetEbsDetails {
	s.Iops = &v
	return s
}

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

// SetSnapshotId sets the SnapshotId field's value.
func (s *AwsEc2LaunchTemplateDataBlockDeviceMappingSetEbsDetails) SetSnapshotId(v string) *AwsEc2LaunchTemplateDataBlockDeviceMappingSetEbsDetails {
	s.SnapshotId = &v
	return s
}

// SetThroughput sets the Throughput field's value.
func (s *AwsEc2LaunchTemplateDataBlockDeviceMappingSetEbsDetails) SetThroughput(v int64) *AwsEc2LaunchTemplateDataBlockDeviceMappingSetEbsDetails {
	s.Throughput = &v
	return s
}

// SetVolumeSize sets the VolumeSize field's value.
func (s *AwsEc2LaunchTemplateDataBlockDeviceMappingSetEbsDetails) SetVolumeSize(v int64) *AwsEc2LaunchTemplateDataBlockDeviceMappingSetEbsDetails {
	s.VolumeSize = &v
	return s
}

// SetVolumeType sets the VolumeType field's value.
func (s *AwsEc2LaunchTemplateDataBlockDeviceMappingSetEbsDetails) SetVolumeType(v string) *AwsEc2LaunchTemplateDataBlockDeviceMappingSetEbsDetails {
	s.VolumeType = &v
	return s
}

// Information about the target Capacity Reservation or Capacity Reservation
// group in which to run an Amazon EC2 instance.
type AwsEc2LaunchTemplateDataCapacityReservationSpecificationCapacityReservationTargetDetails struct {
	_ struct{} `type:"structure"`

	// The ID of the Capacity Reservation in which to run the instance.
	CapacityReservationId *string `type:"string"`

	// The Amazon Resource Name (ARN) of the Capacity Reservation resource group
	// in which to run the instance.
	CapacityReservationResourceGroupArn *string `type:"string"`
}

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

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

// SetCapacityReservationId sets the CapacityReservationId field's value.
func (s *AwsEc2LaunchTemplateDataCapacityReservationSpecificationCapacityReservationTargetDetails) SetCapacityReservationId(v string) *AwsEc2LaunchTemplateDataCapacityReservationSpecificationCapacityReservationTargetDetails {
	s.CapacityReservationId = &v
	return s
}

// SetCapacityReservationResourceGroupArn sets the CapacityReservationResourceGroupArn field's value.
func (s *AwsEc2LaunchTemplateDataCapacityReservationSpecificationCapacityReservationTargetDetails) SetCapacityReservationResourceGroupArn(v string) *AwsEc2LaunchTemplateDataCapacityReservationSpecificationCapacityReservationTargetDetails {
	s.CapacityReservationResourceGroupArn = &v
	return s
}

// Specifies the Capacity Reservation targeting option of an Amazon EC2 instance.
type AwsEc2LaunchTemplateDataCapacityReservationSpecificationDetails struct {
	_ struct{} `type:"structure"`

	// Indicates the instance's Capacity Reservation preferences. If equal to open,
	// the instance can run in any open Capacity Reservation that has matching attributes
	// (instance type, platform, Availability Zone). If equal to none, the instance
	// avoids running in a Capacity Reservation even if one is available. The instance
	// runs in On-Demand capacity.
	CapacityReservationPreference *string `type:"string"`

	// Specifies a target Capacity Reservation.
	CapacityReservationTarget *AwsEc2LaunchTemplateDataCapacityReservationSpecificationCapacityReservationTargetDetails `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 AwsEc2LaunchTemplateDataCapacityReservationSpecificationDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetCapacityReservationPreference sets the CapacityReservationPreference field's value.
func (s *AwsEc2LaunchTemplateDataCapacityReservationSpecificationDetails) SetCapacityReservationPreference(v string) *AwsEc2LaunchTemplateDataCapacityReservationSpecificationDetails {
	s.CapacityReservationPreference = &v
	return s
}

// SetCapacityReservationTarget sets the CapacityReservationTarget field's value.
func (s *AwsEc2LaunchTemplateDataCapacityReservationSpecificationDetails) SetCapacityReservationTarget(v *AwsEc2LaunchTemplateDataCapacityReservationSpecificationCapacityReservationTargetDetails) *AwsEc2LaunchTemplateDataCapacityReservationSpecificationDetails {
	s.CapacityReservationTarget = v
	return s
}

// Specifies the CPU options for an Amazon EC2 instance. For more information,
// see Optimize CPU options (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html)
// in the Amazon Elastic Compute Cloud User Guide.
type AwsEc2LaunchTemplateDataCpuOptionsDetails struct {
	_ struct{} `type:"structure"`

	// The number of CPU cores for the instance.
	CoreCount *int64 `type:"integer"`

	// The number of threads per CPU core. A value of 1 disables multithreading
	// for the instance, The default value is 2.
	ThreadsPerCore *int64 `type:"integer"`
}

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

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

// SetCoreCount sets the CoreCount field's value.
func (s *AwsEc2LaunchTemplateDataCpuOptionsDetails) SetCoreCount(v int64) *AwsEc2LaunchTemplateDataCpuOptionsDetails {
	s.CoreCount = &v
	return s
}

// SetThreadsPerCore sets the ThreadsPerCore field's value.
func (s *AwsEc2LaunchTemplateDataCpuOptionsDetails) SetThreadsPerCore(v int64) *AwsEc2LaunchTemplateDataCpuOptionsDetails {
	s.ThreadsPerCore = &v
	return s
}

// Specifies the credit option for CPU usage of a T2, T3, or T3a Amazon EC2
// instance.
type AwsEc2LaunchTemplateDataCreditSpecificationDetails struct {
	_ struct{} `type:"structure"`

	// The credit option for CPU usage of a T instance.
	CpuCredits *string `type:"string"`
}

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

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

// SetCpuCredits sets the CpuCredits field's value.
func (s *AwsEc2LaunchTemplateDataCreditSpecificationDetails) SetCpuCredits(v string) *AwsEc2LaunchTemplateDataCreditSpecificationDetails {
	s.CpuCredits = &v
	return s
}

// The information to include in an Amazon Elastic Compute Cloud (Amazon EC2)
// launch template.
type AwsEc2LaunchTemplateDataDetails struct {
	_ struct{} `type:"structure"`

	// Information about a block device mapping for an Amazon EC2 launch template.
	BlockDeviceMappingSet []*AwsEc2LaunchTemplateDataBlockDeviceMappingSetDetails `type:"list"`

	// Specifies an instance's Capacity Reservation targeting option. You can specify
	// only one option at a time.
	CapacityReservationSpecification *AwsEc2LaunchTemplateDataCapacityReservationSpecificationDetails `type:"structure"`

	// Specifies the CPU options for an instance. For more information, see Optimize
	// CPU options (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html)
	// in the Amazon Elastic Compute Cloud User Guide.
	CpuOptions *AwsEc2LaunchTemplateDataCpuOptionsDetails `type:"structure"`

	// Specifies the credit option for CPU usage of a T2, T3, or T3a instance.
	CreditSpecification *AwsEc2LaunchTemplateDataCreditSpecificationDetails `type:"structure"`

	// Indicates whether to enable the instance for stop protection. For more information,
	// see Enable stop protection (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html#Using_StopProtection)
	// in the Amazon EC2 User Guide.
	DisableApiStop *bool `type:"boolean"`

	// If you set this parameter to true, you can't terminate the instance using
	// the Amazon EC2 console, CLI, or API. If set to true, you can.
	DisableApiTermination *bool `type:"boolean"`

	// Indicates whether the instance is optimized for Amazon EBS I/O.
	EbsOptimized *bool `type:"boolean"`

	// Provides details about Elastic Graphics accelerators to associate with the
	// instance.
	ElasticGpuSpecificationSet []*AwsEc2LaunchTemplateDataElasticGpuSpecificationSetDetails `type:"list"`

	// The Amazon Elastic Inference accelerator for the instance.
	ElasticInferenceAcceleratorSet []*AwsEc2LaunchTemplateDataElasticInferenceAcceleratorSetDetails `type:"list"`

	// Indicates whether the Amazon EC2 instance is enabled for Amazon Web Services
	// Nitro Enclaves.
	EnclaveOptions *AwsEc2LaunchTemplateDataEnclaveOptionsDetails `type:"structure"`

	// Specifies whether your Amazon EC2 instance is configured for hibernation.
	HibernationOptions *AwsEc2LaunchTemplateDataHibernationOptionsDetails `type:"structure"`

	// The name or Amazon Resource Name (ARN) of an IAM instance profile.
	IamInstanceProfile *AwsEc2LaunchTemplateDataIamInstanceProfileDetails `type:"structure"`

	// The ID of the Amazon Machine Image (AMI).
	ImageId *string `type:"string"`

	// Provides the options for specifying the instance initiated shutdown behavior.
	InstanceInitiatedShutdownBehavior *string `type:"string"`

	// Specifies the market (purchasing) option for an instance.
	InstanceMarketOptions *AwsEc2LaunchTemplateDataInstanceMarketOptionsDetails `type:"structure"`

	// The attributes for the instance types. When you specify instance attributes,
	// Amazon EC2 will identify instance types with these attributes. If you specify
	// InstanceRequirements, you can't specify InstanceType.
	InstanceRequirements *AwsEc2LaunchTemplateDataInstanceRequirementsDetails `type:"structure"`

	// The instance type. For more information, see Instance types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)
	// in the Amazon EC2 User Guide. If you specify InstanceType, you can't specify
	// InstanceRequirements.
	InstanceType *string `type:"string"`

	// The ID of the kernel.
	KernelId *string `type:"string"`

	// The name of the key pair that allows users to connect to the instance.
	KeyName *string `type:"string"`

	// Specifies a license configuration for an instance.
	LicenseSet []*AwsEc2LaunchTemplateDataLicenseSetDetails `type:"list"`

	// The maintenance options of your instance.
	MaintenanceOptions *AwsEc2LaunchTemplateDataMaintenanceOptionsDetails `type:"structure"`

	// The metadata options for the instance. For more information, see Instance
	// metadata and user data (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)
	// in the Amazon EC2 User Guide.
	MetadataOptions *AwsEc2LaunchTemplateDataMetadataOptionsDetails `type:"structure"`

	// The monitoring for the instance.
	Monitoring *AwsEc2LaunchTemplateDataMonitoringDetails `type:"structure"`

	// Specifies the parameters for a network interface that is attached to the
	// instance.
	NetworkInterfaceSet []*AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails `type:"list"`

	// Specifies the placement of an instance.
	Placement *AwsEc2LaunchTemplateDataPlacementDetails `type:"structure"`

	// The options for the instance hostname.
	PrivateDnsNameOptions *AwsEc2LaunchTemplateDataPrivateDnsNameOptionsDetails `type:"structure"`

	// The ID of the RAM disk.
	RamDiskId *string `type:"string"`

	// One or more security group IDs.
	SecurityGroupIdSet []*string `type:"list"`

	// One or more security group names. For a nondefault VPC, you must use security
	// group IDs instead. You cannot specify both a security group ID and security
	// name in the same request.
	SecurityGroupSet []*string `type:"list"`

	// The user data to make available to the instance.
	UserData *string `type:"string"`
}

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

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

// SetBlockDeviceMappingSet sets the BlockDeviceMappingSet field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetBlockDeviceMappingSet(v []*AwsEc2LaunchTemplateDataBlockDeviceMappingSetDetails) *AwsEc2LaunchTemplateDataDetails {
	s.BlockDeviceMappingSet = v
	return s
}

// SetCapacityReservationSpecification sets the CapacityReservationSpecification field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetCapacityReservationSpecification(v *AwsEc2LaunchTemplateDataCapacityReservationSpecificationDetails) *AwsEc2LaunchTemplateDataDetails {
	s.CapacityReservationSpecification = v
	return s
}

// SetCpuOptions sets the CpuOptions field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetCpuOptions(v *AwsEc2LaunchTemplateDataCpuOptionsDetails) *AwsEc2LaunchTemplateDataDetails {
	s.CpuOptions = v
	return s
}

// SetCreditSpecification sets the CreditSpecification field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetCreditSpecification(v *AwsEc2LaunchTemplateDataCreditSpecificationDetails) *AwsEc2LaunchTemplateDataDetails {
	s.CreditSpecification = v
	return s
}

// SetDisableApiStop sets the DisableApiStop field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetDisableApiStop(v bool) *AwsEc2LaunchTemplateDataDetails {
	s.DisableApiStop = &v
	return s
}

// SetDisableApiTermination sets the DisableApiTermination field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetDisableApiTermination(v bool) *AwsEc2LaunchTemplateDataDetails {
	s.DisableApiTermination = &v
	return s
}

// SetEbsOptimized sets the EbsOptimized field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetEbsOptimized(v bool) *AwsEc2LaunchTemplateDataDetails {
	s.EbsOptimized = &v
	return s
}

// SetElasticGpuSpecificationSet sets the ElasticGpuSpecificationSet field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetElasticGpuSpecificationSet(v []*AwsEc2LaunchTemplateDataElasticGpuSpecificationSetDetails) *AwsEc2LaunchTemplateDataDetails {
	s.ElasticGpuSpecificationSet = v
	return s
}

// SetElasticInferenceAcceleratorSet sets the ElasticInferenceAcceleratorSet field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetElasticInferenceAcceleratorSet(v []*AwsEc2LaunchTemplateDataElasticInferenceAcceleratorSetDetails) *AwsEc2LaunchTemplateDataDetails {
	s.ElasticInferenceAcceleratorSet = v
	return s
}

// SetEnclaveOptions sets the EnclaveOptions field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetEnclaveOptions(v *AwsEc2LaunchTemplateDataEnclaveOptionsDetails) *AwsEc2LaunchTemplateDataDetails {
	s.EnclaveOptions = v
	return s
}

// SetHibernationOptions sets the HibernationOptions field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetHibernationOptions(v *AwsEc2LaunchTemplateDataHibernationOptionsDetails) *AwsEc2LaunchTemplateDataDetails {
	s.HibernationOptions = v
	return s
}

// SetIamInstanceProfile sets the IamInstanceProfile field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetIamInstanceProfile(v *AwsEc2LaunchTemplateDataIamInstanceProfileDetails) *AwsEc2LaunchTemplateDataDetails {
	s.IamInstanceProfile = v
	return s
}

// SetImageId sets the ImageId field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetImageId(v string) *AwsEc2LaunchTemplateDataDetails {
	s.ImageId = &v
	return s
}

// SetInstanceInitiatedShutdownBehavior sets the InstanceInitiatedShutdownBehavior field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetInstanceInitiatedShutdownBehavior(v string) *AwsEc2LaunchTemplateDataDetails {
	s.InstanceInitiatedShutdownBehavior = &v
	return s
}

// SetInstanceMarketOptions sets the InstanceMarketOptions field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetInstanceMarketOptions(v *AwsEc2LaunchTemplateDataInstanceMarketOptionsDetails) *AwsEc2LaunchTemplateDataDetails {
	s.InstanceMarketOptions = v
	return s
}

// SetInstanceRequirements sets the InstanceRequirements field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetInstanceRequirements(v *AwsEc2LaunchTemplateDataInstanceRequirementsDetails) *AwsEc2LaunchTemplateDataDetails {
	s.InstanceRequirements = v
	return s
}

// SetInstanceType sets the InstanceType field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetInstanceType(v string) *AwsEc2LaunchTemplateDataDetails {
	s.InstanceType = &v
	return s
}

// SetKernelId sets the KernelId field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetKernelId(v string) *AwsEc2LaunchTemplateDataDetails {
	s.KernelId = &v
	return s
}

// SetKeyName sets the KeyName field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetKeyName(v string) *AwsEc2LaunchTemplateDataDetails {
	s.KeyName = &v
	return s
}

// SetLicenseSet sets the LicenseSet field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetLicenseSet(v []*AwsEc2LaunchTemplateDataLicenseSetDetails) *AwsEc2LaunchTemplateDataDetails {
	s.LicenseSet = v
	return s
}

// SetMaintenanceOptions sets the MaintenanceOptions field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetMaintenanceOptions(v *AwsEc2LaunchTemplateDataMaintenanceOptionsDetails) *AwsEc2LaunchTemplateDataDetails {
	s.MaintenanceOptions = v
	return s
}

// SetMetadataOptions sets the MetadataOptions field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetMetadataOptions(v *AwsEc2LaunchTemplateDataMetadataOptionsDetails) *AwsEc2LaunchTemplateDataDetails {
	s.MetadataOptions = v
	return s
}

// SetMonitoring sets the Monitoring field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetMonitoring(v *AwsEc2LaunchTemplateDataMonitoringDetails) *AwsEc2LaunchTemplateDataDetails {
	s.Monitoring = v
	return s
}

// SetNetworkInterfaceSet sets the NetworkInterfaceSet field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetNetworkInterfaceSet(v []*AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails) *AwsEc2LaunchTemplateDataDetails {
	s.NetworkInterfaceSet = v
	return s
}

// SetPlacement sets the Placement field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetPlacement(v *AwsEc2LaunchTemplateDataPlacementDetails) *AwsEc2LaunchTemplateDataDetails {
	s.Placement = v
	return s
}

// SetPrivateDnsNameOptions sets the PrivateDnsNameOptions field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetPrivateDnsNameOptions(v *AwsEc2LaunchTemplateDataPrivateDnsNameOptionsDetails) *AwsEc2LaunchTemplateDataDetails {
	s.PrivateDnsNameOptions = v
	return s
}

// SetRamDiskId sets the RamDiskId field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetRamDiskId(v string) *AwsEc2LaunchTemplateDataDetails {
	s.RamDiskId = &v
	return s
}

// SetSecurityGroupIdSet sets the SecurityGroupIdSet field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetSecurityGroupIdSet(v []*string) *AwsEc2LaunchTemplateDataDetails {
	s.SecurityGroupIdSet = v
	return s
}

// SetSecurityGroupSet sets the SecurityGroupSet field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetSecurityGroupSet(v []*string) *AwsEc2LaunchTemplateDataDetails {
	s.SecurityGroupSet = v
	return s
}

// SetUserData sets the UserData field's value.
func (s *AwsEc2LaunchTemplateDataDetails) SetUserData(v string) *AwsEc2LaunchTemplateDataDetails {
	s.UserData = &v
	return s
}

// Provides details about an Elastic Graphics specification for an Amazon EC2
// launch template.
type AwsEc2LaunchTemplateDataElasticGpuSpecificationSetDetails struct {
	_ struct{} `type:"structure"`

	// The type of Elastic Graphics accelerator.
	Type *string `type:"string"`
}

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

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

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

// Provides details for an Amazon Elastic Inference accelerator.
type AwsEc2LaunchTemplateDataElasticInferenceAcceleratorSetDetails struct {
	_ struct{} `type:"structure"`

	// The number of Elastic Inference accelerators to attach to the instance.
	Count *int64 `type:"integer"`

	// The type of Elastic Inference accelerator.
	Type *string `type:"string"`
}

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

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

// SetCount sets the Count field's value.
func (s *AwsEc2LaunchTemplateDataElasticInferenceAcceleratorSetDetails) SetCount(v int64) *AwsEc2LaunchTemplateDataElasticInferenceAcceleratorSetDetails {
	s.Count = &v
	return s
}

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

// Indicates whether the instance is enabled for Amazon Web Services Nitro Enclaves.
type AwsEc2LaunchTemplateDataEnclaveOptionsDetails struct {
	_ struct{} `type:"structure"`

	// If this parameter is set to true, the instance is enabled for Amazon Web
	// Services Nitro Enclaves.
	Enabled *bool `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 AwsEc2LaunchTemplateDataEnclaveOptionsDetails) String() string {
	return awsutil.Prettify(s)
}

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

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

// Specifies whether your Amazon EC2 instance is configured for hibernation.
type AwsEc2LaunchTemplateDataHibernationOptionsDetails struct {
	_ struct{} `type:"structure"`

	// If you set this parameter to true, the instance is enabled for hibernation.
	Configured *bool `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 AwsEc2LaunchTemplateDataHibernationOptionsDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetConfigured sets the Configured field's value.
func (s *AwsEc2LaunchTemplateDataHibernationOptionsDetails) SetConfigured(v bool) *AwsEc2LaunchTemplateDataHibernationOptionsDetails {
	s.Configured = &v
	return s
}

// Provides details for an Identity and Access Management (IAM) instance profile,
// which is a container for an IAM role for your instance.
type AwsEc2LaunchTemplateDataIamInstanceProfileDetails struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the instance profile.
	Arn *string `type:"string"`

	// The name of the instance profile.
	Name *string `type:"string"`
}

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

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

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

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

// Provides details about the market (purchasing) option for an Amazon EC2 instance.
type AwsEc2LaunchTemplateDataInstanceMarketOptionsDetails struct {
	_ struct{} `type:"structure"`

	// The market type.
	MarketType *string `type:"string"`

	// The options for Spot Instances.
	SpotOptions *AwsEc2LaunchTemplateDataInstanceMarketOptionsSpotOptionsDetails `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 AwsEc2LaunchTemplateDataInstanceMarketOptionsDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetMarketType sets the MarketType field's value.
func (s *AwsEc2LaunchTemplateDataInstanceMarketOptionsDetails) SetMarketType(v string) *AwsEc2LaunchTemplateDataInstanceMarketOptionsDetails {
	s.MarketType = &v
	return s
}

// SetSpotOptions sets the SpotOptions field's value.
func (s *AwsEc2LaunchTemplateDataInstanceMarketOptionsDetails) SetSpotOptions(v *AwsEc2LaunchTemplateDataInstanceMarketOptionsSpotOptionsDetails) *AwsEc2LaunchTemplateDataInstanceMarketOptionsDetails {
	s.SpotOptions = v
	return s
}

// Provides details about the market (purchasing) options for Spot Instances.
type AwsEc2LaunchTemplateDataInstanceMarketOptionsSpotOptionsDetails struct {
	_ struct{} `type:"structure"`

	// Deprecated.
	BlockDurationMinutes *int64 `type:"integer"`

	// The behavior when a Spot Instance is interrupted.
	InstanceInterruptionBehavior *string `type:"string"`

	// The maximum hourly price you're willing to pay for the Spot Instances.
	MaxPrice *string `type:"string"`

	// The Spot Instance request type.
	SpotInstanceType *string `type:"string"`

	// The end date of the request, in UTC format (YYYY-MM-DDTHH:MM:SSZ), for persistent
	// requests.
	ValidUntil *string `type:"string"`
}

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

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

// SetBlockDurationMinutes sets the BlockDurationMinutes field's value.
func (s *AwsEc2LaunchTemplateDataInstanceMarketOptionsSpotOptionsDetails) SetBlockDurationMinutes(v int64) *AwsEc2LaunchTemplateDataInstanceMarketOptionsSpotOptionsDetails {
	s.BlockDurationMinutes = &v
	return s
}

// SetInstanceInterruptionBehavior sets the InstanceInterruptionBehavior field's value.
func (s *AwsEc2LaunchTemplateDataInstanceMarketOptionsSpotOptionsDetails) SetInstanceInterruptionBehavior(v string) *AwsEc2LaunchTemplateDataInstanceMarketOptionsSpotOptionsDetails {
	s.InstanceInterruptionBehavior = &v
	return s
}

// SetMaxPrice sets the MaxPrice field's value.
func (s *AwsEc2LaunchTemplateDataInstanceMarketOptionsSpotOptionsDetails) SetMaxPrice(v string) *AwsEc2LaunchTemplateDataInstanceMarketOptionsSpotOptionsDetails {
	s.MaxPrice = &v
	return s
}

// SetSpotInstanceType sets the SpotInstanceType field's value.
func (s *AwsEc2LaunchTemplateDataInstanceMarketOptionsSpotOptionsDetails) SetSpotInstanceType(v string) *AwsEc2LaunchTemplateDataInstanceMarketOptionsSpotOptionsDetails {
	s.SpotInstanceType = &v
	return s
}

// SetValidUntil sets the ValidUntil field's value.
func (s *AwsEc2LaunchTemplateDataInstanceMarketOptionsSpotOptionsDetails) SetValidUntil(v string) *AwsEc2LaunchTemplateDataInstanceMarketOptionsSpotOptionsDetails {
	s.ValidUntil = &v
	return s
}

// The minimum and maximum number of accelerators (GPUs, FPGAs, or Amazon Web
// Services Inferentia chips) on an Amazon EC2 instance.
type AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorCountDetails struct {
	_ struct{} `type:"structure"`

	// The maximum number of accelerators. If this parameter isn't specified, there's
	// no maximum limit. To exclude accelerator-enabled instance types, set Max
	// to 0.
	Max *int64 `type:"integer"`

	// The minimum number of accelerators. If this parameter isn't specified, there's
	// no minimum limit.
	Min *int64 `type:"integer"`
}

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

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

// SetMax sets the Max field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorCountDetails) SetMax(v int64) *AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorCountDetails {
	s.Max = &v
	return s
}

// SetMin sets the Min field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorCountDetails) SetMin(v int64) *AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorCountDetails {
	s.Min = &v
	return s
}

// The minimum and maximum amount of memory, in MiB, for the accelerators on
// an Amazon EC2 instance.
type AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorTotalMemoryMiBDetails struct {
	_ struct{} `type:"structure"`

	// The maximum amount of memory, in MiB. If this parameter isn't specified,
	// there's no maximum limit.
	Max *int64 `type:"integer"`

	// The minimum amount of memory, in MiB. If 0 is specified, there's no maximum
	// limit.
	Min *int64 `type:"integer"`
}

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

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

// SetMax sets the Max field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorTotalMemoryMiBDetails) SetMax(v int64) *AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorTotalMemoryMiBDetails {
	s.Max = &v
	return s
}

// SetMin sets the Min field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorTotalMemoryMiBDetails) SetMin(v int64) *AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorTotalMemoryMiBDetails {
	s.Min = &v
	return s
}

// The minimum and maximum baseline bandwidth to Amazon Elastic Block Store
// (Amazon EBS), in Mbps. For more information, see Amazon EBS–optimized instances
// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html)
// in the Amazon EC2 User Guide.
type AwsEc2LaunchTemplateDataInstanceRequirementsBaselineEbsBandwidthMbpsDetails struct {
	_ struct{} `type:"structure"`

	// The maximum baseline bandwidth, in Mbps. If this parameter is omitted, there's
	// no maximum limit.
	Max *int64 `type:"integer"`

	// The minimum baseline bandwidth, in Mbps. If this parameter is omitted, there's
	// no minimum limit.
	Min *int64 `type:"integer"`
}

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

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

// SetMax sets the Max field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsBaselineEbsBandwidthMbpsDetails) SetMax(v int64) *AwsEc2LaunchTemplateDataInstanceRequirementsBaselineEbsBandwidthMbpsDetails {
	s.Max = &v
	return s
}

// SetMin sets the Min field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsBaselineEbsBandwidthMbpsDetails) SetMin(v int64) *AwsEc2LaunchTemplateDataInstanceRequirementsBaselineEbsBandwidthMbpsDetails {
	s.Min = &v
	return s
}

// The attributes for the Amazon EC2 instance types.
type AwsEc2LaunchTemplateDataInstanceRequirementsDetails struct {
	_ struct{} `type:"structure"`

	// The minimum and maximum number of accelerators (GPUs, FPGAs, or Amazon Web
	// Services Inferentia chips) on an instance.
	AcceleratorCount *AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorCountDetails `type:"structure"`

	// Indicates whether instance types must have accelerators by specific manufacturers.
	AcceleratorManufacturers []*string `type:"list"`

	// The accelerators that must be on the instance type.
	AcceleratorNames []*string `type:"list"`

	// The minimum and maximum amount of total accelerator memory, in MiB.
	AcceleratorTotalMemoryMiB *AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorTotalMemoryMiBDetails `type:"structure"`

	// The accelerator types that must be on the instance type.
	AcceleratorTypes []*string `type:"list"`

	// Indicates whether bare metal instance types must be included, excluded, or
	// required.
	BareMetal *string `type:"string"`

	// The minimum and maximum baseline bandwidth to Amazon EBS, in Mbps. For more
	// information, see Amazon EBS optimized instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html)
	// in the Amazon EC2 User Guide.
	BaselineEbsBandwidthMbps *AwsEc2LaunchTemplateDataInstanceRequirementsBaselineEbsBandwidthMbpsDetails `type:"structure"`

	// Indicates whether burstable performance T instance types are included, excluded,
	// or required. For more information, Burstable performance instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html)
	// in the Amazon EC2 User Guide.
	BurstablePerformance *string `type:"string"`

	// The CPU manufacturers to include.
	CpuManufacturers []*string `type:"list"`

	// The instance types to exclude.
	ExcludedInstanceTypes []*string `type:"list"`

	// Indicates whether current or previous generation instance types are included.
	InstanceGenerations []*string `type:"list"`

	// Indicates whether instance types with instance store volumes are included,
	// excluded, or required. For more information, see Amazon EC2 instance store
	// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html)
	// in the Amazon EC2 User Guide.
	LocalStorage *string `type:"string"`

	// The type of local storage that is required.
	LocalStorageTypes []*string `type:"list"`

	// The minimum and maximum amount of memory per vCPU, in GiB.
	MemoryGiBPerVCpu *AwsEc2LaunchTemplateDataInstanceRequirementsMemoryGiBPerVCpuDetails `type:"structure"`

	// The minimum and maximum amount of memory, in MiB.
	MemoryMiB *AwsEc2LaunchTemplateDataInstanceRequirementsMemoryMiBDetails `type:"structure"`

	// The minimum and maximum number of network interfaces.
	NetworkInterfaceCount *AwsEc2LaunchTemplateDataInstanceRequirementsNetworkInterfaceCountDetails `type:"structure"`

	// The price protection threshold for On-Demand Instances. This is the maximum
	// you'll pay for an On-Demand Instance, expressed as a percentage above the
	// least expensive current generation M, C, or R instance type with your specified
	// attributes. When Amazon EC2 selects instance types with your attributes,
	// it excludes instance types priced above your threshold.
	//
	// The parameter accepts an integer, which Amazon EC2 interprets as a percentage.
	//
	// A high value, such as 999999, turns off price protection.
	OnDemandMaxPricePercentageOverLowestPrice *int64 `type:"integer"`

	// Indicates whether instance types must support hibernation for On-Demand Instances.
	RequireHibernateSupport *bool `type:"boolean"`

	// The price protection threshold for Spot Instances. This is the maximum you'll
	// pay for a Spot Instance, expressed as a percentage above the least expensive
	// current generation M, C, or R instance type with your specified attributes.
	// When Amazon EC2 selects instance types with your attributes, it excludes
	// instance types priced above your threshold.
	//
	// The parameter accepts an integer, which Amazon EC2 interprets as a percentage.
	//
	// A high value, such as 999999, turns off price protection.
	SpotMaxPricePercentageOverLowestPrice *int64 `type:"integer"`

	// The minimum and maximum amount of total local storage, in GB.
	TotalLocalStorageGB *AwsEc2LaunchTemplateDataInstanceRequirementsTotalLocalStorageGBDetails `type:"structure"`

	// The minimum and maximum number of vCPUs.
	VCpuCount *AwsEc2LaunchTemplateDataInstanceRequirementsVCpuCountDetails `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 AwsEc2LaunchTemplateDataInstanceRequirementsDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetAcceleratorCount sets the AcceleratorCount field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsDetails) SetAcceleratorCount(v *AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorCountDetails) *AwsEc2LaunchTemplateDataInstanceRequirementsDetails {
	s.AcceleratorCount = v
	return s
}

// SetAcceleratorManufacturers sets the AcceleratorManufacturers field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsDetails) SetAcceleratorManufacturers(v []*string) *AwsEc2LaunchTemplateDataInstanceRequirementsDetails {
	s.AcceleratorManufacturers = v
	return s
}

// SetAcceleratorNames sets the AcceleratorNames field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsDetails) SetAcceleratorNames(v []*string) *AwsEc2LaunchTemplateDataInstanceRequirementsDetails {
	s.AcceleratorNames = v
	return s
}

// SetAcceleratorTotalMemoryMiB sets the AcceleratorTotalMemoryMiB field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsDetails) SetAcceleratorTotalMemoryMiB(v *AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorTotalMemoryMiBDetails) *AwsEc2LaunchTemplateDataInstanceRequirementsDetails {
	s.AcceleratorTotalMemoryMiB = v
	return s
}

// SetAcceleratorTypes sets the AcceleratorTypes field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsDetails) SetAcceleratorTypes(v []*string) *AwsEc2LaunchTemplateDataInstanceRequirementsDetails {
	s.AcceleratorTypes = v
	return s
}

// SetBareMetal sets the BareMetal field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsDetails) SetBareMetal(v string) *AwsEc2LaunchTemplateDataInstanceRequirementsDetails {
	s.BareMetal = &v
	return s
}

// SetBaselineEbsBandwidthMbps sets the BaselineEbsBandwidthMbps field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsDetails) SetBaselineEbsBandwidthMbps(v *AwsEc2LaunchTemplateDataInstanceRequirementsBaselineEbsBandwidthMbpsDetails) *AwsEc2LaunchTemplateDataInstanceRequirementsDetails {
	s.BaselineEbsBandwidthMbps = v
	return s
}

// SetBurstablePerformance sets the BurstablePerformance field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsDetails) SetBurstablePerformance(v string) *AwsEc2LaunchTemplateDataInstanceRequirementsDetails {
	s.BurstablePerformance = &v
	return s
}

// SetCpuManufacturers sets the CpuManufacturers field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsDetails) SetCpuManufacturers(v []*string) *AwsEc2LaunchTemplateDataInstanceRequirementsDetails {
	s.CpuManufacturers = v
	return s
}

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

// SetInstanceGenerations sets the InstanceGenerations field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsDetails) SetInstanceGenerations(v []*string) *AwsEc2LaunchTemplateDataInstanceRequirementsDetails {
	s.InstanceGenerations = v
	return s
}

// SetLocalStorage sets the LocalStorage field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsDetails) SetLocalStorage(v string) *AwsEc2LaunchTemplateDataInstanceRequirementsDetails {
	s.LocalStorage = &v
	return s
}

// SetLocalStorageTypes sets the LocalStorageTypes field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsDetails) SetLocalStorageTypes(v []*string) *AwsEc2LaunchTemplateDataInstanceRequirementsDetails {
	s.LocalStorageTypes = v
	return s
}

// SetMemoryGiBPerVCpu sets the MemoryGiBPerVCpu field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsDetails) SetMemoryGiBPerVCpu(v *AwsEc2LaunchTemplateDataInstanceRequirementsMemoryGiBPerVCpuDetails) *AwsEc2LaunchTemplateDataInstanceRequirementsDetails {
	s.MemoryGiBPerVCpu = v
	return s
}

// SetMemoryMiB sets the MemoryMiB field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsDetails) SetMemoryMiB(v *AwsEc2LaunchTemplateDataInstanceRequirementsMemoryMiBDetails) *AwsEc2LaunchTemplateDataInstanceRequirementsDetails {
	s.MemoryMiB = v
	return s
}

// SetNetworkInterfaceCount sets the NetworkInterfaceCount field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsDetails) SetNetworkInterfaceCount(v *AwsEc2LaunchTemplateDataInstanceRequirementsNetworkInterfaceCountDetails) *AwsEc2LaunchTemplateDataInstanceRequirementsDetails {
	s.NetworkInterfaceCount = v
	return s
}

// SetOnDemandMaxPricePercentageOverLowestPrice sets the OnDemandMaxPricePercentageOverLowestPrice field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsDetails) SetOnDemandMaxPricePercentageOverLowestPrice(v int64) *AwsEc2LaunchTemplateDataInstanceRequirementsDetails {
	s.OnDemandMaxPricePercentageOverLowestPrice = &v
	return s
}

// SetRequireHibernateSupport sets the RequireHibernateSupport field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsDetails) SetRequireHibernateSupport(v bool) *AwsEc2LaunchTemplateDataInstanceRequirementsDetails {
	s.RequireHibernateSupport = &v
	return s
}

// SetSpotMaxPricePercentageOverLowestPrice sets the SpotMaxPricePercentageOverLowestPrice field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsDetails) SetSpotMaxPricePercentageOverLowestPrice(v int64) *AwsEc2LaunchTemplateDataInstanceRequirementsDetails {
	s.SpotMaxPricePercentageOverLowestPrice = &v
	return s
}

// SetTotalLocalStorageGB sets the TotalLocalStorageGB field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsDetails) SetTotalLocalStorageGB(v *AwsEc2LaunchTemplateDataInstanceRequirementsTotalLocalStorageGBDetails) *AwsEc2LaunchTemplateDataInstanceRequirementsDetails {
	s.TotalLocalStorageGB = v
	return s
}

// SetVCpuCount sets the VCpuCount field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsDetails) SetVCpuCount(v *AwsEc2LaunchTemplateDataInstanceRequirementsVCpuCountDetails) *AwsEc2LaunchTemplateDataInstanceRequirementsDetails {
	s.VCpuCount = v
	return s
}

// The minimum and maximum amount of memory per vCPU, in GiB.
type AwsEc2LaunchTemplateDataInstanceRequirementsMemoryGiBPerVCpuDetails struct {
	_ struct{} `type:"structure"`

	// The maximum amount of memory per vCPU, in GiB. If this parameter is omitted,
	// there's no maximum limit.
	Max *float64 `type:"double"`

	// The minimum amount of memory per vCPU, in GiB. If this parameter is omitted,
	// there's no maximum limit.
	Min *float64 `type:"double"`
}

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

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

// SetMax sets the Max field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsMemoryGiBPerVCpuDetails) SetMax(v float64) *AwsEc2LaunchTemplateDataInstanceRequirementsMemoryGiBPerVCpuDetails {
	s.Max = &v
	return s
}

// SetMin sets the Min field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsMemoryGiBPerVCpuDetails) SetMin(v float64) *AwsEc2LaunchTemplateDataInstanceRequirementsMemoryGiBPerVCpuDetails {
	s.Min = &v
	return s
}

// The minimum and maximum amount of memory, in MiB, for an Amazon EC2 instance.
type AwsEc2LaunchTemplateDataInstanceRequirementsMemoryMiBDetails struct {
	_ struct{} `type:"structure"`

	// The maximum amount of memory, in MiB.
	Max *int64 `type:"integer"`

	// The minimum amount of memory, in MiB.
	Min *int64 `type:"integer"`
}

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

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

// SetMax sets the Max field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsMemoryMiBDetails) SetMax(v int64) *AwsEc2LaunchTemplateDataInstanceRequirementsMemoryMiBDetails {
	s.Max = &v
	return s
}

// SetMin sets the Min field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsMemoryMiBDetails) SetMin(v int64) *AwsEc2LaunchTemplateDataInstanceRequirementsMemoryMiBDetails {
	s.Min = &v
	return s
}

// The minimum and maximum number of network interfaces to be attached to an
// Amazon EC2 instance.
type AwsEc2LaunchTemplateDataInstanceRequirementsNetworkInterfaceCountDetails struct {
	_ struct{} `type:"structure"`

	// The maximum number of network interfaces.
	Max *int64 `type:"integer"`

	// The minimum number of network interfaces.
	Min *int64 `type:"integer"`
}

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

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

// SetMax sets the Max field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsNetworkInterfaceCountDetails) SetMax(v int64) *AwsEc2LaunchTemplateDataInstanceRequirementsNetworkInterfaceCountDetails {
	s.Max = &v
	return s
}

// SetMin sets the Min field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsNetworkInterfaceCountDetails) SetMin(v int64) *AwsEc2LaunchTemplateDataInstanceRequirementsNetworkInterfaceCountDetails {
	s.Min = &v
	return s
}

// The minimum and maximum amount of total local storage, in GB, that an Amazon
// EC2 instance uses.
type AwsEc2LaunchTemplateDataInstanceRequirementsTotalLocalStorageGBDetails struct {
	_ struct{} `type:"structure"`

	// The maximum amount of total local storage, in GB.
	Max *float64 `type:"double"`

	// The minimum amount of total local storage, in GB.
	Min *float64 `type:"double"`
}

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

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

// SetMax sets the Max field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsTotalLocalStorageGBDetails) SetMax(v float64) *AwsEc2LaunchTemplateDataInstanceRequirementsTotalLocalStorageGBDetails {
	s.Max = &v
	return s
}

// SetMin sets the Min field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsTotalLocalStorageGBDetails) SetMin(v float64) *AwsEc2LaunchTemplateDataInstanceRequirementsTotalLocalStorageGBDetails {
	s.Min = &v
	return s
}

// The minimum and maximum number of vCPUs for an Amazon EC2 instance.
type AwsEc2LaunchTemplateDataInstanceRequirementsVCpuCountDetails struct {
	_ struct{} `type:"structure"`

	// The maximum number of vCPUs.
	Max *int64 `type:"integer"`

	// The minimum number of vCPUs.
	Min *int64 `type:"integer"`
}

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

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

// SetMax sets the Max field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsVCpuCountDetails) SetMax(v int64) *AwsEc2LaunchTemplateDataInstanceRequirementsVCpuCountDetails {
	s.Max = &v
	return s
}

// SetMin sets the Min field's value.
func (s *AwsEc2LaunchTemplateDataInstanceRequirementsVCpuCountDetails) SetMin(v int64) *AwsEc2LaunchTemplateDataInstanceRequirementsVCpuCountDetails {
	s.Min = &v
	return s
}

// Provides details about the license configuration for an Amazon EC2 instance.
type AwsEc2LaunchTemplateDataLicenseSetDetails struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the license configuration.
	LicenseConfigurationArn *string `type:"string"`
}

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

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

// SetLicenseConfigurationArn sets the LicenseConfigurationArn field's value.
func (s *AwsEc2LaunchTemplateDataLicenseSetDetails) SetLicenseConfigurationArn(v string) *AwsEc2LaunchTemplateDataLicenseSetDetails {
	s.LicenseConfigurationArn = &v
	return s
}

// The maintenance options of an Amazon EC2 instance.
type AwsEc2LaunchTemplateDataMaintenanceOptionsDetails struct {
	_ struct{} `type:"structure"`

	// Disables the automatic recovery behavior of your instance or sets it to default.
	AutoRecovery *string `type:"string"`
}

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

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

// SetAutoRecovery sets the AutoRecovery field's value.
func (s *AwsEc2LaunchTemplateDataMaintenanceOptionsDetails) SetAutoRecovery(v string) *AwsEc2LaunchTemplateDataMaintenanceOptionsDetails {
	s.AutoRecovery = &v
	return s
}

// Specifies the metadata options for an Amazon EC2 instance.
type AwsEc2LaunchTemplateDataMetadataOptionsDetails struct {
	_ struct{} `type:"structure"`

	// Enables or disables the HTTP metadata endpoint on your instances. If the
	// parameter is not specified, the default state is enabled, and you won't be
	// able to access your instance metadata.
	HttpEndpoint *string `type:"string"`

	// Enables or disables the IPv6 endpoint for the instance metadata service.
	HttpProtocolIpv6 *string `type:"string"`

	// The desired HTTP PUT response hop limit for instance metadata requests. The
	// larger the number, the further instance metadata requests can travel.
	HttpPutResponseHopLimit *int64 `type:"integer"`

	// The state of token usage for your instance metadata requests.
	HttpTokens *string `type:"string"`

	// When set to enabled, this parameter allows access to instance tags from the
	// instance metadata. When set to disabled, it turns off access to instance
	// tags from the instance metadata. For more information, see Work with instance
	// tags in instance metadata (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#work-with-tags-in-IMDS)
	// in the Amazon EC2 User Guide.
	InstanceMetadataTags *string `type:"string"`
}

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

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

// SetHttpEndpoint sets the HttpEndpoint field's value.
func (s *AwsEc2LaunchTemplateDataMetadataOptionsDetails) SetHttpEndpoint(v string) *AwsEc2LaunchTemplateDataMetadataOptionsDetails {
	s.HttpEndpoint = &v
	return s
}

// SetHttpProtocolIpv6 sets the HttpProtocolIpv6 field's value.
func (s *AwsEc2LaunchTemplateDataMetadataOptionsDetails) SetHttpProtocolIpv6(v string) *AwsEc2LaunchTemplateDataMetadataOptionsDetails {
	s.HttpProtocolIpv6 = &v
	return s
}

// SetHttpPutResponseHopLimit sets the HttpPutResponseHopLimit field's value.
func (s *AwsEc2LaunchTemplateDataMetadataOptionsDetails) SetHttpPutResponseHopLimit(v int64) *AwsEc2LaunchTemplateDataMetadataOptionsDetails {
	s.HttpPutResponseHopLimit = &v
	return s
}

// SetHttpTokens sets the HttpTokens field's value.
func (s *AwsEc2LaunchTemplateDataMetadataOptionsDetails) SetHttpTokens(v string) *AwsEc2LaunchTemplateDataMetadataOptionsDetails {
	s.HttpTokens = &v
	return s
}

// SetInstanceMetadataTags sets the InstanceMetadataTags field's value.
func (s *AwsEc2LaunchTemplateDataMetadataOptionsDetails) SetInstanceMetadataTags(v string) *AwsEc2LaunchTemplateDataMetadataOptionsDetails {
	s.InstanceMetadataTags = &v
	return s
}

// The monitoring for an Amazon EC2 instance.
type AwsEc2LaunchTemplateDataMonitoringDetails struct {
	_ struct{} `type:"structure"`

	// Enables detailed monitoring when true is specified. Otherwise, basic monitoring
	// is enabled. For more information about detailed monitoring, see Enable or
	// turn off detailed monitoring for your instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cloudwatch-new.html)
	// in the Amazon EC2 User Guide.
	Enabled *bool `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 AwsEc2LaunchTemplateDataMonitoringDetails) String() string {
	return awsutil.Prettify(s)
}

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

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

// One or more network interfaces to attach to an Amazon EC2 instance. If you
// specify a network interface, you must specify security groups and subnets
// as part of the network interface.
type AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails struct {
	_ struct{} `type:"structure"`

	// Indicates whether to associate a Carrier IP address with eth0 for a new network
	// interface. You use this option when you launch an instance in a Wavelength
	// Zone and want to associate a Carrier IP address with the network interface.
	// For more information, see Carrier IP address (https://docs.aws.amazon.com/wavelength/latest/developerguide/how-wavelengths-work.html#provider-owned-ip)
	// in the Wavelength Developer Guide.
	AssociateCarrierIpAddress *bool `type:"boolean"`

	// Associates a public IPv4 address with eth0 for a new network interface.
	AssociatePublicIpAddress *bool `type:"boolean"`

	// Indicates whether the network interface is deleted when the instance is terminated.
	DeleteOnTermination *bool `type:"boolean"`

	// A description for the network interface.
	Description *string `type:"string"`

	// The device index for the network interface attachment.
	DeviceIndex *int64 `type:"integer"`

	// The IDs of one or more security groups.
	Groups []*string `type:"list"`

	// The type of network interface.
	InterfaceType *string `type:"string"`

	// The number of IPv4 prefixes to be automatically assigned to the network interface.
	// You cannot use this option if you use the Ipv4Prefixes option.
	Ipv4PrefixCount *int64 `type:"integer"`

	// One or more IPv4 prefixes to be assigned to the network interface. You cannot
	// use this option if you use the Ipv4PrefixCount option.
	Ipv4Prefixes []*AwsEc2LaunchTemplateDataNetworkInterfaceSetIpv4PrefixesDetails `type:"list"`

	// The number of IPv6 addresses to assign to a network interface. Amazon EC2
	// automatically selects the IPv6 addresses from the subnet range. You can't
	// use this option if you use Ipv6Addresses.
	Ipv6AddressCount *int64 `type:"integer"`

	// One or more specific IPv6 addresses from the IPv6 CIDR block range of your
	// subnet. You can't use this option if you use Ipv6AddressCount.
	Ipv6Addresses []*AwsEc2LaunchTemplateDataNetworkInterfaceSetIpv6AddressesDetails `type:"list"`

	// The number of IPv6 prefixes to be automatically assigned to the network interface.
	// You cannot use this option if you use the Ipv6Prefix option.
	Ipv6PrefixCount *int64 `type:"integer"`

	// One or more IPv6 prefixes to be assigned to the network interface. You cannot
	// use this option if you use the Ipv6PrefixCount option.
	Ipv6Prefixes []*AwsEc2LaunchTemplateDataNetworkInterfaceSetIpv6PrefixesDetails `type:"list"`

	// The index of the network card. Some instance types support multiple network
	// cards. The primary network interface must be assigned to network card index
	// 0. The default is network card index 0.
	NetworkCardIndex *int64 `type:"integer"`

	// The ID of the network interface.
	NetworkInterfaceId *string `type:"string"`

	// The primary private IPv4 address of the network interface.
	PrivateIpAddress *string `type:"string"`

	// One or more private IPv4 addresses.
	PrivateIpAddresses []*AwsEc2LaunchTemplateDataNetworkInterfaceSetPrivateIpAddressesDetails `type:"list"`

	// The number of secondary private IPv4 addresses to assign to a network interface.
	SecondaryPrivateIpAddressCount *int64 `type:"integer"`

	// The ID of the subnet for the network interface.
	SubnetId *string `type:"string"`
}

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

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

// SetAssociateCarrierIpAddress sets the AssociateCarrierIpAddress field's value.
func (s *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails) SetAssociateCarrierIpAddress(v bool) *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails {
	s.AssociateCarrierIpAddress = &v
	return s
}

// SetAssociatePublicIpAddress sets the AssociatePublicIpAddress field's value.
func (s *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails) SetAssociatePublicIpAddress(v bool) *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails {
	s.AssociatePublicIpAddress = &v
	return s
}

// SetDeleteOnTermination sets the DeleteOnTermination field's value.
func (s *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails) SetDeleteOnTermination(v bool) *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails {
	s.DeleteOnTermination = &v
	return s
}

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

// SetDeviceIndex sets the DeviceIndex field's value.
func (s *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails) SetDeviceIndex(v int64) *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails {
	s.DeviceIndex = &v
	return s
}

// SetGroups sets the Groups field's value.
func (s *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails) SetGroups(v []*string) *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails {
	s.Groups = v
	return s
}

// SetInterfaceType sets the InterfaceType field's value.
func (s *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails) SetInterfaceType(v string) *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails {
	s.InterfaceType = &v
	return s
}

// SetIpv4PrefixCount sets the Ipv4PrefixCount field's value.
func (s *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails) SetIpv4PrefixCount(v int64) *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails {
	s.Ipv4PrefixCount = &v
	return s
}

// SetIpv4Prefixes sets the Ipv4Prefixes field's value.
func (s *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails) SetIpv4Prefixes(v []*AwsEc2LaunchTemplateDataNetworkInterfaceSetIpv4PrefixesDetails) *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails {
	s.Ipv4Prefixes = v
	return s
}

// SetIpv6AddressCount sets the Ipv6AddressCount field's value.
func (s *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails) SetIpv6AddressCount(v int64) *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails {
	s.Ipv6AddressCount = &v
	return s
}

// SetIpv6Addresses sets the Ipv6Addresses field's value.
func (s *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails) SetIpv6Addresses(v []*AwsEc2LaunchTemplateDataNetworkInterfaceSetIpv6AddressesDetails) *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails {
	s.Ipv6Addresses = v
	return s
}

// SetIpv6PrefixCount sets the Ipv6PrefixCount field's value.
func (s *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails) SetIpv6PrefixCount(v int64) *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails {
	s.Ipv6PrefixCount = &v
	return s
}

// SetIpv6Prefixes sets the Ipv6Prefixes field's value.
func (s *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails) SetIpv6Prefixes(v []*AwsEc2LaunchTemplateDataNetworkInterfaceSetIpv6PrefixesDetails) *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails {
	s.Ipv6Prefixes = v
	return s
}

// SetNetworkCardIndex sets the NetworkCardIndex field's value.
func (s *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails) SetNetworkCardIndex(v int64) *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails {
	s.NetworkCardIndex = &v
	return s
}

// SetNetworkInterfaceId sets the NetworkInterfaceId field's value.
func (s *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails) SetNetworkInterfaceId(v string) *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails {
	s.NetworkInterfaceId = &v
	return s
}

// SetPrivateIpAddress sets the PrivateIpAddress field's value.
func (s *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails) SetPrivateIpAddress(v string) *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails {
	s.PrivateIpAddress = &v
	return s
}

// SetPrivateIpAddresses sets the PrivateIpAddresses field's value.
func (s *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails) SetPrivateIpAddresses(v []*AwsEc2LaunchTemplateDataNetworkInterfaceSetPrivateIpAddressesDetails) *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails {
	s.PrivateIpAddresses = v
	return s
}

// SetSecondaryPrivateIpAddressCount sets the SecondaryPrivateIpAddressCount field's value.
func (s *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails) SetSecondaryPrivateIpAddressCount(v int64) *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails {
	s.SecondaryPrivateIpAddressCount = &v
	return s
}

// SetSubnetId sets the SubnetId field's value.
func (s *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails) SetSubnetId(v string) *AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails {
	s.SubnetId = &v
	return s
}

// Provides details on one or more IPv4 prefixes for a network interface.
type AwsEc2LaunchTemplateDataNetworkInterfaceSetIpv4PrefixesDetails struct {
	_ struct{} `type:"structure"`

	// The IPv4 prefix. For more information, see Assigning prefixes to Amazon EC2
	// network interfaces (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-prefix-eni.html)
	// in the Amazon Elastic Compute Cloud User Guide.
	Ipv4Prefix *string `type:"string"`
}

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

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

// SetIpv4Prefix sets the Ipv4Prefix field's value.
func (s *AwsEc2LaunchTemplateDataNetworkInterfaceSetIpv4PrefixesDetails) SetIpv4Prefix(v string) *AwsEc2LaunchTemplateDataNetworkInterfaceSetIpv4PrefixesDetails {
	s.Ipv4Prefix = &v
	return s
}

// Specifies an IPv6 address in an Amazon EC2 launch template.
type AwsEc2LaunchTemplateDataNetworkInterfaceSetIpv6AddressesDetails struct {
	_ struct{} `type:"structure"`

	// One or more specific IPv6 addresses from the IPv6 CIDR block range of your
	// subnet.
	Ipv6Address *string `type:"string"`
}

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

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

// SetIpv6Address sets the Ipv6Address field's value.
func (s *AwsEc2LaunchTemplateDataNetworkInterfaceSetIpv6AddressesDetails) SetIpv6Address(v string) *AwsEc2LaunchTemplateDataNetworkInterfaceSetIpv6AddressesDetails {
	s.Ipv6Address = &v
	return s
}

// Provides details on one or more IPv6 prefixes to be assigned to the network
// interface.
type AwsEc2LaunchTemplateDataNetworkInterfaceSetIpv6PrefixesDetails struct {
	_ struct{} `type:"structure"`

	// The IPv6 prefix.
	Ipv6Prefix *string `type:"string"`
}

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

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

// SetIpv6Prefix sets the Ipv6Prefix field's value.
func (s *AwsEc2LaunchTemplateDataNetworkInterfaceSetIpv6PrefixesDetails) SetIpv6Prefix(v string) *AwsEc2LaunchTemplateDataNetworkInterfaceSetIpv6PrefixesDetails {
	s.Ipv6Prefix = &v
	return s
}

// One or more private IPv4 addresses.
type AwsEc2LaunchTemplateDataNetworkInterfaceSetPrivateIpAddressesDetails struct {
	_ struct{} `type:"structure"`

	// Indicates whether the private IPv4 address is the primary private IPv4 address.
	// Only one IPv4 address can be designated as primary.
	Primary *bool `type:"boolean"`

	// The private IPv4 address.
	PrivateIpAddress *string `type:"string"`
}

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

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

// SetPrimary sets the Primary field's value.
func (s *AwsEc2LaunchTemplateDataNetworkInterfaceSetPrivateIpAddressesDetails) SetPrimary(v bool) *AwsEc2LaunchTemplateDataNetworkInterfaceSetPrivateIpAddressesDetails {
	s.Primary = &v
	return s
}

// SetPrivateIpAddress sets the PrivateIpAddress field's value.
func (s *AwsEc2LaunchTemplateDataNetworkInterfaceSetPrivateIpAddressesDetails) SetPrivateIpAddress(v string) *AwsEc2LaunchTemplateDataNetworkInterfaceSetPrivateIpAddressesDetails {
	s.PrivateIpAddress = &v
	return s
}

// Provides details about the placement of an Amazon EC2 instance.
type AwsEc2LaunchTemplateDataPlacementDetails struct {
	_ struct{} `type:"structure"`

	// The affinity setting for an instance on an EC2 Dedicated Host.
	Affinity *string `type:"string"`

	// The Availability Zone for the instance.
	AvailabilityZone *string `type:"string"`

	// The name of the placement group for the instance.
	GroupName *string `type:"string"`

	// The ID of the Dedicated Host for the instance.
	HostId *string `type:"string"`

	// The Amazon Resource Name (ARN) of the host resource group in which to launch
	// the instances.
	HostResourceGroupArn *string `type:"string"`

	// The number of the partition the instance should launch in.
	PartitionNumber *int64 `type:"integer"`

	// Reserved for future use.
	SpreadDomain *string `type:"string"`

	// The tenancy of the instance (if the instance is running in a VPC). An instance
	// with a tenancy of dedicated runs on single-tenant hardware.
	Tenancy *string `type:"string"`
}

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

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

// SetAffinity sets the Affinity field's value.
func (s *AwsEc2LaunchTemplateDataPlacementDetails) SetAffinity(v string) *AwsEc2LaunchTemplateDataPlacementDetails {
	s.Affinity = &v
	return s
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *AwsEc2LaunchTemplateDataPlacementDetails) SetAvailabilityZone(v string) *AwsEc2LaunchTemplateDataPlacementDetails {
	s.AvailabilityZone = &v
	return s
}

// SetGroupName sets the GroupName field's value.
func (s *AwsEc2LaunchTemplateDataPlacementDetails) SetGroupName(v string) *AwsEc2LaunchTemplateDataPlacementDetails {
	s.GroupName = &v
	return s
}

// SetHostId sets the HostId field's value.
func (s *AwsEc2LaunchTemplateDataPlacementDetails) SetHostId(v string) *AwsEc2LaunchTemplateDataPlacementDetails {
	s.HostId = &v
	return s
}

// SetHostResourceGroupArn sets the HostResourceGroupArn field's value.
func (s *AwsEc2LaunchTemplateDataPlacementDetails) SetHostResourceGroupArn(v string) *AwsEc2LaunchTemplateDataPlacementDetails {
	s.HostResourceGroupArn = &v
	return s
}

// SetPartitionNumber sets the PartitionNumber field's value.
func (s *AwsEc2LaunchTemplateDataPlacementDetails) SetPartitionNumber(v int64) *AwsEc2LaunchTemplateDataPlacementDetails {
	s.PartitionNumber = &v
	return s
}

// SetSpreadDomain sets the SpreadDomain field's value.
func (s *AwsEc2LaunchTemplateDataPlacementDetails) SetSpreadDomain(v string) *AwsEc2LaunchTemplateDataPlacementDetails {
	s.SpreadDomain = &v
	return s
}

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

// Describes the options for Amazon EC2 instance hostnames.
type AwsEc2LaunchTemplateDataPrivateDnsNameOptionsDetails struct {
	_ struct{} `type:"structure"`

	// Indicates whether to respond to DNS queries for instance hostnames with DNS
	// AAAA records.
	EnableResourceNameDnsAAAARecord *bool `type:"boolean"`

	// Indicates whether to respond to DNS queries for instance hostnames with DNS
	// A records.
	EnableResourceNameDnsARecord *bool `type:"boolean"`

	// The type of hostname for EC2 instances.
	HostnameType *string `type:"string"`
}

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

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

// SetEnableResourceNameDnsAAAARecord sets the EnableResourceNameDnsAAAARecord field's value.
func (s *AwsEc2LaunchTemplateDataPrivateDnsNameOptionsDetails) SetEnableResourceNameDnsAAAARecord(v bool) *AwsEc2LaunchTemplateDataPrivateDnsNameOptionsDetails {
	s.EnableResourceNameDnsAAAARecord = &v
	return s
}

// SetEnableResourceNameDnsARecord sets the EnableResourceNameDnsARecord field's value.
func (s *AwsEc2LaunchTemplateDataPrivateDnsNameOptionsDetails) SetEnableResourceNameDnsARecord(v bool) *AwsEc2LaunchTemplateDataPrivateDnsNameOptionsDetails {
	s.EnableResourceNameDnsARecord = &v
	return s
}

// SetHostnameType sets the HostnameType field's value.
func (s *AwsEc2LaunchTemplateDataPrivateDnsNameOptionsDetails) SetHostnameType(v string) *AwsEc2LaunchTemplateDataPrivateDnsNameOptionsDetails {
	s.HostnameType = &v
	return s
}

// Specifies the properties for creating an Amazon Elastic Compute Cloud (Amazon
// EC2) launch template.
type AwsEc2LaunchTemplateDetails struct {
	_ struct{} `type:"structure"`

	// The default version of the launch template.
	DefaultVersionNumber *int64 `type:"long"`

	// An ID for the launch template.
	Id *string `type:"string"`

	// The latest version of the launch template.
	LatestVersionNumber *int64 `type:"long"`

	// The information to include in the launch template.
	LaunchTemplateData *AwsEc2LaunchTemplateDataDetails `type:"structure"`

	// A name for the launch template.
	LaunchTemplateName *string `type:"string"`
}

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

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

// SetDefaultVersionNumber sets the DefaultVersionNumber field's value.
func (s *AwsEc2LaunchTemplateDetails) SetDefaultVersionNumber(v int64) *AwsEc2LaunchTemplateDetails {
	s.DefaultVersionNumber = &v
	return s
}

// SetId sets the Id field's value.
func (s *AwsEc2LaunchTemplateDetails) SetId(v string) *AwsEc2LaunchTemplateDetails {
	s.Id = &v
	return s
}

// SetLatestVersionNumber sets the LatestVersionNumber field's value.
func (s *AwsEc2LaunchTemplateDetails) SetLatestVersionNumber(v int64) *AwsEc2LaunchTemplateDetails {
	s.LatestVersionNumber = &v
	return s
}

// SetLaunchTemplateData sets the LaunchTemplateData field's value.
func (s *AwsEc2LaunchTemplateDetails) SetLaunchTemplateData(v *AwsEc2LaunchTemplateDataDetails) *AwsEc2LaunchTemplateDetails {
	s.LaunchTemplateData = v
	return s
}

// SetLaunchTemplateName sets the LaunchTemplateName field's value.
func (s *AwsEc2LaunchTemplateDetails) SetLaunchTemplateName(v string) *AwsEc2LaunchTemplateDetails {
	s.LaunchTemplateName = &v
	return s
}

// An association between the network ACL and a subnet.
type AwsEc2NetworkAclAssociation struct {
	_ struct{} `type:"structure"`

	// The identifier of the association between the network ACL and the subnet.
	NetworkAclAssociationId *string `type:"string"`

	// The identifier of the network ACL.
	NetworkAclId *string `type:"string"`

	// The identifier of the subnet that is associated with the network ACL.
	SubnetId *string `type:"string"`
}

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

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

// SetNetworkAclAssociationId sets the NetworkAclAssociationId field's value.
func (s *AwsEc2NetworkAclAssociation) SetNetworkAclAssociationId(v string) *AwsEc2NetworkAclAssociation {
	s.NetworkAclAssociationId = &v
	return s
}

// SetNetworkAclId sets the NetworkAclId field's value.
func (s *AwsEc2NetworkAclAssociation) SetNetworkAclId(v string) *AwsEc2NetworkAclAssociation {
	s.NetworkAclId = &v
	return s
}

// SetSubnetId sets the SubnetId field's value.
func (s *AwsEc2NetworkAclAssociation) SetSubnetId(v string) *AwsEc2NetworkAclAssociation {
	s.SubnetId = &v
	return s
}

// Contains details about an Amazon EC2 network access control list (ACL).
type AwsEc2NetworkAclDetails struct {
	_ struct{} `type:"structure"`

	// Associations between the network ACL and subnets.
	Associations []*AwsEc2NetworkAclAssociation `type:"list"`

	// The set of rules in the network ACL.
	Entries []*AwsEc2NetworkAclEntry `type:"list"`

	// Whether this is the default network ACL for the VPC.
	IsDefault *bool `type:"boolean"`

	// The identifier of the network ACL.
	NetworkAclId *string `type:"string"`

	// The identifier of the Amazon Web Services account that owns the network ACL.
	OwnerId *string `type:"string"`

	// The identifier of the VPC for the network ACL.
	VpcId *string `type:"string"`
}

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

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

// SetAssociations sets the Associations field's value.
func (s *AwsEc2NetworkAclDetails) SetAssociations(v []*AwsEc2NetworkAclAssociation) *AwsEc2NetworkAclDetails {
	s.Associations = v
	return s
}

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

// SetIsDefault sets the IsDefault field's value.
func (s *AwsEc2NetworkAclDetails) SetIsDefault(v bool) *AwsEc2NetworkAclDetails {
	s.IsDefault = &v
	return s
}

// SetNetworkAclId sets the NetworkAclId field's value.
func (s *AwsEc2NetworkAclDetails) SetNetworkAclId(v string) *AwsEc2NetworkAclDetails {
	s.NetworkAclId = &v
	return s
}

// SetOwnerId sets the OwnerId field's value.
func (s *AwsEc2NetworkAclDetails) SetOwnerId(v string) *AwsEc2NetworkAclDetails {
	s.OwnerId = &v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *AwsEc2NetworkAclDetails) SetVpcId(v string) *AwsEc2NetworkAclDetails {
	s.VpcId = &v
	return s
}

// A rule for the network ACL. Each rule allows or denies access based on the
// IP address, traffic direction, port, and protocol.
type AwsEc2NetworkAclEntry struct {
	_ struct{} `type:"structure"`

	// The IPV4 network range for which to deny or allow access.
	CidrBlock *string `type:"string"`

	// Whether the rule is an egress rule. An egress rule is a rule that applies
	// to traffic that leaves the subnet.
	Egress *bool `type:"boolean"`

	// The Internet Control Message Protocol (ICMP) type and code for which to deny
	// or allow access.
	IcmpTypeCode *IcmpTypeCode `type:"structure"`

	// The IPV6 network range for which to deny or allow access.
	Ipv6CidrBlock *string `type:"string"`

	// For TCP or UDP protocols, the range of ports that the rule applies to.
	PortRange *PortRangeFromTo `type:"structure"`

	// The protocol that the rule applies to. To deny or allow access to all protocols,
	// use the value -1.
	Protocol *string `type:"string"`

	// Whether the rule is used to allow access or deny access.
	RuleAction *string `type:"string"`

	// The rule number. The rules are processed in order by their number.
	RuleNumber *int64 `type:"integer"`
}

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

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

// SetCidrBlock sets the CidrBlock field's value.
func (s *AwsEc2NetworkAclEntry) SetCidrBlock(v string) *AwsEc2NetworkAclEntry {
	s.CidrBlock = &v
	return s
}

// SetEgress sets the Egress field's value.
func (s *AwsEc2NetworkAclEntry) SetEgress(v bool) *AwsEc2NetworkAclEntry {
	s.Egress = &v
	return s
}

// SetIcmpTypeCode sets the IcmpTypeCode field's value.
func (s *AwsEc2NetworkAclEntry) SetIcmpTypeCode(v *IcmpTypeCode) *AwsEc2NetworkAclEntry {
	s.IcmpTypeCode = v
	return s
}

// SetIpv6CidrBlock sets the Ipv6CidrBlock field's value.
func (s *AwsEc2NetworkAclEntry) SetIpv6CidrBlock(v string) *AwsEc2NetworkAclEntry {
	s.Ipv6CidrBlock = &v
	return s
}

// SetPortRange sets the PortRange field's value.
func (s *AwsEc2NetworkAclEntry) SetPortRange(v *PortRangeFromTo) *AwsEc2NetworkAclEntry {
	s.PortRange = v
	return s
}

// SetProtocol sets the Protocol field's value.
func (s *AwsEc2NetworkAclEntry) SetProtocol(v string) *AwsEc2NetworkAclEntry {
	s.Protocol = &v
	return s
}

// SetRuleAction sets the RuleAction field's value.
func (s *AwsEc2NetworkAclEntry) SetRuleAction(v string) *AwsEc2NetworkAclEntry {
	s.RuleAction = &v
	return s
}

// SetRuleNumber sets the RuleNumber field's value.
func (s *AwsEc2NetworkAclEntry) SetRuleNumber(v int64) *AwsEc2NetworkAclEntry {
	s.RuleNumber = &v
	return s
}

// Information about the network interface attachment.
type AwsEc2NetworkInterfaceAttachment struct {
	_ struct{} `type:"structure"`

	// Indicates when the attachment initiated.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	AttachTime *string `type:"string"`

	// The identifier of the network interface attachment
	AttachmentId *string `type:"string"`

	// Indicates whether the network interface is deleted when the instance is terminated.
	DeleteOnTermination *bool `type:"boolean"`

	// The device index of the network interface attachment on the instance.
	DeviceIndex *int64 `type:"integer"`

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

	// The Amazon Web Services account ID of the owner of the instance.
	InstanceOwnerId *string `type:"string"`

	// The attachment state.
	//
	// Valid values: attaching | attached | detaching | detached
	Status *string `type:"string"`
}

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

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

// SetAttachTime sets the AttachTime field's value.
func (s *AwsEc2NetworkInterfaceAttachment) SetAttachTime(v string) *AwsEc2NetworkInterfaceAttachment {
	s.AttachTime = &v
	return s
}

// SetAttachmentId sets the AttachmentId field's value.
func (s *AwsEc2NetworkInterfaceAttachment) SetAttachmentId(v string) *AwsEc2NetworkInterfaceAttachment {
	s.AttachmentId = &v
	return s
}

// SetDeleteOnTermination sets the DeleteOnTermination field's value.
func (s *AwsEc2NetworkInterfaceAttachment) SetDeleteOnTermination(v bool) *AwsEc2NetworkInterfaceAttachment {
	s.DeleteOnTermination = &v
	return s
}

// SetDeviceIndex sets the DeviceIndex field's value.
func (s *AwsEc2NetworkInterfaceAttachment) SetDeviceIndex(v int64) *AwsEc2NetworkInterfaceAttachment {
	s.DeviceIndex = &v
	return s
}

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

// SetInstanceOwnerId sets the InstanceOwnerId field's value.
func (s *AwsEc2NetworkInterfaceAttachment) SetInstanceOwnerId(v string) *AwsEc2NetworkInterfaceAttachment {
	s.InstanceOwnerId = &v
	return s
}

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

// Details about the network interface
type AwsEc2NetworkInterfaceDetails struct {
	_ struct{} `type:"structure"`

	// The network interface attachment.
	Attachment *AwsEc2NetworkInterfaceAttachment `type:"structure"`

	// The IPv6 addresses associated with the network interface.
	IpV6Addresses []*AwsEc2NetworkInterfaceIpV6AddressDetail `type:"list"`

	// The ID of the network interface.
	NetworkInterfaceId *string `type:"string"`

	// The private IPv4 addresses associated with the network interface.
	PrivateIpAddresses []*AwsEc2NetworkInterfacePrivateIpAddressDetail `type:"list"`

	// The public DNS name of the network interface.
	PublicDnsName *string `type:"string"`

	// The address of the Elastic IP address bound to the network interface.
	PublicIp *string `type:"string"`

	// Security groups for the network interface.
	SecurityGroups []*AwsEc2NetworkInterfaceSecurityGroup `type:"list"`

	// Indicates whether traffic to or from the instance is validated.
	SourceDestCheck *bool `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 AwsEc2NetworkInterfaceDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetAttachment sets the Attachment field's value.
func (s *AwsEc2NetworkInterfaceDetails) SetAttachment(v *AwsEc2NetworkInterfaceAttachment) *AwsEc2NetworkInterfaceDetails {
	s.Attachment = v
	return s
}

// SetIpV6Addresses sets the IpV6Addresses field's value.
func (s *AwsEc2NetworkInterfaceDetails) SetIpV6Addresses(v []*AwsEc2NetworkInterfaceIpV6AddressDetail) *AwsEc2NetworkInterfaceDetails {
	s.IpV6Addresses = v
	return s
}

// SetNetworkInterfaceId sets the NetworkInterfaceId field's value.
func (s *AwsEc2NetworkInterfaceDetails) SetNetworkInterfaceId(v string) *AwsEc2NetworkInterfaceDetails {
	s.NetworkInterfaceId = &v
	return s
}

// SetPrivateIpAddresses sets the PrivateIpAddresses field's value.
func (s *AwsEc2NetworkInterfaceDetails) SetPrivateIpAddresses(v []*AwsEc2NetworkInterfacePrivateIpAddressDetail) *AwsEc2NetworkInterfaceDetails {
	s.PrivateIpAddresses = v
	return s
}

// SetPublicDnsName sets the PublicDnsName field's value.
func (s *AwsEc2NetworkInterfaceDetails) SetPublicDnsName(v string) *AwsEc2NetworkInterfaceDetails {
	s.PublicDnsName = &v
	return s
}

// SetPublicIp sets the PublicIp field's value.
func (s *AwsEc2NetworkInterfaceDetails) SetPublicIp(v string) *AwsEc2NetworkInterfaceDetails {
	s.PublicIp = &v
	return s
}

// SetSecurityGroups sets the SecurityGroups field's value.
func (s *AwsEc2NetworkInterfaceDetails) SetSecurityGroups(v []*AwsEc2NetworkInterfaceSecurityGroup) *AwsEc2NetworkInterfaceDetails {
	s.SecurityGroups = v
	return s
}

// SetSourceDestCheck sets the SourceDestCheck field's value.
func (s *AwsEc2NetworkInterfaceDetails) SetSourceDestCheck(v bool) *AwsEc2NetworkInterfaceDetails {
	s.SourceDestCheck = &v
	return s
}

// Provides information about an IPV6 address that is associated with the network
// interface.
type AwsEc2NetworkInterfaceIpV6AddressDetail struct {
	_ struct{} `type:"structure"`

	// The IPV6 address.
	IpV6Address *string `type:"string"`
}

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

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

// SetIpV6Address sets the IpV6Address field's value.
func (s *AwsEc2NetworkInterfaceIpV6AddressDetail) SetIpV6Address(v string) *AwsEc2NetworkInterfaceIpV6AddressDetail {
	s.IpV6Address = &v
	return s
}

// Provides information about a private IPv4 address that is with the network
// interface.
type AwsEc2NetworkInterfacePrivateIpAddressDetail struct {
	_ struct{} `type:"structure"`

	// The private DNS name for the IP address.
	PrivateDnsName *string `type:"string"`

	// The IP address.
	PrivateIpAddress *string `type:"string"`
}

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

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

// SetPrivateDnsName sets the PrivateDnsName field's value.
func (s *AwsEc2NetworkInterfacePrivateIpAddressDetail) SetPrivateDnsName(v string) *AwsEc2NetworkInterfacePrivateIpAddressDetail {
	s.PrivateDnsName = &v
	return s
}

// SetPrivateIpAddress sets the PrivateIpAddress field's value.
func (s *AwsEc2NetworkInterfacePrivateIpAddressDetail) SetPrivateIpAddress(v string) *AwsEc2NetworkInterfacePrivateIpAddressDetail {
	s.PrivateIpAddress = &v
	return s
}

// A security group associated with the network interface.
type AwsEc2NetworkInterfaceSecurityGroup struct {
	_ struct{} `type:"structure"`

	// The ID of the security group.
	GroupId *string `type:"string"`

	// The name of the security group.
	GroupName *string `type:"string"`
}

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

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

// SetGroupId sets the GroupId field's value.
func (s *AwsEc2NetworkInterfaceSecurityGroup) SetGroupId(v string) *AwsEc2NetworkInterfaceSecurityGroup {
	s.GroupId = &v
	return s
}

// SetGroupName sets the GroupName field's value.
func (s *AwsEc2NetworkInterfaceSecurityGroup) SetGroupName(v string) *AwsEc2NetworkInterfaceSecurityGroup {
	s.GroupName = &v
	return s
}

// Provides details about a route table for the specified VPC.
type AwsEc2RouteTableDetails struct {
	_ struct{} `type:"structure"`

	// The associations between a route table and one or more subnets or a gateway.
	AssociationSet []*AssociationSetDetails `type:"list"`

	// The ID of the Amazon Web Services account that owns the route table.
	OwnerId *string `type:"string"`

	// Describes a virtual private gateway propagating route.
	PropagatingVgwSet []*PropagatingVgwSetDetails `type:"list"`

	// The routes in the route table.
	RouteSet []*RouteSetDetails `type:"list"`

	// The ID of the route table.
	RouteTableId *string `type:"string"`

	// The ID of the virtual private cloud (VPC).
	VpcId *string `type:"string"`
}

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

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

// SetAssociationSet sets the AssociationSet field's value.
func (s *AwsEc2RouteTableDetails) SetAssociationSet(v []*AssociationSetDetails) *AwsEc2RouteTableDetails {
	s.AssociationSet = v
	return s
}

// SetOwnerId sets the OwnerId field's value.
func (s *AwsEc2RouteTableDetails) SetOwnerId(v string) *AwsEc2RouteTableDetails {
	s.OwnerId = &v
	return s
}

// SetPropagatingVgwSet sets the PropagatingVgwSet field's value.
func (s *AwsEc2RouteTableDetails) SetPropagatingVgwSet(v []*PropagatingVgwSetDetails) *AwsEc2RouteTableDetails {
	s.PropagatingVgwSet = v
	return s
}

// SetRouteSet sets the RouteSet field's value.
func (s *AwsEc2RouteTableDetails) SetRouteSet(v []*RouteSetDetails) *AwsEc2RouteTableDetails {
	s.RouteSet = v
	return s
}

// SetRouteTableId sets the RouteTableId field's value.
func (s *AwsEc2RouteTableDetails) SetRouteTableId(v string) *AwsEc2RouteTableDetails {
	s.RouteTableId = &v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *AwsEc2RouteTableDetails) SetVpcId(v string) *AwsEc2RouteTableDetails {
	s.VpcId = &v
	return s
}

// Details about an Amazon EC2 security group.
type AwsEc2SecurityGroupDetails struct {
	_ struct{} `type:"structure"`

	// The ID of the security group.
	GroupId *string `type:"string"`

	// The name of the security group.
	GroupName *string `type:"string"`

	// The inbound rules associated with the security group.
	IpPermissions []*AwsEc2SecurityGroupIpPermission `type:"list"`

	// [VPC only] The outbound rules associated with the security group.
	IpPermissionsEgress []*AwsEc2SecurityGroupIpPermission `type:"list"`

	// The Amazon Web Services account ID of the owner of the security group.
	OwnerId *string `type:"string"`

	// [VPC only] The ID of the VPC for the security group.
	VpcId *string `type:"string"`
}

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

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

// SetGroupId sets the GroupId field's value.
func (s *AwsEc2SecurityGroupDetails) SetGroupId(v string) *AwsEc2SecurityGroupDetails {
	s.GroupId = &v
	return s
}

// SetGroupName sets the GroupName field's value.
func (s *AwsEc2SecurityGroupDetails) SetGroupName(v string) *AwsEc2SecurityGroupDetails {
	s.GroupName = &v
	return s
}

// SetIpPermissions sets the IpPermissions field's value.
func (s *AwsEc2SecurityGroupDetails) SetIpPermissions(v []*AwsEc2SecurityGroupIpPermission) *AwsEc2SecurityGroupDetails {
	s.IpPermissions = v
	return s
}

// SetIpPermissionsEgress sets the IpPermissionsEgress field's value.
func (s *AwsEc2SecurityGroupDetails) SetIpPermissionsEgress(v []*AwsEc2SecurityGroupIpPermission) *AwsEc2SecurityGroupDetails {
	s.IpPermissionsEgress = v
	return s
}

// SetOwnerId sets the OwnerId field's value.
func (s *AwsEc2SecurityGroupDetails) SetOwnerId(v string) *AwsEc2SecurityGroupDetails {
	s.OwnerId = &v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *AwsEc2SecurityGroupDetails) SetVpcId(v string) *AwsEc2SecurityGroupDetails {
	s.VpcId = &v
	return s
}

// An IP permission for an EC2 security group.
type AwsEc2SecurityGroupIpPermission struct {
	_ struct{} `type:"structure"`

	// The start of the port range for the TCP and UDP protocols, or an ICMP/ICMPv6
	// type number.
	//
	// A value of -1 indicates all ICMP/ICMPv6 types. If you specify all ICMP/ICMPv6
	// types, you must specify all codes.
	FromPort *int64 `type:"integer"`

	// The IP protocol name (tcp, udp, icmp, icmpv6) or number.
	//
	// [VPC only] Use -1 to specify all protocols.
	//
	// When authorizing security group rules, specifying -1 or a protocol number
	// other than tcp, udp, icmp, or icmpv6 allows traffic on all ports, regardless
	// of any port range you specify.
	//
	// For tcp, udp, and icmp, you must specify a port range.
	//
	// For icmpv6, the port range is optional. If you omit the port range, traffic
	// for all types and codes is allowed.
	IpProtocol *string `type:"string"`

	// The IPv4 ranges.
	IpRanges []*AwsEc2SecurityGroupIpRange `type:"list"`

	// The IPv6 ranges.
	Ipv6Ranges []*AwsEc2SecurityGroupIpv6Range `type:"list"`

	// [VPC only] The prefix list IDs for an Amazon Web Services service. With outbound
	// rules, this is the Amazon Web Services service to access through a VPC endpoint
	// from instances associated with the security group.
	PrefixListIds []*AwsEc2SecurityGroupPrefixListId `type:"list"`

	// The end of the port range for the TCP and UDP protocols, or an ICMP/ICMPv6
	// code.
	//
	// A value of -1 indicates all ICMP/ICMPv6 codes. If you specify all ICMP/ICMPv6
	// types, you must specify all codes.
	ToPort *int64 `type:"integer"`

	// The security group and Amazon Web Services account ID pairs.
	UserIdGroupPairs []*AwsEc2SecurityGroupUserIdGroupPair `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 AwsEc2SecurityGroupIpPermission) String() string {
	return awsutil.Prettify(s)
}

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

// SetFromPort sets the FromPort field's value.
func (s *AwsEc2SecurityGroupIpPermission) SetFromPort(v int64) *AwsEc2SecurityGroupIpPermission {
	s.FromPort = &v
	return s
}

// SetIpProtocol sets the IpProtocol field's value.
func (s *AwsEc2SecurityGroupIpPermission) SetIpProtocol(v string) *AwsEc2SecurityGroupIpPermission {
	s.IpProtocol = &v
	return s
}

// SetIpRanges sets the IpRanges field's value.
func (s *AwsEc2SecurityGroupIpPermission) SetIpRanges(v []*AwsEc2SecurityGroupIpRange) *AwsEc2SecurityGroupIpPermission {
	s.IpRanges = v
	return s
}

// SetIpv6Ranges sets the Ipv6Ranges field's value.
func (s *AwsEc2SecurityGroupIpPermission) SetIpv6Ranges(v []*AwsEc2SecurityGroupIpv6Range) *AwsEc2SecurityGroupIpPermission {
	s.Ipv6Ranges = v
	return s
}

// SetPrefixListIds sets the PrefixListIds field's value.
func (s *AwsEc2SecurityGroupIpPermission) SetPrefixListIds(v []*AwsEc2SecurityGroupPrefixListId) *AwsEc2SecurityGroupIpPermission {
	s.PrefixListIds = v
	return s
}

// SetToPort sets the ToPort field's value.
func (s *AwsEc2SecurityGroupIpPermission) SetToPort(v int64) *AwsEc2SecurityGroupIpPermission {
	s.ToPort = &v
	return s
}

// SetUserIdGroupPairs sets the UserIdGroupPairs field's value.
func (s *AwsEc2SecurityGroupIpPermission) SetUserIdGroupPairs(v []*AwsEc2SecurityGroupUserIdGroupPair) *AwsEc2SecurityGroupIpPermission {
	s.UserIdGroupPairs = v
	return s
}

// A range of IPv4 addresses.
type AwsEc2SecurityGroupIpRange struct {
	_ struct{} `type:"structure"`

	// The IPv4 CIDR range. You can specify either a CIDR range or a source security
	// group, but not both. To specify a single IPv4 address, use the /32 prefix
	// length.
	CidrIp *string `type:"string"`
}

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

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

// SetCidrIp sets the CidrIp field's value.
func (s *AwsEc2SecurityGroupIpRange) SetCidrIp(v string) *AwsEc2SecurityGroupIpRange {
	s.CidrIp = &v
	return s
}

// A range of IPv6 addresses.
type AwsEc2SecurityGroupIpv6Range struct {
	_ struct{} `type:"structure"`

	// The IPv6 CIDR range. You can specify either a CIDR range or a source security
	// group, but not both. To specify a single IPv6 address, use the /128 prefix
	// length.
	CidrIpv6 *string `type:"string"`
}

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

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

// SetCidrIpv6 sets the CidrIpv6 field's value.
func (s *AwsEc2SecurityGroupIpv6Range) SetCidrIpv6(v string) *AwsEc2SecurityGroupIpv6Range {
	s.CidrIpv6 = &v
	return s
}

// A prefix list ID.
type AwsEc2SecurityGroupPrefixListId struct {
	_ struct{} `type:"structure"`

	// The ID of the prefix.
	PrefixListId *string `type:"string"`
}

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

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

// SetPrefixListId sets the PrefixListId field's value.
func (s *AwsEc2SecurityGroupPrefixListId) SetPrefixListId(v string) *AwsEc2SecurityGroupPrefixListId {
	s.PrefixListId = &v
	return s
}

// A relationship between a security group and a user.
type AwsEc2SecurityGroupUserIdGroupPair struct {
	_ struct{} `type:"structure"`

	// The ID of the security group.
	GroupId *string `type:"string"`

	// The name of the security group.
	GroupName *string `type:"string"`

	// The status of a VPC peering connection, if applicable.
	PeeringStatus *string `type:"string"`

	// The ID of an Amazon Web Services account.
	//
	// For a referenced security group in another VPC, the account ID of the referenced
	// security group is returned in the response. If the referenced security group
	// is deleted, this value is not returned.
	//
	// [EC2-Classic] Required when adding or removing rules that reference a security
	// group in another VPC.
	UserId *string `type:"string"`

	// The ID of the VPC for the referenced security group, if applicable.
	VpcId *string `type:"string"`

	// The ID of the VPC peering connection, if applicable.
	VpcPeeringConnectionId *string `type:"string"`
}

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

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

// SetGroupId sets the GroupId field's value.
func (s *AwsEc2SecurityGroupUserIdGroupPair) SetGroupId(v string) *AwsEc2SecurityGroupUserIdGroupPair {
	s.GroupId = &v
	return s
}

// SetGroupName sets the GroupName field's value.
func (s *AwsEc2SecurityGroupUserIdGroupPair) SetGroupName(v string) *AwsEc2SecurityGroupUserIdGroupPair {
	s.GroupName = &v
	return s
}

// SetPeeringStatus sets the PeeringStatus field's value.
func (s *AwsEc2SecurityGroupUserIdGroupPair) SetPeeringStatus(v string) *AwsEc2SecurityGroupUserIdGroupPair {
	s.PeeringStatus = &v
	return s
}

// SetUserId sets the UserId field's value.
func (s *AwsEc2SecurityGroupUserIdGroupPair) SetUserId(v string) *AwsEc2SecurityGroupUserIdGroupPair {
	s.UserId = &v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *AwsEc2SecurityGroupUserIdGroupPair) SetVpcId(v string) *AwsEc2SecurityGroupUserIdGroupPair {
	s.VpcId = &v
	return s
}

// SetVpcPeeringConnectionId sets the VpcPeeringConnectionId field's value.
func (s *AwsEc2SecurityGroupUserIdGroupPair) SetVpcPeeringConnectionId(v string) *AwsEc2SecurityGroupUserIdGroupPair {
	s.VpcPeeringConnectionId = &v
	return s
}

// Contains information about a subnet in Amazon EC2.
type AwsEc2SubnetDetails struct {
	_ struct{} `type:"structure"`

	// Whether to assign an IPV6 address to a network interface that is created
	// in this subnet.
	AssignIpv6AddressOnCreation *bool `type:"boolean"`

	// The Availability Zone for the subnet.
	AvailabilityZone *string `type:"string"`

	// The identifier of the Availability Zone for the subnet.
	AvailabilityZoneId *string `type:"string"`

	// The number of available IPV4 addresses in the subnet. Does not include addresses
	// for stopped instances.
	AvailableIpAddressCount *int64 `type:"integer"`

	// The IPV4 CIDR block that is assigned to the subnet.
	CidrBlock *string `type:"string"`

	// Whether this subnet is the default subnet for the Availability Zone.
	DefaultForAz *bool `type:"boolean"`

	// The IPV6 CIDR blocks that are associated with the subnet.
	Ipv6CidrBlockAssociationSet []*Ipv6CidrBlockAssociation `type:"list"`

	// Whether instances in this subnet receive a public IP address.
	MapPublicIpOnLaunch *bool `type:"boolean"`

	// The identifier of the Amazon Web Services account that owns the subnet.
	OwnerId *string `type:"string"`

	// The current state of the subnet. Valid values are available or pending.
	State *string `type:"string"`

	// The ARN of the subnet.
	SubnetArn *string `type:"string"`

	// The identifier of the subnet.
	SubnetId *string `type:"string"`

	// The identifier of the VPC that contains the subnet.
	VpcId *string `type:"string"`
}

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

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

// SetAssignIpv6AddressOnCreation sets the AssignIpv6AddressOnCreation field's value.
func (s *AwsEc2SubnetDetails) SetAssignIpv6AddressOnCreation(v bool) *AwsEc2SubnetDetails {
	s.AssignIpv6AddressOnCreation = &v
	return s
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *AwsEc2SubnetDetails) SetAvailabilityZone(v string) *AwsEc2SubnetDetails {
	s.AvailabilityZone = &v
	return s
}

// SetAvailabilityZoneId sets the AvailabilityZoneId field's value.
func (s *AwsEc2SubnetDetails) SetAvailabilityZoneId(v string) *AwsEc2SubnetDetails {
	s.AvailabilityZoneId = &v
	return s
}

// SetAvailableIpAddressCount sets the AvailableIpAddressCount field's value.
func (s *AwsEc2SubnetDetails) SetAvailableIpAddressCount(v int64) *AwsEc2SubnetDetails {
	s.AvailableIpAddressCount = &v
	return s
}

// SetCidrBlock sets the CidrBlock field's value.
func (s *AwsEc2SubnetDetails) SetCidrBlock(v string) *AwsEc2SubnetDetails {
	s.CidrBlock = &v
	return s
}

// SetDefaultForAz sets the DefaultForAz field's value.
func (s *AwsEc2SubnetDetails) SetDefaultForAz(v bool) *AwsEc2SubnetDetails {
	s.DefaultForAz = &v
	return s
}

// SetIpv6CidrBlockAssociationSet sets the Ipv6CidrBlockAssociationSet field's value.
func (s *AwsEc2SubnetDetails) SetIpv6CidrBlockAssociationSet(v []*Ipv6CidrBlockAssociation) *AwsEc2SubnetDetails {
	s.Ipv6CidrBlockAssociationSet = v
	return s
}

// SetMapPublicIpOnLaunch sets the MapPublicIpOnLaunch field's value.
func (s *AwsEc2SubnetDetails) SetMapPublicIpOnLaunch(v bool) *AwsEc2SubnetDetails {
	s.MapPublicIpOnLaunch = &v
	return s
}

// SetOwnerId sets the OwnerId field's value.
func (s *AwsEc2SubnetDetails) SetOwnerId(v string) *AwsEc2SubnetDetails {
	s.OwnerId = &v
	return s
}

// SetState sets the State field's value.
func (s *AwsEc2SubnetDetails) SetState(v string) *AwsEc2SubnetDetails {
	s.State = &v
	return s
}

// SetSubnetArn sets the SubnetArn field's value.
func (s *AwsEc2SubnetDetails) SetSubnetArn(v string) *AwsEc2SubnetDetails {
	s.SubnetArn = &v
	return s
}

// SetSubnetId sets the SubnetId field's value.
func (s *AwsEc2SubnetDetails) SetSubnetId(v string) *AwsEc2SubnetDetails {
	s.SubnetId = &v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *AwsEc2SubnetDetails) SetVpcId(v string) *AwsEc2SubnetDetails {
	s.VpcId = &v
	return s
}

// Information about an Amazon Web Services Amazon EC2 Transit Gateway that
// interconnects virtual private clouds (VPCs) and on-premises networks.
type AwsEc2TransitGatewayDetails struct {
	_ struct{} `type:"structure"`

	// A private Autonomous System Number (ASN) for the Amazon side of a BGP session.
	AmazonSideAsn *int64 `type:"integer"`

	// The ID of the default association route table.
	AssociationDefaultRouteTableId *string `type:"string"`

	// Turn on or turn off automatic acceptance of attachment requests.
	AutoAcceptSharedAttachments *string `type:"string"`

	// Turn on or turn off automatic association with the default association route
	// table.
	DefaultRouteTableAssociation *string `type:"string"`

	// Turn on or turn off automatic propagation of routes to the default propagation
	// route table.
	DefaultRouteTablePropagation *string `type:"string"`

	// The description of the transit gateway.
	Description *string `type:"string"`

	// Turn on or turn off DNS support.
	DnsSupport *string `type:"string"`

	// The ID of the transit gateway.
	Id *string `type:"string"`

	// Indicates whether multicast is supported on the transit gateway.
	MulticastSupport *string `type:"string"`

	// The ID of the default propagation route table.
	PropagationDefaultRouteTableId *string `type:"string"`

	// The transit gateway Classless Inter-Domain Routing (CIDR) blocks.
	TransitGatewayCidrBlocks []*string `type:"list"`

	// Turn on or turn off Equal Cost Multipath Protocol (ECMP) support.
	VpnEcmpSupport *string `type:"string"`
}

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

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

// SetAmazonSideAsn sets the AmazonSideAsn field's value.
func (s *AwsEc2TransitGatewayDetails) SetAmazonSideAsn(v int64) *AwsEc2TransitGatewayDetails {
	s.AmazonSideAsn = &v
	return s
}

// SetAssociationDefaultRouteTableId sets the AssociationDefaultRouteTableId field's value.
func (s *AwsEc2TransitGatewayDetails) SetAssociationDefaultRouteTableId(v string) *AwsEc2TransitGatewayDetails {
	s.AssociationDefaultRouteTableId = &v
	return s
}

// SetAutoAcceptSharedAttachments sets the AutoAcceptSharedAttachments field's value.
func (s *AwsEc2TransitGatewayDetails) SetAutoAcceptSharedAttachments(v string) *AwsEc2TransitGatewayDetails {
	s.AutoAcceptSharedAttachments = &v
	return s
}

// SetDefaultRouteTableAssociation sets the DefaultRouteTableAssociation field's value.
func (s *AwsEc2TransitGatewayDetails) SetDefaultRouteTableAssociation(v string) *AwsEc2TransitGatewayDetails {
	s.DefaultRouteTableAssociation = &v
	return s
}

// SetDefaultRouteTablePropagation sets the DefaultRouteTablePropagation field's value.
func (s *AwsEc2TransitGatewayDetails) SetDefaultRouteTablePropagation(v string) *AwsEc2TransitGatewayDetails {
	s.DefaultRouteTablePropagation = &v
	return s
}

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

// SetDnsSupport sets the DnsSupport field's value.
func (s *AwsEc2TransitGatewayDetails) SetDnsSupport(v string) *AwsEc2TransitGatewayDetails {
	s.DnsSupport = &v
	return s
}

// SetId sets the Id field's value.
func (s *AwsEc2TransitGatewayDetails) SetId(v string) *AwsEc2TransitGatewayDetails {
	s.Id = &v
	return s
}

// SetMulticastSupport sets the MulticastSupport field's value.
func (s *AwsEc2TransitGatewayDetails) SetMulticastSupport(v string) *AwsEc2TransitGatewayDetails {
	s.MulticastSupport = &v
	return s
}

// SetPropagationDefaultRouteTableId sets the PropagationDefaultRouteTableId field's value.
func (s *AwsEc2TransitGatewayDetails) SetPropagationDefaultRouteTableId(v string) *AwsEc2TransitGatewayDetails {
	s.PropagationDefaultRouteTableId = &v
	return s
}

// SetTransitGatewayCidrBlocks sets the TransitGatewayCidrBlocks field's value.
func (s *AwsEc2TransitGatewayDetails) SetTransitGatewayCidrBlocks(v []*string) *AwsEc2TransitGatewayDetails {
	s.TransitGatewayCidrBlocks = v
	return s
}

// SetVpnEcmpSupport sets the VpnEcmpSupport field's value.
func (s *AwsEc2TransitGatewayDetails) SetVpnEcmpSupport(v string) *AwsEc2TransitGatewayDetails {
	s.VpnEcmpSupport = &v
	return s
}

// An attachment to an Amazon EC2 volume.
type AwsEc2VolumeAttachment struct {
	_ struct{} `type:"structure"`

	// The datetime when the attachment initiated.
	AttachTime *string `type:"string"`

	// Whether the EBS volume is deleted when the EC2 instance is terminated.
	DeleteOnTermination *bool `type:"boolean"`

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

	// The attachment state of the volume. Valid values are as follows:
	//
	//    * attaching
	//
	//    * attached
	//
	//    * busy
	//
	//    * detaching
	//
	//    * detached
	Status *string `type:"string"`
}

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

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

// SetAttachTime sets the AttachTime field's value.
func (s *AwsEc2VolumeAttachment) SetAttachTime(v string) *AwsEc2VolumeAttachment {
	s.AttachTime = &v
	return s
}

// SetDeleteOnTermination sets the DeleteOnTermination field's value.
func (s *AwsEc2VolumeAttachment) SetDeleteOnTermination(v bool) *AwsEc2VolumeAttachment {
	s.DeleteOnTermination = &v
	return s
}

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

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

// Details about an EC2 volume.
type AwsEc2VolumeDetails struct {
	_ struct{} `type:"structure"`

	// The volume attachments.
	Attachments []*AwsEc2VolumeAttachment `type:"list"`

	// Indicates when the volume was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreateTime *string `type:"string"`

	// The device name for the volume that is attached to the instance.
	DeviceName *string `type:"string"`

	// Specifies whether the volume is encrypted.
	Encrypted *bool `type:"boolean"`

	// The ARN of the KMS key that was used to protect the volume encryption key
	// for the volume.
	KmsKeyId *string `type:"string"`

	// The size of the volume, in GiBs.
	Size *int64 `type:"integer"`

	// The snapshot from which the volume was created.
	SnapshotId *string `type:"string"`

	// The volume state. Valid values are as follows:
	//
	//    * available
	//
	//    * creating
	//
	//    * deleted
	//
	//    * deleting
	//
	//    * error
	//
	//    * in-use
	Status *string `type:"string"`

	// The ID of the volume.
	VolumeId *string `type:"string"`

	// Indicates whether the volume was scanned or skipped.
	VolumeScanStatus *string `type:"string"`

	// The volume type.
	VolumeType *string `type:"string"`
}

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

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

// SetAttachments sets the Attachments field's value.
func (s *AwsEc2VolumeDetails) SetAttachments(v []*AwsEc2VolumeAttachment) *AwsEc2VolumeDetails {
	s.Attachments = v
	return s
}

// SetCreateTime sets the CreateTime field's value.
func (s *AwsEc2VolumeDetails) SetCreateTime(v string) *AwsEc2VolumeDetails {
	s.CreateTime = &v
	return s
}

// SetDeviceName sets the DeviceName field's value.
func (s *AwsEc2VolumeDetails) SetDeviceName(v string) *AwsEc2VolumeDetails {
	s.DeviceName = &v
	return s
}

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

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

// SetSize sets the Size field's value.
func (s *AwsEc2VolumeDetails) SetSize(v int64) *AwsEc2VolumeDetails {
	s.Size = &v
	return s
}

// SetSnapshotId sets the SnapshotId field's value.
func (s *AwsEc2VolumeDetails) SetSnapshotId(v string) *AwsEc2VolumeDetails {
	s.SnapshotId = &v
	return s
}

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

// SetVolumeId sets the VolumeId field's value.
func (s *AwsEc2VolumeDetails) SetVolumeId(v string) *AwsEc2VolumeDetails {
	s.VolumeId = &v
	return s
}

// SetVolumeScanStatus sets the VolumeScanStatus field's value.
func (s *AwsEc2VolumeDetails) SetVolumeScanStatus(v string) *AwsEc2VolumeDetails {
	s.VolumeScanStatus = &v
	return s
}

// SetVolumeType sets the VolumeType field's value.
func (s *AwsEc2VolumeDetails) SetVolumeType(v string) *AwsEc2VolumeDetails {
	s.VolumeType = &v
	return s
}

// Details about an EC2 VPC.
type AwsEc2VpcDetails struct {
	_ struct{} `type:"structure"`

	// Information about the IPv4 CIDR blocks associated with the VPC.
	CidrBlockAssociationSet []*CidrBlockAssociation `type:"list"`

	// The identifier of the set of Dynamic Host Configuration Protocol (DHCP) options
	// that are associated with the VPC. If the default options are associated with
	// the VPC, then this is default.
	DhcpOptionsId *string `type:"string"`

	// Information about the IPv6 CIDR blocks associated with the VPC.
	Ipv6CidrBlockAssociationSet []*Ipv6CidrBlockAssociation `type:"list"`

	// The current state of the VPC. Valid values are available or pending.
	State *string `type:"string"`
}

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

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

// SetCidrBlockAssociationSet sets the CidrBlockAssociationSet field's value.
func (s *AwsEc2VpcDetails) SetCidrBlockAssociationSet(v []*CidrBlockAssociation) *AwsEc2VpcDetails {
	s.CidrBlockAssociationSet = v
	return s
}

// SetDhcpOptionsId sets the DhcpOptionsId field's value.
func (s *AwsEc2VpcDetails) SetDhcpOptionsId(v string) *AwsEc2VpcDetails {
	s.DhcpOptionsId = &v
	return s
}

// SetIpv6CidrBlockAssociationSet sets the Ipv6CidrBlockAssociationSet field's value.
func (s *AwsEc2VpcDetails) SetIpv6CidrBlockAssociationSet(v []*Ipv6CidrBlockAssociation) *AwsEc2VpcDetails {
	s.Ipv6CidrBlockAssociationSet = v
	return s
}

// SetState sets the State field's value.
func (s *AwsEc2VpcDetails) SetState(v string) *AwsEc2VpcDetails {
	s.State = &v
	return s
}

// Contains details about the service configuration for a VPC endpoint service.
type AwsEc2VpcEndpointServiceDetails struct {
	_ struct{} `type:"structure"`

	// Whether requests from other Amazon Web Services accounts to create an endpoint
	// to the service must first be accepted.
	AcceptanceRequired *bool `type:"boolean"`

	// The Availability Zones where the service is available.
	AvailabilityZones []*string `type:"list"`

	// The DNS names for the service.
	BaseEndpointDnsNames []*string `type:"list"`

	// The ARNs of the Gateway Load Balancers for the service.
	GatewayLoadBalancerArns []*string `type:"list"`

	// Whether the service manages its VPC endpoints.
	ManagesVpcEndpoints *bool `type:"boolean"`

	// The ARNs of the Network Load Balancers for the service.
	NetworkLoadBalancerArns []*string `type:"list"`

	// The private DNS name for the service.
	PrivateDnsName *string `type:"string"`

	// The identifier of the service.
	ServiceId *string `type:"string"`

	// The name of the service.
	ServiceName *string `type:"string"`

	// The current state of the service. Valid values are as follows:
	//
	//    * Available
	//
	//    * Deleted
	//
	//    * Deleting
	//
	//    * Failed
	//
	//    * Pending
	ServiceState *string `type:"string"`

	// The types for the service.
	ServiceType []*AwsEc2VpcEndpointServiceServiceTypeDetails `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 AwsEc2VpcEndpointServiceDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetAcceptanceRequired sets the AcceptanceRequired field's value.
func (s *AwsEc2VpcEndpointServiceDetails) SetAcceptanceRequired(v bool) *AwsEc2VpcEndpointServiceDetails {
	s.AcceptanceRequired = &v
	return s
}

// SetAvailabilityZones sets the AvailabilityZones field's value.
func (s *AwsEc2VpcEndpointServiceDetails) SetAvailabilityZones(v []*string) *AwsEc2VpcEndpointServiceDetails {
	s.AvailabilityZones = v
	return s
}

// SetBaseEndpointDnsNames sets the BaseEndpointDnsNames field's value.
func (s *AwsEc2VpcEndpointServiceDetails) SetBaseEndpointDnsNames(v []*string) *AwsEc2VpcEndpointServiceDetails {
	s.BaseEndpointDnsNames = v
	return s
}

// SetGatewayLoadBalancerArns sets the GatewayLoadBalancerArns field's value.
func (s *AwsEc2VpcEndpointServiceDetails) SetGatewayLoadBalancerArns(v []*string) *AwsEc2VpcEndpointServiceDetails {
	s.GatewayLoadBalancerArns = v
	return s
}

// SetManagesVpcEndpoints sets the ManagesVpcEndpoints field's value.
func (s *AwsEc2VpcEndpointServiceDetails) SetManagesVpcEndpoints(v bool) *AwsEc2VpcEndpointServiceDetails {
	s.ManagesVpcEndpoints = &v
	return s
}

// SetNetworkLoadBalancerArns sets the NetworkLoadBalancerArns field's value.
func (s *AwsEc2VpcEndpointServiceDetails) SetNetworkLoadBalancerArns(v []*string) *AwsEc2VpcEndpointServiceDetails {
	s.NetworkLoadBalancerArns = v
	return s
}

// SetPrivateDnsName sets the PrivateDnsName field's value.
func (s *AwsEc2VpcEndpointServiceDetails) SetPrivateDnsName(v string) *AwsEc2VpcEndpointServiceDetails {
	s.PrivateDnsName = &v
	return s
}

// SetServiceId sets the ServiceId field's value.
func (s *AwsEc2VpcEndpointServiceDetails) SetServiceId(v string) *AwsEc2VpcEndpointServiceDetails {
	s.ServiceId = &v
	return s
}

// SetServiceName sets the ServiceName field's value.
func (s *AwsEc2VpcEndpointServiceDetails) SetServiceName(v string) *AwsEc2VpcEndpointServiceDetails {
	s.ServiceName = &v
	return s
}

// SetServiceState sets the ServiceState field's value.
func (s *AwsEc2VpcEndpointServiceDetails) SetServiceState(v string) *AwsEc2VpcEndpointServiceDetails {
	s.ServiceState = &v
	return s
}

// SetServiceType sets the ServiceType field's value.
func (s *AwsEc2VpcEndpointServiceDetails) SetServiceType(v []*AwsEc2VpcEndpointServiceServiceTypeDetails) *AwsEc2VpcEndpointServiceDetails {
	s.ServiceType = v
	return s
}

// The service type information for a VPC endpoint service.
type AwsEc2VpcEndpointServiceServiceTypeDetails struct {
	_ struct{} `type:"structure"`

	// The type of service.
	ServiceType *string `type:"string"`
}

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

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

// SetServiceType sets the ServiceType field's value.
func (s *AwsEc2VpcEndpointServiceServiceTypeDetails) SetServiceType(v string) *AwsEc2VpcEndpointServiceServiceTypeDetails {
	s.ServiceType = &v
	return s
}

// Provides information about a VPC peering connection between two VPCs: a requester
// VPC that you own and an accepter VPC with which to create the connection.
type AwsEc2VpcPeeringConnectionDetails struct {
	_ struct{} `type:"structure"`

	// Information about the accepter VPC.
	AccepterVpcInfo *AwsEc2VpcPeeringConnectionVpcInfoDetails `type:"structure"`

	// The time at which an unaccepted VPC peering connection will expire.
	ExpirationTime *string `type:"string"`

	// Information about the requester VPC.
	RequesterVpcInfo *AwsEc2VpcPeeringConnectionVpcInfoDetails `type:"structure"`

	// The status of the VPC peering connection.
	Status *AwsEc2VpcPeeringConnectionStatusDetails `type:"structure"`

	// The ID of the VPC peering connection.
	VpcPeeringConnectionId *string `type:"string"`
}

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

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

// SetAccepterVpcInfo sets the AccepterVpcInfo field's value.
func (s *AwsEc2VpcPeeringConnectionDetails) SetAccepterVpcInfo(v *AwsEc2VpcPeeringConnectionVpcInfoDetails) *AwsEc2VpcPeeringConnectionDetails {
	s.AccepterVpcInfo = v
	return s
}

// SetExpirationTime sets the ExpirationTime field's value.
func (s *AwsEc2VpcPeeringConnectionDetails) SetExpirationTime(v string) *AwsEc2VpcPeeringConnectionDetails {
	s.ExpirationTime = &v
	return s
}

// SetRequesterVpcInfo sets the RequesterVpcInfo field's value.
func (s *AwsEc2VpcPeeringConnectionDetails) SetRequesterVpcInfo(v *AwsEc2VpcPeeringConnectionVpcInfoDetails) *AwsEc2VpcPeeringConnectionDetails {
	s.RequesterVpcInfo = v
	return s
}

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

// SetVpcPeeringConnectionId sets the VpcPeeringConnectionId field's value.
func (s *AwsEc2VpcPeeringConnectionDetails) SetVpcPeeringConnectionId(v string) *AwsEc2VpcPeeringConnectionDetails {
	s.VpcPeeringConnectionId = &v
	return s
}

// Details about the status of the VPC peering connection.
type AwsEc2VpcPeeringConnectionStatusDetails struct {
	_ struct{} `type:"structure"`

	// The status of the VPC peering connection.
	Code *string `type:"string"`

	// A message that provides more information about the status, if applicable.
	Message *string `type:"string"`
}

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

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

// SetCode sets the Code field's value.
func (s *AwsEc2VpcPeeringConnectionStatusDetails) SetCode(v string) *AwsEc2VpcPeeringConnectionStatusDetails {
	s.Code = &v
	return s
}

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

// Describes a VPC in a VPC peering connection.
type AwsEc2VpcPeeringConnectionVpcInfoDetails struct {
	_ struct{} `type:"structure"`

	// The IPv4 CIDR block for the VPC.
	CidrBlock *string `type:"string"`

	// Information about the IPv4 CIDR blocks for the VPC.
	CidrBlockSet []*VpcInfoCidrBlockSetDetails `type:"list"`

	// The IPv6 CIDR block for the VPC.
	Ipv6CidrBlockSet []*VpcInfoIpv6CidrBlockSetDetails `type:"list"`

	// The ID of the Amazon Web Services account that owns the VPC.
	OwnerId *string `type:"string"`

	// Information about the VPC peering connection options for the accepter or
	// requester VPC.
	PeeringOptions *VpcInfoPeeringOptionsDetails `type:"structure"`

	// The Amazon Web Services Region in which the VPC is located.
	Region *string `type:"string"`

	// The ID of the VPC.
	VpcId *string `type:"string"`
}

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

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

// SetCidrBlock sets the CidrBlock field's value.
func (s *AwsEc2VpcPeeringConnectionVpcInfoDetails) SetCidrBlock(v string) *AwsEc2VpcPeeringConnectionVpcInfoDetails {
	s.CidrBlock = &v
	return s
}

// SetCidrBlockSet sets the CidrBlockSet field's value.
func (s *AwsEc2VpcPeeringConnectionVpcInfoDetails) SetCidrBlockSet(v []*VpcInfoCidrBlockSetDetails) *AwsEc2VpcPeeringConnectionVpcInfoDetails {
	s.CidrBlockSet = v
	return s
}

// SetIpv6CidrBlockSet sets the Ipv6CidrBlockSet field's value.
func (s *AwsEc2VpcPeeringConnectionVpcInfoDetails) SetIpv6CidrBlockSet(v []*VpcInfoIpv6CidrBlockSetDetails) *AwsEc2VpcPeeringConnectionVpcInfoDetails {
	s.Ipv6CidrBlockSet = v
	return s
}

// SetOwnerId sets the OwnerId field's value.
func (s *AwsEc2VpcPeeringConnectionVpcInfoDetails) SetOwnerId(v string) *AwsEc2VpcPeeringConnectionVpcInfoDetails {
	s.OwnerId = &v
	return s
}

// SetPeeringOptions sets the PeeringOptions field's value.
func (s *AwsEc2VpcPeeringConnectionVpcInfoDetails) SetPeeringOptions(v *VpcInfoPeeringOptionsDetails) *AwsEc2VpcPeeringConnectionVpcInfoDetails {
	s.PeeringOptions = v
	return s
}

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

// SetVpcId sets the VpcId field's value.
func (s *AwsEc2VpcPeeringConnectionVpcInfoDetails) SetVpcId(v string) *AwsEc2VpcPeeringConnectionVpcInfoDetails {
	s.VpcId = &v
	return s
}

// Details about an Amazon EC2 VPN connection.
type AwsEc2VpnConnectionDetails struct {
	_ struct{} `type:"structure"`

	// The category of the VPN connection. VPN indicates an Amazon Web Services
	// VPN connection. VPN-Classic indicates an Amazon Web Services Classic VPN
	// connection.
	Category *string `type:"string"`

	// The configuration information for the VPN connection's customer gateway,
	// in the native XML format.
	CustomerGatewayConfiguration *string `type:"string"`

	// The identifier of the customer gateway that is at your end of the VPN connection.
	CustomerGatewayId *string `type:"string"`

	// The VPN connection options.
	Options *AwsEc2VpnConnectionOptionsDetails `type:"structure"`

	// The static routes that are associated with the VPN connection.
	Routes []*AwsEc2VpnConnectionRoutesDetails `type:"list"`

	// The current state of the VPN connection. Valid values are as follows:
	//
	//    * available
	//
	//    * deleted
	//
	//    * deleting
	//
	//    * pending
	State *string `type:"string"`

	// The identifier of the transit gateway that is associated with the VPN connection.
	TransitGatewayId *string `type:"string"`

	// The type of VPN connection.
	Type *string `type:"string"`

	// Information about the VPN tunnel.
	VgwTelemetry []*AwsEc2VpnConnectionVgwTelemetryDetails `type:"list"`

	// The identifier of the VPN connection.
	VpnConnectionId *string `type:"string"`

	// The identifier of the virtual private gateway that is at the Amazon Web Services
	// side of the VPN connection.
	VpnGatewayId *string `type:"string"`
}

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

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

// SetCategory sets the Category field's value.
func (s *AwsEc2VpnConnectionDetails) SetCategory(v string) *AwsEc2VpnConnectionDetails {
	s.Category = &v
	return s
}

// SetCustomerGatewayConfiguration sets the CustomerGatewayConfiguration field's value.
func (s *AwsEc2VpnConnectionDetails) SetCustomerGatewayConfiguration(v string) *AwsEc2VpnConnectionDetails {
	s.CustomerGatewayConfiguration = &v
	return s
}

// SetCustomerGatewayId sets the CustomerGatewayId field's value.
func (s *AwsEc2VpnConnectionDetails) SetCustomerGatewayId(v string) *AwsEc2VpnConnectionDetails {
	s.CustomerGatewayId = &v
	return s
}

// SetOptions sets the Options field's value.
func (s *AwsEc2VpnConnectionDetails) SetOptions(v *AwsEc2VpnConnectionOptionsDetails) *AwsEc2VpnConnectionDetails {
	s.Options = v
	return s
}

// SetRoutes sets the Routes field's value.
func (s *AwsEc2VpnConnectionDetails) SetRoutes(v []*AwsEc2VpnConnectionRoutesDetails) *AwsEc2VpnConnectionDetails {
	s.Routes = v
	return s
}

// SetState sets the State field's value.
func (s *AwsEc2VpnConnectionDetails) SetState(v string) *AwsEc2VpnConnectionDetails {
	s.State = &v
	return s
}

// SetTransitGatewayId sets the TransitGatewayId field's value.
func (s *AwsEc2VpnConnectionDetails) SetTransitGatewayId(v string) *AwsEc2VpnConnectionDetails {
	s.TransitGatewayId = &v
	return s
}

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

// SetVgwTelemetry sets the VgwTelemetry field's value.
func (s *AwsEc2VpnConnectionDetails) SetVgwTelemetry(v []*AwsEc2VpnConnectionVgwTelemetryDetails) *AwsEc2VpnConnectionDetails {
	s.VgwTelemetry = v
	return s
}

// SetVpnConnectionId sets the VpnConnectionId field's value.
func (s *AwsEc2VpnConnectionDetails) SetVpnConnectionId(v string) *AwsEc2VpnConnectionDetails {
	s.VpnConnectionId = &v
	return s
}

// SetVpnGatewayId sets the VpnGatewayId field's value.
func (s *AwsEc2VpnConnectionDetails) SetVpnGatewayId(v string) *AwsEc2VpnConnectionDetails {
	s.VpnGatewayId = &v
	return s
}

// VPN connection options.
type AwsEc2VpnConnectionOptionsDetails struct {
	_ struct{} `type:"structure"`

	// Whether the VPN connection uses static routes only.
	StaticRoutesOnly *bool `type:"boolean"`

	// The VPN tunnel options.
	TunnelOptions []*AwsEc2VpnConnectionOptionsTunnelOptionsDetails `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 AwsEc2VpnConnectionOptionsDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetStaticRoutesOnly sets the StaticRoutesOnly field's value.
func (s *AwsEc2VpnConnectionOptionsDetails) SetStaticRoutesOnly(v bool) *AwsEc2VpnConnectionOptionsDetails {
	s.StaticRoutesOnly = &v
	return s
}

// SetTunnelOptions sets the TunnelOptions field's value.
func (s *AwsEc2VpnConnectionOptionsDetails) SetTunnelOptions(v []*AwsEc2VpnConnectionOptionsTunnelOptionsDetails) *AwsEc2VpnConnectionOptionsDetails {
	s.TunnelOptions = v
	return s
}

// The VPN tunnel options.
type AwsEc2VpnConnectionOptionsTunnelOptionsDetails struct {
	_ struct{} `type:"structure"`

	// The number of seconds after which a Dead Peer Detection (DPD) timeout occurs.
	DpdTimeoutSeconds *int64 `type:"integer"`

	// The Internet Key Exchange (IKE) versions that are permitted for the VPN tunnel.
	IkeVersions []*string `type:"list"`

	// The external IP address of the VPN tunnel.
	OutsideIpAddress *string `type:"string"`

	// The permitted Diffie-Hellman group numbers for the VPN tunnel for phase 1
	// IKE negotiations.
	Phase1DhGroupNumbers []*int64 `type:"list"`

	// The permitted encryption algorithms for the VPN tunnel for phase 1 IKE negotiations.
	Phase1EncryptionAlgorithms []*string `type:"list"`

	// The permitted integrity algorithms for the VPN tunnel for phase 1 IKE negotiations.
	Phase1IntegrityAlgorithms []*string `type:"list"`

	// The lifetime for phase 1 of the IKE negotiation, in seconds.
	Phase1LifetimeSeconds *int64 `type:"integer"`

	// The permitted Diffie-Hellman group numbers for the VPN tunnel for phase 2
	// IKE negotiations.
	Phase2DhGroupNumbers []*int64 `type:"list"`

	// The permitted encryption algorithms for the VPN tunnel for phase 2 IKE negotiations.
	Phase2EncryptionAlgorithms []*string `type:"list"`

	// The permitted integrity algorithms for the VPN tunnel for phase 2 IKE negotiations.
	Phase2IntegrityAlgorithms []*string `type:"list"`

	// The lifetime for phase 2 of the IKE negotiation, in seconds.
	Phase2LifetimeSeconds *int64 `type:"integer"`

	// The preshared key to establish initial authentication between the virtual
	// private gateway and the customer gateway.
	PreSharedKey *string `type:"string"`

	// The percentage of the rekey window, which is determined by RekeyMarginTimeSeconds
	// during which the rekey time is randomly selected.
	RekeyFuzzPercentage *int64 `type:"integer"`

	// The margin time, in seconds, before the phase 2 lifetime expires, during
	// which the Amazon Web Services side of the VPN connection performs an IKE
	// rekey.
	RekeyMarginTimeSeconds *int64 `type:"integer"`

	// The number of packets in an IKE replay window.
	ReplayWindowSize *int64 `type:"integer"`

	// The range of inside IPv4 addresses for the tunnel.
	TunnelInsideCidr *string `type:"string"`
}

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

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

// SetDpdTimeoutSeconds sets the DpdTimeoutSeconds field's value.
func (s *AwsEc2VpnConnectionOptionsTunnelOptionsDetails) SetDpdTimeoutSeconds(v int64) *AwsEc2VpnConnectionOptionsTunnelOptionsDetails {
	s.DpdTimeoutSeconds = &v
	return s
}

// SetIkeVersions sets the IkeVersions field's value.
func (s *AwsEc2VpnConnectionOptionsTunnelOptionsDetails) SetIkeVersions(v []*string) *AwsEc2VpnConnectionOptionsTunnelOptionsDetails {
	s.IkeVersions = v
	return s
}

// SetOutsideIpAddress sets the OutsideIpAddress field's value.
func (s *AwsEc2VpnConnectionOptionsTunnelOptionsDetails) SetOutsideIpAddress(v string) *AwsEc2VpnConnectionOptionsTunnelOptionsDetails {
	s.OutsideIpAddress = &v
	return s
}

// SetPhase1DhGroupNumbers sets the Phase1DhGroupNumbers field's value.
func (s *AwsEc2VpnConnectionOptionsTunnelOptionsDetails) SetPhase1DhGroupNumbers(v []*int64) *AwsEc2VpnConnectionOptionsTunnelOptionsDetails {
	s.Phase1DhGroupNumbers = v
	return s
}

// SetPhase1EncryptionAlgorithms sets the Phase1EncryptionAlgorithms field's value.
func (s *AwsEc2VpnConnectionOptionsTunnelOptionsDetails) SetPhase1EncryptionAlgorithms(v []*string) *AwsEc2VpnConnectionOptionsTunnelOptionsDetails {
	s.Phase1EncryptionAlgorithms = v
	return s
}

// SetPhase1IntegrityAlgorithms sets the Phase1IntegrityAlgorithms field's value.
func (s *AwsEc2VpnConnectionOptionsTunnelOptionsDetails) SetPhase1IntegrityAlgorithms(v []*string) *AwsEc2VpnConnectionOptionsTunnelOptionsDetails {
	s.Phase1IntegrityAlgorithms = v
	return s
}

// SetPhase1LifetimeSeconds sets the Phase1LifetimeSeconds field's value.
func (s *AwsEc2VpnConnectionOptionsTunnelOptionsDetails) SetPhase1LifetimeSeconds(v int64) *AwsEc2VpnConnectionOptionsTunnelOptionsDetails {
	s.Phase1LifetimeSeconds = &v
	return s
}

// SetPhase2DhGroupNumbers sets the Phase2DhGroupNumbers field's value.
func (s *AwsEc2VpnConnectionOptionsTunnelOptionsDetails) SetPhase2DhGroupNumbers(v []*int64) *AwsEc2VpnConnectionOptionsTunnelOptionsDetails {
	s.Phase2DhGroupNumbers = v
	return s
}

// SetPhase2EncryptionAlgorithms sets the Phase2EncryptionAlgorithms field's value.
func (s *AwsEc2VpnConnectionOptionsTunnelOptionsDetails) SetPhase2EncryptionAlgorithms(v []*string) *AwsEc2VpnConnectionOptionsTunnelOptionsDetails {
	s.Phase2EncryptionAlgorithms = v
	return s
}

// SetPhase2IntegrityAlgorithms sets the Phase2IntegrityAlgorithms field's value.
func (s *AwsEc2VpnConnectionOptionsTunnelOptionsDetails) SetPhase2IntegrityAlgorithms(v []*string) *AwsEc2VpnConnectionOptionsTunnelOptionsDetails {
	s.Phase2IntegrityAlgorithms = v
	return s
}

// SetPhase2LifetimeSeconds sets the Phase2LifetimeSeconds field's value.
func (s *AwsEc2VpnConnectionOptionsTunnelOptionsDetails) SetPhase2LifetimeSeconds(v int64) *AwsEc2VpnConnectionOptionsTunnelOptionsDetails {
	s.Phase2LifetimeSeconds = &v
	return s
}

// SetPreSharedKey sets the PreSharedKey field's value.
func (s *AwsEc2VpnConnectionOptionsTunnelOptionsDetails) SetPreSharedKey(v string) *AwsEc2VpnConnectionOptionsTunnelOptionsDetails {
	s.PreSharedKey = &v
	return s
}

// SetRekeyFuzzPercentage sets the RekeyFuzzPercentage field's value.
func (s *AwsEc2VpnConnectionOptionsTunnelOptionsDetails) SetRekeyFuzzPercentage(v int64) *AwsEc2VpnConnectionOptionsTunnelOptionsDetails {
	s.RekeyFuzzPercentage = &v
	return s
}

// SetRekeyMarginTimeSeconds sets the RekeyMarginTimeSeconds field's value.
func (s *AwsEc2VpnConnectionOptionsTunnelOptionsDetails) SetRekeyMarginTimeSeconds(v int64) *AwsEc2VpnConnectionOptionsTunnelOptionsDetails {
	s.RekeyMarginTimeSeconds = &v
	return s
}

// SetReplayWindowSize sets the ReplayWindowSize field's value.
func (s *AwsEc2VpnConnectionOptionsTunnelOptionsDetails) SetReplayWindowSize(v int64) *AwsEc2VpnConnectionOptionsTunnelOptionsDetails {
	s.ReplayWindowSize = &v
	return s
}

// SetTunnelInsideCidr sets the TunnelInsideCidr field's value.
func (s *AwsEc2VpnConnectionOptionsTunnelOptionsDetails) SetTunnelInsideCidr(v string) *AwsEc2VpnConnectionOptionsTunnelOptionsDetails {
	s.TunnelInsideCidr = &v
	return s
}

// A static routes associated with the VPN connection.
type AwsEc2VpnConnectionRoutesDetails struct {
	_ struct{} `type:"structure"`

	// The CIDR block associated with the local subnet of the customer data center.
	DestinationCidrBlock *string `type:"string"`

	// The current state of the static route.
	State *string `type:"string"`
}

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

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

// SetDestinationCidrBlock sets the DestinationCidrBlock field's value.
func (s *AwsEc2VpnConnectionRoutesDetails) SetDestinationCidrBlock(v string) *AwsEc2VpnConnectionRoutesDetails {
	s.DestinationCidrBlock = &v
	return s
}

// SetState sets the State field's value.
func (s *AwsEc2VpnConnectionRoutesDetails) SetState(v string) *AwsEc2VpnConnectionRoutesDetails {
	s.State = &v
	return s
}

// Information about the VPN tunnel.
type AwsEc2VpnConnectionVgwTelemetryDetails struct {
	_ struct{} `type:"structure"`

	// The number of accepted routes.
	AcceptedRouteCount *int64 `type:"integer"`

	// The ARN of the VPN tunnel endpoint certificate.
	CertificateArn *string `type:"string"`

	// The date and time of the last change in status.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	LastStatusChange *string `type:"string"`

	// The Internet-routable IP address of the virtual private gateway's outside
	// interface.
	OutsideIpAddress *string `type:"string"`

	// The status of the VPN tunnel. Valid values are DOWN or UP.
	Status *string `type:"string"`

	// If an error occurs, a description of the error.
	StatusMessage *string `type:"string"`
}

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

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

// SetAcceptedRouteCount sets the AcceptedRouteCount field's value.
func (s *AwsEc2VpnConnectionVgwTelemetryDetails) SetAcceptedRouteCount(v int64) *AwsEc2VpnConnectionVgwTelemetryDetails {
	s.AcceptedRouteCount = &v
	return s
}

// SetCertificateArn sets the CertificateArn field's value.
func (s *AwsEc2VpnConnectionVgwTelemetryDetails) SetCertificateArn(v string) *AwsEc2VpnConnectionVgwTelemetryDetails {
	s.CertificateArn = &v
	return s
}

// SetLastStatusChange sets the LastStatusChange field's value.
func (s *AwsEc2VpnConnectionVgwTelemetryDetails) SetLastStatusChange(v string) *AwsEc2VpnConnectionVgwTelemetryDetails {
	s.LastStatusChange = &v
	return s
}

// SetOutsideIpAddress sets the OutsideIpAddress field's value.
func (s *AwsEc2VpnConnectionVgwTelemetryDetails) SetOutsideIpAddress(v string) *AwsEc2VpnConnectionVgwTelemetryDetails {
	s.OutsideIpAddress = &v
	return s
}

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

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

// Information about an Amazon ECR image.
type AwsEcrContainerImageDetails struct {
	_ struct{} `type:"structure"`

	// The architecture of the image. Valid values are as follows:
	//
	//    * arm64
	//
	//    * i386
	//
	//    * x86_64
	Architecture *string `type:"string"`

	// The sha256 digest of the image manifest.
	ImageDigest *string `type:"string"`

	// The date and time when the image was pushed to the repository.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	ImagePublishedAt *string `type:"string"`

	// The list of tags that are associated with the image.
	ImageTags []*string `type:"list"`

	// The Amazon Web Services account identifier that is associated with the registry
	// that the image belongs to.
	RegistryId *string `type:"string"`

	// The name of the repository that the image belongs to.
	RepositoryName *string `type:"string"`
}

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

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

// SetArchitecture sets the Architecture field's value.
func (s *AwsEcrContainerImageDetails) SetArchitecture(v string) *AwsEcrContainerImageDetails {
	s.Architecture = &v
	return s
}

// SetImageDigest sets the ImageDigest field's value.
func (s *AwsEcrContainerImageDetails) SetImageDigest(v string) *AwsEcrContainerImageDetails {
	s.ImageDigest = &v
	return s
}

// SetImagePublishedAt sets the ImagePublishedAt field's value.
func (s *AwsEcrContainerImageDetails) SetImagePublishedAt(v string) *AwsEcrContainerImageDetails {
	s.ImagePublishedAt = &v
	return s
}

// SetImageTags sets the ImageTags field's value.
func (s *AwsEcrContainerImageDetails) SetImageTags(v []*string) *AwsEcrContainerImageDetails {
	s.ImageTags = v
	return s
}

// SetRegistryId sets the RegistryId field's value.
func (s *AwsEcrContainerImageDetails) SetRegistryId(v string) *AwsEcrContainerImageDetails {
	s.RegistryId = &v
	return s
}

// SetRepositoryName sets the RepositoryName field's value.
func (s *AwsEcrContainerImageDetails) SetRepositoryName(v string) *AwsEcrContainerImageDetails {
	s.RepositoryName = &v
	return s
}

// Provides information about an Amazon Elastic Container Registry repository.
type AwsEcrRepositoryDetails struct {
	_ struct{} `type:"structure"`

	// The ARN of the repository.
	Arn *string `type:"string"`

	// The image scanning configuration for a repository.
	ImageScanningConfiguration *AwsEcrRepositoryImageScanningConfigurationDetails `type:"structure"`

	// The tag mutability setting for the repository. Valid values are IMMUTABLE
	// or MUTABLE.
	ImageTagMutability *string `type:"string"`

	// Information about the lifecycle policy for the repository.
	LifecyclePolicy *AwsEcrRepositoryLifecyclePolicyDetails `type:"structure"`

	// The name of the repository.
	RepositoryName *string `type:"string"`

	// The text of the repository policy.
	RepositoryPolicyText *string `type:"string"`
}

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

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

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

// SetImageScanningConfiguration sets the ImageScanningConfiguration field's value.
func (s *AwsEcrRepositoryDetails) SetImageScanningConfiguration(v *AwsEcrRepositoryImageScanningConfigurationDetails) *AwsEcrRepositoryDetails {
	s.ImageScanningConfiguration = v
	return s
}

// SetImageTagMutability sets the ImageTagMutability field's value.
func (s *AwsEcrRepositoryDetails) SetImageTagMutability(v string) *AwsEcrRepositoryDetails {
	s.ImageTagMutability = &v
	return s
}

// SetLifecyclePolicy sets the LifecyclePolicy field's value.
func (s *AwsEcrRepositoryDetails) SetLifecyclePolicy(v *AwsEcrRepositoryLifecyclePolicyDetails) *AwsEcrRepositoryDetails {
	s.LifecyclePolicy = v
	return s
}

// SetRepositoryName sets the RepositoryName field's value.
func (s *AwsEcrRepositoryDetails) SetRepositoryName(v string) *AwsEcrRepositoryDetails {
	s.RepositoryName = &v
	return s
}

// SetRepositoryPolicyText sets the RepositoryPolicyText field's value.
func (s *AwsEcrRepositoryDetails) SetRepositoryPolicyText(v string) *AwsEcrRepositoryDetails {
	s.RepositoryPolicyText = &v
	return s
}

// The image scanning configuration for a repository.
type AwsEcrRepositoryImageScanningConfigurationDetails struct {
	_ struct{} `type:"structure"`

	// Whether to scan images after they are pushed to a repository.
	ScanOnPush *bool `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 AwsEcrRepositoryImageScanningConfigurationDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetScanOnPush sets the ScanOnPush field's value.
func (s *AwsEcrRepositoryImageScanningConfigurationDetails) SetScanOnPush(v bool) *AwsEcrRepositoryImageScanningConfigurationDetails {
	s.ScanOnPush = &v
	return s
}

// Information about the lifecycle policy for the repository.
type AwsEcrRepositoryLifecyclePolicyDetails struct {
	_ struct{} `type:"structure"`

	// The text of the lifecycle policy.
	LifecyclePolicyText *string `type:"string"`

	// The Amazon Web Services account identifier that is associated with the registry
	// that contains the repository.
	RegistryId *string `type:"string"`
}

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

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

// SetLifecyclePolicyText sets the LifecyclePolicyText field's value.
func (s *AwsEcrRepositoryLifecyclePolicyDetails) SetLifecyclePolicyText(v string) *AwsEcrRepositoryLifecyclePolicyDetails {
	s.LifecyclePolicyText = &v
	return s
}

// SetRegistryId sets the RegistryId field's value.
func (s *AwsEcrRepositoryLifecyclePolicyDetails) SetRegistryId(v string) *AwsEcrRepositoryLifecyclePolicyDetails {
	s.RegistryId = &v
	return s
}

// Indicates whether to enable CloudWatch Container Insights for the ECS cluster.
type AwsEcsClusterClusterSettingsDetails struct {
	_ struct{} `type:"structure"`

	// The name of the setting. The valid value is containerInsights.
	Name *string `type:"string"`

	// The value of the setting. Valid values are disabled or enabled.
	Value *string `type:"string"`
}

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

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

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

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

// The run command configuration for the cluster.
type AwsEcsClusterConfigurationDetails struct {
	_ struct{} `type:"structure"`

	// Contains the run command configuration for the cluster.
	ExecuteCommandConfiguration *AwsEcsClusterConfigurationExecuteCommandConfigurationDetails `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 AwsEcsClusterConfigurationDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetExecuteCommandConfiguration sets the ExecuteCommandConfiguration field's value.
func (s *AwsEcsClusterConfigurationDetails) SetExecuteCommandConfiguration(v *AwsEcsClusterConfigurationExecuteCommandConfigurationDetails) *AwsEcsClusterConfigurationDetails {
	s.ExecuteCommandConfiguration = v
	return s
}

// Contains the run command configuration for the cluster.
type AwsEcsClusterConfigurationExecuteCommandConfigurationDetails struct {
	_ struct{} `type:"structure"`

	// The identifier of the KMS key that is used to encrypt the data between the
	// local client and the container.
	KmsKeyId *string `type:"string"`

	// The log configuration for the results of the run command actions. Required
	// if Logging is NONE.
	LogConfiguration *AwsEcsClusterConfigurationExecuteCommandConfigurationLogConfigurationDetails `type:"structure"`

	// The log setting to use for redirecting logs for run command results.
	Logging *string `type:"string"`
}

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

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

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

// SetLogConfiguration sets the LogConfiguration field's value.
func (s *AwsEcsClusterConfigurationExecuteCommandConfigurationDetails) SetLogConfiguration(v *AwsEcsClusterConfigurationExecuteCommandConfigurationLogConfigurationDetails) *AwsEcsClusterConfigurationExecuteCommandConfigurationDetails {
	s.LogConfiguration = v
	return s
}

// SetLogging sets the Logging field's value.
func (s *AwsEcsClusterConfigurationExecuteCommandConfigurationDetails) SetLogging(v string) *AwsEcsClusterConfigurationExecuteCommandConfigurationDetails {
	s.Logging = &v
	return s
}

// The log configuration for the results of the run command actions.
type AwsEcsClusterConfigurationExecuteCommandConfigurationLogConfigurationDetails struct {
	_ struct{} `type:"structure"`

	// Whether to enable encryption on the CloudWatch logs.
	CloudWatchEncryptionEnabled *bool `type:"boolean"`

	// The name of the CloudWatch log group to send the logs to.
	CloudWatchLogGroupName *string `type:"string"`

	// The name of the S3 bucket to send logs to.
	S3BucketName *string `type:"string"`

	// Whether to encrypt the logs that are sent to the S3 bucket.
	S3EncryptionEnabled *bool `type:"boolean"`

	// Identifies the folder in the S3 bucket to send the logs to.
	S3KeyPrefix *string `type:"string"`
}

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

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

// SetCloudWatchEncryptionEnabled sets the CloudWatchEncryptionEnabled field's value.
func (s *AwsEcsClusterConfigurationExecuteCommandConfigurationLogConfigurationDetails) SetCloudWatchEncryptionEnabled(v bool) *AwsEcsClusterConfigurationExecuteCommandConfigurationLogConfigurationDetails {
	s.CloudWatchEncryptionEnabled = &v
	return s
}

// SetCloudWatchLogGroupName sets the CloudWatchLogGroupName field's value.
func (s *AwsEcsClusterConfigurationExecuteCommandConfigurationLogConfigurationDetails) SetCloudWatchLogGroupName(v string) *AwsEcsClusterConfigurationExecuteCommandConfigurationLogConfigurationDetails {
	s.CloudWatchLogGroupName = &v
	return s
}

// SetS3BucketName sets the S3BucketName field's value.
func (s *AwsEcsClusterConfigurationExecuteCommandConfigurationLogConfigurationDetails) SetS3BucketName(v string) *AwsEcsClusterConfigurationExecuteCommandConfigurationLogConfigurationDetails {
	s.S3BucketName = &v
	return s
}

// SetS3EncryptionEnabled sets the S3EncryptionEnabled field's value.
func (s *AwsEcsClusterConfigurationExecuteCommandConfigurationLogConfigurationDetails) SetS3EncryptionEnabled(v bool) *AwsEcsClusterConfigurationExecuteCommandConfigurationLogConfigurationDetails {
	s.S3EncryptionEnabled = &v
	return s
}

// SetS3KeyPrefix sets the S3KeyPrefix field's value.
func (s *AwsEcsClusterConfigurationExecuteCommandConfigurationLogConfigurationDetails) SetS3KeyPrefix(v string) *AwsEcsClusterConfigurationExecuteCommandConfigurationLogConfigurationDetails {
	s.S3KeyPrefix = &v
	return s
}

// The default capacity provider strategy for the cluster. The default capacity
// provider strategy is used when services or tasks are run without a specified
// launch type or capacity provider strategy.
type AwsEcsClusterDefaultCapacityProviderStrategyDetails struct {
	_ struct{} `type:"structure"`

	// The minimum number of tasks to run on the specified capacity provider.
	Base *int64 `type:"integer"`

	// The name of the capacity provider.
	CapacityProvider *string `type:"string"`

	// The relative percentage of the total number of tasks launched that should
	// use the capacity provider.
	Weight *int64 `type:"integer"`
}

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

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

// SetBase sets the Base field's value.
func (s *AwsEcsClusterDefaultCapacityProviderStrategyDetails) SetBase(v int64) *AwsEcsClusterDefaultCapacityProviderStrategyDetails {
	s.Base = &v
	return s
}

// SetCapacityProvider sets the CapacityProvider field's value.
func (s *AwsEcsClusterDefaultCapacityProviderStrategyDetails) SetCapacityProvider(v string) *AwsEcsClusterDefaultCapacityProviderStrategyDetails {
	s.CapacityProvider = &v
	return s
}

// SetWeight sets the Weight field's value.
func (s *AwsEcsClusterDefaultCapacityProviderStrategyDetails) SetWeight(v int64) *AwsEcsClusterDefaultCapacityProviderStrategyDetails {
	s.Weight = &v
	return s
}

// Provides details about an Amazon ECS cluster.
type AwsEcsClusterDetails struct {
	_ struct{} `type:"structure"`

	// The number of services that are running on the cluster in an ACTIVE state.
	// You can view these services with the Amazon ECS ListServices (https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ListServices.html)
	// API operation.
	ActiveServicesCount *int64 `type:"integer"`

	// The short name of one or more capacity providers to associate with the cluster.
	CapacityProviders []*string `type:"list"`

	// The Amazon Resource Name (ARN) that identifies the cluster.
	ClusterArn *string `type:"string"`

	// A name that you use to identify your cluster.
	ClusterName *string `type:"string"`

	// The setting to use to create the cluster. Specifically used to configure
	// whether to enable CloudWatch Container Insights for the cluster.
	ClusterSettings []*AwsEcsClusterClusterSettingsDetails `type:"list"`

	// The run command configuration for the cluster.
	Configuration *AwsEcsClusterConfigurationDetails `type:"structure"`

	// The default capacity provider strategy for the cluster. The default capacity
	// provider strategy is used when services or tasks are run without a specified
	// launch type or capacity provider strategy.
	DefaultCapacityProviderStrategy []*AwsEcsClusterDefaultCapacityProviderStrategyDetails `type:"list"`

	// The number of container instances registered into the cluster. This includes
	// container instances in both ACTIVE and DRAINING status.
	RegisteredContainerInstancesCount *int64 `type:"integer"`

	// The number of tasks in the cluster that are in the RUNNING state.
	RunningTasksCount *int64 `type:"integer"`

	// The status of the cluster.
	Status *string `type:"string"`
}

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

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

// SetActiveServicesCount sets the ActiveServicesCount field's value.
func (s *AwsEcsClusterDetails) SetActiveServicesCount(v int64) *AwsEcsClusterDetails {
	s.ActiveServicesCount = &v
	return s
}

// SetCapacityProviders sets the CapacityProviders field's value.
func (s *AwsEcsClusterDetails) SetCapacityProviders(v []*string) *AwsEcsClusterDetails {
	s.CapacityProviders = v
	return s
}

// SetClusterArn sets the ClusterArn field's value.
func (s *AwsEcsClusterDetails) SetClusterArn(v string) *AwsEcsClusterDetails {
	s.ClusterArn = &v
	return s
}

// SetClusterName sets the ClusterName field's value.
func (s *AwsEcsClusterDetails) SetClusterName(v string) *AwsEcsClusterDetails {
	s.ClusterName = &v
	return s
}

// SetClusterSettings sets the ClusterSettings field's value.
func (s *AwsEcsClusterDetails) SetClusterSettings(v []*AwsEcsClusterClusterSettingsDetails) *AwsEcsClusterDetails {
	s.ClusterSettings = v
	return s
}

// SetConfiguration sets the Configuration field's value.
func (s *AwsEcsClusterDetails) SetConfiguration(v *AwsEcsClusterConfigurationDetails) *AwsEcsClusterDetails {
	s.Configuration = v
	return s
}

// SetDefaultCapacityProviderStrategy sets the DefaultCapacityProviderStrategy field's value.
func (s *AwsEcsClusterDetails) SetDefaultCapacityProviderStrategy(v []*AwsEcsClusterDefaultCapacityProviderStrategyDetails) *AwsEcsClusterDetails {
	s.DefaultCapacityProviderStrategy = v
	return s
}

// SetRegisteredContainerInstancesCount sets the RegisteredContainerInstancesCount field's value.
func (s *AwsEcsClusterDetails) SetRegisteredContainerInstancesCount(v int64) *AwsEcsClusterDetails {
	s.RegisteredContainerInstancesCount = &v
	return s
}

// SetRunningTasksCount sets the RunningTasksCount field's value.
func (s *AwsEcsClusterDetails) SetRunningTasksCount(v int64) *AwsEcsClusterDetails {
	s.RunningTasksCount = &v
	return s
}

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

// Provides information about an Amazon ECS container.
type AwsEcsContainerDetails struct {
	_ struct{} `type:"structure"`

	// The image used for the container.
	Image *string `type:"string"`

	// The mount points for data volumes in your container.
	MountPoints []*AwsMountPoint `type:"list"`

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

	// When this parameter is true, the container is given elevated privileges on
	// the host container instance (similar to the root user).
	Privileged *bool `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 AwsEcsContainerDetails) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetMountPoints sets the MountPoints field's value.
func (s *AwsEcsContainerDetails) SetMountPoints(v []*AwsMountPoint) *AwsEcsContainerDetails {
	s.MountPoints = v
	return s
}

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

// SetPrivileged sets the Privileged field's value.
func (s *AwsEcsContainerDetails) SetPrivileged(v bool) *AwsEcsContainerDetails {
	s.Privileged = &v
	return s
}

// Strategy item for the capacity provider strategy that the service uses.
type AwsEcsServiceCapacityProviderStrategyDetails struct {
	_ struct{} `type:"structure"`

	// The minimum number of tasks to run on the capacity provider. Only one strategy
	// item can specify a value for Base.
	//
	// The value must be between 0 and 100000.
	Base *int64 `type:"integer"`

	// The short name of the capacity provider.
	CapacityProvider *string `type:"string"`

	// The relative percentage of the total number of tasks that should use the
	// capacity provider.
	//
	// If no weight is specified, the default value is 0. At least one capacity
	// provider must have a weight greater than 0.
	//
	// The value can be between 0 and 1000.
	Weight *int64 `type:"integer"`
}

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

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

// SetBase sets the Base field's value.
func (s *AwsEcsServiceCapacityProviderStrategyDetails) SetBase(v int64) *AwsEcsServiceCapacityProviderStrategyDetails {
	s.Base = &v
	return s
}

// SetCapacityProvider sets the CapacityProvider field's value.
func (s *AwsEcsServiceCapacityProviderStrategyDetails) SetCapacityProvider(v string) *AwsEcsServiceCapacityProviderStrategyDetails {
	s.CapacityProvider = &v
	return s
}

// SetWeight sets the Weight field's value.
func (s *AwsEcsServiceCapacityProviderStrategyDetails) SetWeight(v int64) *AwsEcsServiceCapacityProviderStrategyDetails {
	s.Weight = &v
	return s
}

// Determines whether a service deployment fails if a service cannot reach a
// steady state.
type AwsEcsServiceDeploymentConfigurationDeploymentCircuitBreakerDetails struct {
	_ struct{} `type:"structure"`

	// Whether to enable the deployment circuit breaker logic for the service.
	Enable *bool `type:"boolean"`

	// Whether to roll back the service if a service deployment fails. If rollback
	// is enabled, when a service deployment fails, the service is rolled back to
	// the last deployment that completed successfully.
	Rollback *bool `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 AwsEcsServiceDeploymentConfigurationDeploymentCircuitBreakerDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetEnable sets the Enable field's value.
func (s *AwsEcsServiceDeploymentConfigurationDeploymentCircuitBreakerDetails) SetEnable(v bool) *AwsEcsServiceDeploymentConfigurationDeploymentCircuitBreakerDetails {
	s.Enable = &v
	return s
}

// SetRollback sets the Rollback field's value.
func (s *AwsEcsServiceDeploymentConfigurationDeploymentCircuitBreakerDetails) SetRollback(v bool) *AwsEcsServiceDeploymentConfigurationDeploymentCircuitBreakerDetails {
	s.Rollback = &v
	return s
}

// Optional deployment parameters for the service.
type AwsEcsServiceDeploymentConfigurationDetails struct {
	_ struct{} `type:"structure"`

	// Determines whether a service deployment fails if a service cannot reach a
	// steady state.
	DeploymentCircuitBreaker *AwsEcsServiceDeploymentConfigurationDeploymentCircuitBreakerDetails `type:"structure"`

	// For a service that uses the rolling update (ECS) deployment type, the maximum
	// number of tasks in a service that are allowed in the RUNNING or PENDING state
	// during a deployment, and for tasks that use the EC2 launch type, when any
	// container instances are in the DRAINING state. Provided as a percentage of
	// the desired number of tasks. The default value is 200%.
	//
	// For a service that uses the blue/green (CODE_DEPLOY) or EXTERNAL deployment
	// types, and tasks that use the EC2 launch type, the maximum number of tasks
	// in the service that remain in the RUNNING state while the container instances
	// are in the DRAINING state.
	//
	// For the Fargate launch type, the maximum percent value is not used.
	MaximumPercent *int64 `type:"integer"`

	// For a service that uses the rolling update (ECS) deployment type, the minimum
	// number of tasks in a service that must remain in the RUNNING state during
	// a deployment, and while any container instances are in the DRAINING state
	// if the service contains tasks using the EC2 launch type. Expressed as a percentage
	// of the desired number of tasks. The default value is 100%.
	//
	// For a service that uses the blue/green (CODE_DEPLOY) or EXTERNAL deployment
	// types and tasks that use the EC2 launch type, the minimum number of the tasks
	// in the service that remain in the RUNNING state while the container instances
	// are in the DRAINING state.
	//
	// For the Fargate launch type, the minimum healthy percent value is not used.
	MinimumHealthyPercent *int64 `type:"integer"`
}

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

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

// SetDeploymentCircuitBreaker sets the DeploymentCircuitBreaker field's value.
func (s *AwsEcsServiceDeploymentConfigurationDetails) SetDeploymentCircuitBreaker(v *AwsEcsServiceDeploymentConfigurationDeploymentCircuitBreakerDetails) *AwsEcsServiceDeploymentConfigurationDetails {
	s.DeploymentCircuitBreaker = v
	return s
}

// SetMaximumPercent sets the MaximumPercent field's value.
func (s *AwsEcsServiceDeploymentConfigurationDetails) SetMaximumPercent(v int64) *AwsEcsServiceDeploymentConfigurationDetails {
	s.MaximumPercent = &v
	return s
}

// SetMinimumHealthyPercent sets the MinimumHealthyPercent field's value.
func (s *AwsEcsServiceDeploymentConfigurationDetails) SetMinimumHealthyPercent(v int64) *AwsEcsServiceDeploymentConfigurationDetails {
	s.MinimumHealthyPercent = &v
	return s
}

// Information about the deployment controller type that the service uses.
type AwsEcsServiceDeploymentControllerDetails struct {
	_ struct{} `type:"structure"`

	// The rolling update (ECS) deployment type replaces the current running version
	// of the container with the latest version.
	//
	// The blue/green (CODE_DEPLOY) deployment type uses the blue/green deployment
	// model that is powered by CodeDeploy. This deployment model a new deployment
	// of a service can be verified before production traffic is sent to it.
	//
	// The external (EXTERNAL) deployment type allows the use of any third-party
	// deployment controller for full control over the deployment process for an
	// Amazon ECS service.
	//
	// Valid values: ECS | CODE_DEPLOY | EXTERNAL
	Type *string `type:"string"`
}

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

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

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

// Provides details about a service within an ECS cluster.
type AwsEcsServiceDetails struct {
	_ struct{} `type:"structure"`

	// The capacity provider strategy that the service uses.
	CapacityProviderStrategy []*AwsEcsServiceCapacityProviderStrategyDetails `type:"list"`

	// The ARN of the cluster that hosts the service.
	Cluster *string `type:"string"`

	// Deployment parameters for the service. Includes the number of tasks that
	// run and the order in which to start and stop tasks.
	DeploymentConfiguration *AwsEcsServiceDeploymentConfigurationDetails `type:"structure"`

	// Contains the deployment controller type that the service uses.
	DeploymentController *AwsEcsServiceDeploymentControllerDetails `type:"structure"`

	// The number of instantiations of the task definition to run on the service.
	DesiredCount *int64 `type:"integer"`

	// Whether to enable Amazon ECS managed tags for the tasks in the service.
	EnableEcsManagedTags *bool `type:"boolean"`

	// Whether the execute command functionality is enabled for the service.
	EnableExecuteCommand *bool `type:"boolean"`

	// After a task starts, the amount of time in seconds that the Amazon ECS service
	// scheduler ignores unhealthy Elastic Load Balancing target health checks.
	HealthCheckGracePeriodSeconds *int64 `type:"integer"`

	// The launch type that the service uses.
	//
	// Valid values: EC2 | FARGATE | EXTERNAL
	LaunchType *string `type:"string"`

	// Information about the load balancers that the service uses.
	LoadBalancers []*AwsEcsServiceLoadBalancersDetails `type:"list"`

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

	// For tasks that use the awsvpc networking mode, the VPC subnet and security
	// group configuration.
	NetworkConfiguration *AwsEcsServiceNetworkConfigurationDetails `type:"structure"`

	// The placement constraints for the tasks in the service.
	PlacementConstraints []*AwsEcsServicePlacementConstraintsDetails `type:"list"`

	// Information about how tasks for the service are placed.
	PlacementStrategies []*AwsEcsServicePlacementStrategiesDetails `type:"list"`

	// The platform version on which to run the service. Only specified for tasks
	// that are hosted on Fargate. If a platform version is not specified, the LATEST
	// platform version is used by default.
	PlatformVersion *string `type:"string"`

	// Indicates whether to propagate the tags from the task definition to the task
	// or from the service to the task. If no value is provided, then tags are not
	// propagated.
	//
	// Valid values: TASK_DEFINITION | SERVICE
	PropagateTags *string `type:"string"`

	// The ARN of the IAM role that is associated with the service. The role allows
	// the Amazon ECS container agent to register container instances with an Elastic
	// Load Balancing load balancer.
	Role *string `type:"string"`

	// The scheduling strategy to use for the service.
	//
	// The REPLICA scheduling strategy places and maintains the desired number of
	// tasks across the cluster. By default, the service scheduler spreads tasks
	// across Availability Zones. Task placement strategies and constraints are
	// used to customize task placement decisions.
	//
	// The DAEMON scheduling strategy deploys exactly one task on each active container
	// instance that meets all of the task placement constraints that are specified
	// in the cluster. The service scheduler also evaluates the task placement constraints
	// for running tasks and stops tasks that do not meet the placement constraints.
	//
	// Valid values: REPLICA | DAEMON
	SchedulingStrategy *string `type:"string"`

	// The ARN of the service.
	ServiceArn *string `type:"string"`

	// The name of the service.
	//
	// The name can contain up to 255 characters. It can use letters, numbers, underscores,
	// and hyphens.
	ServiceName *string `type:"string"`

	// Information about the service discovery registries to assign to the service.
	ServiceRegistries []*AwsEcsServiceServiceRegistriesDetails `type:"list"`

	// The task definition to use for tasks in the service.
	TaskDefinition *string `type:"string"`
}

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

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

// SetCapacityProviderStrategy sets the CapacityProviderStrategy field's value.
func (s *AwsEcsServiceDetails) SetCapacityProviderStrategy(v []*AwsEcsServiceCapacityProviderStrategyDetails) *AwsEcsServiceDetails {
	s.CapacityProviderStrategy = v
	return s
}

// SetCluster sets the Cluster field's value.
func (s *AwsEcsServiceDetails) SetCluster(v string) *AwsEcsServiceDetails {
	s.Cluster = &v
	return s
}

// SetDeploymentConfiguration sets the DeploymentConfiguration field's value.
func (s *AwsEcsServiceDetails) SetDeploymentConfiguration(v *AwsEcsServiceDeploymentConfigurationDetails) *AwsEcsServiceDetails {
	s.DeploymentConfiguration = v
	return s
}

// SetDeploymentController sets the DeploymentController field's value.
func (s *AwsEcsServiceDetails) SetDeploymentController(v *AwsEcsServiceDeploymentControllerDetails) *AwsEcsServiceDetails {
	s.DeploymentController = v
	return s
}

// SetDesiredCount sets the DesiredCount field's value.
func (s *AwsEcsServiceDetails) SetDesiredCount(v int64) *AwsEcsServiceDetails {
	s.DesiredCount = &v
	return s
}

// SetEnableEcsManagedTags sets the EnableEcsManagedTags field's value.
func (s *AwsEcsServiceDetails) SetEnableEcsManagedTags(v bool) *AwsEcsServiceDetails {
	s.EnableEcsManagedTags = &v
	return s
}

// SetEnableExecuteCommand sets the EnableExecuteCommand field's value.
func (s *AwsEcsServiceDetails) SetEnableExecuteCommand(v bool) *AwsEcsServiceDetails {
	s.EnableExecuteCommand = &v
	return s
}

// SetHealthCheckGracePeriodSeconds sets the HealthCheckGracePeriodSeconds field's value.
func (s *AwsEcsServiceDetails) SetHealthCheckGracePeriodSeconds(v int64) *AwsEcsServiceDetails {
	s.HealthCheckGracePeriodSeconds = &v
	return s
}

// SetLaunchType sets the LaunchType field's value.
func (s *AwsEcsServiceDetails) SetLaunchType(v string) *AwsEcsServiceDetails {
	s.LaunchType = &v
	return s
}

// SetLoadBalancers sets the LoadBalancers field's value.
func (s *AwsEcsServiceDetails) SetLoadBalancers(v []*AwsEcsServiceLoadBalancersDetails) *AwsEcsServiceDetails {
	s.LoadBalancers = v
	return s
}

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

// SetNetworkConfiguration sets the NetworkConfiguration field's value.
func (s *AwsEcsServiceDetails) SetNetworkConfiguration(v *AwsEcsServiceNetworkConfigurationDetails) *AwsEcsServiceDetails {
	s.NetworkConfiguration = v
	return s
}

// SetPlacementConstraints sets the PlacementConstraints field's value.
func (s *AwsEcsServiceDetails) SetPlacementConstraints(v []*AwsEcsServicePlacementConstraintsDetails) *AwsEcsServiceDetails {
	s.PlacementConstraints = v
	return s
}

// SetPlacementStrategies sets the PlacementStrategies field's value.
func (s *AwsEcsServiceDetails) SetPlacementStrategies(v []*AwsEcsServicePlacementStrategiesDetails) *AwsEcsServiceDetails {
	s.PlacementStrategies = v
	return s
}

// SetPlatformVersion sets the PlatformVersion field's value.
func (s *AwsEcsServiceDetails) SetPlatformVersion(v string) *AwsEcsServiceDetails {
	s.PlatformVersion = &v
	return s
}

// SetPropagateTags sets the PropagateTags field's value.
func (s *AwsEcsServiceDetails) SetPropagateTags(v string) *AwsEcsServiceDetails {
	s.PropagateTags = &v
	return s
}

// SetRole sets the Role field's value.
func (s *AwsEcsServiceDetails) SetRole(v string) *AwsEcsServiceDetails {
	s.Role = &v
	return s
}

// SetSchedulingStrategy sets the SchedulingStrategy field's value.
func (s *AwsEcsServiceDetails) SetSchedulingStrategy(v string) *AwsEcsServiceDetails {
	s.SchedulingStrategy = &v
	return s
}

// SetServiceArn sets the ServiceArn field's value.
func (s *AwsEcsServiceDetails) SetServiceArn(v string) *AwsEcsServiceDetails {
	s.ServiceArn = &v
	return s
}

// SetServiceName sets the ServiceName field's value.
func (s *AwsEcsServiceDetails) SetServiceName(v string) *AwsEcsServiceDetails {
	s.ServiceName = &v
	return s
}

// SetServiceRegistries sets the ServiceRegistries field's value.
func (s *AwsEcsServiceDetails) SetServiceRegistries(v []*AwsEcsServiceServiceRegistriesDetails) *AwsEcsServiceDetails {
	s.ServiceRegistries = v
	return s
}

// SetTaskDefinition sets the TaskDefinition field's value.
func (s *AwsEcsServiceDetails) SetTaskDefinition(v string) *AwsEcsServiceDetails {
	s.TaskDefinition = &v
	return s
}

// Information about a load balancer that the service uses.
type AwsEcsServiceLoadBalancersDetails struct {
	_ struct{} `type:"structure"`

	// The name of the container to associate with the load balancer.
	ContainerName *string `type:"string"`

	// The port on the container to associate with the load balancer. This port
	// must correspond to a containerPort in the task definition the tasks in the
	// service are using. For tasks that use the EC2 launch type, the container
	// instance they are launched on must allow ingress traffic on the hostPort
	// of the port mapping.
	ContainerPort *int64 `type:"integer"`

	// The name of the load balancer to associate with the Amazon ECS service or
	// task set.
	//
	// Only specified when using a Classic Load Balancer. For an Application Load
	// Balancer or a Network Load Balancer, the load balancer name is omitted.
	LoadBalancerName *string `type:"string"`

	// The ARN of the Elastic Load Balancing target group or groups associated with
	// a service or task set.
	//
	// Only specified when using an Application Load Balancer or a Network Load
	// Balancer. For a Classic Load Balancer, the target group ARN is omitted.
	TargetGroupArn *string `type:"string"`
}

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

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

// SetContainerName sets the ContainerName field's value.
func (s *AwsEcsServiceLoadBalancersDetails) SetContainerName(v string) *AwsEcsServiceLoadBalancersDetails {
	s.ContainerName = &v
	return s
}

// SetContainerPort sets the ContainerPort field's value.
func (s *AwsEcsServiceLoadBalancersDetails) SetContainerPort(v int64) *AwsEcsServiceLoadBalancersDetails {
	s.ContainerPort = &v
	return s
}

// SetLoadBalancerName sets the LoadBalancerName field's value.
func (s *AwsEcsServiceLoadBalancersDetails) SetLoadBalancerName(v string) *AwsEcsServiceLoadBalancersDetails {
	s.LoadBalancerName = &v
	return s
}

// SetTargetGroupArn sets the TargetGroupArn field's value.
func (s *AwsEcsServiceLoadBalancersDetails) SetTargetGroupArn(v string) *AwsEcsServiceLoadBalancersDetails {
	s.TargetGroupArn = &v
	return s
}

// For tasks that use the awsvpc networking mode, the VPC subnet and security
// group configuration.
type AwsEcsServiceNetworkConfigurationAwsVpcConfigurationDetails struct {
	_ struct{} `type:"structure"`

	// Whether the task's elastic network interface receives a public IP address.
	// The default value is DISABLED.
	//
	// Valid values: ENABLED | DISABLED
	AssignPublicIp *string `type:"string"`

	// The IDs of the security groups associated with the task or service.
	//
	// You can provide up to five security groups.
	SecurityGroups []*string `type:"list"`

	// The IDs of the subnets associated with the task or service.
	//
	// You can provide up to 16 subnets.
	Subnets []*string `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 AwsEcsServiceNetworkConfigurationAwsVpcConfigurationDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetAssignPublicIp sets the AssignPublicIp field's value.
func (s *AwsEcsServiceNetworkConfigurationAwsVpcConfigurationDetails) SetAssignPublicIp(v string) *AwsEcsServiceNetworkConfigurationAwsVpcConfigurationDetails {
	s.AssignPublicIp = &v
	return s
}

// SetSecurityGroups sets the SecurityGroups field's value.
func (s *AwsEcsServiceNetworkConfigurationAwsVpcConfigurationDetails) SetSecurityGroups(v []*string) *AwsEcsServiceNetworkConfigurationAwsVpcConfigurationDetails {
	s.SecurityGroups = v
	return s
}

// SetSubnets sets the Subnets field's value.
func (s *AwsEcsServiceNetworkConfigurationAwsVpcConfigurationDetails) SetSubnets(v []*string) *AwsEcsServiceNetworkConfigurationAwsVpcConfigurationDetails {
	s.Subnets = v
	return s
}

// For tasks that use the awsvpc networking mode, the VPC subnet and security
// group configuration.
type AwsEcsServiceNetworkConfigurationDetails struct {
	_ struct{} `type:"structure"`

	// The VPC subnet and security group configuration.
	AwsVpcConfiguration *AwsEcsServiceNetworkConfigurationAwsVpcConfigurationDetails `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 AwsEcsServiceNetworkConfigurationDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetAwsVpcConfiguration sets the AwsVpcConfiguration field's value.
func (s *AwsEcsServiceNetworkConfigurationDetails) SetAwsVpcConfiguration(v *AwsEcsServiceNetworkConfigurationAwsVpcConfigurationDetails) *AwsEcsServiceNetworkConfigurationDetails {
	s.AwsVpcConfiguration = v
	return s
}

// A placement constraint for the tasks in the service.
type AwsEcsServicePlacementConstraintsDetails struct {
	_ struct{} `type:"structure"`

	// A cluster query language expression to apply to the constraint. You cannot
	// specify an expression if the constraint type is distinctInstance.
	Expression *string `type:"string"`

	// The type of constraint. Use distinctInstance to run each task in a particular
	// group on a different container instance. Use memberOf to restrict the selection
	// to a group of valid candidates.
	//
	// Valid values: distinctInstance | memberOf
	Type *string `type:"string"`
}

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

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

// SetExpression sets the Expression field's value.
func (s *AwsEcsServicePlacementConstraintsDetails) SetExpression(v string) *AwsEcsServicePlacementConstraintsDetails {
	s.Expression = &v
	return s
}

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

// A placement strategy that determines how to place the tasks for the service.
type AwsEcsServicePlacementStrategiesDetails struct {
	_ struct{} `type:"structure"`

	// The field to apply the placement strategy against.
	//
	// For the spread placement strategy, valid values are instanceId (or host,
	// which has the same effect), or any platform or custom attribute that is applied
	// to a container instance, such as attribute:ecs.availability-zone.
	//
	// For the binpack placement strategy, valid values are cpu and memory.
	//
	// For the random placement strategy, this attribute is not used.
	Field *string `type:"string"`

	// The type of placement strategy.
	//
	// The random placement strategy randomly places tasks on available candidates.
	//
	// The spread placement strategy spreads placement across available candidates
	// evenly based on the value of Field.
	//
	// The binpack strategy places tasks on available candidates that have the least
	// available amount of the resource that is specified in Field.
	//
	// Valid values: random | spread | binpack
	Type *string `type:"string"`
}

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

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

// SetField sets the Field field's value.
func (s *AwsEcsServicePlacementStrategiesDetails) SetField(v string) *AwsEcsServicePlacementStrategiesDetails {
	s.Field = &v
	return s
}

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

// Information about a service discovery registry to assign to the service.
type AwsEcsServiceServiceRegistriesDetails struct {
	_ struct{} `type:"structure"`

	// The container name value to use for the service discovery service.
	//
	// If the task definition uses the bridge or host network mode, you must specify
	// ContainerName and ContainerPort.
	//
	// If the task definition uses the awsvpc network mode and a type SRV DNS record,
	// you must specify either ContainerName and ContainerPort, or Port , but not
	// both.
	ContainerName *string `type:"string"`

	// The port value to use for the service discovery service.
	//
	// If the task definition uses the bridge or host network mode, you must specify
	// ContainerName and ContainerPort.
	//
	// If the task definition uses the awsvpc network mode and a type SRV DNS record,
	// you must specify either ContainerName and ContainerPort, or Port , but not
	// both.
	ContainerPort *int64 `type:"integer"`

	// The port value to use for a service discovery service that specifies an SRV
	// record. This field can be used if both the awsvpcawsvpc network mode and
	// SRV records are used.
	Port *int64 `type:"integer"`

	// The ARN of the service registry.
	RegistryArn *string `type:"string"`
}

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

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

// SetContainerName sets the ContainerName field's value.
func (s *AwsEcsServiceServiceRegistriesDetails) SetContainerName(v string) *AwsEcsServiceServiceRegistriesDetails {
	s.ContainerName = &v
	return s
}

// SetContainerPort sets the ContainerPort field's value.
func (s *AwsEcsServiceServiceRegistriesDetails) SetContainerPort(v int64) *AwsEcsServiceServiceRegistriesDetails {
	s.ContainerPort = &v
	return s
}

// SetPort sets the Port field's value.
func (s *AwsEcsServiceServiceRegistriesDetails) SetPort(v int64) *AwsEcsServiceServiceRegistriesDetails {
	s.Port = &v
	return s
}

// SetRegistryArn sets the RegistryArn field's value.
func (s *AwsEcsServiceServiceRegistriesDetails) SetRegistryArn(v string) *AwsEcsServiceServiceRegistriesDetails {
	s.RegistryArn = &v
	return s
}

// A dependency that is defined for container startup and shutdown.
type AwsEcsTaskDefinitionContainerDefinitionsDependsOnDetails struct {
	_ struct{} `type:"structure"`

	// The dependency condition of the dependent container. Indicates the required
	// status of the dependent container before the current container can start.
	// Valid values are as follows:
	//
	//    * COMPLETE
	//
	//    * HEALTHY
	//
	//    * SUCCESS
	//
	//    * START
	Condition *string `type:"string"`

	// The name of the dependent container.
	ContainerName *string `type:"string"`
}

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

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

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

// SetContainerName sets the ContainerName field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDependsOnDetails) SetContainerName(v string) *AwsEcsTaskDefinitionContainerDefinitionsDependsOnDetails {
	s.ContainerName = &v
	return s
}

// A container definition that describes a container in the task.
type AwsEcsTaskDefinitionContainerDefinitionsDetails struct {
	_ struct{} `type:"structure"`

	// The command that is passed to the container.
	Command []*string `type:"list"`

	// The number of CPU units reserved for the container.
	Cpu *int64 `type:"integer"`

	// The dependencies that are defined for container startup and shutdown.
	DependsOn []*AwsEcsTaskDefinitionContainerDefinitionsDependsOnDetails `type:"list"`

	// Whether to disable networking within the container.
	DisableNetworking *bool `type:"boolean"`

	// A list of DNS search domains that are presented to the container.
	DnsSearchDomains []*string `type:"list"`

	// A list of DNS servers that are presented to the container.
	DnsServers []*string `type:"list"`

	// A key-value map of labels to add to the container.
	DockerLabels map[string]*string `type:"map"`

	// A list of strings to provide custom labels for SELinux and AppArmor multi-level
	// security systems.
	DockerSecurityOptions []*string `type:"list"`

	// The entry point that is passed to the container.
	EntryPoint []*string `type:"list"`

	// The environment variables to pass to a container.
	Environment []*AwsEcsTaskDefinitionContainerDefinitionsEnvironmentDetails `type:"list"`

	// A list of files containing the environment variables to pass to a container.
	EnvironmentFiles []*AwsEcsTaskDefinitionContainerDefinitionsEnvironmentFilesDetails `type:"list"`

	// Whether the container is essential. All tasks must have at least one essential
	// container.
	Essential *bool `type:"boolean"`

	// A list of hostnames and IP address mappings to append to the /etc/hosts file
	// on the container.
	ExtraHosts []*AwsEcsTaskDefinitionContainerDefinitionsExtraHostsDetails `type:"list"`

	// The FireLens configuration for the container. Specifies and configures a
	// log router for container logs.
	FirelensConfiguration *AwsEcsTaskDefinitionContainerDefinitionsFirelensConfigurationDetails `type:"structure"`

	// The container health check command and associated configuration parameters
	// for the container.
	HealthCheck *AwsEcsTaskDefinitionContainerDefinitionsHealthCheckDetails `type:"structure"`

	// The hostname to use for the container.
	Hostname *string `type:"string"`

	// The image used to start the container.
	Image *string `type:"string"`

	// If set to true, then containerized applications can be deployed that require
	// stdin or a tty to be allocated.
	Interactive *bool `type:"boolean"`

	// A list of links for the container in the form container_name:alias . Allows
	// containers to communicate with each other without the need for port mappings.
	Links []*string `type:"list"`

	// Linux-specific modifications that are applied to the container, such as Linux
	// kernel capabilities.
	LinuxParameters *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails `type:"structure"`

	// The log configuration specification for the container.
	LogConfiguration *AwsEcsTaskDefinitionContainerDefinitionsLogConfigurationDetails `type:"structure"`

	// The amount (in MiB) of memory to present to the container. If the container
	// attempts to exceed the memory specified here, the container is shut down.
	// The total amount of memory reserved for all containers within a task must
	// be lower than the task memory value, if one is specified.
	Memory *int64 `type:"integer"`

	// The soft limit (in MiB) of memory to reserve for the container.
	MemoryReservation *int64 `type:"integer"`

	// The mount points for the data volumes in the container.
	MountPoints []*AwsEcsTaskDefinitionContainerDefinitionsMountPointsDetails `type:"list"`

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

	// The list of port mappings for the container.
	PortMappings []*AwsEcsTaskDefinitionContainerDefinitionsPortMappingsDetails `type:"list"`

	// Whether the container is given elevated privileges on the host container
	// instance. The elevated privileges are similar to the root user.
	Privileged *bool `type:"boolean"`

	// Whether to allocate a TTY to the container.
	PseudoTerminal *bool `type:"boolean"`

	// Whether the container is given read-only access to its root file system.
	ReadonlyRootFilesystem *bool `type:"boolean"`

	// The private repository authentication credentials to use.
	RepositoryCredentials *AwsEcsTaskDefinitionContainerDefinitionsRepositoryCredentialsDetails `type:"structure"`

	// The type and amount of a resource to assign to a container. The only supported
	// resource is a GPU.
	ResourceRequirements []*AwsEcsTaskDefinitionContainerDefinitionsResourceRequirementsDetails `type:"list"`

	// The secrets to pass to the container.
	Secrets []*AwsEcsTaskDefinitionContainerDefinitionsSecretsDetails `type:"list"`

	// The number of seconds to wait before giving up on resolving dependencies
	// for a container.
	StartTimeout *int64 `type:"integer"`

	// The number of seconds to wait before the container is stopped if it doesn't
	// shut down normally on its own.
	StopTimeout *int64 `type:"integer"`

	// A list of namespaced kernel parameters to set in the container.
	SystemControls []*AwsEcsTaskDefinitionContainerDefinitionsSystemControlsDetails `type:"list"`

	// A list of ulimits to set in the container.
	Ulimits []*AwsEcsTaskDefinitionContainerDefinitionsUlimitsDetails `type:"list"`

	// The user to use inside the container.
	//
	// The value can use one of the following formats.
	//
	//    * user
	//
	//    * user :group
	//
	//    * uid
	//
	//    * uid :gid
	//
	//    * user :gid
	//
	//    * uid :group
	User *string `type:"string"`

	// Data volumes to mount from another container.
	VolumesFrom []*AwsEcsTaskDefinitionContainerDefinitionsVolumesFromDetails `type:"list"`

	// The working directory in which to run commands inside the container.
	WorkingDirectory *string `type:"string"`
}

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

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

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

// SetCpu sets the Cpu field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetCpu(v int64) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.Cpu = &v
	return s
}

// SetDependsOn sets the DependsOn field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetDependsOn(v []*AwsEcsTaskDefinitionContainerDefinitionsDependsOnDetails) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.DependsOn = v
	return s
}

// SetDisableNetworking sets the DisableNetworking field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetDisableNetworking(v bool) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.DisableNetworking = &v
	return s
}

// SetDnsSearchDomains sets the DnsSearchDomains field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetDnsSearchDomains(v []*string) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.DnsSearchDomains = v
	return s
}

// SetDnsServers sets the DnsServers field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetDnsServers(v []*string) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.DnsServers = v
	return s
}

// SetDockerLabels sets the DockerLabels field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetDockerLabels(v map[string]*string) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.DockerLabels = v
	return s
}

// SetDockerSecurityOptions sets the DockerSecurityOptions field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetDockerSecurityOptions(v []*string) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.DockerSecurityOptions = v
	return s
}

// SetEntryPoint sets the EntryPoint field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetEntryPoint(v []*string) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.EntryPoint = v
	return s
}

// SetEnvironment sets the Environment field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetEnvironment(v []*AwsEcsTaskDefinitionContainerDefinitionsEnvironmentDetails) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.Environment = v
	return s
}

// SetEnvironmentFiles sets the EnvironmentFiles field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetEnvironmentFiles(v []*AwsEcsTaskDefinitionContainerDefinitionsEnvironmentFilesDetails) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.EnvironmentFiles = v
	return s
}

// SetEssential sets the Essential field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetEssential(v bool) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.Essential = &v
	return s
}

// SetExtraHosts sets the ExtraHosts field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetExtraHosts(v []*AwsEcsTaskDefinitionContainerDefinitionsExtraHostsDetails) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.ExtraHosts = v
	return s
}

// SetFirelensConfiguration sets the FirelensConfiguration field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetFirelensConfiguration(v *AwsEcsTaskDefinitionContainerDefinitionsFirelensConfigurationDetails) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.FirelensConfiguration = v
	return s
}

// SetHealthCheck sets the HealthCheck field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetHealthCheck(v *AwsEcsTaskDefinitionContainerDefinitionsHealthCheckDetails) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.HealthCheck = v
	return s
}

// SetHostname sets the Hostname field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetHostname(v string) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.Hostname = &v
	return s
}

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

// SetInteractive sets the Interactive field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetInteractive(v bool) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.Interactive = &v
	return s
}

// SetLinks sets the Links field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetLinks(v []*string) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.Links = v
	return s
}

// SetLinuxParameters sets the LinuxParameters field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetLinuxParameters(v *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.LinuxParameters = v
	return s
}

// SetLogConfiguration sets the LogConfiguration field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetLogConfiguration(v *AwsEcsTaskDefinitionContainerDefinitionsLogConfigurationDetails) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.LogConfiguration = v
	return s
}

// SetMemory sets the Memory field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetMemory(v int64) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.Memory = &v
	return s
}

// SetMemoryReservation sets the MemoryReservation field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetMemoryReservation(v int64) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.MemoryReservation = &v
	return s
}

// SetMountPoints sets the MountPoints field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetMountPoints(v []*AwsEcsTaskDefinitionContainerDefinitionsMountPointsDetails) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.MountPoints = v
	return s
}

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

// SetPortMappings sets the PortMappings field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetPortMappings(v []*AwsEcsTaskDefinitionContainerDefinitionsPortMappingsDetails) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.PortMappings = v
	return s
}

// SetPrivileged sets the Privileged field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetPrivileged(v bool) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.Privileged = &v
	return s
}

// SetPseudoTerminal sets the PseudoTerminal field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetPseudoTerminal(v bool) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.PseudoTerminal = &v
	return s
}

// SetReadonlyRootFilesystem sets the ReadonlyRootFilesystem field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetReadonlyRootFilesystem(v bool) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.ReadonlyRootFilesystem = &v
	return s
}

// SetRepositoryCredentials sets the RepositoryCredentials field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetRepositoryCredentials(v *AwsEcsTaskDefinitionContainerDefinitionsRepositoryCredentialsDetails) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.RepositoryCredentials = v
	return s
}

// SetResourceRequirements sets the ResourceRequirements field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetResourceRequirements(v []*AwsEcsTaskDefinitionContainerDefinitionsResourceRequirementsDetails) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.ResourceRequirements = v
	return s
}

// SetSecrets sets the Secrets field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetSecrets(v []*AwsEcsTaskDefinitionContainerDefinitionsSecretsDetails) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.Secrets = v
	return s
}

// SetStartTimeout sets the StartTimeout field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetStartTimeout(v int64) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.StartTimeout = &v
	return s
}

// SetStopTimeout sets the StopTimeout field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetStopTimeout(v int64) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.StopTimeout = &v
	return s
}

// SetSystemControls sets the SystemControls field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetSystemControls(v []*AwsEcsTaskDefinitionContainerDefinitionsSystemControlsDetails) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.SystemControls = v
	return s
}

// SetUlimits sets the Ulimits field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetUlimits(v []*AwsEcsTaskDefinitionContainerDefinitionsUlimitsDetails) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.Ulimits = v
	return s
}

// SetUser sets the User field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetUser(v string) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.User = &v
	return s
}

// SetVolumesFrom sets the VolumesFrom field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsDetails) SetVolumesFrom(v []*AwsEcsTaskDefinitionContainerDefinitionsVolumesFromDetails) *AwsEcsTaskDefinitionContainerDefinitionsDetails {
	s.VolumesFrom = v
	return s
}

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

// An environment variable to pass to the container.
type AwsEcsTaskDefinitionContainerDefinitionsEnvironmentDetails struct {
	_ struct{} `type:"structure"`

	// The name of the environment variable.
	Name *string `type:"string"`

	// The value of the environment variable.
	Value *string `type:"string"`
}

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

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

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

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

// A file that contain environment variables to pass to a container.
type AwsEcsTaskDefinitionContainerDefinitionsEnvironmentFilesDetails struct {
	_ struct{} `type:"structure"`

	// The type of environment file. The valid value is s3.
	Type *string `type:"string"`

	// The ARN of the S3 object that contains the environment variable file.
	Value *string `type:"string"`
}

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

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

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

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

// A hostname and IP address mapping to append to the /etc/hosts file on the
// container.
type AwsEcsTaskDefinitionContainerDefinitionsExtraHostsDetails struct {
	_ struct{} `type:"structure"`

	// The hostname to use in the /etc/hosts entry.
	Hostname *string `type:"string"`

	// The IP address to use in the /etc/hosts entry.
	IpAddress *string `type:"string"`
}

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

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

// SetHostname sets the Hostname field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsExtraHostsDetails) SetHostname(v string) *AwsEcsTaskDefinitionContainerDefinitionsExtraHostsDetails {
	s.Hostname = &v
	return s
}

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

// The FireLens configuration for the container. The configuration specifies
// and configures a log router for container logs.
type AwsEcsTaskDefinitionContainerDefinitionsFirelensConfigurationDetails struct {
	_ struct{} `type:"structure"`

	// The options to use to configure the log router.
	//
	// The valid option keys are as follows:
	//
	//    * enable-ecs-log-metadata. The value can be true or false.
	//
	//    * config-file-type. The value can be s3 or file.
	//
	//    * config-file-value. The value is either an S3 ARN or a file path.
	Options map[string]*string `type:"map"`

	// The log router to use. Valid values are fluentbit or fluentd.
	Type *string `type:"string"`
}

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

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

// SetOptions sets the Options field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsFirelensConfigurationDetails) SetOptions(v map[string]*string) *AwsEcsTaskDefinitionContainerDefinitionsFirelensConfigurationDetails {
	s.Options = v
	return s
}

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

// The container health check command and associated configuration parameters
// for the container.
type AwsEcsTaskDefinitionContainerDefinitionsHealthCheckDetails struct {
	_ struct{} `type:"structure"`

	// The command that the container runs to determine whether it is healthy.
	Command []*string `type:"list"`

	// The time period in seconds between each health check execution. The default
	// value is 30 seconds.
	Interval *int64 `type:"integer"`

	// The number of times to retry a failed health check before the container is
	// considered unhealthy. The default value is 3.
	Retries *int64 `type:"integer"`

	// The optional grace period in seconds that allows containers time to bootstrap
	// before failed health checks count towards the maximum number of retries.
	StartPeriod *int64 `type:"integer"`

	// The time period in seconds to wait for a health check to succeed before it
	// is considered a failure. The default value is 5.
	Timeout *int64 `type:"integer"`
}

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

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

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

// SetInterval sets the Interval field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsHealthCheckDetails) SetInterval(v int64) *AwsEcsTaskDefinitionContainerDefinitionsHealthCheckDetails {
	s.Interval = &v
	return s
}

// SetRetries sets the Retries field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsHealthCheckDetails) SetRetries(v int64) *AwsEcsTaskDefinitionContainerDefinitionsHealthCheckDetails {
	s.Retries = &v
	return s
}

// SetStartPeriod sets the StartPeriod field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsHealthCheckDetails) SetStartPeriod(v int64) *AwsEcsTaskDefinitionContainerDefinitionsHealthCheckDetails {
	s.StartPeriod = &v
	return s
}

// SetTimeout sets the Timeout field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsHealthCheckDetails) SetTimeout(v int64) *AwsEcsTaskDefinitionContainerDefinitionsHealthCheckDetails {
	s.Timeout = &v
	return s
}

// The Linux capabilities for the container that are added to or dropped from
// the default configuration provided by Docker.
type AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails struct {
	_ struct{} `type:"structure"`

	// The Linux capabilities for the container that are added to the default configuration
	// provided by Docker. Valid values are as follows:
	//
	// Valid values: "ALL" | "AUDIT_CONTROL" |"AUDIT_WRITE" | "BLOCK_SUSPEND" |
	// "CHOWN" | "DAC_OVERRIDE" | "DAC_READ_SEARCH" | "FOWNER" | "FSETID" | "IPC_LOCK"
	// | "IPC_OWNER" | "KILL" | "LEASE" | "LINUX_IMMUTABLE" | "MAC_ADMIN" |"MAC_OVERRIDE"
	// | "MKNOD" | "NET_ADMIN" | "NET_BIND_SERVICE" | "NET_BROADCAST" | "NET_RAW"
	// | "SETFCAP" | "SETGID" | "SETPCAP" | "SETUID" | "SYS_ADMIN" | "SYS_BOOT"
	// | "SYS_CHROOT" | "SYS_MODULE" | "SYS_NICE" | "SYS_PACCT" | "SYS_PTRACE" |
	// "SYS_RAWIO" | "SYS_RESOURCE" | "SYS_TIME" | "SYS_TTY_CONFIG" | "SYSLOG" |
	// "WAKE_ALARM"
	Add []*string `type:"list"`

	// The Linux capabilities for the container that are dropped from the default
	// configuration provided by Docker.
	//
	// Valid values: "ALL" | "AUDIT_CONTROL" |"AUDIT_WRITE" | "BLOCK_SUSPEND" |
	// "CHOWN" | "DAC_OVERRIDE" | "DAC_READ_SEARCH" | "FOWNER" | "FSETID" | "IPC_LOCK"
	// | "IPC_OWNER" | "KILL" | "LEASE" | "LINUX_IMMUTABLE" | "MAC_ADMIN" |"MAC_OVERRIDE"
	// | "MKNOD" | "NET_ADMIN" | "NET_BIND_SERVICE" | "NET_BROADCAST" | "NET_RAW"
	// | "SETFCAP" | "SETGID" | "SETPCAP" | "SETUID" | "SYS_ADMIN" | "SYS_BOOT"
	// | "SYS_CHROOT" | "SYS_MODULE" | "SYS_NICE" | "SYS_PACCT" | "SYS_PTRACE" |
	// "SYS_RAWIO" | "SYS_RESOURCE" | "SYS_TIME" | "SYS_TTY_CONFIG" | "SYSLOG" |
	// "WAKE_ALARM"
	Drop []*string `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 AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetAdd sets the Add field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails) SetAdd(v []*string) *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails {
	s.Add = v
	return s
}

// SetDrop sets the Drop field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails) SetDrop(v []*string) *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails {
	s.Drop = v
	return s
}

// >Linux-specific modifications that are applied to the container, such as
// Linux kernel capabilities.
type AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails struct {
	_ struct{} `type:"structure"`

	// The Linux capabilities for the container that are added to or dropped from
	// the default configuration provided by Docker.
	Capabilities *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails `type:"structure"`

	// The host devices to expose to the container.
	Devices []*AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails `type:"list"`

	// Whether to run an init process inside the container that forwards signals
	// and reaps processes.
	InitProcessEnabled *bool `type:"boolean"`

	// The total amount of swap memory (in MiB) that a container can use.
	MaxSwap *int64 `type:"integer"`

	// The value for the size (in MiB) of the /dev/shm volume.
	SharedMemorySize *int64 `type:"integer"`

	// Configures the container's memory swappiness behavior. Determines how aggressively
	// pages are swapped. The higher the value, the more aggressive the swappiness.
	// The default is 60.
	Swappiness *int64 `type:"integer"`

	// The container path, mount options, and size (in MiB) of the tmpfs mount.
	Tmpfs []*AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails `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 AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetCapabilities sets the Capabilities field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails) SetCapabilities(v *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails) *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails {
	s.Capabilities = v
	return s
}

// SetDevices sets the Devices field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails) SetDevices(v []*AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails) *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails {
	s.Devices = v
	return s
}

// SetInitProcessEnabled sets the InitProcessEnabled field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails) SetInitProcessEnabled(v bool) *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails {
	s.InitProcessEnabled = &v
	return s
}

// SetMaxSwap sets the MaxSwap field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails) SetMaxSwap(v int64) *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails {
	s.MaxSwap = &v
	return s
}

// SetSharedMemorySize sets the SharedMemorySize field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails) SetSharedMemorySize(v int64) *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails {
	s.SharedMemorySize = &v
	return s
}

// SetSwappiness sets the Swappiness field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails) SetSwappiness(v int64) *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails {
	s.Swappiness = &v
	return s
}

// SetTmpfs sets the Tmpfs field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails) SetTmpfs(v []*AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails) *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails {
	s.Tmpfs = v
	return s
}

// A host device to expose to the container.
type AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails struct {
	_ struct{} `type:"structure"`

	// The path inside the container at which to expose the host device.
	ContainerPath *string `type:"string"`

	// The path for the device on the host container instance.
	HostPath *string `type:"string"`

	// The explicit permissions to provide to the container for the device. By default,
	// the container has permissions for read, write, and mknod for the device.
	Permissions []*string `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 AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetContainerPath sets the ContainerPath field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails) SetContainerPath(v string) *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails {
	s.ContainerPath = &v
	return s
}

// SetHostPath sets the HostPath field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails) SetHostPath(v string) *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails {
	s.HostPath = &v
	return s
}

// SetPermissions sets the Permissions field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails) SetPermissions(v []*string) *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails {
	s.Permissions = v
	return s
}

// The container path, mount options, and size (in MiB) of a tmpfs mount.
type AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails struct {
	_ struct{} `type:"structure"`

	// The absolute file path where the tmpfs volume is to be mounted.
	ContainerPath *string `type:"string"`

	// The list of tmpfs volume mount options.
	//
	// Valid values: "defaults" | "ro" | "rw" | "suid" | "nosuid" | "dev" | "nodev"
	// |"exec" | "noexec" | "sync" | "async" | "dirsync" | "remount" | "mand" |
	// "nomand" | "atime" | "noatime" | "diratime" | "nodiratime" | "bind" | "rbind"
	// | "unbindable" | "runbindable" | "private" | "rprivate" | "shared" | "rshared"
	// | "slave" | "rslave" | "relatime" | "norelatime" | "strictatime" | "nostrictatime"
	// |"mode" | "uid" | "gid" | "nr_inodes" |"nr_blocks" | "mpol"
	MountOptions []*string `type:"list"`

	// The maximum size (in MiB) of the tmpfs volume.
	Size *int64 `type:"integer"`
}

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

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

// SetContainerPath sets the ContainerPath field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails) SetContainerPath(v string) *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails {
	s.ContainerPath = &v
	return s
}

// SetMountOptions sets the MountOptions field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails) SetMountOptions(v []*string) *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails {
	s.MountOptions = v
	return s
}

// SetSize sets the Size field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails) SetSize(v int64) *AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails {
	s.Size = &v
	return s
}

// The log configuration specification for the container.
type AwsEcsTaskDefinitionContainerDefinitionsLogConfigurationDetails struct {
	_ struct{} `type:"structure"`

	// The log driver to use for the container.
	//
	// Valid values on Fargate are as follows:
	//
	//    * awsfirelens
	//
	//    * awslogs
	//
	//    * splunk
	//
	// Valid values on Amazon EC2 are as follows:
	//
	//    * awsfirelens
	//
	//    * awslogs
	//
	//    * fluentd
	//
	//    * gelf
	//
	//    * journald
	//
	//    * json-file
	//
	//    * logentries
	//
	//    * splunk
	//
	//    * syslog
	LogDriver *string `type:"string"`

	// The configuration options to send to the log driver. Requires version 1.19
	// of the Docker Remote API or greater on your container instance.
	Options map[string]*string `type:"map"`

	// The secrets to pass to the log configuration.
	SecretOptions []*AwsEcsTaskDefinitionContainerDefinitionsLogConfigurationSecretOptionsDetails `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 AwsEcsTaskDefinitionContainerDefinitionsLogConfigurationDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetLogDriver sets the LogDriver field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsLogConfigurationDetails) SetLogDriver(v string) *AwsEcsTaskDefinitionContainerDefinitionsLogConfigurationDetails {
	s.LogDriver = &v
	return s
}

// SetOptions sets the Options field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsLogConfigurationDetails) SetOptions(v map[string]*string) *AwsEcsTaskDefinitionContainerDefinitionsLogConfigurationDetails {
	s.Options = v
	return s
}

// SetSecretOptions sets the SecretOptions field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsLogConfigurationDetails) SetSecretOptions(v []*AwsEcsTaskDefinitionContainerDefinitionsLogConfigurationSecretOptionsDetails) *AwsEcsTaskDefinitionContainerDefinitionsLogConfigurationDetails {
	s.SecretOptions = v
	return s
}

// A secret to pass to the log configuration.
type AwsEcsTaskDefinitionContainerDefinitionsLogConfigurationSecretOptionsDetails struct {
	_ struct{} `type:"structure"`

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

	// The secret to expose to the container.
	//
	// The value is either the full ARN of the Secrets Manager secret or the full
	// ARN of the parameter in the Systems Manager Parameter Store.
	ValueFrom *string `type:"string"`
}

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

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

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

// SetValueFrom sets the ValueFrom field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsLogConfigurationSecretOptionsDetails) SetValueFrom(v string) *AwsEcsTaskDefinitionContainerDefinitionsLogConfigurationSecretOptionsDetails {
	s.ValueFrom = &v
	return s
}

// A mount point for the data volumes in the container.
type AwsEcsTaskDefinitionContainerDefinitionsMountPointsDetails struct {
	_ struct{} `type:"structure"`

	// The path on the container to mount the host volume at.
	ContainerPath *string `type:"string"`

	// Whether the container has read-only access to the volume.
	ReadOnly *bool `type:"boolean"`

	// The name of the volume to mount. Must match the name of a volume listed in
	// VolumeDetails for the task definition.
	SourceVolume *string `type:"string"`
}

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

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

// SetContainerPath sets the ContainerPath field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsMountPointsDetails) SetContainerPath(v string) *AwsEcsTaskDefinitionContainerDefinitionsMountPointsDetails {
	s.ContainerPath = &v
	return s
}

// SetReadOnly sets the ReadOnly field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsMountPointsDetails) SetReadOnly(v bool) *AwsEcsTaskDefinitionContainerDefinitionsMountPointsDetails {
	s.ReadOnly = &v
	return s
}

// SetSourceVolume sets the SourceVolume field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsMountPointsDetails) SetSourceVolume(v string) *AwsEcsTaskDefinitionContainerDefinitionsMountPointsDetails {
	s.SourceVolume = &v
	return s
}

// A port mapping for the container.
type AwsEcsTaskDefinitionContainerDefinitionsPortMappingsDetails struct {
	_ struct{} `type:"structure"`

	// The port number on the container that is bound to the user-specified or automatically
	// assigned host port.
	ContainerPort *int64 `type:"integer"`

	// The port number on the container instance to reserve for the container.
	HostPort *int64 `type:"integer"`

	// The protocol used for the port mapping. The default is tcp.
	Protocol *string `type:"string"`
}

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

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

// SetContainerPort sets the ContainerPort field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsPortMappingsDetails) SetContainerPort(v int64) *AwsEcsTaskDefinitionContainerDefinitionsPortMappingsDetails {
	s.ContainerPort = &v
	return s
}

// SetHostPort sets the HostPort field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsPortMappingsDetails) SetHostPort(v int64) *AwsEcsTaskDefinitionContainerDefinitionsPortMappingsDetails {
	s.HostPort = &v
	return s
}

// SetProtocol sets the Protocol field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsPortMappingsDetails) SetProtocol(v string) *AwsEcsTaskDefinitionContainerDefinitionsPortMappingsDetails {
	s.Protocol = &v
	return s
}

// The private repository authentication credentials to use.
type AwsEcsTaskDefinitionContainerDefinitionsRepositoryCredentialsDetails struct {
	_ struct{} `type:"structure"`

	// The ARN of the secret that contains the private repository credentials.
	CredentialsParameter *string `type:"string"`
}

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

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionContainerDefinitionsRepositoryCredentialsDetails) GoString() string {
	return s.String()
}

// SetCredentialsParameter sets the CredentialsParameter field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsRepositoryCredentialsDetails) SetCredentialsParameter(v string) *AwsEcsTaskDefinitionContainerDefinitionsRepositoryCredentialsDetails {
	s.CredentialsParameter = &v
	return s
}

// A resource to assign to a container.
type AwsEcsTaskDefinitionContainerDefinitionsResourceRequirementsDetails struct {
	_ struct{} `type:"structure"`

	// The type of resource to assign to a container. Valid values are GPU or InferenceAccelerator.
	Type *string `type:"string"`

	// The value for the specified resource type.
	//
	// For GPU, the value is the number of physical GPUs the Amazon ECS container
	// agent reserves for the container.
	//
	// For InferenceAccelerator, the value should match the DeviceName attribute
	// of an entry in InferenceAccelerators.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionContainerDefinitionsResourceRequirementsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionContainerDefinitionsResourceRequirementsDetails) GoString() string {
	return s.String()
}

// SetType sets the Type field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsResourceRequirementsDetails) SetType(v string) *AwsEcsTaskDefinitionContainerDefinitionsResourceRequirementsDetails {
	s.Type = &v
	return s
}

// SetValue sets the Value field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsResourceRequirementsDetails) SetValue(v string) *AwsEcsTaskDefinitionContainerDefinitionsResourceRequirementsDetails {
	s.Value = &v
	return s
}

// A secret to pass to the container.
type AwsEcsTaskDefinitionContainerDefinitionsSecretsDetails struct {
	_ struct{} `type:"structure"`

	// The name of the secret.
	Name *string `type:"string"`

	// The secret to expose to the container. The value is either the full ARN of
	// the Secrets Manager secret or the full ARN of the parameter in the Systems
	// Manager Parameter Store.
	ValueFrom *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionContainerDefinitionsSecretsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionContainerDefinitionsSecretsDetails) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsSecretsDetails) SetName(v string) *AwsEcsTaskDefinitionContainerDefinitionsSecretsDetails {
	s.Name = &v
	return s
}

// SetValueFrom sets the ValueFrom field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsSecretsDetails) SetValueFrom(v string) *AwsEcsTaskDefinitionContainerDefinitionsSecretsDetails {
	s.ValueFrom = &v
	return s
}

// A namespaced kernel parameter to set in the container.
type AwsEcsTaskDefinitionContainerDefinitionsSystemControlsDetails struct {
	_ struct{} `type:"structure"`

	// The namespaced kernel parameter for which to set a value.
	Namespace *string `type:"string"`

	// The value of the parameter.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionContainerDefinitionsSystemControlsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionContainerDefinitionsSystemControlsDetails) GoString() string {
	return s.String()
}

// SetNamespace sets the Namespace field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsSystemControlsDetails) SetNamespace(v string) *AwsEcsTaskDefinitionContainerDefinitionsSystemControlsDetails {
	s.Namespace = &v
	return s
}

// SetValue sets the Value field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsSystemControlsDetails) SetValue(v string) *AwsEcsTaskDefinitionContainerDefinitionsSystemControlsDetails {
	s.Value = &v
	return s
}

// A ulimit to set in the container.
type AwsEcsTaskDefinitionContainerDefinitionsUlimitsDetails struct {
	_ struct{} `type:"structure"`

	// The hard limit for the ulimit type.
	HardLimit *int64 `type:"integer"`

	// The type of the ulimit. Valid values are as follows:
	//
	//    * core
	//
	//    * cpu
	//
	//    * data
	//
	//    * fsize
	//
	//    * locks
	//
	//    * memlock
	//
	//    * msgqueue
	//
	//    * nice
	//
	//    * nofile
	//
	//    * nproc
	//
	//    * rss
	//
	//    * rtprio
	//
	//    * rttime
	//
	//    * sigpending
	//
	//    * stack
	Name *string `type:"string"`

	// The soft limit for the ulimit type.
	SoftLimit *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionContainerDefinitionsUlimitsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionContainerDefinitionsUlimitsDetails) GoString() string {
	return s.String()
}

// SetHardLimit sets the HardLimit field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsUlimitsDetails) SetHardLimit(v int64) *AwsEcsTaskDefinitionContainerDefinitionsUlimitsDetails {
	s.HardLimit = &v
	return s
}

// SetName sets the Name field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsUlimitsDetails) SetName(v string) *AwsEcsTaskDefinitionContainerDefinitionsUlimitsDetails {
	s.Name = &v
	return s
}

// SetSoftLimit sets the SoftLimit field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsUlimitsDetails) SetSoftLimit(v int64) *AwsEcsTaskDefinitionContainerDefinitionsUlimitsDetails {
	s.SoftLimit = &v
	return s
}

// A data volume to mount from another container.
type AwsEcsTaskDefinitionContainerDefinitionsVolumesFromDetails struct {
	_ struct{} `type:"structure"`

	// Whether the container has read-only access to the volume.
	ReadOnly *bool `type:"boolean"`

	// The name of another container within the same task definition from which
	// to mount volumes.
	SourceContainer *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionContainerDefinitionsVolumesFromDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionContainerDefinitionsVolumesFromDetails) GoString() string {
	return s.String()
}

// SetReadOnly sets the ReadOnly field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsVolumesFromDetails) SetReadOnly(v bool) *AwsEcsTaskDefinitionContainerDefinitionsVolumesFromDetails {
	s.ReadOnly = &v
	return s
}

// SetSourceContainer sets the SourceContainer field's value.
func (s *AwsEcsTaskDefinitionContainerDefinitionsVolumesFromDetails) SetSourceContainer(v string) *AwsEcsTaskDefinitionContainerDefinitionsVolumesFromDetails {
	s.SourceContainer = &v
	return s
}

// Details about a task definition. A task definition describes the container
// and volume definitions of an Amazon Elastic Container Service task.
type AwsEcsTaskDefinitionDetails struct {
	_ struct{} `type:"structure"`

	// The container definitions that describe the containers that make up the task.
	ContainerDefinitions []*AwsEcsTaskDefinitionContainerDefinitionsDetails `type:"list"`

	// The number of CPU units used by the task.Valid values are as follows:
	//
	//    * 256 (.25 vCPU)
	//
	//    * 512 (.5 vCPU)
	//
	//    * 1024 (1 vCPU)
	//
	//    * 2048 (2 vCPU)
	//
	//    * 4096 (4 vCPU)
	Cpu *string `type:"string"`

	// The ARN of the task execution role that grants the container agent permission
	// to make API calls on behalf of the container user.
	ExecutionRoleArn *string `type:"string"`

	// The name of a family that this task definition is registered to.
	Family *string `type:"string"`

	// The Elastic Inference accelerators to use for the containers in the task.
	InferenceAccelerators []*AwsEcsTaskDefinitionInferenceAcceleratorsDetails `type:"list"`

	// The inter-process communication (IPC) resource namespace to use for the containers
	// in the task. Valid values are as follows:
	//
	//    * host
	//
	//    * none
	//
	//    * task
	IpcMode *string `type:"string"`

	// The amount (in MiB) of memory used by the task.
	//
	// For tasks that are hosted on Amazon EC2, you can provide a task-level memory
	// value or a container-level memory value. For tasks that are hosted on Fargate,
	// you must use one of the specified values (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#task_size)
	// in the Amazon Elastic Container Service Developer Guide , which determines
	// your range of supported values for the Cpu and Memory parameters.
	Memory *string `type:"string"`

	// The Docker networking mode to use for the containers in the task. Valid values
	// are as follows:
	//
	//    * awsvpc
	//
	//    * bridge
	//
	//    * host
	//
	//    * none
	NetworkMode *string `type:"string"`

	// The process namespace to use for the containers in the task. Valid values
	// are host or task.
	PidMode *string `type:"string"`

	// The placement constraint objects to use for tasks.
	PlacementConstraints []*AwsEcsTaskDefinitionPlacementConstraintsDetails `type:"list"`

	// The configuration details for the App Mesh proxy.
	ProxyConfiguration *AwsEcsTaskDefinitionProxyConfigurationDetails `type:"structure"`

	// The task launch types that the task definition was validated against.
	RequiresCompatibilities []*string `type:"list"`

	// The status of the task definition.
	Status *string `type:"string"`

	// The short name or ARN of the IAM role that grants containers in the task
	// permission to call Amazon Web Services API operations on your behalf.
	TaskRoleArn *string `type:"string"`

	// The data volume definitions for the task.
	Volumes []*AwsEcsTaskDefinitionVolumesDetails `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 AwsEcsTaskDefinitionDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionDetails) GoString() string {
	return s.String()
}

// SetContainerDefinitions sets the ContainerDefinitions field's value.
func (s *AwsEcsTaskDefinitionDetails) SetContainerDefinitions(v []*AwsEcsTaskDefinitionContainerDefinitionsDetails) *AwsEcsTaskDefinitionDetails {
	s.ContainerDefinitions = v
	return s
}

// SetCpu sets the Cpu field's value.
func (s *AwsEcsTaskDefinitionDetails) SetCpu(v string) *AwsEcsTaskDefinitionDetails {
	s.Cpu = &v
	return s
}

// SetExecutionRoleArn sets the ExecutionRoleArn field's value.
func (s *AwsEcsTaskDefinitionDetails) SetExecutionRoleArn(v string) *AwsEcsTaskDefinitionDetails {
	s.ExecutionRoleArn = &v
	return s
}

// SetFamily sets the Family field's value.
func (s *AwsEcsTaskDefinitionDetails) SetFamily(v string) *AwsEcsTaskDefinitionDetails {
	s.Family = &v
	return s
}

// SetInferenceAccelerators sets the InferenceAccelerators field's value.
func (s *AwsEcsTaskDefinitionDetails) SetInferenceAccelerators(v []*AwsEcsTaskDefinitionInferenceAcceleratorsDetails) *AwsEcsTaskDefinitionDetails {
	s.InferenceAccelerators = v
	return s
}

// SetIpcMode sets the IpcMode field's value.
func (s *AwsEcsTaskDefinitionDetails) SetIpcMode(v string) *AwsEcsTaskDefinitionDetails {
	s.IpcMode = &v
	return s
}

// SetMemory sets the Memory field's value.
func (s *AwsEcsTaskDefinitionDetails) SetMemory(v string) *AwsEcsTaskDefinitionDetails {
	s.Memory = &v
	return s
}

// SetNetworkMode sets the NetworkMode field's value.
func (s *AwsEcsTaskDefinitionDetails) SetNetworkMode(v string) *AwsEcsTaskDefinitionDetails {
	s.NetworkMode = &v
	return s
}

// SetPidMode sets the PidMode field's value.
func (s *AwsEcsTaskDefinitionDetails) SetPidMode(v string) *AwsEcsTaskDefinitionDetails {
	s.PidMode = &v
	return s
}

// SetPlacementConstraints sets the PlacementConstraints field's value.
func (s *AwsEcsTaskDefinitionDetails) SetPlacementConstraints(v []*AwsEcsTaskDefinitionPlacementConstraintsDetails) *AwsEcsTaskDefinitionDetails {
	s.PlacementConstraints = v
	return s
}

// SetProxyConfiguration sets the ProxyConfiguration field's value.
func (s *AwsEcsTaskDefinitionDetails) SetProxyConfiguration(v *AwsEcsTaskDefinitionProxyConfigurationDetails) *AwsEcsTaskDefinitionDetails {
	s.ProxyConfiguration = v
	return s
}

// SetRequiresCompatibilities sets the RequiresCompatibilities field's value.
func (s *AwsEcsTaskDefinitionDetails) SetRequiresCompatibilities(v []*string) *AwsEcsTaskDefinitionDetails {
	s.RequiresCompatibilities = v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsEcsTaskDefinitionDetails) SetStatus(v string) *AwsEcsTaskDefinitionDetails {
	s.Status = &v
	return s
}

// SetTaskRoleArn sets the TaskRoleArn field's value.
func (s *AwsEcsTaskDefinitionDetails) SetTaskRoleArn(v string) *AwsEcsTaskDefinitionDetails {
	s.TaskRoleArn = &v
	return s
}

// SetVolumes sets the Volumes field's value.
func (s *AwsEcsTaskDefinitionDetails) SetVolumes(v []*AwsEcsTaskDefinitionVolumesDetails) *AwsEcsTaskDefinitionDetails {
	s.Volumes = v
	return s
}

// An Elastic Inference accelerator to use for the containers in the task.
type AwsEcsTaskDefinitionInferenceAcceleratorsDetails struct {
	_ struct{} `type:"structure"`

	// The Elastic Inference accelerator device name.
	DeviceName *string `type:"string"`

	// The Elastic Inference accelerator type to use.
	DeviceType *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionInferenceAcceleratorsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionInferenceAcceleratorsDetails) GoString() string {
	return s.String()
}

// SetDeviceName sets the DeviceName field's value.
func (s *AwsEcsTaskDefinitionInferenceAcceleratorsDetails) SetDeviceName(v string) *AwsEcsTaskDefinitionInferenceAcceleratorsDetails {
	s.DeviceName = &v
	return s
}

// SetDeviceType sets the DeviceType field's value.
func (s *AwsEcsTaskDefinitionInferenceAcceleratorsDetails) SetDeviceType(v string) *AwsEcsTaskDefinitionInferenceAcceleratorsDetails {
	s.DeviceType = &v
	return s
}

// A placement constraint object to use for tasks.
type AwsEcsTaskDefinitionPlacementConstraintsDetails struct {
	_ struct{} `type:"structure"`

	// A cluster query language expression to apply to the constraint.
	Expression *string `type:"string"`

	// The type of constraint.
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionPlacementConstraintsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionPlacementConstraintsDetails) GoString() string {
	return s.String()
}

// SetExpression sets the Expression field's value.
func (s *AwsEcsTaskDefinitionPlacementConstraintsDetails) SetExpression(v string) *AwsEcsTaskDefinitionPlacementConstraintsDetails {
	s.Expression = &v
	return s
}

// SetType sets the Type field's value.
func (s *AwsEcsTaskDefinitionPlacementConstraintsDetails) SetType(v string) *AwsEcsTaskDefinitionPlacementConstraintsDetails {
	s.Type = &v
	return s
}

// The configuration details for the App Mesh proxy.
type AwsEcsTaskDefinitionProxyConfigurationDetails struct {
	_ struct{} `type:"structure"`

	// The name of the container that will serve as the App Mesh proxy.
	ContainerName *string `type:"string"`

	// The set of network configuration parameters to provide to the Container Network
	// Interface (CNI) plugin, specified as key-value pairs.
	ProxyConfigurationProperties []*AwsEcsTaskDefinitionProxyConfigurationProxyConfigurationPropertiesDetails `type:"list"`

	// The proxy type.
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionProxyConfigurationDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionProxyConfigurationDetails) GoString() string {
	return s.String()
}

// SetContainerName sets the ContainerName field's value.
func (s *AwsEcsTaskDefinitionProxyConfigurationDetails) SetContainerName(v string) *AwsEcsTaskDefinitionProxyConfigurationDetails {
	s.ContainerName = &v
	return s
}

// SetProxyConfigurationProperties sets the ProxyConfigurationProperties field's value.
func (s *AwsEcsTaskDefinitionProxyConfigurationDetails) SetProxyConfigurationProperties(v []*AwsEcsTaskDefinitionProxyConfigurationProxyConfigurationPropertiesDetails) *AwsEcsTaskDefinitionProxyConfigurationDetails {
	s.ProxyConfigurationProperties = v
	return s
}

// SetType sets the Type field's value.
func (s *AwsEcsTaskDefinitionProxyConfigurationDetails) SetType(v string) *AwsEcsTaskDefinitionProxyConfigurationDetails {
	s.Type = &v
	return s
}

// A network configuration parameter to provide to the Container Network Interface
// (CNI) plugin.
type AwsEcsTaskDefinitionProxyConfigurationProxyConfigurationPropertiesDetails struct {
	_ struct{} `type:"structure"`

	// The name of the property.
	Name *string `type:"string"`

	// The value of the property.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionProxyConfigurationProxyConfigurationPropertiesDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionProxyConfigurationProxyConfigurationPropertiesDetails) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *AwsEcsTaskDefinitionProxyConfigurationProxyConfigurationPropertiesDetails) SetName(v string) *AwsEcsTaskDefinitionProxyConfigurationProxyConfigurationPropertiesDetails {
	s.Name = &v
	return s
}

// SetValue sets the Value field's value.
func (s *AwsEcsTaskDefinitionProxyConfigurationProxyConfigurationPropertiesDetails) SetValue(v string) *AwsEcsTaskDefinitionProxyConfigurationProxyConfigurationPropertiesDetails {
	s.Value = &v
	return s
}

// A data volume to mount from another container.
type AwsEcsTaskDefinitionVolumesDetails struct {
	_ struct{} `type:"structure"`

	// Information about a Docker volume.
	DockerVolumeConfiguration *AwsEcsTaskDefinitionVolumesDockerVolumeConfigurationDetails `type:"structure"`

	// Information about the Amazon Elastic File System file system that is used
	// for task storage.
	EfsVolumeConfiguration *AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationDetails `type:"structure"`

	// Information about a bind mount host volume.
	Host *AwsEcsTaskDefinitionVolumesHostDetails `type:"structure"`

	// The name of the data volume.
	Name *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionVolumesDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionVolumesDetails) GoString() string {
	return s.String()
}

// SetDockerVolumeConfiguration sets the DockerVolumeConfiguration field's value.
func (s *AwsEcsTaskDefinitionVolumesDetails) SetDockerVolumeConfiguration(v *AwsEcsTaskDefinitionVolumesDockerVolumeConfigurationDetails) *AwsEcsTaskDefinitionVolumesDetails {
	s.DockerVolumeConfiguration = v
	return s
}

// SetEfsVolumeConfiguration sets the EfsVolumeConfiguration field's value.
func (s *AwsEcsTaskDefinitionVolumesDetails) SetEfsVolumeConfiguration(v *AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationDetails) *AwsEcsTaskDefinitionVolumesDetails {
	s.EfsVolumeConfiguration = v
	return s
}

// SetHost sets the Host field's value.
func (s *AwsEcsTaskDefinitionVolumesDetails) SetHost(v *AwsEcsTaskDefinitionVolumesHostDetails) *AwsEcsTaskDefinitionVolumesDetails {
	s.Host = v
	return s
}

// SetName sets the Name field's value.
func (s *AwsEcsTaskDefinitionVolumesDetails) SetName(v string) *AwsEcsTaskDefinitionVolumesDetails {
	s.Name = &v
	return s
}

// Information about a Docker volume.
type AwsEcsTaskDefinitionVolumesDockerVolumeConfigurationDetails struct {
	_ struct{} `type:"structure"`

	// Whether to create the Docker volume automatically if it does not already
	// exist.
	Autoprovision *bool `type:"boolean"`

	// The Docker volume driver to use.
	Driver *string `type:"string"`

	// A map of Docker driver-specific options that are passed through.
	DriverOpts map[string]*string `type:"map"`

	// Custom metadata to add to the Docker volume.
	Labels map[string]*string `type:"map"`

	// The scope for the Docker volume that determines its lifecycle. Docker volumes
	// that are scoped to a task are provisioned automatically when the task starts
	// and destroyed when the task stops. Docker volumes that are shared persist
	// after the task stops. Valid values are shared or task.
	Scope *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionVolumesDockerVolumeConfigurationDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionVolumesDockerVolumeConfigurationDetails) GoString() string {
	return s.String()
}

// SetAutoprovision sets the Autoprovision field's value.
func (s *AwsEcsTaskDefinitionVolumesDockerVolumeConfigurationDetails) SetAutoprovision(v bool) *AwsEcsTaskDefinitionVolumesDockerVolumeConfigurationDetails {
	s.Autoprovision = &v
	return s
}

// SetDriver sets the Driver field's value.
func (s *AwsEcsTaskDefinitionVolumesDockerVolumeConfigurationDetails) SetDriver(v string) *AwsEcsTaskDefinitionVolumesDockerVolumeConfigurationDetails {
	s.Driver = &v
	return s
}

// SetDriverOpts sets the DriverOpts field's value.
func (s *AwsEcsTaskDefinitionVolumesDockerVolumeConfigurationDetails) SetDriverOpts(v map[string]*string) *AwsEcsTaskDefinitionVolumesDockerVolumeConfigurationDetails {
	s.DriverOpts = v
	return s
}

// SetLabels sets the Labels field's value.
func (s *AwsEcsTaskDefinitionVolumesDockerVolumeConfigurationDetails) SetLabels(v map[string]*string) *AwsEcsTaskDefinitionVolumesDockerVolumeConfigurationDetails {
	s.Labels = v
	return s
}

// SetScope sets the Scope field's value.
func (s *AwsEcsTaskDefinitionVolumesDockerVolumeConfigurationDetails) SetScope(v string) *AwsEcsTaskDefinitionVolumesDockerVolumeConfigurationDetails {
	s.Scope = &v
	return s
}

type AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationAuthorizationConfigDetails struct {
	_ struct{} `type:"structure"`

	// The Amazon EFS access point identifier to use.
	AccessPointId *string `type:"string"`

	// Whether to use the Amazon ECS task IAM role defined in a task definition
	// when mounting the Amazon EFS file system.
	Iam *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationAuthorizationConfigDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationAuthorizationConfigDetails) GoString() string {
	return s.String()
}

// SetAccessPointId sets the AccessPointId field's value.
func (s *AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationAuthorizationConfigDetails) SetAccessPointId(v string) *AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationAuthorizationConfigDetails {
	s.AccessPointId = &v
	return s
}

// SetIam sets the Iam field's value.
func (s *AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationAuthorizationConfigDetails) SetIam(v string) *AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationAuthorizationConfigDetails {
	s.Iam = &v
	return s
}

// Information about the Amazon Elastic File System file system that is used
// for task storage.
type AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationDetails struct {
	_ struct{} `type:"structure"`

	// The authorization configuration details for the Amazon EFS file system.
	AuthorizationConfig *AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationAuthorizationConfigDetails `type:"structure"`

	// The Amazon EFS file system identifier to use.
	FilesystemId *string `type:"string"`

	// The directory within the Amazon EFS file system to mount as the root directory
	// inside the host.
	RootDirectory *string `type:"string"`

	// Whether to enable encryption for Amazon EFS data in transit between the Amazon
	// ECS host and the Amazon EFS server.
	TransitEncryption *string `type:"string"`

	// The port to use when sending encrypted data between the Amazon ECS host and
	// the Amazon EFS server.
	TransitEncryptionPort *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationDetails) GoString() string {
	return s.String()
}

// SetAuthorizationConfig sets the AuthorizationConfig field's value.
func (s *AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationDetails) SetAuthorizationConfig(v *AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationAuthorizationConfigDetails) *AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationDetails {
	s.AuthorizationConfig = v
	return s
}

// SetFilesystemId sets the FilesystemId field's value.
func (s *AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationDetails) SetFilesystemId(v string) *AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationDetails {
	s.FilesystemId = &v
	return s
}

// SetRootDirectory sets the RootDirectory field's value.
func (s *AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationDetails) SetRootDirectory(v string) *AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationDetails {
	s.RootDirectory = &v
	return s
}

// SetTransitEncryption sets the TransitEncryption field's value.
func (s *AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationDetails) SetTransitEncryption(v string) *AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationDetails {
	s.TransitEncryption = &v
	return s
}

// SetTransitEncryptionPort sets the TransitEncryptionPort field's value.
func (s *AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationDetails) SetTransitEncryptionPort(v int64) *AwsEcsTaskDefinitionVolumesEfsVolumeConfigurationDetails {
	s.TransitEncryptionPort = &v
	return s
}

// Information about a bind mount host volume.
type AwsEcsTaskDefinitionVolumesHostDetails struct {
	_ struct{} `type:"structure"`

	// The path on the host container instance that is presented to the container.
	SourcePath *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionVolumesHostDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDefinitionVolumesHostDetails) GoString() string {
	return s.String()
}

// SetSourcePath sets the SourcePath field's value.
func (s *AwsEcsTaskDefinitionVolumesHostDetails) SetSourcePath(v string) *AwsEcsTaskDefinitionVolumesHostDetails {
	s.SourcePath = &v
	return s
}

// Provides details about a task in a cluster.
type AwsEcsTaskDetails struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the cluster that hosts the task.
	ClusterArn *string `type:"string"`

	// The containers that are associated with the task.
	Containers []*AwsEcsContainerDetails `type:"list"`

	// The Unix timestamp for the time when the task was created. More specifically,
	// it's for the time when the task entered the PENDING state.
	CreatedAt *string `type:"string"`

	// The name of the task group that's associated with the task.
	Group *string `type:"string"`

	// The Unix timestamp for the time when the task started. More specifically,
	// it's for the time when the task transitioned from the PENDING state to the
	// RUNNING state.
	StartedAt *string `type:"string"`

	// The tag specified when a task is started. If an Amazon ECS service started
	// the task, the startedBy parameter contains the deployment ID of that service.
	StartedBy *string `type:"string"`

	// The ARN of the task definition that creates the task.
	TaskDefinitionArn *string `type:"string"`

	// The version counter for the task.
	Version *string `type:"string"`

	// Details about the data volume that is used in a task definition.
	Volumes []*AwsEcsTaskVolumeDetails `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 AwsEcsTaskDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskDetails) GoString() string {
	return s.String()
}

// SetClusterArn sets the ClusterArn field's value.
func (s *AwsEcsTaskDetails) SetClusterArn(v string) *AwsEcsTaskDetails {
	s.ClusterArn = &v
	return s
}

// SetContainers sets the Containers field's value.
func (s *AwsEcsTaskDetails) SetContainers(v []*AwsEcsContainerDetails) *AwsEcsTaskDetails {
	s.Containers = v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *AwsEcsTaskDetails) SetCreatedAt(v string) *AwsEcsTaskDetails {
	s.CreatedAt = &v
	return s
}

// SetGroup sets the Group field's value.
func (s *AwsEcsTaskDetails) SetGroup(v string) *AwsEcsTaskDetails {
	s.Group = &v
	return s
}

// SetStartedAt sets the StartedAt field's value.
func (s *AwsEcsTaskDetails) SetStartedAt(v string) *AwsEcsTaskDetails {
	s.StartedAt = &v
	return s
}

// SetStartedBy sets the StartedBy field's value.
func (s *AwsEcsTaskDetails) SetStartedBy(v string) *AwsEcsTaskDetails {
	s.StartedBy = &v
	return s
}

// SetTaskDefinitionArn sets the TaskDefinitionArn field's value.
func (s *AwsEcsTaskDetails) SetTaskDefinitionArn(v string) *AwsEcsTaskDetails {
	s.TaskDefinitionArn = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *AwsEcsTaskDetails) SetVersion(v string) *AwsEcsTaskDetails {
	s.Version = &v
	return s
}

// SetVolumes sets the Volumes field's value.
func (s *AwsEcsTaskDetails) SetVolumes(v []*AwsEcsTaskVolumeDetails) *AwsEcsTaskDetails {
	s.Volumes = v
	return s
}

// Provides information about a data volume that's used in a task definition.
type AwsEcsTaskVolumeDetails struct {
	_ struct{} `type:"structure"`

	// This parameter is specified when you use bind mount host volumes. The contents
	// of the host parameter determine whether your bind mount host volume persists
	// on the host container instance and where it's stored.
	Host *AwsEcsTaskVolumeHostDetails `type:"structure"`

	// The name of the volume. Up to 255 letters (uppercase and lowercase), numbers,
	// underscores, and hyphens are allowed. This name is referenced in the sourceVolume
	// parameter of container definition mountPoints.
	Name *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskVolumeDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskVolumeDetails) GoString() string {
	return s.String()
}

// SetHost sets the Host field's value.
func (s *AwsEcsTaskVolumeDetails) SetHost(v *AwsEcsTaskVolumeHostDetails) *AwsEcsTaskVolumeDetails {
	s.Host = v
	return s
}

// SetName sets the Name field's value.
func (s *AwsEcsTaskVolumeDetails) SetName(v string) *AwsEcsTaskVolumeDetails {
	s.Name = &v
	return s
}

// Provides details on a container instance bind mount host volume.
type AwsEcsTaskVolumeHostDetails struct {
	_ struct{} `type:"structure"`

	// When the host parameter is used, specify a sourcePath to declare the path
	// on the host container instance that's presented to the container.
	SourcePath *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskVolumeHostDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEcsTaskVolumeHostDetails) GoString() string {
	return s.String()
}

// SetSourcePath sets the SourcePath field's value.
func (s *AwsEcsTaskVolumeHostDetails) SetSourcePath(v string) *AwsEcsTaskVolumeHostDetails {
	s.SourcePath = &v
	return s
}

// Provides information about an Amazon EFS access point.
type AwsEfsAccessPointDetails struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon EFS access point.
	AccessPointId *string `type:"string"`

	// The Amazon Resource Name (ARN) of the Amazon EFS access point.
	Arn *string `type:"string"`

	// The opaque string specified in the request to ensure idempotent creation.
	ClientToken *string `type:"string"`

	// The ID of the Amazon EFS file system that the access point applies to.
	FileSystemId *string `type:"string"`

	// The full POSIX identity, including the user ID, group ID, and secondary group
	// IDs on the access point, that is used for all file operations by NFS clients
	// using the access point.
	PosixUser *AwsEfsAccessPointPosixUserDetails `type:"structure"`

	// The directory on the Amazon EFS file system that the access point exposes
	// as the root directory to NFS clients using the access point.
	RootDirectory *AwsEfsAccessPointRootDirectoryDetails `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 AwsEfsAccessPointDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEfsAccessPointDetails) GoString() string {
	return s.String()
}

// SetAccessPointId sets the AccessPointId field's value.
func (s *AwsEfsAccessPointDetails) SetAccessPointId(v string) *AwsEfsAccessPointDetails {
	s.AccessPointId = &v
	return s
}

// SetArn sets the Arn field's value.
func (s *AwsEfsAccessPointDetails) SetArn(v string) *AwsEfsAccessPointDetails {
	s.Arn = &v
	return s
}

// SetClientToken sets the ClientToken field's value.
func (s *AwsEfsAccessPointDetails) SetClientToken(v string) *AwsEfsAccessPointDetails {
	s.ClientToken = &v
	return s
}

// SetFileSystemId sets the FileSystemId field's value.
func (s *AwsEfsAccessPointDetails) SetFileSystemId(v string) *AwsEfsAccessPointDetails {
	s.FileSystemId = &v
	return s
}

// SetPosixUser sets the PosixUser field's value.
func (s *AwsEfsAccessPointDetails) SetPosixUser(v *AwsEfsAccessPointPosixUserDetails) *AwsEfsAccessPointDetails {
	s.PosixUser = v
	return s
}

// SetRootDirectory sets the RootDirectory field's value.
func (s *AwsEfsAccessPointDetails) SetRootDirectory(v *AwsEfsAccessPointRootDirectoryDetails) *AwsEfsAccessPointDetails {
	s.RootDirectory = v
	return s
}

// Provides details for all file system operations using this Amazon EFS access
// point.
type AwsEfsAccessPointPosixUserDetails struct {
	_ struct{} `type:"structure"`

	// The POSIX group ID used for all file system operations using this access
	// point.
	Gid *string `type:"string"`

	// Secondary POSIX group IDs used for all file system operations using this
	// access point.
	SecondaryGids []*string `type:"list"`

	// The POSIX user ID used for all file system operations using this access point.
	Uid *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEfsAccessPointPosixUserDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEfsAccessPointPosixUserDetails) GoString() string {
	return s.String()
}

// SetGid sets the Gid field's value.
func (s *AwsEfsAccessPointPosixUserDetails) SetGid(v string) *AwsEfsAccessPointPosixUserDetails {
	s.Gid = &v
	return s
}

// SetSecondaryGids sets the SecondaryGids field's value.
func (s *AwsEfsAccessPointPosixUserDetails) SetSecondaryGids(v []*string) *AwsEfsAccessPointPosixUserDetails {
	s.SecondaryGids = v
	return s
}

// SetUid sets the Uid field's value.
func (s *AwsEfsAccessPointPosixUserDetails) SetUid(v string) *AwsEfsAccessPointPosixUserDetails {
	s.Uid = &v
	return s
}

// Provides information about the settings that Amazon EFS uses to create the
// root directory when a client connects to an access point.
type AwsEfsAccessPointRootDirectoryCreationInfoDetails struct {
	_ struct{} `type:"structure"`

	// Specifies the POSIX group ID to apply to the root directory.
	OwnerGid *string `type:"string"`

	// Specifies the POSIX user ID to apply to the root directory.
	OwnerUid *string `type:"string"`

	// Specifies the POSIX permissions to apply to the root directory, in the format
	// of an octal number representing the file's mode bits.
	Permissions *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEfsAccessPointRootDirectoryCreationInfoDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEfsAccessPointRootDirectoryCreationInfoDetails) GoString() string {
	return s.String()
}

// SetOwnerGid sets the OwnerGid field's value.
func (s *AwsEfsAccessPointRootDirectoryCreationInfoDetails) SetOwnerGid(v string) *AwsEfsAccessPointRootDirectoryCreationInfoDetails {
	s.OwnerGid = &v
	return s
}

// SetOwnerUid sets the OwnerUid field's value.
func (s *AwsEfsAccessPointRootDirectoryCreationInfoDetails) SetOwnerUid(v string) *AwsEfsAccessPointRootDirectoryCreationInfoDetails {
	s.OwnerUid = &v
	return s
}

// SetPermissions sets the Permissions field's value.
func (s *AwsEfsAccessPointRootDirectoryCreationInfoDetails) SetPermissions(v string) *AwsEfsAccessPointRootDirectoryCreationInfoDetails {
	s.Permissions = &v
	return s
}

// Provides information about the directory on the Amazon EFS file system that
// the access point exposes as the root directory to NFS clients using the access
// point.
type AwsEfsAccessPointRootDirectoryDetails struct {
	_ struct{} `type:"structure"`

	// Specifies the POSIX IDs and permissions to apply to the access point's root
	// directory.
	CreationInfo *AwsEfsAccessPointRootDirectoryCreationInfoDetails `type:"structure"`

	// Specifies the path on the Amazon EFS file system to expose as the root directory
	// to NFS clients using the access point to access the EFS file system. A path
	// can have up to four subdirectories. If the specified path does not exist,
	// you are required to provide CreationInfo.
	Path *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEfsAccessPointRootDirectoryDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEfsAccessPointRootDirectoryDetails) GoString() string {
	return s.String()
}

// SetCreationInfo sets the CreationInfo field's value.
func (s *AwsEfsAccessPointRootDirectoryDetails) SetCreationInfo(v *AwsEfsAccessPointRootDirectoryCreationInfoDetails) *AwsEfsAccessPointRootDirectoryDetails {
	s.CreationInfo = v
	return s
}

// SetPath sets the Path field's value.
func (s *AwsEfsAccessPointRootDirectoryDetails) SetPath(v string) *AwsEfsAccessPointRootDirectoryDetails {
	s.Path = &v
	return s
}

// Provides details about an Amazon EKS cluster.
type AwsEksClusterDetails struct {
	_ struct{} `type:"structure"`

	// The ARN of the cluster.
	Arn *string `type:"string"`

	// The certificate authority data for the cluster.
	CertificateAuthorityData *string `type:"string"`

	// The status of the cluster. Valid values are as follows:
	//
	//    * ACTIVE
	//
	//    * CREATING
	//
	//    * DELETING
	//
	//    * FAILED
	//
	//    * PENDING
	//
	//    * UPDATING
	ClusterStatus *string `type:"string"`

	// The endpoint for the Amazon EKS API server.
	Endpoint *string `type:"string"`

	// The logging configuration for the cluster.
	Logging *AwsEksClusterLoggingDetails `type:"structure"`

	// The name of the cluster.
	Name *string `type:"string"`

	// The VPC configuration used by the cluster control plane.
	ResourcesVpcConfig *AwsEksClusterResourcesVpcConfigDetails `type:"structure"`

	// The ARN of the IAM role that provides permissions for the Amazon EKS control
	// plane to make calls to Amazon Web Services API operations on your behalf.
	RoleArn *string `type:"string"`

	// The Amazon EKS server version for the cluster.
	Version *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEksClusterDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEksClusterDetails) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *AwsEksClusterDetails) SetArn(v string) *AwsEksClusterDetails {
	s.Arn = &v
	return s
}

// SetCertificateAuthorityData sets the CertificateAuthorityData field's value.
func (s *AwsEksClusterDetails) SetCertificateAuthorityData(v string) *AwsEksClusterDetails {
	s.CertificateAuthorityData = &v
	return s
}

// SetClusterStatus sets the ClusterStatus field's value.
func (s *AwsEksClusterDetails) SetClusterStatus(v string) *AwsEksClusterDetails {
	s.ClusterStatus = &v
	return s
}

// SetEndpoint sets the Endpoint field's value.
func (s *AwsEksClusterDetails) SetEndpoint(v string) *AwsEksClusterDetails {
	s.Endpoint = &v
	return s
}

// SetLogging sets the Logging field's value.
func (s *AwsEksClusterDetails) SetLogging(v *AwsEksClusterLoggingDetails) *AwsEksClusterDetails {
	s.Logging = v
	return s
}

// SetName sets the Name field's value.
func (s *AwsEksClusterDetails) SetName(v string) *AwsEksClusterDetails {
	s.Name = &v
	return s
}

// SetResourcesVpcConfig sets the ResourcesVpcConfig field's value.
func (s *AwsEksClusterDetails) SetResourcesVpcConfig(v *AwsEksClusterResourcesVpcConfigDetails) *AwsEksClusterDetails {
	s.ResourcesVpcConfig = v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *AwsEksClusterDetails) SetRoleArn(v string) *AwsEksClusterDetails {
	s.RoleArn = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *AwsEksClusterDetails) SetVersion(v string) *AwsEksClusterDetails {
	s.Version = &v
	return s
}

// Details for a cluster logging configuration.
type AwsEksClusterLoggingClusterLoggingDetails struct {
	_ struct{} `type:"structure"`

	// Whether the logging types that are listed in Types are enabled.
	Enabled *bool `type:"boolean"`

	// A list of logging types. Valid values are as follows:
	//
	//    * api
	//
	//    * audit
	//
	//    * authenticator
	//
	//    * controllerManager
	//
	//    * scheduler
	Types []*string `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 AwsEksClusterLoggingClusterLoggingDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEksClusterLoggingClusterLoggingDetails) GoString() string {
	return s.String()
}

// SetEnabled sets the Enabled field's value.
func (s *AwsEksClusterLoggingClusterLoggingDetails) SetEnabled(v bool) *AwsEksClusterLoggingClusterLoggingDetails {
	s.Enabled = &v
	return s
}

// SetTypes sets the Types field's value.
func (s *AwsEksClusterLoggingClusterLoggingDetails) SetTypes(v []*string) *AwsEksClusterLoggingClusterLoggingDetails {
	s.Types = v
	return s
}

// The logging configuration for an Amazon EKS cluster.
type AwsEksClusterLoggingDetails struct {
	_ struct{} `type:"structure"`

	// Cluster logging configurations.
	ClusterLogging []*AwsEksClusterLoggingClusterLoggingDetails `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 AwsEksClusterLoggingDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEksClusterLoggingDetails) GoString() string {
	return s.String()
}

// SetClusterLogging sets the ClusterLogging field's value.
func (s *AwsEksClusterLoggingDetails) SetClusterLogging(v []*AwsEksClusterLoggingClusterLoggingDetails) *AwsEksClusterLoggingDetails {
	s.ClusterLogging = v
	return s
}

// Information about the VPC configuration used by the cluster control plane.
type AwsEksClusterResourcesVpcConfigDetails struct {
	_ struct{} `type:"structure"`

	// Indicates whether the Amazon EKS public API server endpoint is turned on.
	// If the Amazon EKS public API server endpoint is turned off, your cluster's
	// Kubernetes API server can only receive requests that originate from within
	// the cluster VPC.
	EndpointPublicAccess *bool `type:"boolean"`

	// The security groups that are associated with the cross-account elastic network
	// interfaces that are used to allow communication between your nodes and the
	// Amazon EKS control plane.
	SecurityGroupIds []*string `type:"list"`

	// The subnets that are associated with the cluster.
	SubnetIds []*string `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 AwsEksClusterResourcesVpcConfigDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEksClusterResourcesVpcConfigDetails) GoString() string {
	return s.String()
}

// SetEndpointPublicAccess sets the EndpointPublicAccess field's value.
func (s *AwsEksClusterResourcesVpcConfigDetails) SetEndpointPublicAccess(v bool) *AwsEksClusterResourcesVpcConfigDetails {
	s.EndpointPublicAccess = &v
	return s
}

// SetSecurityGroupIds sets the SecurityGroupIds field's value.
func (s *AwsEksClusterResourcesVpcConfigDetails) SetSecurityGroupIds(v []*string) *AwsEksClusterResourcesVpcConfigDetails {
	s.SecurityGroupIds = v
	return s
}

// SetSubnetIds sets the SubnetIds field's value.
func (s *AwsEksClusterResourcesVpcConfigDetails) SetSubnetIds(v []*string) *AwsEksClusterResourcesVpcConfigDetails {
	s.SubnetIds = v
	return s
}

// Contains details about an Elastic Beanstalk environment.
type AwsElasticBeanstalkEnvironmentDetails struct {
	_ struct{} `type:"structure"`

	// The name of the application that is associated with the environment.
	ApplicationName *string `type:"string"`

	// The URL to the CNAME for this environment.
	Cname *string `type:"string"`

	// The creation date for this environment.
	DateCreated *string `type:"string"`

	// The date when this environment was last modified.
	DateUpdated *string `type:"string"`

	// A description of the environment.
	Description *string `type:"string"`

	// For load-balanced, autoscaling environments, the URL to the load balancer.
	// For single-instance environments, the IP address of the instance.
	EndpointUrl *string `type:"string"`

	// The ARN of the environment.
	EnvironmentArn *string `type:"string"`

	// The identifier of the environment.
	EnvironmentId *string `type:"string"`

	// Links to other environments in the same group.
	EnvironmentLinks []*AwsElasticBeanstalkEnvironmentEnvironmentLink `type:"list"`

	// The name of the environment.
	EnvironmentName *string `type:"string"`

	// The configuration setting for the environment.
	OptionSettings []*AwsElasticBeanstalkEnvironmentOptionSetting `type:"list"`

	// The ARN of the platform version for the environment.
	PlatformArn *string `type:"string"`

	// The name of the solution stack that is deployed with the environment.
	SolutionStackName *string `type:"string"`

	// The current operational status of the environment. Valid values are as follows:
	//
	//    * Aborting
	//
	//    * Launching
	//
	//    * LinkingFrom
	//
	//    * LinkingTo
	//
	//    * Ready
	//
	//    * Terminated
	//
	//    * Terminating
	//
	//    * Updating
	Status *string `type:"string"`

	// The tier of the environment.
	Tier *AwsElasticBeanstalkEnvironmentTier `type:"structure"`

	// The application version of the environment.
	VersionLabel *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElasticBeanstalkEnvironmentDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElasticBeanstalkEnvironmentDetails) GoString() string {
	return s.String()
}

// SetApplicationName sets the ApplicationName field's value.
func (s *AwsElasticBeanstalkEnvironmentDetails) SetApplicationName(v string) *AwsElasticBeanstalkEnvironmentDetails {
	s.ApplicationName = &v
	return s
}

// SetCname sets the Cname field's value.
func (s *AwsElasticBeanstalkEnvironmentDetails) SetCname(v string) *AwsElasticBeanstalkEnvironmentDetails {
	s.Cname = &v
	return s
}

// SetDateCreated sets the DateCreated field's value.
func (s *AwsElasticBeanstalkEnvironmentDetails) SetDateCreated(v string) *AwsElasticBeanstalkEnvironmentDetails {
	s.DateCreated = &v
	return s
}

// SetDateUpdated sets the DateUpdated field's value.
func (s *AwsElasticBeanstalkEnvironmentDetails) SetDateUpdated(v string) *AwsElasticBeanstalkEnvironmentDetails {
	s.DateUpdated = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *AwsElasticBeanstalkEnvironmentDetails) SetDescription(v string) *AwsElasticBeanstalkEnvironmentDetails {
	s.Description = &v
	return s
}

// SetEndpointUrl sets the EndpointUrl field's value.
func (s *AwsElasticBeanstalkEnvironmentDetails) SetEndpointUrl(v string) *AwsElasticBeanstalkEnvironmentDetails {
	s.EndpointUrl = &v
	return s
}

// SetEnvironmentArn sets the EnvironmentArn field's value.
func (s *AwsElasticBeanstalkEnvironmentDetails) SetEnvironmentArn(v string) *AwsElasticBeanstalkEnvironmentDetails {
	s.EnvironmentArn = &v
	return s
}

// SetEnvironmentId sets the EnvironmentId field's value.
func (s *AwsElasticBeanstalkEnvironmentDetails) SetEnvironmentId(v string) *AwsElasticBeanstalkEnvironmentDetails {
	s.EnvironmentId = &v
	return s
}

// SetEnvironmentLinks sets the EnvironmentLinks field's value.
func (s *AwsElasticBeanstalkEnvironmentDetails) SetEnvironmentLinks(v []*AwsElasticBeanstalkEnvironmentEnvironmentLink) *AwsElasticBeanstalkEnvironmentDetails {
	s.EnvironmentLinks = v
	return s
}

// SetEnvironmentName sets the EnvironmentName field's value.
func (s *AwsElasticBeanstalkEnvironmentDetails) SetEnvironmentName(v string) *AwsElasticBeanstalkEnvironmentDetails {
	s.EnvironmentName = &v
	return s
}

// SetOptionSettings sets the OptionSettings field's value.
func (s *AwsElasticBeanstalkEnvironmentDetails) SetOptionSettings(v []*AwsElasticBeanstalkEnvironmentOptionSetting) *AwsElasticBeanstalkEnvironmentDetails {
	s.OptionSettings = v
	return s
}

// SetPlatformArn sets the PlatformArn field's value.
func (s *AwsElasticBeanstalkEnvironmentDetails) SetPlatformArn(v string) *AwsElasticBeanstalkEnvironmentDetails {
	s.PlatformArn = &v
	return s
}

// SetSolutionStackName sets the SolutionStackName field's value.
func (s *AwsElasticBeanstalkEnvironmentDetails) SetSolutionStackName(v string) *AwsElasticBeanstalkEnvironmentDetails {
	s.SolutionStackName = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsElasticBeanstalkEnvironmentDetails) SetStatus(v string) *AwsElasticBeanstalkEnvironmentDetails {
	s.Status = &v
	return s
}

// SetTier sets the Tier field's value.
func (s *AwsElasticBeanstalkEnvironmentDetails) SetTier(v *AwsElasticBeanstalkEnvironmentTier) *AwsElasticBeanstalkEnvironmentDetails {
	s.Tier = v
	return s
}

// SetVersionLabel sets the VersionLabel field's value.
func (s *AwsElasticBeanstalkEnvironmentDetails) SetVersionLabel(v string) *AwsElasticBeanstalkEnvironmentDetails {
	s.VersionLabel = &v
	return s
}

// Contains information about a link to another environment that is in the same
// group.
type AwsElasticBeanstalkEnvironmentEnvironmentLink struct {
	_ struct{} `type:"structure"`

	// The name of the linked environment.
	EnvironmentName *string `type:"string"`

	// The name of the environment link.
	LinkName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElasticBeanstalkEnvironmentEnvironmentLink) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElasticBeanstalkEnvironmentEnvironmentLink) GoString() string {
	return s.String()
}

// SetEnvironmentName sets the EnvironmentName field's value.
func (s *AwsElasticBeanstalkEnvironmentEnvironmentLink) SetEnvironmentName(v string) *AwsElasticBeanstalkEnvironmentEnvironmentLink {
	s.EnvironmentName = &v
	return s
}

// SetLinkName sets the LinkName field's value.
func (s *AwsElasticBeanstalkEnvironmentEnvironmentLink) SetLinkName(v string) *AwsElasticBeanstalkEnvironmentEnvironmentLink {
	s.LinkName = &v
	return s
}

// A configuration option setting for the environment.
type AwsElasticBeanstalkEnvironmentOptionSetting struct {
	_ struct{} `type:"structure"`

	// The type of resource that the configuration option is associated with.
	Namespace *string `type:"string"`

	// The name of the option.
	OptionName *string `type:"string"`

	// The name of the resource.
	ResourceName *string `type:"string"`

	// The value of the configuration setting.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElasticBeanstalkEnvironmentOptionSetting) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElasticBeanstalkEnvironmentOptionSetting) GoString() string {
	return s.String()
}

// SetNamespace sets the Namespace field's value.
func (s *AwsElasticBeanstalkEnvironmentOptionSetting) SetNamespace(v string) *AwsElasticBeanstalkEnvironmentOptionSetting {
	s.Namespace = &v
	return s
}

// SetOptionName sets the OptionName field's value.
func (s *AwsElasticBeanstalkEnvironmentOptionSetting) SetOptionName(v string) *AwsElasticBeanstalkEnvironmentOptionSetting {
	s.OptionName = &v
	return s
}

// SetResourceName sets the ResourceName field's value.
func (s *AwsElasticBeanstalkEnvironmentOptionSetting) SetResourceName(v string) *AwsElasticBeanstalkEnvironmentOptionSetting {
	s.ResourceName = &v
	return s
}

// SetValue sets the Value field's value.
func (s *AwsElasticBeanstalkEnvironmentOptionSetting) SetValue(v string) *AwsElasticBeanstalkEnvironmentOptionSetting {
	s.Value = &v
	return s
}

// Contains information about the tier of the environment.
type AwsElasticBeanstalkEnvironmentTier struct {
	_ struct{} `type:"structure"`

	// The name of the environment tier. Valid values are WebServer or Worker.
	Name *string `type:"string"`

	// The type of environment tier. Valid values are Standard or SQS/HTTP.
	Type *string `type:"string"`

	// The version of the environment tier.
	Version *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElasticBeanstalkEnvironmentTier) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElasticBeanstalkEnvironmentTier) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *AwsElasticBeanstalkEnvironmentTier) SetName(v string) *AwsElasticBeanstalkEnvironmentTier {
	s.Name = &v
	return s
}

// SetType sets the Type field's value.
func (s *AwsElasticBeanstalkEnvironmentTier) SetType(v string) *AwsElasticBeanstalkEnvironmentTier {
	s.Type = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *AwsElasticBeanstalkEnvironmentTier) SetVersion(v string) *AwsElasticBeanstalkEnvironmentTier {
	s.Version = &v
	return s
}

// Information about an Elasticsearch domain.
type AwsElasticsearchDomainDetails struct {
	_ struct{} `type:"structure"`

	// IAM policy document specifying the access policies for the new Elasticsearch
	// domain.
	AccessPolicies *string `type:"string"`

	// Additional options for the domain endpoint.
	DomainEndpointOptions *AwsElasticsearchDomainDomainEndpointOptions `type:"structure"`

	// Unique identifier for an Elasticsearch domain.
	DomainId *string `type:"string"`

	// Name of an Elasticsearch domain.
	//
	// Domain names are unique across all domains owned by the same account within
	// an Amazon Web Services Region.
	//
	// Domain names must start with a lowercase letter and must be between 3 and
	// 28 characters.
	//
	// Valid characters are a-z (lowercase only), 0-9, and – (hyphen).
	DomainName *string `type:"string"`

	// Information about an OpenSearch cluster configuration.
	ElasticsearchClusterConfig *AwsElasticsearchDomainElasticsearchClusterConfigDetails `type:"structure"`

	// OpenSearch version.
	ElasticsearchVersion *string `type:"string"`

	// Details about the configuration for encryption at rest.
	EncryptionAtRestOptions *AwsElasticsearchDomainEncryptionAtRestOptions `type:"structure"`

	// Domain-specific endpoint used to submit index, search, and data upload requests
	// to an Elasticsearch domain.
	//
	// The endpoint is a service URL.
	Endpoint *string `type:"string"`

	// The key-value pair that exists if the Elasticsearch domain uses VPC endpoints.
	Endpoints map[string]*string `type:"map"`

	// Configures the CloudWatch Logs to publish for the Elasticsearch domain.
	LogPublishingOptions *AwsElasticsearchDomainLogPublishingOptions `type:"structure"`

	// Details about the configuration for node-to-node encryption.
	NodeToNodeEncryptionOptions *AwsElasticsearchDomainNodeToNodeEncryptionOptions `type:"structure"`

	// Information about the status of a domain relative to the latest service software.
	ServiceSoftwareOptions *AwsElasticsearchDomainServiceSoftwareOptions `type:"structure"`

	// Information that OpenSearch derives based on VPCOptions for the domain.
	VPCOptions *AwsElasticsearchDomainVPCOptions `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 AwsElasticsearchDomainDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElasticsearchDomainDetails) GoString() string {
	return s.String()
}

// SetAccessPolicies sets the AccessPolicies field's value.
func (s *AwsElasticsearchDomainDetails) SetAccessPolicies(v string) *AwsElasticsearchDomainDetails {
	s.AccessPolicies = &v
	return s
}

// SetDomainEndpointOptions sets the DomainEndpointOptions field's value.
func (s *AwsElasticsearchDomainDetails) SetDomainEndpointOptions(v *AwsElasticsearchDomainDomainEndpointOptions) *AwsElasticsearchDomainDetails {
	s.DomainEndpointOptions = v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *AwsElasticsearchDomainDetails) SetDomainId(v string) *AwsElasticsearchDomainDetails {
	s.DomainId = &v
	return s
}

// SetDomainName sets the DomainName field's value.
func (s *AwsElasticsearchDomainDetails) SetDomainName(v string) *AwsElasticsearchDomainDetails {
	s.DomainName = &v
	return s
}

// SetElasticsearchClusterConfig sets the ElasticsearchClusterConfig field's value.
func (s *AwsElasticsearchDomainDetails) SetElasticsearchClusterConfig(v *AwsElasticsearchDomainElasticsearchClusterConfigDetails) *AwsElasticsearchDomainDetails {
	s.ElasticsearchClusterConfig = v
	return s
}

// SetElasticsearchVersion sets the ElasticsearchVersion field's value.
func (s *AwsElasticsearchDomainDetails) SetElasticsearchVersion(v string) *AwsElasticsearchDomainDetails {
	s.ElasticsearchVersion = &v
	return s
}

// SetEncryptionAtRestOptions sets the EncryptionAtRestOptions field's value.
func (s *AwsElasticsearchDomainDetails) SetEncryptionAtRestOptions(v *AwsElasticsearchDomainEncryptionAtRestOptions) *AwsElasticsearchDomainDetails {
	s.EncryptionAtRestOptions = v
	return s
}

// SetEndpoint sets the Endpoint field's value.
func (s *AwsElasticsearchDomainDetails) SetEndpoint(v string) *AwsElasticsearchDomainDetails {
	s.Endpoint = &v
	return s
}

// SetEndpoints sets the Endpoints field's value.
func (s *AwsElasticsearchDomainDetails) SetEndpoints(v map[string]*string) *AwsElasticsearchDomainDetails {
	s.Endpoints = v
	return s
}

// SetLogPublishingOptions sets the LogPublishingOptions field's value.
func (s *AwsElasticsearchDomainDetails) SetLogPublishingOptions(v *AwsElasticsearchDomainLogPublishingOptions) *AwsElasticsearchDomainDetails {
	s.LogPublishingOptions = v
	return s
}

// SetNodeToNodeEncryptionOptions sets the NodeToNodeEncryptionOptions field's value.
func (s *AwsElasticsearchDomainDetails) SetNodeToNodeEncryptionOptions(v *AwsElasticsearchDomainNodeToNodeEncryptionOptions) *AwsElasticsearchDomainDetails {
	s.NodeToNodeEncryptionOptions = v
	return s
}

// SetServiceSoftwareOptions sets the ServiceSoftwareOptions field's value.
func (s *AwsElasticsearchDomainDetails) SetServiceSoftwareOptions(v *AwsElasticsearchDomainServiceSoftwareOptions) *AwsElasticsearchDomainDetails {
	s.ServiceSoftwareOptions = v
	return s
}

// SetVPCOptions sets the VPCOptions field's value.
func (s *AwsElasticsearchDomainDetails) SetVPCOptions(v *AwsElasticsearchDomainVPCOptions) *AwsElasticsearchDomainDetails {
	s.VPCOptions = v
	return s
}

// Additional options for the domain endpoint, such as whether to require HTTPS
// for all traffic.
type AwsElasticsearchDomainDomainEndpointOptions struct {
	_ struct{} `type:"structure"`

	// Whether to require that all traffic to the domain arrive over HTTPS.
	EnforceHTTPS *bool `type:"boolean"`

	// The TLS security policy to apply to the HTTPS endpoint of the OpenSearch
	// domain.
	//
	// Valid values:
	//
	//    * Policy-Min-TLS-1-0-2019-07, which supports TLSv1.0 and higher
	//
	//    * Policy-Min-TLS-1-2-2019-07, which only supports TLSv1.2
	TLSSecurityPolicy *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElasticsearchDomainDomainEndpointOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElasticsearchDomainDomainEndpointOptions) GoString() string {
	return s.String()
}

// SetEnforceHTTPS sets the EnforceHTTPS field's value.
func (s *AwsElasticsearchDomainDomainEndpointOptions) SetEnforceHTTPS(v bool) *AwsElasticsearchDomainDomainEndpointOptions {
	s.EnforceHTTPS = &v
	return s
}

// SetTLSSecurityPolicy sets the TLSSecurityPolicy field's value.
func (s *AwsElasticsearchDomainDomainEndpointOptions) SetTLSSecurityPolicy(v string) *AwsElasticsearchDomainDomainEndpointOptions {
	s.TLSSecurityPolicy = &v
	return s
}

// details about the configuration of an OpenSearch cluster.
type AwsElasticsearchDomainElasticsearchClusterConfigDetails struct {
	_ struct{} `type:"structure"`

	// The number of instances to use for the master node. If this attribute is
	// specified, then DedicatedMasterEnabled must be true.
	DedicatedMasterCount *int64 `type:"integer"`

	// Whether to use a dedicated master node for the Elasticsearch domain. A dedicated
	// master node performs cluster management tasks, but doesn't hold data or respond
	// to data upload requests.
	DedicatedMasterEnabled *bool `type:"boolean"`

	// The hardware configuration of the computer that hosts the dedicated master
	// node. A sample value is m3.medium.elasticsearch. If this attribute is specified,
	// then DedicatedMasterEnabled must be true.
	//
	// For a list of valid values, see Supported instance types in Amazon OpenSearch
	// Service (https://docs.aws.amazon.com/opensearch-service/latest/developerguide/supported-instance-types.html)
	// in the Amazon OpenSearch Service Developer Guide.
	DedicatedMasterType *string `type:"string"`

	// The number of data nodes to use in the Elasticsearch domain.
	InstanceCount *int64 `type:"integer"`

	// The instance type for your data nodes. For example, m3.medium.elasticsearch.
	//
	// For a list of valid values, see Supported instance types in Amazon OpenSearch
	// Service (https://docs.aws.amazon.com/opensearch-service/latest/developerguide/supported-instance-types.html)
	// in the Amazon OpenSearch Service Developer Guide.
	InstanceType *string `type:"string"`

	// Configuration options for zone awareness. Provided if ZoneAwarenessEnabled
	// is true.
	ZoneAwarenessConfig *AwsElasticsearchDomainElasticsearchClusterConfigZoneAwarenessConfigDetails `type:"structure"`

	// Whether to enable zone awareness for the Elasticsearch domain. When zone
	// awareness is enabled, OpenSearch allocates the cluster's nodes and replica
	// index shards across Availability Zones in the same Region. This prevents
	// data loss and minimizes downtime if a node or data center fails.
	ZoneAwarenessEnabled *bool `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 AwsElasticsearchDomainElasticsearchClusterConfigDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElasticsearchDomainElasticsearchClusterConfigDetails) GoString() string {
	return s.String()
}

// SetDedicatedMasterCount sets the DedicatedMasterCount field's value.
func (s *AwsElasticsearchDomainElasticsearchClusterConfigDetails) SetDedicatedMasterCount(v int64) *AwsElasticsearchDomainElasticsearchClusterConfigDetails {
	s.DedicatedMasterCount = &v
	return s
}

// SetDedicatedMasterEnabled sets the DedicatedMasterEnabled field's value.
func (s *AwsElasticsearchDomainElasticsearchClusterConfigDetails) SetDedicatedMasterEnabled(v bool) *AwsElasticsearchDomainElasticsearchClusterConfigDetails {
	s.DedicatedMasterEnabled = &v
	return s
}

// SetDedicatedMasterType sets the DedicatedMasterType field's value.
func (s *AwsElasticsearchDomainElasticsearchClusterConfigDetails) SetDedicatedMasterType(v string) *AwsElasticsearchDomainElasticsearchClusterConfigDetails {
	s.DedicatedMasterType = &v
	return s
}

// SetInstanceCount sets the InstanceCount field's value.
func (s *AwsElasticsearchDomainElasticsearchClusterConfigDetails) SetInstanceCount(v int64) *AwsElasticsearchDomainElasticsearchClusterConfigDetails {
	s.InstanceCount = &v
	return s
}

// SetInstanceType sets the InstanceType field's value.
func (s *AwsElasticsearchDomainElasticsearchClusterConfigDetails) SetInstanceType(v string) *AwsElasticsearchDomainElasticsearchClusterConfigDetails {
	s.InstanceType = &v
	return s
}

// SetZoneAwarenessConfig sets the ZoneAwarenessConfig field's value.
func (s *AwsElasticsearchDomainElasticsearchClusterConfigDetails) SetZoneAwarenessConfig(v *AwsElasticsearchDomainElasticsearchClusterConfigZoneAwarenessConfigDetails) *AwsElasticsearchDomainElasticsearchClusterConfigDetails {
	s.ZoneAwarenessConfig = v
	return s
}

// SetZoneAwarenessEnabled sets the ZoneAwarenessEnabled field's value.
func (s *AwsElasticsearchDomainElasticsearchClusterConfigDetails) SetZoneAwarenessEnabled(v bool) *AwsElasticsearchDomainElasticsearchClusterConfigDetails {
	s.ZoneAwarenessEnabled = &v
	return s
}

// Configuration options for zone awareness.
type AwsElasticsearchDomainElasticsearchClusterConfigZoneAwarenessConfigDetails struct {
	_ struct{} `type:"structure"`

	// he number of Availability Zones that the domain uses. Valid values are 2
	// and 3. The default is 2.
	AvailabilityZoneCount *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElasticsearchDomainElasticsearchClusterConfigZoneAwarenessConfigDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElasticsearchDomainElasticsearchClusterConfigZoneAwarenessConfigDetails) GoString() string {
	return s.String()
}

// SetAvailabilityZoneCount sets the AvailabilityZoneCount field's value.
func (s *AwsElasticsearchDomainElasticsearchClusterConfigZoneAwarenessConfigDetails) SetAvailabilityZoneCount(v int64) *AwsElasticsearchDomainElasticsearchClusterConfigZoneAwarenessConfigDetails {
	s.AvailabilityZoneCount = &v
	return s
}

// Details about the configuration for encryption at rest.
type AwsElasticsearchDomainEncryptionAtRestOptions struct {
	_ struct{} `type:"structure"`

	// Whether encryption at rest is enabled.
	Enabled *bool `type:"boolean"`

	// The KMS key ID. Takes the form 1a2a3a4-1a2a-3a4a-5a6a-1a2a3a4a5a6a.
	KmsKeyId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElasticsearchDomainEncryptionAtRestOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElasticsearchDomainEncryptionAtRestOptions) GoString() string {
	return s.String()
}

// SetEnabled sets the Enabled field's value.
func (s *AwsElasticsearchDomainEncryptionAtRestOptions) SetEnabled(v bool) *AwsElasticsearchDomainEncryptionAtRestOptions {
	s.Enabled = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *AwsElasticsearchDomainEncryptionAtRestOptions) SetKmsKeyId(v string) *AwsElasticsearchDomainEncryptionAtRestOptions {
	s.KmsKeyId = &v
	return s
}

// configures the CloudWatch Logs to publish for the Elasticsearch domain.
type AwsElasticsearchDomainLogPublishingOptions struct {
	_ struct{} `type:"structure"`

	// The log configuration.
	AuditLogs *AwsElasticsearchDomainLogPublishingOptionsLogConfig `type:"structure"`

	// Configures the OpenSearch index logs publishing.
	IndexSlowLogs *AwsElasticsearchDomainLogPublishingOptionsLogConfig `type:"structure"`

	// Configures the OpenSearch search slow log publishing.
	SearchSlowLogs *AwsElasticsearchDomainLogPublishingOptionsLogConfig `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 AwsElasticsearchDomainLogPublishingOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElasticsearchDomainLogPublishingOptions) GoString() string {
	return s.String()
}

// SetAuditLogs sets the AuditLogs field's value.
func (s *AwsElasticsearchDomainLogPublishingOptions) SetAuditLogs(v *AwsElasticsearchDomainLogPublishingOptionsLogConfig) *AwsElasticsearchDomainLogPublishingOptions {
	s.AuditLogs = v
	return s
}

// SetIndexSlowLogs sets the IndexSlowLogs field's value.
func (s *AwsElasticsearchDomainLogPublishingOptions) SetIndexSlowLogs(v *AwsElasticsearchDomainLogPublishingOptionsLogConfig) *AwsElasticsearchDomainLogPublishingOptions {
	s.IndexSlowLogs = v
	return s
}

// SetSearchSlowLogs sets the SearchSlowLogs field's value.
func (s *AwsElasticsearchDomainLogPublishingOptions) SetSearchSlowLogs(v *AwsElasticsearchDomainLogPublishingOptionsLogConfig) *AwsElasticsearchDomainLogPublishingOptions {
	s.SearchSlowLogs = v
	return s
}

// The log configuration.
type AwsElasticsearchDomainLogPublishingOptionsLogConfig struct {
	_ struct{} `type:"structure"`

	// The ARN of the CloudWatch Logs group to publish the logs to.
	CloudWatchLogsLogGroupArn *string `type:"string"`

	// Whether the log publishing is enabled.
	Enabled *bool `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 AwsElasticsearchDomainLogPublishingOptionsLogConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElasticsearchDomainLogPublishingOptionsLogConfig) GoString() string {
	return s.String()
}

// SetCloudWatchLogsLogGroupArn sets the CloudWatchLogsLogGroupArn field's value.
func (s *AwsElasticsearchDomainLogPublishingOptionsLogConfig) SetCloudWatchLogsLogGroupArn(v string) *AwsElasticsearchDomainLogPublishingOptionsLogConfig {
	s.CloudWatchLogsLogGroupArn = &v
	return s
}

// SetEnabled sets the Enabled field's value.
func (s *AwsElasticsearchDomainLogPublishingOptionsLogConfig) SetEnabled(v bool) *AwsElasticsearchDomainLogPublishingOptionsLogConfig {
	s.Enabled = &v
	return s
}

// Details about the configuration for node-to-node encryption.
type AwsElasticsearchDomainNodeToNodeEncryptionOptions struct {
	_ struct{} `type:"structure"`

	// Whether node-to-node encryption is enabled.
	Enabled *bool `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 AwsElasticsearchDomainNodeToNodeEncryptionOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElasticsearchDomainNodeToNodeEncryptionOptions) GoString() string {
	return s.String()
}

// SetEnabled sets the Enabled field's value.
func (s *AwsElasticsearchDomainNodeToNodeEncryptionOptions) SetEnabled(v bool) *AwsElasticsearchDomainNodeToNodeEncryptionOptions {
	s.Enabled = &v
	return s
}

// Information about the state of the domain relative to the latest service
// software.
type AwsElasticsearchDomainServiceSoftwareOptions struct {
	_ struct{} `type:"structure"`

	// The epoch time when the deployment window closes for required updates. After
	// this time, Amazon OpenSearch Service schedules the software upgrade automatically.
	AutomatedUpdateDate *string `type:"string"`

	// Whether a request to update the domain can be canceled.
	Cancellable *bool `type:"boolean"`

	// The version of the service software that is currently installed on the domain.
	CurrentVersion *string `type:"string"`

	// A more detailed description of the service software status.
	Description *string `type:"string"`

	// The most recent version of the service software.
	NewVersion *string `type:"string"`

	// Whether a service software update is available for the domain.
	UpdateAvailable *bool `type:"boolean"`

	// The status of the service software update. Valid values are as follows:
	//
	//    * COMPLETED
	//
	//    * ELIGIBLE
	//
	//    * IN_PROGRESS
	//
	//    * NOT_ELIGIBLE
	//
	//    * PENDING_UPDATE
	UpdateStatus *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElasticsearchDomainServiceSoftwareOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElasticsearchDomainServiceSoftwareOptions) GoString() string {
	return s.String()
}

// SetAutomatedUpdateDate sets the AutomatedUpdateDate field's value.
func (s *AwsElasticsearchDomainServiceSoftwareOptions) SetAutomatedUpdateDate(v string) *AwsElasticsearchDomainServiceSoftwareOptions {
	s.AutomatedUpdateDate = &v
	return s
}

// SetCancellable sets the Cancellable field's value.
func (s *AwsElasticsearchDomainServiceSoftwareOptions) SetCancellable(v bool) *AwsElasticsearchDomainServiceSoftwareOptions {
	s.Cancellable = &v
	return s
}

// SetCurrentVersion sets the CurrentVersion field's value.
func (s *AwsElasticsearchDomainServiceSoftwareOptions) SetCurrentVersion(v string) *AwsElasticsearchDomainServiceSoftwareOptions {
	s.CurrentVersion = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *AwsElasticsearchDomainServiceSoftwareOptions) SetDescription(v string) *AwsElasticsearchDomainServiceSoftwareOptions {
	s.Description = &v
	return s
}

// SetNewVersion sets the NewVersion field's value.
func (s *AwsElasticsearchDomainServiceSoftwareOptions) SetNewVersion(v string) *AwsElasticsearchDomainServiceSoftwareOptions {
	s.NewVersion = &v
	return s
}

// SetUpdateAvailable sets the UpdateAvailable field's value.
func (s *AwsElasticsearchDomainServiceSoftwareOptions) SetUpdateAvailable(v bool) *AwsElasticsearchDomainServiceSoftwareOptions {
	s.UpdateAvailable = &v
	return s
}

// SetUpdateStatus sets the UpdateStatus field's value.
func (s *AwsElasticsearchDomainServiceSoftwareOptions) SetUpdateStatus(v string) *AwsElasticsearchDomainServiceSoftwareOptions {
	s.UpdateStatus = &v
	return s
}

// Information that OpenSearch derives based on VPCOptions for the domain.
type AwsElasticsearchDomainVPCOptions struct {
	_ struct{} `type:"structure"`

	// The list of Availability Zones associated with the VPC subnets.
	AvailabilityZones []*string `type:"list"`

	// The list of security group IDs associated with the VPC endpoints for the
	// domain.
	SecurityGroupIds []*string `type:"list"`

	// A list of subnet IDs associated with the VPC endpoints for the domain.
	SubnetIds []*string `type:"list"`

	// ID for the VPC.
	VPCId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElasticsearchDomainVPCOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElasticsearchDomainVPCOptions) GoString() string {
	return s.String()
}

// SetAvailabilityZones sets the AvailabilityZones field's value.
func (s *AwsElasticsearchDomainVPCOptions) SetAvailabilityZones(v []*string) *AwsElasticsearchDomainVPCOptions {
	s.AvailabilityZones = v
	return s
}

// SetSecurityGroupIds sets the SecurityGroupIds field's value.
func (s *AwsElasticsearchDomainVPCOptions) SetSecurityGroupIds(v []*string) *AwsElasticsearchDomainVPCOptions {
	s.SecurityGroupIds = v
	return s
}

// SetSubnetIds sets the SubnetIds field's value.
func (s *AwsElasticsearchDomainVPCOptions) SetSubnetIds(v []*string) *AwsElasticsearchDomainVPCOptions {
	s.SubnetIds = v
	return s
}

// SetVPCId sets the VPCId field's value.
func (s *AwsElasticsearchDomainVPCOptions) SetVPCId(v string) *AwsElasticsearchDomainVPCOptions {
	s.VPCId = &v
	return s
}

// Contains information about a stickiness policy that was created using CreateAppCookieStickinessPolicy.
type AwsElbAppCookieStickinessPolicy struct {
	_ struct{} `type:"structure"`

	// The name of the application cookie used for stickiness.
	CookieName *string `type:"string"`

	// The mnemonic name for the policy being created. The name must be unique within
	// the set of policies for the load balancer.
	PolicyName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbAppCookieStickinessPolicy) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbAppCookieStickinessPolicy) GoString() string {
	return s.String()
}

// SetCookieName sets the CookieName field's value.
func (s *AwsElbAppCookieStickinessPolicy) SetCookieName(v string) *AwsElbAppCookieStickinessPolicy {
	s.CookieName = &v
	return s
}

// SetPolicyName sets the PolicyName field's value.
func (s *AwsElbAppCookieStickinessPolicy) SetPolicyName(v string) *AwsElbAppCookieStickinessPolicy {
	s.PolicyName = &v
	return s
}

// Contains information about a stickiness policy that was created using CreateLBCookieStickinessPolicy.
type AwsElbLbCookieStickinessPolicy struct {
	_ struct{} `type:"structure"`

	// The amount of time, in seconds, after which the cookie is considered stale.
	// If an expiration period is not specified, the stickiness session lasts for
	// the duration of the browser session.
	CookieExpirationPeriod *int64 `type:"long"`

	// The name of the policy. The name must be unique within the set of policies
	// for the load balancer.
	PolicyName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLbCookieStickinessPolicy) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLbCookieStickinessPolicy) GoString() string {
	return s.String()
}

// SetCookieExpirationPeriod sets the CookieExpirationPeriod field's value.
func (s *AwsElbLbCookieStickinessPolicy) SetCookieExpirationPeriod(v int64) *AwsElbLbCookieStickinessPolicy {
	s.CookieExpirationPeriod = &v
	return s
}

// SetPolicyName sets the PolicyName field's value.
func (s *AwsElbLbCookieStickinessPolicy) SetPolicyName(v string) *AwsElbLbCookieStickinessPolicy {
	s.PolicyName = &v
	return s
}

// Contains information about the access log configuration for the load balancer.
type AwsElbLoadBalancerAccessLog struct {
	_ struct{} `type:"structure"`

	// The interval in minutes for publishing the access logs.
	//
	// You can publish access logs either every 5 minutes or every 60 minutes.
	EmitInterval *int64 `type:"integer"`

	// Indicates whether access logs are enabled for the load balancer.
	Enabled *bool `type:"boolean"`

	// The name of the S3 bucket where the access logs are stored.
	S3BucketName *string `type:"string"`

	// The logical hierarchy that was created for the S3 bucket.
	//
	// If a prefix is not provided, the log is placed at the root level of the bucket.
	S3BucketPrefix *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLoadBalancerAccessLog) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLoadBalancerAccessLog) GoString() string {
	return s.String()
}

// SetEmitInterval sets the EmitInterval field's value.
func (s *AwsElbLoadBalancerAccessLog) SetEmitInterval(v int64) *AwsElbLoadBalancerAccessLog {
	s.EmitInterval = &v
	return s
}

// SetEnabled sets the Enabled field's value.
func (s *AwsElbLoadBalancerAccessLog) SetEnabled(v bool) *AwsElbLoadBalancerAccessLog {
	s.Enabled = &v
	return s
}

// SetS3BucketName sets the S3BucketName field's value.
func (s *AwsElbLoadBalancerAccessLog) SetS3BucketName(v string) *AwsElbLoadBalancerAccessLog {
	s.S3BucketName = &v
	return s
}

// SetS3BucketPrefix sets the S3BucketPrefix field's value.
func (s *AwsElbLoadBalancerAccessLog) SetS3BucketPrefix(v string) *AwsElbLoadBalancerAccessLog {
	s.S3BucketPrefix = &v
	return s
}

// Provides information about additional attributes for the load balancer.
type AwsElbLoadBalancerAdditionalAttribute struct {
	_ struct{} `type:"structure"`

	// The name of the attribute.
	Key *string `type:"string"`

	// The value of the attribute.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLoadBalancerAdditionalAttribute) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLoadBalancerAdditionalAttribute) GoString() string {
	return s.String()
}

// SetKey sets the Key field's value.
func (s *AwsElbLoadBalancerAdditionalAttribute) SetKey(v string) *AwsElbLoadBalancerAdditionalAttribute {
	s.Key = &v
	return s
}

// SetValue sets the Value field's value.
func (s *AwsElbLoadBalancerAdditionalAttribute) SetValue(v string) *AwsElbLoadBalancerAdditionalAttribute {
	s.Value = &v
	return s
}

// Contains attributes for the load balancer.
type AwsElbLoadBalancerAttributes struct {
	_ struct{} `type:"structure"`

	// Information about the access log configuration for the load balancer.
	//
	// If the access log is enabled, the load balancer captures detailed information
	// about all requests. It delivers the information to a specified S3 bucket.
	AccessLog *AwsElbLoadBalancerAccessLog `type:"structure"`

	// Any additional attributes for a load balancer.
	AdditionalAttributes []*AwsElbLoadBalancerAdditionalAttribute `type:"list"`

	// Information about the connection draining configuration for the load balancer.
	//
	// If connection draining is enabled, the load balancer allows existing requests
	// to complete before it shifts traffic away from a deregistered or unhealthy
	// instance.
	ConnectionDraining *AwsElbLoadBalancerConnectionDraining `type:"structure"`

	// Connection settings for the load balancer.
	//
	// If an idle timeout is configured, the load balancer allows connections to
	// remain idle for the specified duration. When a connection is idle, no data
	// is sent over the connection.
	ConnectionSettings *AwsElbLoadBalancerConnectionSettings `type:"structure"`

	// Cross-zone load balancing settings for the load balancer.
	//
	// If cross-zone load balancing is enabled, the load balancer routes the request
	// traffic evenly across all instances regardless of the Availability Zones.
	CrossZoneLoadBalancing *AwsElbLoadBalancerCrossZoneLoadBalancing `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 AwsElbLoadBalancerAttributes) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLoadBalancerAttributes) GoString() string {
	return s.String()
}

// SetAccessLog sets the AccessLog field's value.
func (s *AwsElbLoadBalancerAttributes) SetAccessLog(v *AwsElbLoadBalancerAccessLog) *AwsElbLoadBalancerAttributes {
	s.AccessLog = v
	return s
}

// SetAdditionalAttributes sets the AdditionalAttributes field's value.
func (s *AwsElbLoadBalancerAttributes) SetAdditionalAttributes(v []*AwsElbLoadBalancerAdditionalAttribute) *AwsElbLoadBalancerAttributes {
	s.AdditionalAttributes = v
	return s
}

// SetConnectionDraining sets the ConnectionDraining field's value.
func (s *AwsElbLoadBalancerAttributes) SetConnectionDraining(v *AwsElbLoadBalancerConnectionDraining) *AwsElbLoadBalancerAttributes {
	s.ConnectionDraining = v
	return s
}

// SetConnectionSettings sets the ConnectionSettings field's value.
func (s *AwsElbLoadBalancerAttributes) SetConnectionSettings(v *AwsElbLoadBalancerConnectionSettings) *AwsElbLoadBalancerAttributes {
	s.ConnectionSettings = v
	return s
}

// SetCrossZoneLoadBalancing sets the CrossZoneLoadBalancing field's value.
func (s *AwsElbLoadBalancerAttributes) SetCrossZoneLoadBalancing(v *AwsElbLoadBalancerCrossZoneLoadBalancing) *AwsElbLoadBalancerAttributes {
	s.CrossZoneLoadBalancing = v
	return s
}

// Provides information about the configuration of an EC2 instance for the load
// balancer.
type AwsElbLoadBalancerBackendServerDescription struct {
	_ struct{} `type:"structure"`

	// The port on which the EC2 instance is listening.
	InstancePort *int64 `type:"integer"`

	// The names of the policies that are enabled for the EC2 instance.
	PolicyNames []*string `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 AwsElbLoadBalancerBackendServerDescription) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLoadBalancerBackendServerDescription) GoString() string {
	return s.String()
}

// SetInstancePort sets the InstancePort field's value.
func (s *AwsElbLoadBalancerBackendServerDescription) SetInstancePort(v int64) *AwsElbLoadBalancerBackendServerDescription {
	s.InstancePort = &v
	return s
}

// SetPolicyNames sets the PolicyNames field's value.
func (s *AwsElbLoadBalancerBackendServerDescription) SetPolicyNames(v []*string) *AwsElbLoadBalancerBackendServerDescription {
	s.PolicyNames = v
	return s
}

// Contains information about the connection draining configuration for the
// load balancer.
type AwsElbLoadBalancerConnectionDraining struct {
	_ struct{} `type:"structure"`

	// Indicates whether connection draining is enabled for the load balancer.
	Enabled *bool `type:"boolean"`

	// The maximum time, in seconds, to keep the existing connections open before
	// deregistering the instances.
	Timeout *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLoadBalancerConnectionDraining) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLoadBalancerConnectionDraining) GoString() string {
	return s.String()
}

// SetEnabled sets the Enabled field's value.
func (s *AwsElbLoadBalancerConnectionDraining) SetEnabled(v bool) *AwsElbLoadBalancerConnectionDraining {
	s.Enabled = &v
	return s
}

// SetTimeout sets the Timeout field's value.
func (s *AwsElbLoadBalancerConnectionDraining) SetTimeout(v int64) *AwsElbLoadBalancerConnectionDraining {
	s.Timeout = &v
	return s
}

// Contains connection settings for the load balancer.
type AwsElbLoadBalancerConnectionSettings struct {
	_ struct{} `type:"structure"`

	// The time, in seconds, that the connection can be idle (no data is sent over
	// the connection) before it is closed by the load balancer.
	IdleTimeout *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLoadBalancerConnectionSettings) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLoadBalancerConnectionSettings) GoString() string {
	return s.String()
}

// SetIdleTimeout sets the IdleTimeout field's value.
func (s *AwsElbLoadBalancerConnectionSettings) SetIdleTimeout(v int64) *AwsElbLoadBalancerConnectionSettings {
	s.IdleTimeout = &v
	return s
}

// Contains cross-zone load balancing settings for the load balancer.
type AwsElbLoadBalancerCrossZoneLoadBalancing struct {
	_ struct{} `type:"structure"`

	// Indicates whether cross-zone load balancing is enabled for the load balancer.
	Enabled *bool `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 AwsElbLoadBalancerCrossZoneLoadBalancing) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLoadBalancerCrossZoneLoadBalancing) GoString() string {
	return s.String()
}

// SetEnabled sets the Enabled field's value.
func (s *AwsElbLoadBalancerCrossZoneLoadBalancing) SetEnabled(v bool) *AwsElbLoadBalancerCrossZoneLoadBalancing {
	s.Enabled = &v
	return s
}

// Contains details about a Classic Load Balancer.
type AwsElbLoadBalancerDetails struct {
	_ struct{} `type:"structure"`

	// The list of Availability Zones for the load balancer.
	AvailabilityZones []*string `type:"list"`

	// Information about the configuration of the EC2 instances.
	BackendServerDescriptions []*AwsElbLoadBalancerBackendServerDescription `type:"list"`

	// The name of the Amazon Route 53 hosted zone for the load balancer.
	CanonicalHostedZoneName *string `type:"string"`

	// The ID of the Amazon Route 53 hosted zone for the load balancer.
	CanonicalHostedZoneNameID *string `type:"string"`

	// Indicates when the load balancer was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreatedTime *string `type:"string"`

	// The DNS name of the load balancer.
	DnsName *string `type:"string"`

	// Information about the health checks that are conducted on the load balancer.
	HealthCheck *AwsElbLoadBalancerHealthCheck `type:"structure"`

	// List of EC2 instances for the load balancer.
	Instances []*AwsElbLoadBalancerInstance `type:"list"`

	// The policies that are enabled for the load balancer listeners.
	ListenerDescriptions []*AwsElbLoadBalancerListenerDescription `type:"list"`

	// The attributes for a load balancer.
	LoadBalancerAttributes *AwsElbLoadBalancerAttributes `type:"structure"`

	// The name of the load balancer.
	LoadBalancerName *string `type:"string"`

	// The policies for a load balancer.
	Policies *AwsElbLoadBalancerPolicies `type:"structure"`

	// The type of load balancer. Only provided if the load balancer is in a VPC.
	//
	// If Scheme is internet-facing, the load balancer has a public DNS name that
	// resolves to a public IP address.
	//
	// If Scheme is internal, the load balancer has a public DNS name that resolves
	// to a private IP address.
	Scheme *string `type:"string"`

	// The security groups for the load balancer. Only provided if the load balancer
	// is in a VPC.
	SecurityGroups []*string `type:"list"`

	// Information about the security group for the load balancer. This is the security
	// group that is used for inbound rules.
	SourceSecurityGroup *AwsElbLoadBalancerSourceSecurityGroup `type:"structure"`

	// The list of subnet identifiers for the load balancer.
	Subnets []*string `type:"list"`

	// The identifier of the VPC for the load balancer.
	VpcId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLoadBalancerDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLoadBalancerDetails) GoString() string {
	return s.String()
}

// SetAvailabilityZones sets the AvailabilityZones field's value.
func (s *AwsElbLoadBalancerDetails) SetAvailabilityZones(v []*string) *AwsElbLoadBalancerDetails {
	s.AvailabilityZones = v
	return s
}

// SetBackendServerDescriptions sets the BackendServerDescriptions field's value.
func (s *AwsElbLoadBalancerDetails) SetBackendServerDescriptions(v []*AwsElbLoadBalancerBackendServerDescription) *AwsElbLoadBalancerDetails {
	s.BackendServerDescriptions = v
	return s
}

// SetCanonicalHostedZoneName sets the CanonicalHostedZoneName field's value.
func (s *AwsElbLoadBalancerDetails) SetCanonicalHostedZoneName(v string) *AwsElbLoadBalancerDetails {
	s.CanonicalHostedZoneName = &v
	return s
}

// SetCanonicalHostedZoneNameID sets the CanonicalHostedZoneNameID field's value.
func (s *AwsElbLoadBalancerDetails) SetCanonicalHostedZoneNameID(v string) *AwsElbLoadBalancerDetails {
	s.CanonicalHostedZoneNameID = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *AwsElbLoadBalancerDetails) SetCreatedTime(v string) *AwsElbLoadBalancerDetails {
	s.CreatedTime = &v
	return s
}

// SetDnsName sets the DnsName field's value.
func (s *AwsElbLoadBalancerDetails) SetDnsName(v string) *AwsElbLoadBalancerDetails {
	s.DnsName = &v
	return s
}

// SetHealthCheck sets the HealthCheck field's value.
func (s *AwsElbLoadBalancerDetails) SetHealthCheck(v *AwsElbLoadBalancerHealthCheck) *AwsElbLoadBalancerDetails {
	s.HealthCheck = v
	return s
}

// SetInstances sets the Instances field's value.
func (s *AwsElbLoadBalancerDetails) SetInstances(v []*AwsElbLoadBalancerInstance) *AwsElbLoadBalancerDetails {
	s.Instances = v
	return s
}

// SetListenerDescriptions sets the ListenerDescriptions field's value.
func (s *AwsElbLoadBalancerDetails) SetListenerDescriptions(v []*AwsElbLoadBalancerListenerDescription) *AwsElbLoadBalancerDetails {
	s.ListenerDescriptions = v
	return s
}

// SetLoadBalancerAttributes sets the LoadBalancerAttributes field's value.
func (s *AwsElbLoadBalancerDetails) SetLoadBalancerAttributes(v *AwsElbLoadBalancerAttributes) *AwsElbLoadBalancerDetails {
	s.LoadBalancerAttributes = v
	return s
}

// SetLoadBalancerName sets the LoadBalancerName field's value.
func (s *AwsElbLoadBalancerDetails) SetLoadBalancerName(v string) *AwsElbLoadBalancerDetails {
	s.LoadBalancerName = &v
	return s
}

// SetPolicies sets the Policies field's value.
func (s *AwsElbLoadBalancerDetails) SetPolicies(v *AwsElbLoadBalancerPolicies) *AwsElbLoadBalancerDetails {
	s.Policies = v
	return s
}

// SetScheme sets the Scheme field's value.
func (s *AwsElbLoadBalancerDetails) SetScheme(v string) *AwsElbLoadBalancerDetails {
	s.Scheme = &v
	return s
}

// SetSecurityGroups sets the SecurityGroups field's value.
func (s *AwsElbLoadBalancerDetails) SetSecurityGroups(v []*string) *AwsElbLoadBalancerDetails {
	s.SecurityGroups = v
	return s
}

// SetSourceSecurityGroup sets the SourceSecurityGroup field's value.
func (s *AwsElbLoadBalancerDetails) SetSourceSecurityGroup(v *AwsElbLoadBalancerSourceSecurityGroup) *AwsElbLoadBalancerDetails {
	s.SourceSecurityGroup = v
	return s
}

// SetSubnets sets the Subnets field's value.
func (s *AwsElbLoadBalancerDetails) SetSubnets(v []*string) *AwsElbLoadBalancerDetails {
	s.Subnets = v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *AwsElbLoadBalancerDetails) SetVpcId(v string) *AwsElbLoadBalancerDetails {
	s.VpcId = &v
	return s
}

// Contains information about the health checks that are conducted on the load
// balancer.
type AwsElbLoadBalancerHealthCheck struct {
	_ struct{} `type:"structure"`

	// The number of consecutive health check successes required before the instance
	// is moved to the Healthy state.
	HealthyThreshold *int64 `type:"integer"`

	// The approximate interval, in seconds, between health checks of an individual
	// instance.
	Interval *int64 `type:"integer"`

	// The instance that is being checked. The target specifies the protocol and
	// port. The available protocols are TCP, SSL, HTTP, and HTTPS. The range of
	// valid ports is 1 through 65535.
	//
	// For the HTTP and HTTPS protocols, the target also specifies the ping path.
	//
	// For the TCP protocol, the target is specified as TCP: <port> .
	//
	// For the SSL protocol, the target is specified as SSL.<port> .
	//
	// For the HTTP and HTTPS protocols, the target is specified as <protocol>:<port>/<path
	// to ping> .
	Target *string `type:"string"`

	// The amount of time, in seconds, during which no response means a failed health
	// check.
	Timeout *int64 `type:"integer"`

	// The number of consecutive health check failures that must occur before the
	// instance is moved to the Unhealthy state.
	UnhealthyThreshold *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLoadBalancerHealthCheck) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLoadBalancerHealthCheck) GoString() string {
	return s.String()
}

// SetHealthyThreshold sets the HealthyThreshold field's value.
func (s *AwsElbLoadBalancerHealthCheck) SetHealthyThreshold(v int64) *AwsElbLoadBalancerHealthCheck {
	s.HealthyThreshold = &v
	return s
}

// SetInterval sets the Interval field's value.
func (s *AwsElbLoadBalancerHealthCheck) SetInterval(v int64) *AwsElbLoadBalancerHealthCheck {
	s.Interval = &v
	return s
}

// SetTarget sets the Target field's value.
func (s *AwsElbLoadBalancerHealthCheck) SetTarget(v string) *AwsElbLoadBalancerHealthCheck {
	s.Target = &v
	return s
}

// SetTimeout sets the Timeout field's value.
func (s *AwsElbLoadBalancerHealthCheck) SetTimeout(v int64) *AwsElbLoadBalancerHealthCheck {
	s.Timeout = &v
	return s
}

// SetUnhealthyThreshold sets the UnhealthyThreshold field's value.
func (s *AwsElbLoadBalancerHealthCheck) SetUnhealthyThreshold(v int64) *AwsElbLoadBalancerHealthCheck {
	s.UnhealthyThreshold = &v
	return s
}

// Provides information about an EC2 instance for a load balancer.
type AwsElbLoadBalancerInstance struct {
	_ struct{} `type:"structure"`

	// The instance identifier.
	InstanceId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLoadBalancerInstance) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLoadBalancerInstance) GoString() string {
	return s.String()
}

// SetInstanceId sets the InstanceId field's value.
func (s *AwsElbLoadBalancerInstance) SetInstanceId(v string) *AwsElbLoadBalancerInstance {
	s.InstanceId = &v
	return s
}

// Information about a load balancer listener.
type AwsElbLoadBalancerListener struct {
	_ struct{} `type:"structure"`

	// The port on which the instance is listening.
	InstancePort *int64 `type:"integer"`

	// The protocol to use to route traffic to instances.
	//
	// Valid values: HTTP | HTTPS | TCP | SSL
	InstanceProtocol *string `type:"string"`

	// The port on which the load balancer is listening.
	//
	// On EC2-VPC, you can specify any port from the range 1-65535.
	//
	// On EC2-Classic, you can specify any port from the following list: 25, 80,
	// 443, 465, 587, 1024-65535.
	LoadBalancerPort *int64 `type:"integer"`

	// The load balancer transport protocol to use for routing.
	//
	// Valid values: HTTP | HTTPS | TCP | SSL
	Protocol *string `type:"string"`

	// The ARN of the server certificate.
	SslCertificateId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLoadBalancerListener) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLoadBalancerListener) GoString() string {
	return s.String()
}

// SetInstancePort sets the InstancePort field's value.
func (s *AwsElbLoadBalancerListener) SetInstancePort(v int64) *AwsElbLoadBalancerListener {
	s.InstancePort = &v
	return s
}

// SetInstanceProtocol sets the InstanceProtocol field's value.
func (s *AwsElbLoadBalancerListener) SetInstanceProtocol(v string) *AwsElbLoadBalancerListener {
	s.InstanceProtocol = &v
	return s
}

// SetLoadBalancerPort sets the LoadBalancerPort field's value.
func (s *AwsElbLoadBalancerListener) SetLoadBalancerPort(v int64) *AwsElbLoadBalancerListener {
	s.LoadBalancerPort = &v
	return s
}

// SetProtocol sets the Protocol field's value.
func (s *AwsElbLoadBalancerListener) SetProtocol(v string) *AwsElbLoadBalancerListener {
	s.Protocol = &v
	return s
}

// SetSslCertificateId sets the SslCertificateId field's value.
func (s *AwsElbLoadBalancerListener) SetSslCertificateId(v string) *AwsElbLoadBalancerListener {
	s.SslCertificateId = &v
	return s
}

// Lists the policies that are enabled for a load balancer listener.
type AwsElbLoadBalancerListenerDescription struct {
	_ struct{} `type:"structure"`

	// Information about the listener.
	Listener *AwsElbLoadBalancerListener `type:"structure"`

	// The policies enabled for the listener.
	PolicyNames []*string `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 AwsElbLoadBalancerListenerDescription) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLoadBalancerListenerDescription) GoString() string {
	return s.String()
}

// SetListener sets the Listener field's value.
func (s *AwsElbLoadBalancerListenerDescription) SetListener(v *AwsElbLoadBalancerListener) *AwsElbLoadBalancerListenerDescription {
	s.Listener = v
	return s
}

// SetPolicyNames sets the PolicyNames field's value.
func (s *AwsElbLoadBalancerListenerDescription) SetPolicyNames(v []*string) *AwsElbLoadBalancerListenerDescription {
	s.PolicyNames = v
	return s
}

// Contains information about the policies for a load balancer.
type AwsElbLoadBalancerPolicies struct {
	_ struct{} `type:"structure"`

	// The stickiness policies that are created using CreateAppCookieStickinessPolicy.
	AppCookieStickinessPolicies []*AwsElbAppCookieStickinessPolicy `type:"list"`

	// The stickiness policies that are created using CreateLBCookieStickinessPolicy.
	LbCookieStickinessPolicies []*AwsElbLbCookieStickinessPolicy `type:"list"`

	// The policies other than the stickiness policies.
	OtherPolicies []*string `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 AwsElbLoadBalancerPolicies) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLoadBalancerPolicies) GoString() string {
	return s.String()
}

// SetAppCookieStickinessPolicies sets the AppCookieStickinessPolicies field's value.
func (s *AwsElbLoadBalancerPolicies) SetAppCookieStickinessPolicies(v []*AwsElbAppCookieStickinessPolicy) *AwsElbLoadBalancerPolicies {
	s.AppCookieStickinessPolicies = v
	return s
}

// SetLbCookieStickinessPolicies sets the LbCookieStickinessPolicies field's value.
func (s *AwsElbLoadBalancerPolicies) SetLbCookieStickinessPolicies(v []*AwsElbLbCookieStickinessPolicy) *AwsElbLoadBalancerPolicies {
	s.LbCookieStickinessPolicies = v
	return s
}

// SetOtherPolicies sets the OtherPolicies field's value.
func (s *AwsElbLoadBalancerPolicies) SetOtherPolicies(v []*string) *AwsElbLoadBalancerPolicies {
	s.OtherPolicies = v
	return s
}

// Contains information about the security group for the load balancer.
type AwsElbLoadBalancerSourceSecurityGroup struct {
	_ struct{} `type:"structure"`

	// The name of the security group.
	GroupName *string `type:"string"`

	// The owner of the security group.
	OwnerAlias *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLoadBalancerSourceSecurityGroup) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbLoadBalancerSourceSecurityGroup) GoString() string {
	return s.String()
}

// SetGroupName sets the GroupName field's value.
func (s *AwsElbLoadBalancerSourceSecurityGroup) SetGroupName(v string) *AwsElbLoadBalancerSourceSecurityGroup {
	s.GroupName = &v
	return s
}

// SetOwnerAlias sets the OwnerAlias field's value.
func (s *AwsElbLoadBalancerSourceSecurityGroup) SetOwnerAlias(v string) *AwsElbLoadBalancerSourceSecurityGroup {
	s.OwnerAlias = &v
	return s
}

// A load balancer attribute.
type AwsElbv2LoadBalancerAttribute struct {
	_ struct{} `type:"structure"`

	// The name of the load balancer attribute.
	Key *string `type:"string"`

	// The value of the load balancer attribute.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbv2LoadBalancerAttribute) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbv2LoadBalancerAttribute) GoString() string {
	return s.String()
}

// SetKey sets the Key field's value.
func (s *AwsElbv2LoadBalancerAttribute) SetKey(v string) *AwsElbv2LoadBalancerAttribute {
	s.Key = &v
	return s
}

// SetValue sets the Value field's value.
func (s *AwsElbv2LoadBalancerAttribute) SetValue(v string) *AwsElbv2LoadBalancerAttribute {
	s.Value = &v
	return s
}

// Information about a load balancer.
type AwsElbv2LoadBalancerDetails struct {
	_ struct{} `type:"structure"`

	// The Availability Zones for the load balancer.
	AvailabilityZones []*AvailabilityZone `type:"list"`

	// The ID of the Amazon Route 53 hosted zone associated with the load balancer.
	CanonicalHostedZoneId *string `type:"string"`

	// Indicates when the load balancer was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreatedTime *string `type:"string"`

	// The public DNS name of the load balancer.
	DNSName *string `type:"string"`

	// The type of IP addresses used by the subnets for your load balancer. The
	// possible values are ipv4 (for IPv4 addresses) and dualstack (for IPv4 and
	// IPv6 addresses).
	IpAddressType *string `type:"string"`

	// Attributes of the load balancer.
	LoadBalancerAttributes []*AwsElbv2LoadBalancerAttribute `type:"list"`

	// The nodes of an Internet-facing load balancer have public IP addresses.
	Scheme *string `type:"string"`

	// The IDs of the security groups for the load balancer.
	SecurityGroups []*string `type:"list"`

	// The state of the load balancer.
	State *LoadBalancerState `type:"structure"`

	// The type of load balancer.
	Type *string `type:"string"`

	// The ID of the VPC for the load balancer.
	VpcId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbv2LoadBalancerDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsElbv2LoadBalancerDetails) GoString() string {
	return s.String()
}

// SetAvailabilityZones sets the AvailabilityZones field's value.
func (s *AwsElbv2LoadBalancerDetails) SetAvailabilityZones(v []*AvailabilityZone) *AwsElbv2LoadBalancerDetails {
	s.AvailabilityZones = v
	return s
}

// SetCanonicalHostedZoneId sets the CanonicalHostedZoneId field's value.
func (s *AwsElbv2LoadBalancerDetails) SetCanonicalHostedZoneId(v string) *AwsElbv2LoadBalancerDetails {
	s.CanonicalHostedZoneId = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *AwsElbv2LoadBalancerDetails) SetCreatedTime(v string) *AwsElbv2LoadBalancerDetails {
	s.CreatedTime = &v
	return s
}

// SetDNSName sets the DNSName field's value.
func (s *AwsElbv2LoadBalancerDetails) SetDNSName(v string) *AwsElbv2LoadBalancerDetails {
	s.DNSName = &v
	return s
}

// SetIpAddressType sets the IpAddressType field's value.
func (s *AwsElbv2LoadBalancerDetails) SetIpAddressType(v string) *AwsElbv2LoadBalancerDetails {
	s.IpAddressType = &v
	return s
}

// SetLoadBalancerAttributes sets the LoadBalancerAttributes field's value.
func (s *AwsElbv2LoadBalancerDetails) SetLoadBalancerAttributes(v []*AwsElbv2LoadBalancerAttribute) *AwsElbv2LoadBalancerDetails {
	s.LoadBalancerAttributes = v
	return s
}

// SetScheme sets the Scheme field's value.
func (s *AwsElbv2LoadBalancerDetails) SetScheme(v string) *AwsElbv2LoadBalancerDetails {
	s.Scheme = &v
	return s
}

// SetSecurityGroups sets the SecurityGroups field's value.
func (s *AwsElbv2LoadBalancerDetails) SetSecurityGroups(v []*string) *AwsElbv2LoadBalancerDetails {
	s.SecurityGroups = v
	return s
}

// SetState sets the State field's value.
func (s *AwsElbv2LoadBalancerDetails) SetState(v *LoadBalancerState) *AwsElbv2LoadBalancerDetails {
	s.State = v
	return s
}

// SetType sets the Type field's value.
func (s *AwsElbv2LoadBalancerDetails) SetType(v string) *AwsElbv2LoadBalancerDetails {
	s.Type = &v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *AwsElbv2LoadBalancerDetails) SetVpcId(v string) *AwsElbv2LoadBalancerDetails {
	s.VpcId = &v
	return s
}

// A schema defines the structure of events that are sent to Amazon EventBridge.
// Schema registries are containers for schemas. They collect and organize schemas
// so that your schemas are in logical groups.
type AwsEventSchemasRegistryDetails struct {
	_ struct{} `type:"structure"`

	// A description of the registry to be created.
	Description *string `type:"string"`

	// The Amazon Resource Name (ARN) of the registry.
	RegistryArn *string `type:"string"`

	// The name of the schema registry.
	RegistryName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEventSchemasRegistryDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEventSchemasRegistryDetails) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *AwsEventSchemasRegistryDetails) SetDescription(v string) *AwsEventSchemasRegistryDetails {
	s.Description = &v
	return s
}

// SetRegistryArn sets the RegistryArn field's value.
func (s *AwsEventSchemasRegistryDetails) SetRegistryArn(v string) *AwsEventSchemasRegistryDetails {
	s.RegistryArn = &v
	return s
}

// SetRegistryName sets the RegistryName field's value.
func (s *AwsEventSchemasRegistryDetails) SetRegistryName(v string) *AwsEventSchemasRegistryDetails {
	s.RegistryName = &v
	return s
}

// Provides details about an Amazon EventBridge global endpoint. The endpoint
// can improve your application’s availability by making it Regional-fault
// tolerant.
type AwsEventsEndpointDetails struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the endpoint.
	Arn *string `type:"string"`

	// A description of the endpoint.
	Description *string `type:"string"`

	// The URL subdomain of the endpoint. For example, if EndpointUrl is https://abcde.veo.endpoints.event.amazonaws.com,
	// then the EndpointId is abcde.veo.
	EndpointId *string `type:"string"`

	// The URL of the endpoint.
	EndpointUrl *string `type:"string"`

	// The event buses being used by the endpoint.
	EventBuses []*AwsEventsEndpointEventBusesDetails `type:"list"`

	// The name of the endpoint.
	Name *string `type:"string"`

	// Whether event replication was enabled or disabled for this endpoint. The
	// default state is ENABLED, which means you must supply a RoleArn. If you don't
	// have a RoleArn or you don't want event replication enabled, set the state
	// to DISABLED.
	ReplicationConfig *AwsEventsEndpointReplicationConfigDetails `type:"structure"`

	// The ARN of the role used by event replication for the endpoint.
	RoleArn *string `type:"string"`

	// The routing configuration of the endpoint.
	RoutingConfig *AwsEventsEndpointRoutingConfigDetails `type:"structure"`

	// The current state of the endpoint.
	State *string `type:"string"`

	// The reason the endpoint is in its current state.
	StateReason *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEventsEndpointDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEventsEndpointDetails) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *AwsEventsEndpointDetails) SetArn(v string) *AwsEventsEndpointDetails {
	s.Arn = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *AwsEventsEndpointDetails) SetDescription(v string) *AwsEventsEndpointDetails {
	s.Description = &v
	return s
}

// SetEndpointId sets the EndpointId field's value.
func (s *AwsEventsEndpointDetails) SetEndpointId(v string) *AwsEventsEndpointDetails {
	s.EndpointId = &v
	return s
}

// SetEndpointUrl sets the EndpointUrl field's value.
func (s *AwsEventsEndpointDetails) SetEndpointUrl(v string) *AwsEventsEndpointDetails {
	s.EndpointUrl = &v
	return s
}

// SetEventBuses sets the EventBuses field's value.
func (s *AwsEventsEndpointDetails) SetEventBuses(v []*AwsEventsEndpointEventBusesDetails) *AwsEventsEndpointDetails {
	s.EventBuses = v
	return s
}

// SetName sets the Name field's value.
func (s *AwsEventsEndpointDetails) SetName(v string) *AwsEventsEndpointDetails {
	s.Name = &v
	return s
}

// SetReplicationConfig sets the ReplicationConfig field's value.
func (s *AwsEventsEndpointDetails) SetReplicationConfig(v *AwsEventsEndpointReplicationConfigDetails) *AwsEventsEndpointDetails {
	s.ReplicationConfig = v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *AwsEventsEndpointDetails) SetRoleArn(v string) *AwsEventsEndpointDetails {
	s.RoleArn = &v
	return s
}

// SetRoutingConfig sets the RoutingConfig field's value.
func (s *AwsEventsEndpointDetails) SetRoutingConfig(v *AwsEventsEndpointRoutingConfigDetails) *AwsEventsEndpointDetails {
	s.RoutingConfig = v
	return s
}

// SetState sets the State field's value.
func (s *AwsEventsEndpointDetails) SetState(v string) *AwsEventsEndpointDetails {
	s.State = &v
	return s
}

// SetStateReason sets the StateReason field's value.
func (s *AwsEventsEndpointDetails) SetStateReason(v string) *AwsEventsEndpointDetails {
	s.StateReason = &v
	return s
}

// Provides details about the Amazon EventBridge event buses that the endpoint
// is associated with.
type AwsEventsEndpointEventBusesDetails struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the event bus that the endpoint is associated
	// with.
	EventBusArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEventsEndpointEventBusesDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEventsEndpointEventBusesDetails) GoString() string {
	return s.String()
}

// SetEventBusArn sets the EventBusArn field's value.
func (s *AwsEventsEndpointEventBusesDetails) SetEventBusArn(v string) *AwsEventsEndpointEventBusesDetails {
	s.EventBusArn = &v
	return s
}

// Indicates whether replication is enabled or disabled for the endpoint. If
// enabled, the endpoint can replicate all events to a secondary Amazon Web
// Services Region.
type AwsEventsEndpointReplicationConfigDetails struct {
	_ struct{} `type:"structure"`

	// The state of event replication.
	State *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEventsEndpointReplicationConfigDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEventsEndpointReplicationConfigDetails) GoString() string {
	return s.String()
}

// SetState sets the State field's value.
func (s *AwsEventsEndpointReplicationConfigDetails) SetState(v string) *AwsEventsEndpointReplicationConfigDetails {
	s.State = &v
	return s
}

// Provides details about the routing configuration of the endpoint.
type AwsEventsEndpointRoutingConfigDetails struct {
	_ struct{} `type:"structure"`

	// The failover configuration for an endpoint. This includes what triggers failover
	// and what happens when it's triggered.
	FailoverConfig *AwsEventsEndpointRoutingConfigFailoverConfigDetails `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 AwsEventsEndpointRoutingConfigDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEventsEndpointRoutingConfigDetails) GoString() string {
	return s.String()
}

// SetFailoverConfig sets the FailoverConfig field's value.
func (s *AwsEventsEndpointRoutingConfigDetails) SetFailoverConfig(v *AwsEventsEndpointRoutingConfigFailoverConfigDetails) *AwsEventsEndpointRoutingConfigDetails {
	s.FailoverConfig = v
	return s
}

// The failover configuration for an endpoint. This includes what triggers failover
// and what happens when it's triggered.
type AwsEventsEndpointRoutingConfigFailoverConfigDetails struct {
	_ struct{} `type:"structure"`

	// The main Region of the endpoint.
	Primary *AwsEventsEndpointRoutingConfigFailoverConfigPrimaryDetails `type:"structure"`

	// The Region that events are routed to when failover is triggered or event
	// replication is enabled.
	Secondary *AwsEventsEndpointRoutingConfigFailoverConfigSecondaryDetails `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 AwsEventsEndpointRoutingConfigFailoverConfigDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEventsEndpointRoutingConfigFailoverConfigDetails) GoString() string {
	return s.String()
}

// SetPrimary sets the Primary field's value.
func (s *AwsEventsEndpointRoutingConfigFailoverConfigDetails) SetPrimary(v *AwsEventsEndpointRoutingConfigFailoverConfigPrimaryDetails) *AwsEventsEndpointRoutingConfigFailoverConfigDetails {
	s.Primary = v
	return s
}

// SetSecondary sets the Secondary field's value.
func (s *AwsEventsEndpointRoutingConfigFailoverConfigDetails) SetSecondary(v *AwsEventsEndpointRoutingConfigFailoverConfigSecondaryDetails) *AwsEventsEndpointRoutingConfigFailoverConfigDetails {
	s.Secondary = v
	return s
}

// Provides details about the primary Amazon Web Services Region of the endpoint.
type AwsEventsEndpointRoutingConfigFailoverConfigPrimaryDetails struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the health check used by the endpoint to
	// determine whether failover is triggered.
	HealthCheck *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEventsEndpointRoutingConfigFailoverConfigPrimaryDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEventsEndpointRoutingConfigFailoverConfigPrimaryDetails) GoString() string {
	return s.String()
}

// SetHealthCheck sets the HealthCheck field's value.
func (s *AwsEventsEndpointRoutingConfigFailoverConfigPrimaryDetails) SetHealthCheck(v string) *AwsEventsEndpointRoutingConfigFailoverConfigPrimaryDetails {
	s.HealthCheck = &v
	return s
}

// The Amazon Web Services Region that events are routed to when failover is
// triggered or event replication is enabled.
type AwsEventsEndpointRoutingConfigFailoverConfigSecondaryDetails struct {
	_ struct{} `type:"structure"`

	// Defines the secondary Region.
	Route *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEventsEndpointRoutingConfigFailoverConfigSecondaryDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEventsEndpointRoutingConfigFailoverConfigSecondaryDetails) GoString() string {
	return s.String()
}

// SetRoute sets the Route field's value.
func (s *AwsEventsEndpointRoutingConfigFailoverConfigSecondaryDetails) SetRoute(v string) *AwsEventsEndpointRoutingConfigFailoverConfigSecondaryDetails {
	s.Route = &v
	return s
}

// Provides details about Amazon EventBridge event bus. An event bus is a router
// that receives events and delivers them to zero or more destinations, or targets.
// This can be a custom event bus which you can use to receive events from your
// custom applications and services, or it can be a partner event bus which
// can be matched to a partner event source.
type AwsEventsEventbusDetails struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the account permitted to write events to
	// the current account.
	Arn *string `type:"string"`

	// The name of the event bus.
	Name *string `type:"string"`

	// The policy that enables the external account to send events to your account.
	Policy *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEventsEventbusDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsEventsEventbusDetails) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *AwsEventsEventbusDetails) SetArn(v string) *AwsEventsEventbusDetails {
	s.Arn = &v
	return s
}

// SetName sets the Name field's value.
func (s *AwsEventsEventbusDetails) SetName(v string) *AwsEventsEventbusDetails {
	s.Name = &v
	return s
}

// SetPolicy sets the Policy field's value.
func (s *AwsEventsEventbusDetails) SetPolicy(v string) *AwsEventsEventbusDetails {
	s.Policy = &v
	return s
}

// An object that contains information on the status of CloudTrail as a data
// source for the detector.
type AwsGuardDutyDetectorDataSourcesCloudTrailDetails struct {
	_ struct{} `type:"structure"`

	// Specifies whether CloudTrail is activated as a data source for the detector.
	Status *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsGuardDutyDetectorDataSourcesCloudTrailDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsGuardDutyDetectorDataSourcesCloudTrailDetails) GoString() string {
	return s.String()
}

// SetStatus sets the Status field's value.
func (s *AwsGuardDutyDetectorDataSourcesCloudTrailDetails) SetStatus(v string) *AwsGuardDutyDetectorDataSourcesCloudTrailDetails {
	s.Status = &v
	return s
}

// Describes which data sources are activated for the detector.
type AwsGuardDutyDetectorDataSourcesDetails struct {
	_ struct{} `type:"structure"`

	// An object that contains information on the status of CloudTrail as a data
	// source for the detector.
	CloudTrail *AwsGuardDutyDetectorDataSourcesCloudTrailDetails `type:"structure"`

	// An object that contains information on the status of DNS logs as a data source
	// for the detector.
	DnsLogs *AwsGuardDutyDetectorDataSourcesDnsLogsDetails `type:"structure"`

	// An object that contains information on the status of VPC Flow Logs as a data
	// source for the detector.
	FlowLogs *AwsGuardDutyDetectorDataSourcesFlowLogsDetails `type:"structure"`

	// An object that contains information on the status of Kubernetes data sources
	// for the detector.
	Kubernetes *AwsGuardDutyDetectorDataSourcesKubernetesDetails `type:"structure"`

	// An object that contains information on the status of Malware Protection as
	// a data source for the detector.
	MalwareProtection *AwsGuardDutyDetectorDataSourcesMalwareProtectionDetails `type:"structure"`

	// An object that contains information on the status of S3 Data event logs as
	// a data source for the detector.
	S3Logs *AwsGuardDutyDetectorDataSourcesS3LogsDetails `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 AwsGuardDutyDetectorDataSourcesDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsGuardDutyDetectorDataSourcesDetails) GoString() string {
	return s.String()
}

// SetCloudTrail sets the CloudTrail field's value.
func (s *AwsGuardDutyDetectorDataSourcesDetails) SetCloudTrail(v *AwsGuardDutyDetectorDataSourcesCloudTrailDetails) *AwsGuardDutyDetectorDataSourcesDetails {
	s.CloudTrail = v
	return s
}

// SetDnsLogs sets the DnsLogs field's value.
func (s *AwsGuardDutyDetectorDataSourcesDetails) SetDnsLogs(v *AwsGuardDutyDetectorDataSourcesDnsLogsDetails) *AwsGuardDutyDetectorDataSourcesDetails {
	s.DnsLogs = v
	return s
}

// SetFlowLogs sets the FlowLogs field's value.
func (s *AwsGuardDutyDetectorDataSourcesDetails) SetFlowLogs(v *AwsGuardDutyDetectorDataSourcesFlowLogsDetails) *AwsGuardDutyDetectorDataSourcesDetails {
	s.FlowLogs = v
	return s
}

// SetKubernetes sets the Kubernetes field's value.
func (s *AwsGuardDutyDetectorDataSourcesDetails) SetKubernetes(v *AwsGuardDutyDetectorDataSourcesKubernetesDetails) *AwsGuardDutyDetectorDataSourcesDetails {
	s.Kubernetes = v
	return s
}

// SetMalwareProtection sets the MalwareProtection field's value.
func (s *AwsGuardDutyDetectorDataSourcesDetails) SetMalwareProtection(v *AwsGuardDutyDetectorDataSourcesMalwareProtectionDetails) *AwsGuardDutyDetectorDataSourcesDetails {
	s.MalwareProtection = v
	return s
}

// SetS3Logs sets the S3Logs field's value.
func (s *AwsGuardDutyDetectorDataSourcesDetails) SetS3Logs(v *AwsGuardDutyDetectorDataSourcesS3LogsDetails) *AwsGuardDutyDetectorDataSourcesDetails {
	s.S3Logs = v
	return s
}

// An object that contains information on the status of DNS logs as a data source
// for the detector.
type AwsGuardDutyDetectorDataSourcesDnsLogsDetails struct {
	_ struct{} `type:"structure"`

	// Describes whether DNS logs is enabled as a data source for the detector.
	Status *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsGuardDutyDetectorDataSourcesDnsLogsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsGuardDutyDetectorDataSourcesDnsLogsDetails) GoString() string {
	return s.String()
}

// SetStatus sets the Status field's value.
func (s *AwsGuardDutyDetectorDataSourcesDnsLogsDetails) SetStatus(v string) *AwsGuardDutyDetectorDataSourcesDnsLogsDetails {
	s.Status = &v
	return s
}

// An object that contains information on the status of VPC Flow Logs as a data
// source for the detector.
type AwsGuardDutyDetectorDataSourcesFlowLogsDetails struct {
	_ struct{} `type:"structure"`

	// Describes whether VPC Flow Logs are activated as a data source for the detector.
	Status *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsGuardDutyDetectorDataSourcesFlowLogsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsGuardDutyDetectorDataSourcesFlowLogsDetails) GoString() string {
	return s.String()
}

// SetStatus sets the Status field's value.
func (s *AwsGuardDutyDetectorDataSourcesFlowLogsDetails) SetStatus(v string) *AwsGuardDutyDetectorDataSourcesFlowLogsDetails {
	s.Status = &v
	return s
}

// An object that contains information on the status of Kubernetes audit logs
// as a data source for the detector.
type AwsGuardDutyDetectorDataSourcesKubernetesAuditLogsDetails struct {
	_ struct{} `type:"structure"`

	// Describes whether Kubernetes audit logs are activated as a data source for
	// the detector.
	Status *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsGuardDutyDetectorDataSourcesKubernetesAuditLogsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsGuardDutyDetectorDataSourcesKubernetesAuditLogsDetails) GoString() string {
	return s.String()
}

// SetStatus sets the Status field's value.
func (s *AwsGuardDutyDetectorDataSourcesKubernetesAuditLogsDetails) SetStatus(v string) *AwsGuardDutyDetectorDataSourcesKubernetesAuditLogsDetails {
	s.Status = &v
	return s
}

// An object that contains information on the status of Kubernetes data sources
// for the detector.
type AwsGuardDutyDetectorDataSourcesKubernetesDetails struct {
	_ struct{} `type:"structure"`

	// Describes whether Kubernetes audit logs are activated as a data source for
	// the detector.
	AuditLogs *AwsGuardDutyDetectorDataSourcesKubernetesAuditLogsDetails `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 AwsGuardDutyDetectorDataSourcesKubernetesDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsGuardDutyDetectorDataSourcesKubernetesDetails) GoString() string {
	return s.String()
}

// SetAuditLogs sets the AuditLogs field's value.
func (s *AwsGuardDutyDetectorDataSourcesKubernetesDetails) SetAuditLogs(v *AwsGuardDutyDetectorDataSourcesKubernetesAuditLogsDetails) *AwsGuardDutyDetectorDataSourcesKubernetesDetails {
	s.AuditLogs = v
	return s
}

// An object that contains information on the status of Malware Protection as
// a data source for the detector.
type AwsGuardDutyDetectorDataSourcesMalwareProtectionDetails struct {
	_ struct{} `type:"structure"`

	// Describes the configuration of Malware Protection for EC2 instances with
	// findings.
	ScanEc2InstanceWithFindings *AwsGuardDutyDetectorDataSourcesMalwareProtectionScanEc2InstanceWithFindingsDetails `type:"structure"`

	// The GuardDuty Malware Protection service role.
	ServiceRole *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsGuardDutyDetectorDataSourcesMalwareProtectionDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsGuardDutyDetectorDataSourcesMalwareProtectionDetails) GoString() string {
	return s.String()
}

// SetScanEc2InstanceWithFindings sets the ScanEc2InstanceWithFindings field's value.
func (s *AwsGuardDutyDetectorDataSourcesMalwareProtectionDetails) SetScanEc2InstanceWithFindings(v *AwsGuardDutyDetectorDataSourcesMalwareProtectionScanEc2InstanceWithFindingsDetails) *AwsGuardDutyDetectorDataSourcesMalwareProtectionDetails {
	s.ScanEc2InstanceWithFindings = v
	return s
}

// SetServiceRole sets the ServiceRole field's value.
func (s *AwsGuardDutyDetectorDataSourcesMalwareProtectionDetails) SetServiceRole(v string) *AwsGuardDutyDetectorDataSourcesMalwareProtectionDetails {
	s.ServiceRole = &v
	return s
}

// Describes the configuration of Malware Protection for EC2 instances with
// findings.
type AwsGuardDutyDetectorDataSourcesMalwareProtectionScanEc2InstanceWithFindingsDetails struct {
	_ struct{} `type:"structure"`

	// Describes the configuration of scanning EBS volumes (Malware Protection)
	// as a data source.
	EbsVolumes *AwsGuardDutyDetectorDataSourcesMalwareProtectionScanEc2InstanceWithFindingsEbsVolumesDetails `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 AwsGuardDutyDetectorDataSourcesMalwareProtectionScanEc2InstanceWithFindingsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsGuardDutyDetectorDataSourcesMalwareProtectionScanEc2InstanceWithFindingsDetails) GoString() string {
	return s.String()
}

// SetEbsVolumes sets the EbsVolumes field's value.
func (s *AwsGuardDutyDetectorDataSourcesMalwareProtectionScanEc2InstanceWithFindingsDetails) SetEbsVolumes(v *AwsGuardDutyDetectorDataSourcesMalwareProtectionScanEc2InstanceWithFindingsEbsVolumesDetails) *AwsGuardDutyDetectorDataSourcesMalwareProtectionScanEc2InstanceWithFindingsDetails {
	s.EbsVolumes = v
	return s
}

// Describes the configuration of scanning EBS volumes (Malware Protection)
// as a data source.
type AwsGuardDutyDetectorDataSourcesMalwareProtectionScanEc2InstanceWithFindingsEbsVolumesDetails struct {
	_ struct{} `type:"structure"`

	// Specifies the reason why scanning EBS volumes (Malware Protection) isn’t
	// activated as a data source.
	Reason *string `type:"string"`

	// Describes whether scanning EBS volumes is activated as a data source for
	// the detector.
	Status *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsGuardDutyDetectorDataSourcesMalwareProtectionScanEc2InstanceWithFindingsEbsVolumesDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsGuardDutyDetectorDataSourcesMalwareProtectionScanEc2InstanceWithFindingsEbsVolumesDetails) GoString() string {
	return s.String()
}

// SetReason sets the Reason field's value.
func (s *AwsGuardDutyDetectorDataSourcesMalwareProtectionScanEc2InstanceWithFindingsEbsVolumesDetails) SetReason(v string) *AwsGuardDutyDetectorDataSourcesMalwareProtectionScanEc2InstanceWithFindingsEbsVolumesDetails {
	s.Reason = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsGuardDutyDetectorDataSourcesMalwareProtectionScanEc2InstanceWithFindingsEbsVolumesDetails) SetStatus(v string) *AwsGuardDutyDetectorDataSourcesMalwareProtectionScanEc2InstanceWithFindingsEbsVolumesDetails {
	s.Status = &v
	return s
}

// An object that contains information on the status of S3 data event logs as
// a data source for the detector.
type AwsGuardDutyDetectorDataSourcesS3LogsDetails struct {
	_ struct{} `type:"structure"`

	// A value that describes whether S3 data event logs are automatically enabled
	// for new members of an organization.
	Status *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsGuardDutyDetectorDataSourcesS3LogsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsGuardDutyDetectorDataSourcesS3LogsDetails) GoString() string {
	return s.String()
}

// SetStatus sets the Status field's value.
func (s *AwsGuardDutyDetectorDataSourcesS3LogsDetails) SetStatus(v string) *AwsGuardDutyDetectorDataSourcesS3LogsDetails {
	s.Status = &v
	return s
}

// Provides details about an Amazon GuardDuty detector. A detector is an object
// that represents the GuardDuty service. A detector is required for GuardDuty
// to become operational.
type AwsGuardDutyDetectorDetails struct {
	_ struct{} `type:"structure"`

	// Describes which data sources are activated for the detector.
	DataSources *AwsGuardDutyDetectorDataSourcesDetails `type:"structure"`

	// Describes which features are activated for the detector.
	Features []*AwsGuardDutyDetectorFeaturesDetails `type:"list"`

	// The publishing frequency of the finding.
	FindingPublishingFrequency *string `type:"string"`

	// The GuardDuty service role.
	ServiceRole *string `type:"string"`

	// The activation status of the detector.
	Status *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsGuardDutyDetectorDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsGuardDutyDetectorDetails) GoString() string {
	return s.String()
}

// SetDataSources sets the DataSources field's value.
func (s *AwsGuardDutyDetectorDetails) SetDataSources(v *AwsGuardDutyDetectorDataSourcesDetails) *AwsGuardDutyDetectorDetails {
	s.DataSources = v
	return s
}

// SetFeatures sets the Features field's value.
func (s *AwsGuardDutyDetectorDetails) SetFeatures(v []*AwsGuardDutyDetectorFeaturesDetails) *AwsGuardDutyDetectorDetails {
	s.Features = v
	return s
}

// SetFindingPublishingFrequency sets the FindingPublishingFrequency field's value.
func (s *AwsGuardDutyDetectorDetails) SetFindingPublishingFrequency(v string) *AwsGuardDutyDetectorDetails {
	s.FindingPublishingFrequency = &v
	return s
}

// SetServiceRole sets the ServiceRole field's value.
func (s *AwsGuardDutyDetectorDetails) SetServiceRole(v string) *AwsGuardDutyDetectorDetails {
	s.ServiceRole = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsGuardDutyDetectorDetails) SetStatus(v string) *AwsGuardDutyDetectorDetails {
	s.Status = &v
	return s
}

// Describes which features are activated for the detector.
type AwsGuardDutyDetectorFeaturesDetails struct {
	_ struct{} `type:"structure"`

	// Indicates the name of the feature that is activated for the detector.
	Name *string `type:"string"`

	// Indicates the status of the feature that is activated for the detector.
	Status *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsGuardDutyDetectorFeaturesDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsGuardDutyDetectorFeaturesDetails) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *AwsGuardDutyDetectorFeaturesDetails) SetName(v string) *AwsGuardDutyDetectorFeaturesDetails {
	s.Name = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsGuardDutyDetectorFeaturesDetails) SetStatus(v string) *AwsGuardDutyDetectorFeaturesDetails {
	s.Status = &v
	return s
}

// IAM access key details related to a finding.
type AwsIamAccessKeyDetails struct {
	_ struct{} `type:"structure"`

	// The identifier of the access key.
	AccessKeyId *string `type:"string"`

	// The Amazon Web Services account ID of the account for the key.
	AccountId *string `type:"string"`

	// Indicates when the IAM access key was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreatedAt *string `type:"string"`

	// The ID of the principal associated with an access key.
	PrincipalId *string `type:"string"`

	// The name of the principal.
	PrincipalName *string `type:"string"`

	// The type of principal associated with an access key.
	PrincipalType *string `type:"string"`

	// Information about the session that the key was used for.
	SessionContext *AwsIamAccessKeySessionContext `type:"structure"`

	// The status of the IAM access key related to a finding.
	Status *string `type:"string" enum:"AwsIamAccessKeyStatus"`

	// The user associated with the IAM access key related to a finding.
	//
	// The UserName parameter has been replaced with the PrincipalName parameter
	// because access keys can also be assigned to principals that are not IAM users.
	//
	// Deprecated: This filter is deprecated. Instead, use PrincipalName.
	UserName *string `deprecated:"true" 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 AwsIamAccessKeyDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamAccessKeyDetails) GoString() string {
	return s.String()
}

// SetAccessKeyId sets the AccessKeyId field's value.
func (s *AwsIamAccessKeyDetails) SetAccessKeyId(v string) *AwsIamAccessKeyDetails {
	s.AccessKeyId = &v
	return s
}

// SetAccountId sets the AccountId field's value.
func (s *AwsIamAccessKeyDetails) SetAccountId(v string) *AwsIamAccessKeyDetails {
	s.AccountId = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *AwsIamAccessKeyDetails) SetCreatedAt(v string) *AwsIamAccessKeyDetails {
	s.CreatedAt = &v
	return s
}

// SetPrincipalId sets the PrincipalId field's value.
func (s *AwsIamAccessKeyDetails) SetPrincipalId(v string) *AwsIamAccessKeyDetails {
	s.PrincipalId = &v
	return s
}

// SetPrincipalName sets the PrincipalName field's value.
func (s *AwsIamAccessKeyDetails) SetPrincipalName(v string) *AwsIamAccessKeyDetails {
	s.PrincipalName = &v
	return s
}

// SetPrincipalType sets the PrincipalType field's value.
func (s *AwsIamAccessKeyDetails) SetPrincipalType(v string) *AwsIamAccessKeyDetails {
	s.PrincipalType = &v
	return s
}

// SetSessionContext sets the SessionContext field's value.
func (s *AwsIamAccessKeyDetails) SetSessionContext(v *AwsIamAccessKeySessionContext) *AwsIamAccessKeyDetails {
	s.SessionContext = v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsIamAccessKeyDetails) SetStatus(v string) *AwsIamAccessKeyDetails {
	s.Status = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *AwsIamAccessKeyDetails) SetUserName(v string) *AwsIamAccessKeyDetails {
	s.UserName = &v
	return s
}

// Provides information about the session that the key was used for.
type AwsIamAccessKeySessionContext struct {
	_ struct{} `type:"structure"`

	// Attributes of the session that the key was used for.
	Attributes *AwsIamAccessKeySessionContextAttributes `type:"structure"`

	// Information about the entity that created the session.
	SessionIssuer *AwsIamAccessKeySessionContextSessionIssuer `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 AwsIamAccessKeySessionContext) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamAccessKeySessionContext) GoString() string {
	return s.String()
}

// SetAttributes sets the Attributes field's value.
func (s *AwsIamAccessKeySessionContext) SetAttributes(v *AwsIamAccessKeySessionContextAttributes) *AwsIamAccessKeySessionContext {
	s.Attributes = v
	return s
}

// SetSessionIssuer sets the SessionIssuer field's value.
func (s *AwsIamAccessKeySessionContext) SetSessionIssuer(v *AwsIamAccessKeySessionContextSessionIssuer) *AwsIamAccessKeySessionContext {
	s.SessionIssuer = v
	return s
}

// Attributes of the session that the key was used for.
type AwsIamAccessKeySessionContextAttributes struct {
	_ struct{} `type:"structure"`

	// Indicates when the session was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreationDate *string `type:"string"`

	// Indicates whether the session used multi-factor authentication (MFA).
	MfaAuthenticated *bool `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 AwsIamAccessKeySessionContextAttributes) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamAccessKeySessionContextAttributes) GoString() string {
	return s.String()
}

// SetCreationDate sets the CreationDate field's value.
func (s *AwsIamAccessKeySessionContextAttributes) SetCreationDate(v string) *AwsIamAccessKeySessionContextAttributes {
	s.CreationDate = &v
	return s
}

// SetMfaAuthenticated sets the MfaAuthenticated field's value.
func (s *AwsIamAccessKeySessionContextAttributes) SetMfaAuthenticated(v bool) *AwsIamAccessKeySessionContextAttributes {
	s.MfaAuthenticated = &v
	return s
}

// Information about the entity that created the session.
type AwsIamAccessKeySessionContextSessionIssuer struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Web Services account that created the session.
	AccountId *string `type:"string"`

	// The ARN of the session.
	Arn *string `type:"string"`

	// The principal ID of the principal (user, role, or group) that created the
	// session.
	PrincipalId *string `type:"string"`

	// The type of principal (user, role, or group) that created the session.
	Type *string `type:"string"`

	// The name of the principal that created the session.
	UserName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamAccessKeySessionContextSessionIssuer) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamAccessKeySessionContextSessionIssuer) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *AwsIamAccessKeySessionContextSessionIssuer) SetAccountId(v string) *AwsIamAccessKeySessionContextSessionIssuer {
	s.AccountId = &v
	return s
}

// SetArn sets the Arn field's value.
func (s *AwsIamAccessKeySessionContextSessionIssuer) SetArn(v string) *AwsIamAccessKeySessionContextSessionIssuer {
	s.Arn = &v
	return s
}

// SetPrincipalId sets the PrincipalId field's value.
func (s *AwsIamAccessKeySessionContextSessionIssuer) SetPrincipalId(v string) *AwsIamAccessKeySessionContextSessionIssuer {
	s.PrincipalId = &v
	return s
}

// SetType sets the Type field's value.
func (s *AwsIamAccessKeySessionContextSessionIssuer) SetType(v string) *AwsIamAccessKeySessionContextSessionIssuer {
	s.Type = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *AwsIamAccessKeySessionContextSessionIssuer) SetUserName(v string) *AwsIamAccessKeySessionContextSessionIssuer {
	s.UserName = &v
	return s
}

// A managed policy that is attached to an IAM principal.
type AwsIamAttachedManagedPolicy struct {
	_ struct{} `type:"structure"`

	// The ARN of the policy.
	PolicyArn *string `type:"string"`

	// The name of the policy.
	PolicyName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamAttachedManagedPolicy) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamAttachedManagedPolicy) GoString() string {
	return s.String()
}

// SetPolicyArn sets the PolicyArn field's value.
func (s *AwsIamAttachedManagedPolicy) SetPolicyArn(v string) *AwsIamAttachedManagedPolicy {
	s.PolicyArn = &v
	return s
}

// SetPolicyName sets the PolicyName field's value.
func (s *AwsIamAttachedManagedPolicy) SetPolicyName(v string) *AwsIamAttachedManagedPolicy {
	s.PolicyName = &v
	return s
}

// Contains details about an IAM group.
type AwsIamGroupDetails struct {
	_ struct{} `type:"structure"`

	// A list of the managed policies that are attached to the IAM group.
	AttachedManagedPolicies []*AwsIamAttachedManagedPolicy `type:"list"`

	// Indicates when the IAM group was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreateDate *string `type:"string"`

	// The identifier of the IAM group.
	GroupId *string `type:"string"`

	// The name of the IAM group.
	GroupName *string `type:"string"`

	// The list of inline policies that are embedded in the group.
	GroupPolicyList []*AwsIamGroupPolicy `type:"list"`

	// The path to the group.
	Path *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamGroupDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamGroupDetails) GoString() string {
	return s.String()
}

// SetAttachedManagedPolicies sets the AttachedManagedPolicies field's value.
func (s *AwsIamGroupDetails) SetAttachedManagedPolicies(v []*AwsIamAttachedManagedPolicy) *AwsIamGroupDetails {
	s.AttachedManagedPolicies = v
	return s
}

// SetCreateDate sets the CreateDate field's value.
func (s *AwsIamGroupDetails) SetCreateDate(v string) *AwsIamGroupDetails {
	s.CreateDate = &v
	return s
}

// SetGroupId sets the GroupId field's value.
func (s *AwsIamGroupDetails) SetGroupId(v string) *AwsIamGroupDetails {
	s.GroupId = &v
	return s
}

// SetGroupName sets the GroupName field's value.
func (s *AwsIamGroupDetails) SetGroupName(v string) *AwsIamGroupDetails {
	s.GroupName = &v
	return s
}

// SetGroupPolicyList sets the GroupPolicyList field's value.
func (s *AwsIamGroupDetails) SetGroupPolicyList(v []*AwsIamGroupPolicy) *AwsIamGroupDetails {
	s.GroupPolicyList = v
	return s
}

// SetPath sets the Path field's value.
func (s *AwsIamGroupDetails) SetPath(v string) *AwsIamGroupDetails {
	s.Path = &v
	return s
}

// A managed policy that is attached to the IAM group.
type AwsIamGroupPolicy struct {
	_ struct{} `type:"structure"`

	// The name of the policy.
	PolicyName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamGroupPolicy) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamGroupPolicy) GoString() string {
	return s.String()
}

// SetPolicyName sets the PolicyName field's value.
func (s *AwsIamGroupPolicy) SetPolicyName(v string) *AwsIamGroupPolicy {
	s.PolicyName = &v
	return s
}

// Information about an instance profile.
type AwsIamInstanceProfile struct {
	_ struct{} `type:"structure"`

	// The ARN of the instance profile.
	Arn *string `type:"string"`

	// Indicates when the instance profile was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreateDate *string `type:"string"`

	// The identifier of the instance profile.
	InstanceProfileId *string `type:"string"`

	// The name of the instance profile.
	InstanceProfileName *string `type:"string"`

	// The path to the instance profile.
	Path *string `type:"string"`

	// The roles associated with the instance profile.
	Roles []*AwsIamInstanceProfileRole `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 AwsIamInstanceProfile) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamInstanceProfile) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AwsIamInstanceProfile) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AwsIamInstanceProfile"}
	if s.Roles != nil {
		for i, v := range s.Roles {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Roles", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetArn sets the Arn field's value.
func (s *AwsIamInstanceProfile) SetArn(v string) *AwsIamInstanceProfile {
	s.Arn = &v
	return s
}

// SetCreateDate sets the CreateDate field's value.
func (s *AwsIamInstanceProfile) SetCreateDate(v string) *AwsIamInstanceProfile {
	s.CreateDate = &v
	return s
}

// SetInstanceProfileId sets the InstanceProfileId field's value.
func (s *AwsIamInstanceProfile) SetInstanceProfileId(v string) *AwsIamInstanceProfile {
	s.InstanceProfileId = &v
	return s
}

// SetInstanceProfileName sets the InstanceProfileName field's value.
func (s *AwsIamInstanceProfile) SetInstanceProfileName(v string) *AwsIamInstanceProfile {
	s.InstanceProfileName = &v
	return s
}

// SetPath sets the Path field's value.
func (s *AwsIamInstanceProfile) SetPath(v string) *AwsIamInstanceProfile {
	s.Path = &v
	return s
}

// SetRoles sets the Roles field's value.
func (s *AwsIamInstanceProfile) SetRoles(v []*AwsIamInstanceProfileRole) *AwsIamInstanceProfile {
	s.Roles = v
	return s
}

// Information about a role associated with an instance profile.
type AwsIamInstanceProfileRole struct {
	_ struct{} `type:"structure"`

	// The ARN of the role.
	Arn *string `type:"string"`

	// The policy that grants an entity permission to assume the role.
	AssumeRolePolicyDocument *string `min:"1" type:"string"`

	// Indicates when the role was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreateDate *string `type:"string"`

	// The path to the role.
	Path *string `type:"string"`

	// The identifier of the role.
	RoleId *string `type:"string"`

	// The name of the role.
	RoleName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamInstanceProfileRole) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamInstanceProfileRole) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AwsIamInstanceProfileRole) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AwsIamInstanceProfileRole"}
	if s.AssumeRolePolicyDocument != nil && len(*s.AssumeRolePolicyDocument) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AssumeRolePolicyDocument", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetArn sets the Arn field's value.
func (s *AwsIamInstanceProfileRole) SetArn(v string) *AwsIamInstanceProfileRole {
	s.Arn = &v
	return s
}

// SetAssumeRolePolicyDocument sets the AssumeRolePolicyDocument field's value.
func (s *AwsIamInstanceProfileRole) SetAssumeRolePolicyDocument(v string) *AwsIamInstanceProfileRole {
	s.AssumeRolePolicyDocument = &v
	return s
}

// SetCreateDate sets the CreateDate field's value.
func (s *AwsIamInstanceProfileRole) SetCreateDate(v string) *AwsIamInstanceProfileRole {
	s.CreateDate = &v
	return s
}

// SetPath sets the Path field's value.
func (s *AwsIamInstanceProfileRole) SetPath(v string) *AwsIamInstanceProfileRole {
	s.Path = &v
	return s
}

// SetRoleId sets the RoleId field's value.
func (s *AwsIamInstanceProfileRole) SetRoleId(v string) *AwsIamInstanceProfileRole {
	s.RoleId = &v
	return s
}

// SetRoleName sets the RoleName field's value.
func (s *AwsIamInstanceProfileRole) SetRoleName(v string) *AwsIamInstanceProfileRole {
	s.RoleName = &v
	return s
}

// Information about the policy used to set the permissions boundary for an
// IAM principal.
type AwsIamPermissionsBoundary struct {
	_ struct{} `type:"structure"`

	// The ARN of the policy used to set the permissions boundary.
	PermissionsBoundaryArn *string `type:"string"`

	// The usage type for the permissions boundary.
	PermissionsBoundaryType *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamPermissionsBoundary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamPermissionsBoundary) GoString() string {
	return s.String()
}

// SetPermissionsBoundaryArn sets the PermissionsBoundaryArn field's value.
func (s *AwsIamPermissionsBoundary) SetPermissionsBoundaryArn(v string) *AwsIamPermissionsBoundary {
	s.PermissionsBoundaryArn = &v
	return s
}

// SetPermissionsBoundaryType sets the PermissionsBoundaryType field's value.
func (s *AwsIamPermissionsBoundary) SetPermissionsBoundaryType(v string) *AwsIamPermissionsBoundary {
	s.PermissionsBoundaryType = &v
	return s
}

// Represents an IAM permissions policy.
type AwsIamPolicyDetails struct {
	_ struct{} `type:"structure"`

	// The number of users, groups, and roles that the policy is attached to.
	AttachmentCount *int64 `type:"integer"`

	// When the policy was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreateDate *string `type:"string"`

	// The identifier of the default version of the policy.
	DefaultVersionId *string `type:"string"`

	// A description of the policy.
	Description *string `type:"string"`

	// Whether the policy can be attached to a user, group, or role.
	IsAttachable *bool `type:"boolean"`

	// The path to the policy.
	Path *string `type:"string"`

	// The number of users and roles that use the policy to set the permissions
	// boundary.
	PermissionsBoundaryUsageCount *int64 `type:"integer"`

	// The unique identifier of the policy.
	PolicyId *string `type:"string"`

	// The name of the policy.
	PolicyName *string `type:"string"`

	// List of versions of the policy.
	PolicyVersionList []*AwsIamPolicyVersion `type:"list"`

	// When the policy was most recently updated.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	UpdateDate *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamPolicyDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamPolicyDetails) GoString() string {
	return s.String()
}

// SetAttachmentCount sets the AttachmentCount field's value.
func (s *AwsIamPolicyDetails) SetAttachmentCount(v int64) *AwsIamPolicyDetails {
	s.AttachmentCount = &v
	return s
}

// SetCreateDate sets the CreateDate field's value.
func (s *AwsIamPolicyDetails) SetCreateDate(v string) *AwsIamPolicyDetails {
	s.CreateDate = &v
	return s
}

// SetDefaultVersionId sets the DefaultVersionId field's value.
func (s *AwsIamPolicyDetails) SetDefaultVersionId(v string) *AwsIamPolicyDetails {
	s.DefaultVersionId = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *AwsIamPolicyDetails) SetDescription(v string) *AwsIamPolicyDetails {
	s.Description = &v
	return s
}

// SetIsAttachable sets the IsAttachable field's value.
func (s *AwsIamPolicyDetails) SetIsAttachable(v bool) *AwsIamPolicyDetails {
	s.IsAttachable = &v
	return s
}

// SetPath sets the Path field's value.
func (s *AwsIamPolicyDetails) SetPath(v string) *AwsIamPolicyDetails {
	s.Path = &v
	return s
}

// SetPermissionsBoundaryUsageCount sets the PermissionsBoundaryUsageCount field's value.
func (s *AwsIamPolicyDetails) SetPermissionsBoundaryUsageCount(v int64) *AwsIamPolicyDetails {
	s.PermissionsBoundaryUsageCount = &v
	return s
}

// SetPolicyId sets the PolicyId field's value.
func (s *AwsIamPolicyDetails) SetPolicyId(v string) *AwsIamPolicyDetails {
	s.PolicyId = &v
	return s
}

// SetPolicyName sets the PolicyName field's value.
func (s *AwsIamPolicyDetails) SetPolicyName(v string) *AwsIamPolicyDetails {
	s.PolicyName = &v
	return s
}

// SetPolicyVersionList sets the PolicyVersionList field's value.
func (s *AwsIamPolicyDetails) SetPolicyVersionList(v []*AwsIamPolicyVersion) *AwsIamPolicyDetails {
	s.PolicyVersionList = v
	return s
}

// SetUpdateDate sets the UpdateDate field's value.
func (s *AwsIamPolicyDetails) SetUpdateDate(v string) *AwsIamPolicyDetails {
	s.UpdateDate = &v
	return s
}

// A version of an IAM policy.
type AwsIamPolicyVersion struct {
	_ struct{} `type:"structure"`

	// Indicates when the version was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreateDate *string `type:"string"`

	// Whether the version is the default version.
	IsDefaultVersion *bool `type:"boolean"`

	// The identifier of the policy version.
	VersionId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamPolicyVersion) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamPolicyVersion) GoString() string {
	return s.String()
}

// SetCreateDate sets the CreateDate field's value.
func (s *AwsIamPolicyVersion) SetCreateDate(v string) *AwsIamPolicyVersion {
	s.CreateDate = &v
	return s
}

// SetIsDefaultVersion sets the IsDefaultVersion field's value.
func (s *AwsIamPolicyVersion) SetIsDefaultVersion(v bool) *AwsIamPolicyVersion {
	s.IsDefaultVersion = &v
	return s
}

// SetVersionId sets the VersionId field's value.
func (s *AwsIamPolicyVersion) SetVersionId(v string) *AwsIamPolicyVersion {
	s.VersionId = &v
	return s
}

// Contains information about an IAM role, including all of the role's policies.
type AwsIamRoleDetails struct {
	_ struct{} `type:"structure"`

	// The trust policy that grants permission to assume the role.
	AssumeRolePolicyDocument *string `min:"1" type:"string"`

	// The list of the managed policies that are attached to the role.
	AttachedManagedPolicies []*AwsIamAttachedManagedPolicy `type:"list"`

	// Indicates when the role was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreateDate *string `type:"string"`

	// The list of instance profiles that contain this role.
	InstanceProfileList []*AwsIamInstanceProfile `type:"list"`

	// The maximum session duration (in seconds) that you want to set for the specified
	// role.
	MaxSessionDuration *int64 `type:"integer"`

	// The path to the role.
	Path *string `type:"string"`

	// Information about the policy used to set the permissions boundary for an
	// IAM principal.
	PermissionsBoundary *AwsIamPermissionsBoundary `type:"structure"`

	// The stable and unique string identifying the role.
	RoleId *string `type:"string"`

	// The friendly name that identifies the role.
	RoleName *string `type:"string"`

	// The list of inline policies that are embedded in the role.
	RolePolicyList []*AwsIamRolePolicy `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 AwsIamRoleDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamRoleDetails) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AwsIamRoleDetails) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AwsIamRoleDetails"}
	if s.AssumeRolePolicyDocument != nil && len(*s.AssumeRolePolicyDocument) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AssumeRolePolicyDocument", 1))
	}
	if s.InstanceProfileList != nil {
		for i, v := range s.InstanceProfileList {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InstanceProfileList", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssumeRolePolicyDocument sets the AssumeRolePolicyDocument field's value.
func (s *AwsIamRoleDetails) SetAssumeRolePolicyDocument(v string) *AwsIamRoleDetails {
	s.AssumeRolePolicyDocument = &v
	return s
}

// SetAttachedManagedPolicies sets the AttachedManagedPolicies field's value.
func (s *AwsIamRoleDetails) SetAttachedManagedPolicies(v []*AwsIamAttachedManagedPolicy) *AwsIamRoleDetails {
	s.AttachedManagedPolicies = v
	return s
}

// SetCreateDate sets the CreateDate field's value.
func (s *AwsIamRoleDetails) SetCreateDate(v string) *AwsIamRoleDetails {
	s.CreateDate = &v
	return s
}

// SetInstanceProfileList sets the InstanceProfileList field's value.
func (s *AwsIamRoleDetails) SetInstanceProfileList(v []*AwsIamInstanceProfile) *AwsIamRoleDetails {
	s.InstanceProfileList = v
	return s
}

// SetMaxSessionDuration sets the MaxSessionDuration field's value.
func (s *AwsIamRoleDetails) SetMaxSessionDuration(v int64) *AwsIamRoleDetails {
	s.MaxSessionDuration = &v
	return s
}

// SetPath sets the Path field's value.
func (s *AwsIamRoleDetails) SetPath(v string) *AwsIamRoleDetails {
	s.Path = &v
	return s
}

// SetPermissionsBoundary sets the PermissionsBoundary field's value.
func (s *AwsIamRoleDetails) SetPermissionsBoundary(v *AwsIamPermissionsBoundary) *AwsIamRoleDetails {
	s.PermissionsBoundary = v
	return s
}

// SetRoleId sets the RoleId field's value.
func (s *AwsIamRoleDetails) SetRoleId(v string) *AwsIamRoleDetails {
	s.RoleId = &v
	return s
}

// SetRoleName sets the RoleName field's value.
func (s *AwsIamRoleDetails) SetRoleName(v string) *AwsIamRoleDetails {
	s.RoleName = &v
	return s
}

// SetRolePolicyList sets the RolePolicyList field's value.
func (s *AwsIamRoleDetails) SetRolePolicyList(v []*AwsIamRolePolicy) *AwsIamRoleDetails {
	s.RolePolicyList = v
	return s
}

// An inline policy that is embedded in the role.
type AwsIamRolePolicy struct {
	_ struct{} `type:"structure"`

	// The name of the policy.
	PolicyName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamRolePolicy) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamRolePolicy) GoString() string {
	return s.String()
}

// SetPolicyName sets the PolicyName field's value.
func (s *AwsIamRolePolicy) SetPolicyName(v string) *AwsIamRolePolicy {
	s.PolicyName = &v
	return s
}

// Information about an IAM user.
type AwsIamUserDetails struct {
	_ struct{} `type:"structure"`

	// A list of the managed policies that are attached to the user.
	AttachedManagedPolicies []*AwsIamAttachedManagedPolicy `type:"list"`

	// Indicates when the user was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreateDate *string `type:"string"`

	// A list of IAM groups that the user belongs to.
	GroupList []*string `type:"list"`

	// The path to the user.
	Path *string `type:"string"`

	// The permissions boundary for the user.
	PermissionsBoundary *AwsIamPermissionsBoundary `type:"structure"`

	// The unique identifier for the user.
	UserId *string `type:"string"`

	// The name of the user.
	UserName *string `type:"string"`

	// The list of inline policies that are embedded in the user.
	UserPolicyList []*AwsIamUserPolicy `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 AwsIamUserDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamUserDetails) GoString() string {
	return s.String()
}

// SetAttachedManagedPolicies sets the AttachedManagedPolicies field's value.
func (s *AwsIamUserDetails) SetAttachedManagedPolicies(v []*AwsIamAttachedManagedPolicy) *AwsIamUserDetails {
	s.AttachedManagedPolicies = v
	return s
}

// SetCreateDate sets the CreateDate field's value.
func (s *AwsIamUserDetails) SetCreateDate(v string) *AwsIamUserDetails {
	s.CreateDate = &v
	return s
}

// SetGroupList sets the GroupList field's value.
func (s *AwsIamUserDetails) SetGroupList(v []*string) *AwsIamUserDetails {
	s.GroupList = v
	return s
}

// SetPath sets the Path field's value.
func (s *AwsIamUserDetails) SetPath(v string) *AwsIamUserDetails {
	s.Path = &v
	return s
}

// SetPermissionsBoundary sets the PermissionsBoundary field's value.
func (s *AwsIamUserDetails) SetPermissionsBoundary(v *AwsIamPermissionsBoundary) *AwsIamUserDetails {
	s.PermissionsBoundary = v
	return s
}

// SetUserId sets the UserId field's value.
func (s *AwsIamUserDetails) SetUserId(v string) *AwsIamUserDetails {
	s.UserId = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *AwsIamUserDetails) SetUserName(v string) *AwsIamUserDetails {
	s.UserName = &v
	return s
}

// SetUserPolicyList sets the UserPolicyList field's value.
func (s *AwsIamUserDetails) SetUserPolicyList(v []*AwsIamUserPolicy) *AwsIamUserDetails {
	s.UserPolicyList = v
	return s
}

// Information about an inline policy that is embedded in the user.
type AwsIamUserPolicy struct {
	_ struct{} `type:"structure"`

	// The name of the policy.
	PolicyName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamUserPolicy) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIamUserPolicy) GoString() string {
	return s.String()
}

// SetPolicyName sets the PolicyName field's value.
func (s *AwsIamUserPolicy) SetPolicyName(v string) *AwsIamUserPolicy {
	s.PolicyName = &v
	return s
}

// Provides information about an Amazon Kinesis data stream.
type AwsKinesisStreamDetails struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the Kinesis data stream.
	Arn *string `type:"string"`

	// The name of the Kinesis stream. If you don't specify a name, CloudFront generates
	// a unique physical ID and uses that ID for the stream name.
	Name *string `type:"string"`

	// The number of hours for the data records that are stored in shards to remain
	// accessible.
	RetentionPeriodHours *int64 `type:"integer"`

	// The number of shards that the stream uses.
	ShardCount *int64 `type:"integer"`

	// When specified, enables or updates server-side encryption using an KMS key
	// for a specified stream. Removing this property from your stack template and
	// updating your stack disables encryption.
	StreamEncryption *AwsKinesisStreamStreamEncryptionDetails `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 AwsKinesisStreamDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsKinesisStreamDetails) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *AwsKinesisStreamDetails) SetArn(v string) *AwsKinesisStreamDetails {
	s.Arn = &v
	return s
}

// SetName sets the Name field's value.
func (s *AwsKinesisStreamDetails) SetName(v string) *AwsKinesisStreamDetails {
	s.Name = &v
	return s
}

// SetRetentionPeriodHours sets the RetentionPeriodHours field's value.
func (s *AwsKinesisStreamDetails) SetRetentionPeriodHours(v int64) *AwsKinesisStreamDetails {
	s.RetentionPeriodHours = &v
	return s
}

// SetShardCount sets the ShardCount field's value.
func (s *AwsKinesisStreamDetails) SetShardCount(v int64) *AwsKinesisStreamDetails {
	s.ShardCount = &v
	return s
}

// SetStreamEncryption sets the StreamEncryption field's value.
func (s *AwsKinesisStreamDetails) SetStreamEncryption(v *AwsKinesisStreamStreamEncryptionDetails) *AwsKinesisStreamDetails {
	s.StreamEncryption = v
	return s
}

// Provides information about stream encryption.
type AwsKinesisStreamStreamEncryptionDetails struct {
	_ struct{} `type:"structure"`

	// The encryption type to use.
	EncryptionType *string `type:"string"`

	// The globally unique identifier for the customer-managed KMS key to use for
	// encryption.
	KeyId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsKinesisStreamStreamEncryptionDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsKinesisStreamStreamEncryptionDetails) GoString() string {
	return s.String()
}

// SetEncryptionType sets the EncryptionType field's value.
func (s *AwsKinesisStreamStreamEncryptionDetails) SetEncryptionType(v string) *AwsKinesisStreamStreamEncryptionDetails {
	s.EncryptionType = &v
	return s
}

// SetKeyId sets the KeyId field's value.
func (s *AwsKinesisStreamStreamEncryptionDetails) SetKeyId(v string) *AwsKinesisStreamStreamEncryptionDetails {
	s.KeyId = &v
	return s
}

// Contains metadata about an KMS key.
type AwsKmsKeyDetails struct {
	_ struct{} `type:"structure"`

	// The twelve-digit account ID of the Amazon Web Services account that owns
	// the KMS key.
	AWSAccountId *string `type:"string"`

	// Indicates when the KMS key was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreationDate *float64 `type:"double"`

	// A description of the KMS key.
	Description *string `type:"string"`

	// The globally unique identifier for the KMS key.
	KeyId *string `type:"string"`

	// The manager of the KMS key. KMS keys in your Amazon Web Services account
	// are either customer managed or Amazon Web Services managed.
	KeyManager *string `type:"string"`

	// Whether the key has key rotation enabled.
	KeyRotationStatus *bool `type:"boolean"`

	// The state of the KMS key. Valid values are as follows:
	//
	//    * Disabled
	//
	//    * Enabled
	//
	//    * PendingDeletion
	//
	//    * PendingImport
	//
	//    * Unavailable
	KeyState *string `type:"string"`

	// The source of the KMS key material.
	//
	// When this value is AWS_KMS, KMS created the key material.
	//
	// When this value is EXTERNAL, the key material was imported from your existing
	// key management infrastructure or the KMS key lacks key material.
	//
	// When this value is AWS_CLOUDHSM, the key material was created in the CloudHSM
	// cluster associated with a custom key store.
	Origin *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsKmsKeyDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsKmsKeyDetails) GoString() string {
	return s.String()
}

// SetAWSAccountId sets the AWSAccountId field's value.
func (s *AwsKmsKeyDetails) SetAWSAccountId(v string) *AwsKmsKeyDetails {
	s.AWSAccountId = &v
	return s
}

// SetCreationDate sets the CreationDate field's value.
func (s *AwsKmsKeyDetails) SetCreationDate(v float64) *AwsKmsKeyDetails {
	s.CreationDate = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *AwsKmsKeyDetails) SetDescription(v string) *AwsKmsKeyDetails {
	s.Description = &v
	return s
}

// SetKeyId sets the KeyId field's value.
func (s *AwsKmsKeyDetails) SetKeyId(v string) *AwsKmsKeyDetails {
	s.KeyId = &v
	return s
}

// SetKeyManager sets the KeyManager field's value.
func (s *AwsKmsKeyDetails) SetKeyManager(v string) *AwsKmsKeyDetails {
	s.KeyManager = &v
	return s
}

// SetKeyRotationStatus sets the KeyRotationStatus field's value.
func (s *AwsKmsKeyDetails) SetKeyRotationStatus(v bool) *AwsKmsKeyDetails {
	s.KeyRotationStatus = &v
	return s
}

// SetKeyState sets the KeyState field's value.
func (s *AwsKmsKeyDetails) SetKeyState(v string) *AwsKmsKeyDetails {
	s.KeyState = &v
	return s
}

// SetOrigin sets the Origin field's value.
func (s *AwsKmsKeyDetails) SetOrigin(v string) *AwsKmsKeyDetails {
	s.Origin = &v
	return s
}

// The code for the Lambda function. You can specify either an object in Amazon
// S3, or upload a deployment package directly.
type AwsLambdaFunctionCode struct {
	_ struct{} `type:"structure"`

	// An Amazon S3 bucket in the same Amazon Web Services Region as your function.
	// The bucket can be in a different Amazon Web Services account.
	S3Bucket *string `type:"string"`

	// The Amazon S3 key of the deployment package.
	S3Key *string `type:"string"`

	// For versioned objects, the version of the deployment package object to use.
	S3ObjectVersion *string `type:"string"`

	// The base64-encoded contents of the deployment package. Amazon Web Services
	// SDK and Amazon Web Services CLI clients handle the encoding for you.
	ZipFile *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsLambdaFunctionCode) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsLambdaFunctionCode) GoString() string {
	return s.String()
}

// SetS3Bucket sets the S3Bucket field's value.
func (s *AwsLambdaFunctionCode) SetS3Bucket(v string) *AwsLambdaFunctionCode {
	s.S3Bucket = &v
	return s
}

// SetS3Key sets the S3Key field's value.
func (s *AwsLambdaFunctionCode) SetS3Key(v string) *AwsLambdaFunctionCode {
	s.S3Key = &v
	return s
}

// SetS3ObjectVersion sets the S3ObjectVersion field's value.
func (s *AwsLambdaFunctionCode) SetS3ObjectVersion(v string) *AwsLambdaFunctionCode {
	s.S3ObjectVersion = &v
	return s
}

// SetZipFile sets the ZipFile field's value.
func (s *AwsLambdaFunctionCode) SetZipFile(v string) *AwsLambdaFunctionCode {
	s.ZipFile = &v
	return s
}

// The dead-letter queue for failed asynchronous invocations.
type AwsLambdaFunctionDeadLetterConfig struct {
	_ struct{} `type:"structure"`

	// The ARN of an SQS queue or SNS topic.
	TargetArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsLambdaFunctionDeadLetterConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsLambdaFunctionDeadLetterConfig) GoString() string {
	return s.String()
}

// SetTargetArn sets the TargetArn field's value.
func (s *AwsLambdaFunctionDeadLetterConfig) SetTargetArn(v string) *AwsLambdaFunctionDeadLetterConfig {
	s.TargetArn = &v
	return s
}

// Details about an Lambda function's configuration.
type AwsLambdaFunctionDetails struct {
	_ struct{} `type:"structure"`

	// The instruction set architecture that the function uses. Valid values are
	// x86_64 or arm64.
	Architectures []*string `type:"list"`

	// An AwsLambdaFunctionCode object.
	Code *AwsLambdaFunctionCode `type:"structure"`

	// The SHA256 hash of the function's deployment package.
	CodeSha256 *string `type:"string"`

	// The function's dead letter queue.
	DeadLetterConfig *AwsLambdaFunctionDeadLetterConfig `type:"structure"`

	// The function's environment variables.
	Environment *AwsLambdaFunctionEnvironment `type:"structure"`

	// The name of the function.
	FunctionName *string `type:"string"`

	// The function that Lambda calls to begin executing your function.
	Handler *string `type:"string"`

	// The KMS key that is used to encrypt the function's environment variables.
	// This key is only returned if you've configured a customer managed customer
	// managed key.
	KmsKeyArn *string `type:"string"`

	// Indicates when the function was last updated.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	LastModified *string `type:"string"`

	// The function's layers.
	Layers []*AwsLambdaFunctionLayer `type:"list"`

	// For Lambda@Edge functions, the ARN of the master function.
	MasterArn *string `type:"string"`

	// The memory that is allocated to the function.
	MemorySize *int64 `type:"integer"`

	// The type of deployment package that's used to deploy the function code to
	// Lambda. Set to Image for a container image and Zip for a .zip file archive.
	PackageType *string `type:"string"`

	// The latest updated revision of the function or alias.
	RevisionId *string `type:"string"`

	// The function's execution role.
	Role *string `type:"string"`

	// The runtime environment for the Lambda function.
	Runtime *string `type:"string"`

	// The amount of time that Lambda allows a function to run before stopping it.
	Timeout *int64 `type:"integer"`

	// The function's X-Ray tracing configuration.
	TracingConfig *AwsLambdaFunctionTracingConfig `type:"structure"`

	// The version of the Lambda function.
	Version *string `type:"string"`

	// The function's networking configuration.
	VpcConfig *AwsLambdaFunctionVpcConfig `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 AwsLambdaFunctionDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsLambdaFunctionDetails) GoString() string {
	return s.String()
}

// SetArchitectures sets the Architectures field's value.
func (s *AwsLambdaFunctionDetails) SetArchitectures(v []*string) *AwsLambdaFunctionDetails {
	s.Architectures = v
	return s
}

// SetCode sets the Code field's value.
func (s *AwsLambdaFunctionDetails) SetCode(v *AwsLambdaFunctionCode) *AwsLambdaFunctionDetails {
	s.Code = v
	return s
}

// SetCodeSha256 sets the CodeSha256 field's value.
func (s *AwsLambdaFunctionDetails) SetCodeSha256(v string) *AwsLambdaFunctionDetails {
	s.CodeSha256 = &v
	return s
}

// SetDeadLetterConfig sets the DeadLetterConfig field's value.
func (s *AwsLambdaFunctionDetails) SetDeadLetterConfig(v *AwsLambdaFunctionDeadLetterConfig) *AwsLambdaFunctionDetails {
	s.DeadLetterConfig = v
	return s
}

// SetEnvironment sets the Environment field's value.
func (s *AwsLambdaFunctionDetails) SetEnvironment(v *AwsLambdaFunctionEnvironment) *AwsLambdaFunctionDetails {
	s.Environment = v
	return s
}

// SetFunctionName sets the FunctionName field's value.
func (s *AwsLambdaFunctionDetails) SetFunctionName(v string) *AwsLambdaFunctionDetails {
	s.FunctionName = &v
	return s
}

// SetHandler sets the Handler field's value.
func (s *AwsLambdaFunctionDetails) SetHandler(v string) *AwsLambdaFunctionDetails {
	s.Handler = &v
	return s
}

// SetKmsKeyArn sets the KmsKeyArn field's value.
func (s *AwsLambdaFunctionDetails) SetKmsKeyArn(v string) *AwsLambdaFunctionDetails {
	s.KmsKeyArn = &v
	return s
}

// SetLastModified sets the LastModified field's value.
func (s *AwsLambdaFunctionDetails) SetLastModified(v string) *AwsLambdaFunctionDetails {
	s.LastModified = &v
	return s
}

// SetLayers sets the Layers field's value.
func (s *AwsLambdaFunctionDetails) SetLayers(v []*AwsLambdaFunctionLayer) *AwsLambdaFunctionDetails {
	s.Layers = v
	return s
}

// SetMasterArn sets the MasterArn field's value.
func (s *AwsLambdaFunctionDetails) SetMasterArn(v string) *AwsLambdaFunctionDetails {
	s.MasterArn = &v
	return s
}

// SetMemorySize sets the MemorySize field's value.
func (s *AwsLambdaFunctionDetails) SetMemorySize(v int64) *AwsLambdaFunctionDetails {
	s.MemorySize = &v
	return s
}

// SetPackageType sets the PackageType field's value.
func (s *AwsLambdaFunctionDetails) SetPackageType(v string) *AwsLambdaFunctionDetails {
	s.PackageType = &v
	return s
}

// SetRevisionId sets the RevisionId field's value.
func (s *AwsLambdaFunctionDetails) SetRevisionId(v string) *AwsLambdaFunctionDetails {
	s.RevisionId = &v
	return s
}

// SetRole sets the Role field's value.
func (s *AwsLambdaFunctionDetails) SetRole(v string) *AwsLambdaFunctionDetails {
	s.Role = &v
	return s
}

// SetRuntime sets the Runtime field's value.
func (s *AwsLambdaFunctionDetails) SetRuntime(v string) *AwsLambdaFunctionDetails {
	s.Runtime = &v
	return s
}

// SetTimeout sets the Timeout field's value.
func (s *AwsLambdaFunctionDetails) SetTimeout(v int64) *AwsLambdaFunctionDetails {
	s.Timeout = &v
	return s
}

// SetTracingConfig sets the TracingConfig field's value.
func (s *AwsLambdaFunctionDetails) SetTracingConfig(v *AwsLambdaFunctionTracingConfig) *AwsLambdaFunctionDetails {
	s.TracingConfig = v
	return s
}

// SetVersion sets the Version field's value.
func (s *AwsLambdaFunctionDetails) SetVersion(v string) *AwsLambdaFunctionDetails {
	s.Version = &v
	return s
}

// SetVpcConfig sets the VpcConfig field's value.
func (s *AwsLambdaFunctionDetails) SetVpcConfig(v *AwsLambdaFunctionVpcConfig) *AwsLambdaFunctionDetails {
	s.VpcConfig = v
	return s
}

// A function's environment variable settings.
type AwsLambdaFunctionEnvironment struct {
	_ struct{} `type:"structure"`

	// An AwsLambdaFunctionEnvironmentError object.
	Error *AwsLambdaFunctionEnvironmentError `type:"structure"`

	// Environment variable key-value pairs.
	Variables map[string]*string `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 AwsLambdaFunctionEnvironment) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsLambdaFunctionEnvironment) GoString() string {
	return s.String()
}

// SetError sets the Error field's value.
func (s *AwsLambdaFunctionEnvironment) SetError(v *AwsLambdaFunctionEnvironmentError) *AwsLambdaFunctionEnvironment {
	s.Error = v
	return s
}

// SetVariables sets the Variables field's value.
func (s *AwsLambdaFunctionEnvironment) SetVariables(v map[string]*string) *AwsLambdaFunctionEnvironment {
	s.Variables = v
	return s
}

// Error messages for environment variables that could not be applied.
type AwsLambdaFunctionEnvironmentError struct {
	_ struct{} `type:"structure"`

	// The error code.
	ErrorCode *string `type:"string"`

	// The error message.
	Message *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsLambdaFunctionEnvironmentError) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsLambdaFunctionEnvironmentError) GoString() string {
	return s.String()
}

// SetErrorCode sets the ErrorCode field's value.
func (s *AwsLambdaFunctionEnvironmentError) SetErrorCode(v string) *AwsLambdaFunctionEnvironmentError {
	s.ErrorCode = &v
	return s
}

// SetMessage sets the Message field's value.
func (s *AwsLambdaFunctionEnvironmentError) SetMessage(v string) *AwsLambdaFunctionEnvironmentError {
	s.Message = &v
	return s
}

// An Lambda layer.
type AwsLambdaFunctionLayer struct {
	_ struct{} `type:"structure"`

	// The ARN of the function layer.
	Arn *string `type:"string"`

	// The size of the layer archive in bytes.
	CodeSize *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsLambdaFunctionLayer) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsLambdaFunctionLayer) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *AwsLambdaFunctionLayer) SetArn(v string) *AwsLambdaFunctionLayer {
	s.Arn = &v
	return s
}

// SetCodeSize sets the CodeSize field's value.
func (s *AwsLambdaFunctionLayer) SetCodeSize(v int64) *AwsLambdaFunctionLayer {
	s.CodeSize = &v
	return s
}

// The function's X-Ray tracing configuration.
type AwsLambdaFunctionTracingConfig struct {
	_ struct{} `type:"structure"`

	// The tracing mode.
	Mode *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsLambdaFunctionTracingConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsLambdaFunctionTracingConfig) GoString() string {
	return s.String()
}

// SetMode sets the Mode field's value.
func (s *AwsLambdaFunctionTracingConfig) SetMode(v string) *AwsLambdaFunctionTracingConfig {
	s.Mode = &v
	return s
}

// The VPC security groups and subnets that are attached to a Lambda function.
type AwsLambdaFunctionVpcConfig struct {
	_ struct{} `type:"structure"`

	// A list of VPC security groups IDs.
	SecurityGroupIds []*string `type:"list"`

	// A list of VPC subnet IDs.
	SubnetIds []*string `type:"list"`

	// The ID of the VPC.
	VpcId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsLambdaFunctionVpcConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsLambdaFunctionVpcConfig) GoString() string {
	return s.String()
}

// SetSecurityGroupIds sets the SecurityGroupIds field's value.
func (s *AwsLambdaFunctionVpcConfig) SetSecurityGroupIds(v []*string) *AwsLambdaFunctionVpcConfig {
	s.SecurityGroupIds = v
	return s
}

// SetSubnetIds sets the SubnetIds field's value.
func (s *AwsLambdaFunctionVpcConfig) SetSubnetIds(v []*string) *AwsLambdaFunctionVpcConfig {
	s.SubnetIds = v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *AwsLambdaFunctionVpcConfig) SetVpcId(v string) *AwsLambdaFunctionVpcConfig {
	s.VpcId = &v
	return s
}

// Details about a Lambda layer version.
type AwsLambdaLayerVersionDetails struct {
	_ struct{} `type:"structure"`

	// The layer's compatible function runtimes (https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html).
	//
	// The following list includes deprecated runtimes. For more information, see
	// Runtime deprecation policy (https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html#runtime-support-policy)
	// in the Lambda Developer Guide.
	//
	// Array Members: Maximum number of 5 items.
	//
	// Valid Values: nodejs | nodejs4.3 | nodejs6.10 | nodejs8.10 | nodejs10.x |
	// nodejs12.x | nodejs14.x | nodejs16.x | java8 | java8.al2 | java11 | python2.7
	// | python3.6 | python3.7 | python3.8 | python3.9 | dotnetcore1.0 | dotnetcore2.0
	// | dotnetcore2.1 | dotnetcore3.1 | dotnet6 | nodejs4.3-edge | go1.x | ruby2.5
	// | ruby2.7 | provided | provided.al2 | nodejs18.x | python3.10 | java17 |
	// ruby3.2 | python3.11 | nodejs20.x | provided.al2023 | python3.12 | java21
	CompatibleRuntimes []*string `type:"list"`

	// Indicates when the version was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreatedDate *string `type:"string"`

	// The version number.
	Version *int64 `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 AwsLambdaLayerVersionDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsLambdaLayerVersionDetails) GoString() string {
	return s.String()
}

// SetCompatibleRuntimes sets the CompatibleRuntimes field's value.
func (s *AwsLambdaLayerVersionDetails) SetCompatibleRuntimes(v []*string) *AwsLambdaLayerVersionDetails {
	s.CompatibleRuntimes = v
	return s
}

// SetCreatedDate sets the CreatedDate field's value.
func (s *AwsLambdaLayerVersionDetails) SetCreatedDate(v string) *AwsLambdaLayerVersionDetails {
	s.CreatedDate = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *AwsLambdaLayerVersionDetails) SetVersion(v int64) *AwsLambdaLayerVersionDetails {
	s.Version = &v
	return s
}

// Details for a volume mount point that's used in a container definition.
type AwsMountPoint struct {
	_ struct{} `type:"structure"`

	// The path on the container to mount the host volume at.
	ContainerPath *string `type:"string"`

	// The name of the volume to mount. Must be a volume name referenced in the
	// name parameter of task definition volume.
	SourceVolume *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsMountPoint) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsMountPoint) GoString() string {
	return s.String()
}

// SetContainerPath sets the ContainerPath field's value.
func (s *AwsMountPoint) SetContainerPath(v string) *AwsMountPoint {
	s.ContainerPath = &v
	return s
}

// SetSourceVolume sets the SourceVolume field's value.
func (s *AwsMountPoint) SetSourceVolume(v string) *AwsMountPoint {
	s.SourceVolume = &v
	return s
}

// Provides details about different modes of client authentication.
type AwsMskClusterClusterInfoClientAuthenticationDetails struct {
	_ struct{} `type:"structure"`

	// Provides details for client authentication using SASL.
	Sasl *AwsMskClusterClusterInfoClientAuthenticationSaslDetails `type:"structure"`

	// Provides details for client authentication using TLS.
	Tls *AwsMskClusterClusterInfoClientAuthenticationTlsDetails `type:"structure"`

	// Provides details for allowing no client authentication.
	Unauthenticated *AwsMskClusterClusterInfoClientAuthenticationUnauthenticatedDetails `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 AwsMskClusterClusterInfoClientAuthenticationDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsMskClusterClusterInfoClientAuthenticationDetails) GoString() string {
	return s.String()
}

// SetSasl sets the Sasl field's value.
func (s *AwsMskClusterClusterInfoClientAuthenticationDetails) SetSasl(v *AwsMskClusterClusterInfoClientAuthenticationSaslDetails) *AwsMskClusterClusterInfoClientAuthenticationDetails {
	s.Sasl = v
	return s
}

// SetTls sets the Tls field's value.
func (s *AwsMskClusterClusterInfoClientAuthenticationDetails) SetTls(v *AwsMskClusterClusterInfoClientAuthenticationTlsDetails) *AwsMskClusterClusterInfoClientAuthenticationDetails {
	s.Tls = v
	return s
}

// SetUnauthenticated sets the Unauthenticated field's value.
func (s *AwsMskClusterClusterInfoClientAuthenticationDetails) SetUnauthenticated(v *AwsMskClusterClusterInfoClientAuthenticationUnauthenticatedDetails) *AwsMskClusterClusterInfoClientAuthenticationDetails {
	s.Unauthenticated = v
	return s
}

// Provides details for client authentication using SASL.
type AwsMskClusterClusterInfoClientAuthenticationSaslDetails struct {
	_ struct{} `type:"structure"`

	// Provides details for SASL client authentication using IAM.
	Iam *AwsMskClusterClusterInfoClientAuthenticationSaslIamDetails `type:"structure"`

	// Details for SASL client authentication using SCRAM.
	Scram *AwsMskClusterClusterInfoClientAuthenticationSaslScramDetails `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 AwsMskClusterClusterInfoClientAuthenticationSaslDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsMskClusterClusterInfoClientAuthenticationSaslDetails) GoString() string {
	return s.String()
}

// SetIam sets the Iam field's value.
func (s *AwsMskClusterClusterInfoClientAuthenticationSaslDetails) SetIam(v *AwsMskClusterClusterInfoClientAuthenticationSaslIamDetails) *AwsMskClusterClusterInfoClientAuthenticationSaslDetails {
	s.Iam = v
	return s
}

// SetScram sets the Scram field's value.
func (s *AwsMskClusterClusterInfoClientAuthenticationSaslDetails) SetScram(v *AwsMskClusterClusterInfoClientAuthenticationSaslScramDetails) *AwsMskClusterClusterInfoClientAuthenticationSaslDetails {
	s.Scram = v
	return s
}

// Details for SASL/IAM client authentication.
type AwsMskClusterClusterInfoClientAuthenticationSaslIamDetails struct {
	_ struct{} `type:"structure"`

	// Indicates whether SASL/IAM authentication is enabled or not.
	Enabled *bool `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 AwsMskClusterClusterInfoClientAuthenticationSaslIamDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsMskClusterClusterInfoClientAuthenticationSaslIamDetails) GoString() string {
	return s.String()
}

// SetEnabled sets the Enabled field's value.
func (s *AwsMskClusterClusterInfoClientAuthenticationSaslIamDetails) SetEnabled(v bool) *AwsMskClusterClusterInfoClientAuthenticationSaslIamDetails {
	s.Enabled = &v
	return s
}

// Details for SASL/SCRAM client authentication.
type AwsMskClusterClusterInfoClientAuthenticationSaslScramDetails struct {
	_ struct{} `type:"structure"`

	// Indicates whether SASL/SCRAM authentication is enabled or not.
	Enabled *bool `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 AwsMskClusterClusterInfoClientAuthenticationSaslScramDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsMskClusterClusterInfoClientAuthenticationSaslScramDetails) GoString() string {
	return s.String()
}

// SetEnabled sets the Enabled field's value.
func (s *AwsMskClusterClusterInfoClientAuthenticationSaslScramDetails) SetEnabled(v bool) *AwsMskClusterClusterInfoClientAuthenticationSaslScramDetails {
	s.Enabled = &v
	return s
}

// Provides details for client authentication using TLS.
type AwsMskClusterClusterInfoClientAuthenticationTlsDetails struct {
	_ struct{} `type:"structure"`

	// List of Amazon Web Services Private CA Amazon Resource Names (ARNs). Amazon
	// Web Services Private CA enables creation of private certificate authority
	// (CA) hierarchies, including root and subordinate CAs, without the investment
	// and maintenance costs of operating an on-premises CA.
	CertificateAuthorityArnList []*string `type:"list"`

	// Indicates whether TLS authentication is enabled or not.
	Enabled *bool `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 AwsMskClusterClusterInfoClientAuthenticationTlsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsMskClusterClusterInfoClientAuthenticationTlsDetails) GoString() string {
	return s.String()
}

// SetCertificateAuthorityArnList sets the CertificateAuthorityArnList field's value.
func (s *AwsMskClusterClusterInfoClientAuthenticationTlsDetails) SetCertificateAuthorityArnList(v []*string) *AwsMskClusterClusterInfoClientAuthenticationTlsDetails {
	s.CertificateAuthorityArnList = v
	return s
}

// SetEnabled sets the Enabled field's value.
func (s *AwsMskClusterClusterInfoClientAuthenticationTlsDetails) SetEnabled(v bool) *AwsMskClusterClusterInfoClientAuthenticationTlsDetails {
	s.Enabled = &v
	return s
}

// Provides details for allowing no client authentication.
type AwsMskClusterClusterInfoClientAuthenticationUnauthenticatedDetails struct {
	_ struct{} `type:"structure"`

	// Indicates whether unauthenticated is allowed or not.
	Enabled *bool `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 AwsMskClusterClusterInfoClientAuthenticationUnauthenticatedDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsMskClusterClusterInfoClientAuthenticationUnauthenticatedDetails) GoString() string {
	return s.String()
}

// SetEnabled sets the Enabled field's value.
func (s *AwsMskClusterClusterInfoClientAuthenticationUnauthenticatedDetails) SetEnabled(v bool) *AwsMskClusterClusterInfoClientAuthenticationUnauthenticatedDetails {
	s.Enabled = &v
	return s
}

// Provide details about an Amazon Managed Streaming for Apache Kafka (Amazon
// MSK) cluster.
type AwsMskClusterClusterInfoDetails struct {
	_ struct{} `type:"structure"`

	// Provides information for different modes of client authentication.
	ClientAuthentication *AwsMskClusterClusterInfoClientAuthenticationDetails `type:"structure"`

	// The name of the cluster.
	ClusterName *string `type:"string"`

	// The current version of the cluster.
	CurrentVersion *string `type:"string"`

	// Includes encryption-related information, such as the KMS key used for encrypting
	// data at rest and whether you want Amazon MSK to encrypt your data in transit.
	EncryptionInfo *AwsMskClusterClusterInfoEncryptionInfoDetails `type:"structure"`

	// Specifies the level of monitoring for the cluster.
	EnhancedMonitoring *string `type:"string"`

	// The number of broker nodes in the cluster.
	NumberOfBrokerNodes *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsMskClusterClusterInfoDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsMskClusterClusterInfoDetails) GoString() string {
	return s.String()
}

// SetClientAuthentication sets the ClientAuthentication field's value.
func (s *AwsMskClusterClusterInfoDetails) SetClientAuthentication(v *AwsMskClusterClusterInfoClientAuthenticationDetails) *AwsMskClusterClusterInfoDetails {
	s.ClientAuthentication = v
	return s
}

// SetClusterName sets the ClusterName field's value.
func (s *AwsMskClusterClusterInfoDetails) SetClusterName(v string) *AwsMskClusterClusterInfoDetails {
	s.ClusterName = &v
	return s
}

// SetCurrentVersion sets the CurrentVersion field's value.
func (s *AwsMskClusterClusterInfoDetails) SetCurrentVersion(v string) *AwsMskClusterClusterInfoDetails {
	s.CurrentVersion = &v
	return s
}

// SetEncryptionInfo sets the EncryptionInfo field's value.
func (s *AwsMskClusterClusterInfoDetails) SetEncryptionInfo(v *AwsMskClusterClusterInfoEncryptionInfoDetails) *AwsMskClusterClusterInfoDetails {
	s.EncryptionInfo = v
	return s
}

// SetEnhancedMonitoring sets the EnhancedMonitoring field's value.
func (s *AwsMskClusterClusterInfoDetails) SetEnhancedMonitoring(v string) *AwsMskClusterClusterInfoDetails {
	s.EnhancedMonitoring = &v
	return s
}

// SetNumberOfBrokerNodes sets the NumberOfBrokerNodes field's value.
func (s *AwsMskClusterClusterInfoDetails) SetNumberOfBrokerNodes(v int64) *AwsMskClusterClusterInfoDetails {
	s.NumberOfBrokerNodes = &v
	return s
}

// Includes encryption-related information, such as the KMS key used for encrypting
// data at rest and whether you want MSK to encrypt your data in transit.
type AwsMskClusterClusterInfoEncryptionInfoDetails struct {
	_ struct{} `type:"structure"`

	// The data-volume encryption details. You can't update encryption at rest settings
	// for existing clusters.
	EncryptionAtRest *AwsMskClusterClusterInfoEncryptionInfoEncryptionAtRestDetails `type:"structure"`

	// The settings for encrypting data in transit.
	EncryptionInTransit *AwsMskClusterClusterInfoEncryptionInfoEncryptionInTransitDetails `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 AwsMskClusterClusterInfoEncryptionInfoDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsMskClusterClusterInfoEncryptionInfoDetails) GoString() string {
	return s.String()
}

// SetEncryptionAtRest sets the EncryptionAtRest field's value.
func (s *AwsMskClusterClusterInfoEncryptionInfoDetails) SetEncryptionAtRest(v *AwsMskClusterClusterInfoEncryptionInfoEncryptionAtRestDetails) *AwsMskClusterClusterInfoEncryptionInfoDetails {
	s.EncryptionAtRest = v
	return s
}

// SetEncryptionInTransit sets the EncryptionInTransit field's value.
func (s *AwsMskClusterClusterInfoEncryptionInfoDetails) SetEncryptionInTransit(v *AwsMskClusterClusterInfoEncryptionInfoEncryptionInTransitDetails) *AwsMskClusterClusterInfoEncryptionInfoDetails {
	s.EncryptionInTransit = v
	return s
}

// The data-volume encryption details. You can't update encryption at rest settings
// for existing clusters.
type AwsMskClusterClusterInfoEncryptionInfoEncryptionAtRestDetails struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the KMS key for encrypting data at rest.
	// If you don't specify a KMS key, MSK creates one for you and uses it.
	DataVolumeKMSKeyId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsMskClusterClusterInfoEncryptionInfoEncryptionAtRestDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsMskClusterClusterInfoEncryptionInfoEncryptionAtRestDetails) GoString() string {
	return s.String()
}

// SetDataVolumeKMSKeyId sets the DataVolumeKMSKeyId field's value.
func (s *AwsMskClusterClusterInfoEncryptionInfoEncryptionAtRestDetails) SetDataVolumeKMSKeyId(v string) *AwsMskClusterClusterInfoEncryptionInfoEncryptionAtRestDetails {
	s.DataVolumeKMSKeyId = &v
	return s
}

// The settings for encrypting data in transit.
type AwsMskClusterClusterInfoEncryptionInfoEncryptionInTransitDetails struct {
	_ struct{} `type:"structure"`

	// Indicates the encryption setting for data in transit between clients and
	// brokers.
	ClientBroker *string `type:"string"`

	// When set to true, it indicates that data communication among the broker nodes
	// of the cluster is encrypted. When set to false, the communication happens
	// in plain text. The default value is true.
	InCluster *bool `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 AwsMskClusterClusterInfoEncryptionInfoEncryptionInTransitDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsMskClusterClusterInfoEncryptionInfoEncryptionInTransitDetails) GoString() string {
	return s.String()
}

// SetClientBroker sets the ClientBroker field's value.
func (s *AwsMskClusterClusterInfoEncryptionInfoEncryptionInTransitDetails) SetClientBroker(v string) *AwsMskClusterClusterInfoEncryptionInfoEncryptionInTransitDetails {
	s.ClientBroker = &v
	return s
}

// SetInCluster sets the InCluster field's value.
func (s *AwsMskClusterClusterInfoEncryptionInfoEncryptionInTransitDetails) SetInCluster(v bool) *AwsMskClusterClusterInfoEncryptionInfoEncryptionInTransitDetails {
	s.InCluster = &v
	return s
}

// Provides details about an Amazon Managed Streaming for Apache Kafka (Amazon
// MSK) cluster.
type AwsMskClusterDetails struct {
	_ struct{} `type:"structure"`

	// Provides information about a cluster.
	ClusterInfo *AwsMskClusterClusterInfoDetails `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 AwsMskClusterDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsMskClusterDetails) GoString() string {
	return s.String()
}

// SetClusterInfo sets the ClusterInfo field's value.
func (s *AwsMskClusterDetails) SetClusterInfo(v *AwsMskClusterClusterInfoDetails) *AwsMskClusterDetails {
	s.ClusterInfo = v
	return s
}

// Details about an Network Firewall firewall.
type AwsNetworkFirewallFirewallDetails struct {
	_ struct{} `type:"structure"`

	// Whether the firewall is protected from deletion. If set to true, then the
	// firewall cannot be deleted.
	DeleteProtection *bool `type:"boolean"`

	// A description of the firewall.
	Description *string `type:"string"`

	// The ARN of the firewall.
	FirewallArn *string `type:"string"`

	// The identifier of the firewall.
	FirewallId *string `type:"string"`

	// A descriptive name of the firewall.
	FirewallName *string `type:"string"`

	// The ARN of the firewall policy.
	FirewallPolicyArn *string `type:"string"`

	// Whether the firewall is protected from a change to the firewall policy. If
	// set to true, you cannot associate a different policy with the firewall.
	FirewallPolicyChangeProtection *bool `type:"boolean"`

	// Whether the firewall is protected from a change to the subnet associations.
	// If set to true, you cannot map different subnets to the firewall.
	SubnetChangeProtection *bool `type:"boolean"`

	// The public subnets that Network Firewall uses for the firewall. Each subnet
	// must belong to a different Availability Zone.
	SubnetMappings []*AwsNetworkFirewallFirewallSubnetMappingsDetails `type:"list"`

	// The identifier of the VPC where the firewall is used.
	VpcId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsNetworkFirewallFirewallDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsNetworkFirewallFirewallDetails) GoString() string {
	return s.String()
}

// SetDeleteProtection sets the DeleteProtection field's value.
func (s *AwsNetworkFirewallFirewallDetails) SetDeleteProtection(v bool) *AwsNetworkFirewallFirewallDetails {
	s.DeleteProtection = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *AwsNetworkFirewallFirewallDetails) SetDescription(v string) *AwsNetworkFirewallFirewallDetails {
	s.Description = &v
	return s
}

// SetFirewallArn sets the FirewallArn field's value.
func (s *AwsNetworkFirewallFirewallDetails) SetFirewallArn(v string) *AwsNetworkFirewallFirewallDetails {
	s.FirewallArn = &v
	return s
}

// SetFirewallId sets the FirewallId field's value.
func (s *AwsNetworkFirewallFirewallDetails) SetFirewallId(v string) *AwsNetworkFirewallFirewallDetails {
	s.FirewallId = &v
	return s
}

// SetFirewallName sets the FirewallName field's value.
func (s *AwsNetworkFirewallFirewallDetails) SetFirewallName(v string) *AwsNetworkFirewallFirewallDetails {
	s.FirewallName = &v
	return s
}

// SetFirewallPolicyArn sets the FirewallPolicyArn field's value.
func (s *AwsNetworkFirewallFirewallDetails) SetFirewallPolicyArn(v string) *AwsNetworkFirewallFirewallDetails {
	s.FirewallPolicyArn = &v
	return s
}

// SetFirewallPolicyChangeProtection sets the FirewallPolicyChangeProtection field's value.
func (s *AwsNetworkFirewallFirewallDetails) SetFirewallPolicyChangeProtection(v bool) *AwsNetworkFirewallFirewallDetails {
	s.FirewallPolicyChangeProtection = &v
	return s
}

// SetSubnetChangeProtection sets the SubnetChangeProtection field's value.
func (s *AwsNetworkFirewallFirewallDetails) SetSubnetChangeProtection(v bool) *AwsNetworkFirewallFirewallDetails {
	s.SubnetChangeProtection = &v
	return s
}

// SetSubnetMappings sets the SubnetMappings field's value.
func (s *AwsNetworkFirewallFirewallDetails) SetSubnetMappings(v []*AwsNetworkFirewallFirewallSubnetMappingsDetails) *AwsNetworkFirewallFirewallDetails {
	s.SubnetMappings = v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *AwsNetworkFirewallFirewallDetails) SetVpcId(v string) *AwsNetworkFirewallFirewallDetails {
	s.VpcId = &v
	return s
}

// Details about a firewall policy. A firewall policy defines the behavior of
// a network firewall.
type AwsNetworkFirewallFirewallPolicyDetails struct {
	_ struct{} `type:"structure"`

	// A description of the firewall policy.
	Description *string `type:"string"`

	// The firewall policy configuration.
	FirewallPolicy *FirewallPolicyDetails `type:"structure"`

	// The ARN of the firewall policy.
	FirewallPolicyArn *string `type:"string"`

	// The identifier of the firewall policy.
	FirewallPolicyId *string `type:"string"`

	// The name of the firewall policy.
	FirewallPolicyName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsNetworkFirewallFirewallPolicyDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsNetworkFirewallFirewallPolicyDetails) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *AwsNetworkFirewallFirewallPolicyDetails) SetDescription(v string) *AwsNetworkFirewallFirewallPolicyDetails {
	s.Description = &v
	return s
}

// SetFirewallPolicy sets the FirewallPolicy field's value.
func (s *AwsNetworkFirewallFirewallPolicyDetails) SetFirewallPolicy(v *FirewallPolicyDetails) *AwsNetworkFirewallFirewallPolicyDetails {
	s.FirewallPolicy = v
	return s
}

// SetFirewallPolicyArn sets the FirewallPolicyArn field's value.
func (s *AwsNetworkFirewallFirewallPolicyDetails) SetFirewallPolicyArn(v string) *AwsNetworkFirewallFirewallPolicyDetails {
	s.FirewallPolicyArn = &v
	return s
}

// SetFirewallPolicyId sets the FirewallPolicyId field's value.
func (s *AwsNetworkFirewallFirewallPolicyDetails) SetFirewallPolicyId(v string) *AwsNetworkFirewallFirewallPolicyDetails {
	s.FirewallPolicyId = &v
	return s
}

// SetFirewallPolicyName sets the FirewallPolicyName field's value.
func (s *AwsNetworkFirewallFirewallPolicyDetails) SetFirewallPolicyName(v string) *AwsNetworkFirewallFirewallPolicyDetails {
	s.FirewallPolicyName = &v
	return s
}

// A public subnet that Network Firewall uses for the firewall.
type AwsNetworkFirewallFirewallSubnetMappingsDetails struct {
	_ struct{} `type:"structure"`

	// The identifier of the subnet
	SubnetId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsNetworkFirewallFirewallSubnetMappingsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsNetworkFirewallFirewallSubnetMappingsDetails) GoString() string {
	return s.String()
}

// SetSubnetId sets the SubnetId field's value.
func (s *AwsNetworkFirewallFirewallSubnetMappingsDetails) SetSubnetId(v string) *AwsNetworkFirewallFirewallSubnetMappingsDetails {
	s.SubnetId = &v
	return s
}

// Details about an Network Firewall rule group. Rule groups are used to inspect
// and control network traffic. Stateless rule groups apply to individual packets.
// Stateful rule groups apply to packets in the context of their traffic flow.
//
// Rule groups are referenced in firewall policies.
type AwsNetworkFirewallRuleGroupDetails struct {
	_ struct{} `type:"structure"`

	// The maximum number of operating resources that this rule group can use.
	Capacity *int64 `type:"integer"`

	// A description of the rule group.
	Description *string `type:"string"`

	// Details about the rule group.
	RuleGroup *RuleGroupDetails `type:"structure"`

	// The ARN of the rule group.
	RuleGroupArn *string `type:"string"`

	// The identifier of the rule group.
	RuleGroupId *string `type:"string"`

	// The descriptive name of the rule group.
	RuleGroupName *string `type:"string"`

	// The type of rule group. A rule group can be stateful or stateless.
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsNetworkFirewallRuleGroupDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsNetworkFirewallRuleGroupDetails) GoString() string {
	return s.String()
}

// SetCapacity sets the Capacity field's value.
func (s *AwsNetworkFirewallRuleGroupDetails) SetCapacity(v int64) *AwsNetworkFirewallRuleGroupDetails {
	s.Capacity = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *AwsNetworkFirewallRuleGroupDetails) SetDescription(v string) *AwsNetworkFirewallRuleGroupDetails {
	s.Description = &v
	return s
}

// SetRuleGroup sets the RuleGroup field's value.
func (s *AwsNetworkFirewallRuleGroupDetails) SetRuleGroup(v *RuleGroupDetails) *AwsNetworkFirewallRuleGroupDetails {
	s.RuleGroup = v
	return s
}

// SetRuleGroupArn sets the RuleGroupArn field's value.
func (s *AwsNetworkFirewallRuleGroupDetails) SetRuleGroupArn(v string) *AwsNetworkFirewallRuleGroupDetails {
	s.RuleGroupArn = &v
	return s
}

// SetRuleGroupId sets the RuleGroupId field's value.
func (s *AwsNetworkFirewallRuleGroupDetails) SetRuleGroupId(v string) *AwsNetworkFirewallRuleGroupDetails {
	s.RuleGroupId = &v
	return s
}

// SetRuleGroupName sets the RuleGroupName field's value.
func (s *AwsNetworkFirewallRuleGroupDetails) SetRuleGroupName(v string) *AwsNetworkFirewallRuleGroupDetails {
	s.RuleGroupName = &v
	return s
}

// SetType sets the Type field's value.
func (s *AwsNetworkFirewallRuleGroupDetails) SetType(v string) *AwsNetworkFirewallRuleGroupDetails {
	s.Type = &v
	return s
}

// Provides information about domain access control options.
type AwsOpenSearchServiceDomainAdvancedSecurityOptionsDetails struct {
	_ struct{} `type:"structure"`

	// Enables fine-grained access control.
	Enabled *bool `type:"boolean"`

	// Enables the internal user database.
	InternalUserDatabaseEnabled *bool `type:"boolean"`

	// Specifies information about the master user of the domain.
	MasterUserOptions *AwsOpenSearchServiceDomainMasterUserOptionsDetails `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 AwsOpenSearchServiceDomainAdvancedSecurityOptionsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsOpenSearchServiceDomainAdvancedSecurityOptionsDetails) GoString() string {
	return s.String()
}

// SetEnabled sets the Enabled field's value.
func (s *AwsOpenSearchServiceDomainAdvancedSecurityOptionsDetails) SetEnabled(v bool) *AwsOpenSearchServiceDomainAdvancedSecurityOptionsDetails {
	s.Enabled = &v
	return s
}

// SetInternalUserDatabaseEnabled sets the InternalUserDatabaseEnabled field's value.
func (s *AwsOpenSearchServiceDomainAdvancedSecurityOptionsDetails) SetInternalUserDatabaseEnabled(v bool) *AwsOpenSearchServiceDomainAdvancedSecurityOptionsDetails {
	s.InternalUserDatabaseEnabled = &v
	return s
}

// SetMasterUserOptions sets the MasterUserOptions field's value.
func (s *AwsOpenSearchServiceDomainAdvancedSecurityOptionsDetails) SetMasterUserOptions(v *AwsOpenSearchServiceDomainMasterUserOptionsDetails) *AwsOpenSearchServiceDomainAdvancedSecurityOptionsDetails {
	s.MasterUserOptions = v
	return s
}

// Details about the configuration of an OpenSearch cluster.
type AwsOpenSearchServiceDomainClusterConfigDetails struct {
	_ struct{} `type:"structure"`

	// The number of instances to use for the master node. If this attribute is
	// specified, then DedicatedMasterEnabled must be true.
	DedicatedMasterCount *int64 `type:"integer"`

	// Whether to use a dedicated master node for the OpenSearch domain. A dedicated
	// master node performs cluster management tasks, but does not hold data or
	// respond to data upload requests.
	DedicatedMasterEnabled *bool `type:"boolean"`

	// The hardware configuration of the computer that hosts the dedicated master
	// node.
	//
	// If this attribute is specified, then DedicatedMasterEnabled must be true.
	DedicatedMasterType *string `type:"string"`

	// The number of data nodes to use in the OpenSearch domain.
	InstanceCount *int64 `type:"integer"`

	// The instance type for your data nodes.
	//
	// For a list of valid values, see Supported instance types in Amazon OpenSearch
	// Service (https://docs.aws.amazon.com/opensearch-service/latest/developerguide/supported-instance-types.html)
	// in the Amazon OpenSearch Service Developer Guide.
	InstanceType *string `type:"string"`

	// The number of UltraWarm instances.
	WarmCount *int64 `type:"integer"`

	// Whether UltraWarm is enabled.
	WarmEnabled *bool `type:"boolean"`

	// The type of UltraWarm instance.
	WarmType *string `type:"string"`

	// Configuration options for zone awareness. Provided if ZoneAwarenessEnabled
	// is true.
	ZoneAwarenessConfig *AwsOpenSearchServiceDomainClusterConfigZoneAwarenessConfigDetails `type:"structure"`

	// Whether to enable zone awareness for the OpenSearch domain. When zone awareness
	// is enabled, OpenSearch Service allocates the cluster's nodes and replica
	// index shards across Availability Zones (AZs) in the same Region. This prevents
	// data loss and minimizes downtime if a node or data center fails.
	ZoneAwarenessEnabled *bool `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 AwsOpenSearchServiceDomainClusterConfigDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsOpenSearchServiceDomainClusterConfigDetails) GoString() string {
	return s.String()
}

// SetDedicatedMasterCount sets the DedicatedMasterCount field's value.
func (s *AwsOpenSearchServiceDomainClusterConfigDetails) SetDedicatedMasterCount(v int64) *AwsOpenSearchServiceDomainClusterConfigDetails {
	s.DedicatedMasterCount = &v
	return s
}

// SetDedicatedMasterEnabled sets the DedicatedMasterEnabled field's value.
func (s *AwsOpenSearchServiceDomainClusterConfigDetails) SetDedicatedMasterEnabled(v bool) *AwsOpenSearchServiceDomainClusterConfigDetails {
	s.DedicatedMasterEnabled = &v
	return s
}

// SetDedicatedMasterType sets the DedicatedMasterType field's value.
func (s *AwsOpenSearchServiceDomainClusterConfigDetails) SetDedicatedMasterType(v string) *AwsOpenSearchServiceDomainClusterConfigDetails {
	s.DedicatedMasterType = &v
	return s
}

// SetInstanceCount sets the InstanceCount field's value.
func (s *AwsOpenSearchServiceDomainClusterConfigDetails) SetInstanceCount(v int64) *AwsOpenSearchServiceDomainClusterConfigDetails {
	s.InstanceCount = &v
	return s
}

// SetInstanceType sets the InstanceType field's value.
func (s *AwsOpenSearchServiceDomainClusterConfigDetails) SetInstanceType(v string) *AwsOpenSearchServiceDomainClusterConfigDetails {
	s.InstanceType = &v
	return s
}

// SetWarmCount sets the WarmCount field's value.
func (s *AwsOpenSearchServiceDomainClusterConfigDetails) SetWarmCount(v int64) *AwsOpenSearchServiceDomainClusterConfigDetails {
	s.WarmCount = &v
	return s
}

// SetWarmEnabled sets the WarmEnabled field's value.
func (s *AwsOpenSearchServiceDomainClusterConfigDetails) SetWarmEnabled(v bool) *AwsOpenSearchServiceDomainClusterConfigDetails {
	s.WarmEnabled = &v
	return s
}

// SetWarmType sets the WarmType field's value.
func (s *AwsOpenSearchServiceDomainClusterConfigDetails) SetWarmType(v string) *AwsOpenSearchServiceDomainClusterConfigDetails {
	s.WarmType = &v
	return s
}

// SetZoneAwarenessConfig sets the ZoneAwarenessConfig field's value.
func (s *AwsOpenSearchServiceDomainClusterConfigDetails) SetZoneAwarenessConfig(v *AwsOpenSearchServiceDomainClusterConfigZoneAwarenessConfigDetails) *AwsOpenSearchServiceDomainClusterConfigDetails {
	s.ZoneAwarenessConfig = v
	return s
}

// SetZoneAwarenessEnabled sets the ZoneAwarenessEnabled field's value.
func (s *AwsOpenSearchServiceDomainClusterConfigDetails) SetZoneAwarenessEnabled(v bool) *AwsOpenSearchServiceDomainClusterConfigDetails {
	s.ZoneAwarenessEnabled = &v
	return s
}

// Configuration options for zone awareness.
type AwsOpenSearchServiceDomainClusterConfigZoneAwarenessConfigDetails struct {
	_ struct{} `type:"structure"`

	// The number of Availability Zones that the domain uses. Valid values are 2
	// or 3. The default is 2.
	AvailabilityZoneCount *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsOpenSearchServiceDomainClusterConfigZoneAwarenessConfigDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsOpenSearchServiceDomainClusterConfigZoneAwarenessConfigDetails) GoString() string {
	return s.String()
}

// SetAvailabilityZoneCount sets the AvailabilityZoneCount field's value.
func (s *AwsOpenSearchServiceDomainClusterConfigZoneAwarenessConfigDetails) SetAvailabilityZoneCount(v int64) *AwsOpenSearchServiceDomainClusterConfigZoneAwarenessConfigDetails {
	s.AvailabilityZoneCount = &v
	return s
}

// Information about an Amazon OpenSearch Service domain.
type AwsOpenSearchServiceDomainDetails struct {
	_ struct{} `type:"structure"`

	// IAM policy document that specifies the access policies for the OpenSearch
	// Service domain.
	AccessPolicies *string `type:"string"`

	// Specifies options for fine-grained access control.
	AdvancedSecurityOptions *AwsOpenSearchServiceDomainAdvancedSecurityOptionsDetails `type:"structure"`

	// The ARN of the OpenSearch Service domain.
	Arn *string `type:"string"`

	// Details about the configuration of an OpenSearch cluster.
	ClusterConfig *AwsOpenSearchServiceDomainClusterConfigDetails `type:"structure"`

	// The domain endpoint.
	DomainEndpoint *string `type:"string"`

	// Additional options for the domain endpoint.
	DomainEndpointOptions *AwsOpenSearchServiceDomainDomainEndpointOptionsDetails `type:"structure"`

	// The domain endpoints. Used if the OpenSearch domain resides in a VPC.
	//
	// This is a map of key-value pairs. The key is always vpc. The value is the
	// endpoint.
	DomainEndpoints map[string]*string `type:"map"`

	// The name of the endpoint.
	DomainName *string `type:"string"`

	// Details about the configuration for encryption at rest.
	EncryptionAtRestOptions *AwsOpenSearchServiceDomainEncryptionAtRestOptionsDetails `type:"structure"`

	// The version of the domain engine.
	EngineVersion *string `type:"string"`

	// The identifier of the domain.
	Id *string `type:"string"`

	// Configures the CloudWatch Logs to publish for the OpenSearch domain.
	LogPublishingOptions *AwsOpenSearchServiceDomainLogPublishingOptionsDetails `type:"structure"`

	// Details about the configuration for node-to-node encryption.
	NodeToNodeEncryptionOptions *AwsOpenSearchServiceDomainNodeToNodeEncryptionOptionsDetails `type:"structure"`

	// Information about the status of a domain relative to the latest service software.
	ServiceSoftwareOptions *AwsOpenSearchServiceDomainServiceSoftwareOptionsDetails `type:"structure"`

	// Information that OpenSearch Service derives based on VPCOptions for the domain.
	VpcOptions *AwsOpenSearchServiceDomainVpcOptionsDetails `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 AwsOpenSearchServiceDomainDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsOpenSearchServiceDomainDetails) GoString() string {
	return s.String()
}

// SetAccessPolicies sets the AccessPolicies field's value.
func (s *AwsOpenSearchServiceDomainDetails) SetAccessPolicies(v string) *AwsOpenSearchServiceDomainDetails {
	s.AccessPolicies = &v
	return s
}

// SetAdvancedSecurityOptions sets the AdvancedSecurityOptions field's value.
func (s *AwsOpenSearchServiceDomainDetails) SetAdvancedSecurityOptions(v *AwsOpenSearchServiceDomainAdvancedSecurityOptionsDetails) *AwsOpenSearchServiceDomainDetails {
	s.AdvancedSecurityOptions = v
	return s
}

// SetArn sets the Arn field's value.
func (s *AwsOpenSearchServiceDomainDetails) SetArn(v string) *AwsOpenSearchServiceDomainDetails {
	s.Arn = &v
	return s
}

// SetClusterConfig sets the ClusterConfig field's value.
func (s *AwsOpenSearchServiceDomainDetails) SetClusterConfig(v *AwsOpenSearchServiceDomainClusterConfigDetails) *AwsOpenSearchServiceDomainDetails {
	s.ClusterConfig = v
	return s
}

// SetDomainEndpoint sets the DomainEndpoint field's value.
func (s *AwsOpenSearchServiceDomainDetails) SetDomainEndpoint(v string) *AwsOpenSearchServiceDomainDetails {
	s.DomainEndpoint = &v
	return s
}

// SetDomainEndpointOptions sets the DomainEndpointOptions field's value.
func (s *AwsOpenSearchServiceDomainDetails) SetDomainEndpointOptions(v *AwsOpenSearchServiceDomainDomainEndpointOptionsDetails) *AwsOpenSearchServiceDomainDetails {
	s.DomainEndpointOptions = v
	return s
}

// SetDomainEndpoints sets the DomainEndpoints field's value.
func (s *AwsOpenSearchServiceDomainDetails) SetDomainEndpoints(v map[string]*string) *AwsOpenSearchServiceDomainDetails {
	s.DomainEndpoints = v
	return s
}

// SetDomainName sets the DomainName field's value.
func (s *AwsOpenSearchServiceDomainDetails) SetDomainName(v string) *AwsOpenSearchServiceDomainDetails {
	s.DomainName = &v
	return s
}

// SetEncryptionAtRestOptions sets the EncryptionAtRestOptions field's value.
func (s *AwsOpenSearchServiceDomainDetails) SetEncryptionAtRestOptions(v *AwsOpenSearchServiceDomainEncryptionAtRestOptionsDetails) *AwsOpenSearchServiceDomainDetails {
	s.EncryptionAtRestOptions = v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *AwsOpenSearchServiceDomainDetails) SetEngineVersion(v string) *AwsOpenSearchServiceDomainDetails {
	s.EngineVersion = &v
	return s
}

// SetId sets the Id field's value.
func (s *AwsOpenSearchServiceDomainDetails) SetId(v string) *AwsOpenSearchServiceDomainDetails {
	s.Id = &v
	return s
}

// SetLogPublishingOptions sets the LogPublishingOptions field's value.
func (s *AwsOpenSearchServiceDomainDetails) SetLogPublishingOptions(v *AwsOpenSearchServiceDomainLogPublishingOptionsDetails) *AwsOpenSearchServiceDomainDetails {
	s.LogPublishingOptions = v
	return s
}

// SetNodeToNodeEncryptionOptions sets the NodeToNodeEncryptionOptions field's value.
func (s *AwsOpenSearchServiceDomainDetails) SetNodeToNodeEncryptionOptions(v *AwsOpenSearchServiceDomainNodeToNodeEncryptionOptionsDetails) *AwsOpenSearchServiceDomainDetails {
	s.NodeToNodeEncryptionOptions = v
	return s
}

// SetServiceSoftwareOptions sets the ServiceSoftwareOptions field's value.
func (s *AwsOpenSearchServiceDomainDetails) SetServiceSoftwareOptions(v *AwsOpenSearchServiceDomainServiceSoftwareOptionsDetails) *AwsOpenSearchServiceDomainDetails {
	s.ServiceSoftwareOptions = v
	return s
}

// SetVpcOptions sets the VpcOptions field's value.
func (s *AwsOpenSearchServiceDomainDetails) SetVpcOptions(v *AwsOpenSearchServiceDomainVpcOptionsDetails) *AwsOpenSearchServiceDomainDetails {
	s.VpcOptions = v
	return s
}

// Information about additional options for the domain endpoint.
type AwsOpenSearchServiceDomainDomainEndpointOptionsDetails struct {
	_ struct{} `type:"structure"`

	// The fully qualified URL for the custom endpoint.
	CustomEndpoint *string `type:"string"`

	// The ARN for the security certificate. The certificate is managed in ACM.
	CustomEndpointCertificateArn *string `type:"string"`

	// Whether to enable a custom endpoint for the domain.
	CustomEndpointEnabled *bool `type:"boolean"`

	// Whether to require that all traffic to the domain arrive over HTTPS.
	EnforceHTTPS *bool `type:"boolean"`

	// The TLS security policy to apply to the HTTPS endpoint of the OpenSearch
	// domain.
	TLSSecurityPolicy *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsOpenSearchServiceDomainDomainEndpointOptionsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsOpenSearchServiceDomainDomainEndpointOptionsDetails) GoString() string {
	return s.String()
}

// SetCustomEndpoint sets the CustomEndpoint field's value.
func (s *AwsOpenSearchServiceDomainDomainEndpointOptionsDetails) SetCustomEndpoint(v string) *AwsOpenSearchServiceDomainDomainEndpointOptionsDetails {
	s.CustomEndpoint = &v
	return s
}

// SetCustomEndpointCertificateArn sets the CustomEndpointCertificateArn field's value.
func (s *AwsOpenSearchServiceDomainDomainEndpointOptionsDetails) SetCustomEndpointCertificateArn(v string) *AwsOpenSearchServiceDomainDomainEndpointOptionsDetails {
	s.CustomEndpointCertificateArn = &v
	return s
}

// SetCustomEndpointEnabled sets the CustomEndpointEnabled field's value.
func (s *AwsOpenSearchServiceDomainDomainEndpointOptionsDetails) SetCustomEndpointEnabled(v bool) *AwsOpenSearchServiceDomainDomainEndpointOptionsDetails {
	s.CustomEndpointEnabled = &v
	return s
}

// SetEnforceHTTPS sets the EnforceHTTPS field's value.
func (s *AwsOpenSearchServiceDomainDomainEndpointOptionsDetails) SetEnforceHTTPS(v bool) *AwsOpenSearchServiceDomainDomainEndpointOptionsDetails {
	s.EnforceHTTPS = &v
	return s
}

// SetTLSSecurityPolicy sets the TLSSecurityPolicy field's value.
func (s *AwsOpenSearchServiceDomainDomainEndpointOptionsDetails) SetTLSSecurityPolicy(v string) *AwsOpenSearchServiceDomainDomainEndpointOptionsDetails {
	s.TLSSecurityPolicy = &v
	return s
}

// Details about the configuration for encryption at rest for the OpenSearch
// domain.
type AwsOpenSearchServiceDomainEncryptionAtRestOptionsDetails struct {
	_ struct{} `type:"structure"`

	// Whether encryption at rest is enabled.
	Enabled *bool `type:"boolean"`

	// The KMS key ID.
	KmsKeyId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsOpenSearchServiceDomainEncryptionAtRestOptionsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsOpenSearchServiceDomainEncryptionAtRestOptionsDetails) GoString() string {
	return s.String()
}

// SetEnabled sets the Enabled field's value.
func (s *AwsOpenSearchServiceDomainEncryptionAtRestOptionsDetails) SetEnabled(v bool) *AwsOpenSearchServiceDomainEncryptionAtRestOptionsDetails {
	s.Enabled = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *AwsOpenSearchServiceDomainEncryptionAtRestOptionsDetails) SetKmsKeyId(v string) *AwsOpenSearchServiceDomainEncryptionAtRestOptionsDetails {
	s.KmsKeyId = &v
	return s
}

// Configuration details for a log publishing option.
type AwsOpenSearchServiceDomainLogPublishingOption struct {
	_ struct{} `type:"structure"`

	// The ARN of the CloudWatch Logs group to publish the logs to.
	CloudWatchLogsLogGroupArn *string `type:"string"`

	// Whether the log publishing is enabled.
	Enabled *bool `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 AwsOpenSearchServiceDomainLogPublishingOption) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsOpenSearchServiceDomainLogPublishingOption) GoString() string {
	return s.String()
}

// SetCloudWatchLogsLogGroupArn sets the CloudWatchLogsLogGroupArn field's value.
func (s *AwsOpenSearchServiceDomainLogPublishingOption) SetCloudWatchLogsLogGroupArn(v string) *AwsOpenSearchServiceDomainLogPublishingOption {
	s.CloudWatchLogsLogGroupArn = &v
	return s
}

// SetEnabled sets the Enabled field's value.
func (s *AwsOpenSearchServiceDomainLogPublishingOption) SetEnabled(v bool) *AwsOpenSearchServiceDomainLogPublishingOption {
	s.Enabled = &v
	return s
}

// Configures the CloudWatch Logs to publish for the OpenSearch domain.
type AwsOpenSearchServiceDomainLogPublishingOptionsDetails struct {
	_ struct{} `type:"structure"`

	// Configures the OpenSearch audit logs publishing.
	AuditLogs *AwsOpenSearchServiceDomainLogPublishingOption `type:"structure"`

	// Configures the OpenSearch index logs publishing.
	IndexSlowLogs *AwsOpenSearchServiceDomainLogPublishingOption `type:"structure"`

	// Configures the OpenSearch search slow log publishing.
	SearchSlowLogs *AwsOpenSearchServiceDomainLogPublishingOption `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 AwsOpenSearchServiceDomainLogPublishingOptionsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsOpenSearchServiceDomainLogPublishingOptionsDetails) GoString() string {
	return s.String()
}

// SetAuditLogs sets the AuditLogs field's value.
func (s *AwsOpenSearchServiceDomainLogPublishingOptionsDetails) SetAuditLogs(v *AwsOpenSearchServiceDomainLogPublishingOption) *AwsOpenSearchServiceDomainLogPublishingOptionsDetails {
	s.AuditLogs = v
	return s
}

// SetIndexSlowLogs sets the IndexSlowLogs field's value.
func (s *AwsOpenSearchServiceDomainLogPublishingOptionsDetails) SetIndexSlowLogs(v *AwsOpenSearchServiceDomainLogPublishingOption) *AwsOpenSearchServiceDomainLogPublishingOptionsDetails {
	s.IndexSlowLogs = v
	return s
}

// SetSearchSlowLogs sets the SearchSlowLogs field's value.
func (s *AwsOpenSearchServiceDomainLogPublishingOptionsDetails) SetSearchSlowLogs(v *AwsOpenSearchServiceDomainLogPublishingOption) *AwsOpenSearchServiceDomainLogPublishingOptionsDetails {
	s.SearchSlowLogs = v
	return s
}

// Specifies information about the master user of the domain.
type AwsOpenSearchServiceDomainMasterUserOptionsDetails struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the master user.
	MasterUserArn *string `type:"string"`

	// The username for the master user.
	MasterUserName *string `type:"string"`

	// The password for the master user.
	MasterUserPassword *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsOpenSearchServiceDomainMasterUserOptionsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsOpenSearchServiceDomainMasterUserOptionsDetails) GoString() string {
	return s.String()
}

// SetMasterUserArn sets the MasterUserArn field's value.
func (s *AwsOpenSearchServiceDomainMasterUserOptionsDetails) SetMasterUserArn(v string) *AwsOpenSearchServiceDomainMasterUserOptionsDetails {
	s.MasterUserArn = &v
	return s
}

// SetMasterUserName sets the MasterUserName field's value.
func (s *AwsOpenSearchServiceDomainMasterUserOptionsDetails) SetMasterUserName(v string) *AwsOpenSearchServiceDomainMasterUserOptionsDetails {
	s.MasterUserName = &v
	return s
}

// SetMasterUserPassword sets the MasterUserPassword field's value.
func (s *AwsOpenSearchServiceDomainMasterUserOptionsDetails) SetMasterUserPassword(v string) *AwsOpenSearchServiceDomainMasterUserOptionsDetails {
	s.MasterUserPassword = &v
	return s
}

// Provides details about the configuration for node-to-node encryption.
type AwsOpenSearchServiceDomainNodeToNodeEncryptionOptionsDetails struct {
	_ struct{} `type:"structure"`

	// Whether node-to-node encryption is enabled.
	Enabled *bool `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 AwsOpenSearchServiceDomainNodeToNodeEncryptionOptionsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsOpenSearchServiceDomainNodeToNodeEncryptionOptionsDetails) GoString() string {
	return s.String()
}

// SetEnabled sets the Enabled field's value.
func (s *AwsOpenSearchServiceDomainNodeToNodeEncryptionOptionsDetails) SetEnabled(v bool) *AwsOpenSearchServiceDomainNodeToNodeEncryptionOptionsDetails {
	s.Enabled = &v
	return s
}

// Provides information about the state of the domain relative to the latest
// service software.
type AwsOpenSearchServiceDomainServiceSoftwareOptionsDetails struct {
	_ struct{} `type:"structure"`

	// The epoch time when the deployment window closes for required updates. After
	// this time, OpenSearch Service schedules the software upgrade automatically.
	AutomatedUpdateDate *string `type:"string"`

	// Whether a request to update the domain can be canceled.
	Cancellable *bool `type:"boolean"`

	// The version of the service software that is currently installed on the domain.
	CurrentVersion *string `type:"string"`

	// A more detailed description of the service software status.
	Description *string `type:"string"`

	// The most recent version of the service software.
	NewVersion *string `type:"string"`

	// Whether the service software update is optional.
	OptionalDeployment *bool `type:"boolean"`

	// Whether a service software update is available for the domain.
	UpdateAvailable *bool `type:"boolean"`

	// The status of the service software update. Valid values are as follows:
	//
	//    * COMPLETED
	//
	//    * ELIGIBLE
	//
	//    * IN_PROGRESS
	//
	//    * NOT_ELIGIBLE
	//
	//    * PENDING_UPDATE
	UpdateStatus *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsOpenSearchServiceDomainServiceSoftwareOptionsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsOpenSearchServiceDomainServiceSoftwareOptionsDetails) GoString() string {
	return s.String()
}

// SetAutomatedUpdateDate sets the AutomatedUpdateDate field's value.
func (s *AwsOpenSearchServiceDomainServiceSoftwareOptionsDetails) SetAutomatedUpdateDate(v string) *AwsOpenSearchServiceDomainServiceSoftwareOptionsDetails {
	s.AutomatedUpdateDate = &v
	return s
}

// SetCancellable sets the Cancellable field's value.
func (s *AwsOpenSearchServiceDomainServiceSoftwareOptionsDetails) SetCancellable(v bool) *AwsOpenSearchServiceDomainServiceSoftwareOptionsDetails {
	s.Cancellable = &v
	return s
}

// SetCurrentVersion sets the CurrentVersion field's value.
func (s *AwsOpenSearchServiceDomainServiceSoftwareOptionsDetails) SetCurrentVersion(v string) *AwsOpenSearchServiceDomainServiceSoftwareOptionsDetails {
	s.CurrentVersion = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *AwsOpenSearchServiceDomainServiceSoftwareOptionsDetails) SetDescription(v string) *AwsOpenSearchServiceDomainServiceSoftwareOptionsDetails {
	s.Description = &v
	return s
}

// SetNewVersion sets the NewVersion field's value.
func (s *AwsOpenSearchServiceDomainServiceSoftwareOptionsDetails) SetNewVersion(v string) *AwsOpenSearchServiceDomainServiceSoftwareOptionsDetails {
	s.NewVersion = &v
	return s
}

// SetOptionalDeployment sets the OptionalDeployment field's value.
func (s *AwsOpenSearchServiceDomainServiceSoftwareOptionsDetails) SetOptionalDeployment(v bool) *AwsOpenSearchServiceDomainServiceSoftwareOptionsDetails {
	s.OptionalDeployment = &v
	return s
}

// SetUpdateAvailable sets the UpdateAvailable field's value.
func (s *AwsOpenSearchServiceDomainServiceSoftwareOptionsDetails) SetUpdateAvailable(v bool) *AwsOpenSearchServiceDomainServiceSoftwareOptionsDetails {
	s.UpdateAvailable = &v
	return s
}

// SetUpdateStatus sets the UpdateStatus field's value.
func (s *AwsOpenSearchServiceDomainServiceSoftwareOptionsDetails) SetUpdateStatus(v string) *AwsOpenSearchServiceDomainServiceSoftwareOptionsDetails {
	s.UpdateStatus = &v
	return s
}

// Contains information that OpenSearch Service derives based on the VPCOptions
// for the domain.
type AwsOpenSearchServiceDomainVpcOptionsDetails struct {
	_ struct{} `type:"structure"`

	// The list of security group IDs that are associated with the VPC endpoints
	// for the domain.
	SecurityGroupIds []*string `type:"list"`

	// A list of subnet IDs that are associated with the VPC endpoints for the domain.
	SubnetIds []*string `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 AwsOpenSearchServiceDomainVpcOptionsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsOpenSearchServiceDomainVpcOptionsDetails) GoString() string {
	return s.String()
}

// SetSecurityGroupIds sets the SecurityGroupIds field's value.
func (s *AwsOpenSearchServiceDomainVpcOptionsDetails) SetSecurityGroupIds(v []*string) *AwsOpenSearchServiceDomainVpcOptionsDetails {
	s.SecurityGroupIds = v
	return s
}

// SetSubnetIds sets the SubnetIds field's value.
func (s *AwsOpenSearchServiceDomainVpcOptionsDetails) SetSubnetIds(v []*string) *AwsOpenSearchServiceDomainVpcOptionsDetails {
	s.SubnetIds = v
	return s
}

// An IAM role that is associated with the Amazon RDS DB cluster.
type AwsRdsDbClusterAssociatedRole struct {
	_ struct{} `type:"structure"`

	// The ARN of the IAM role.
	RoleArn *string `type:"string"`

	// The status of the association between the IAM role and the DB cluster. Valid
	// values are as follows:
	//
	//    * ACTIVE
	//
	//    * INVALID
	//
	//    * PENDING
	Status *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbClusterAssociatedRole) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbClusterAssociatedRole) GoString() string {
	return s.String()
}

// SetRoleArn sets the RoleArn field's value.
func (s *AwsRdsDbClusterAssociatedRole) SetRoleArn(v string) *AwsRdsDbClusterAssociatedRole {
	s.RoleArn = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsRdsDbClusterAssociatedRole) SetStatus(v string) *AwsRdsDbClusterAssociatedRole {
	s.Status = &v
	return s
}

// Information about an Amazon RDS DB cluster.
type AwsRdsDbClusterDetails struct {
	_ struct{} `type:"structure"`

	// The status of the database activity stream. Valid values are as follows:
	//
	//    * started
	//
	//    * starting
	//
	//    * stopped
	//
	//    * stopping
	ActivityStreamStatus *string `type:"string"`

	// For all database engines except Aurora, specifies the allocated storage size
	// in gibibytes (GiB).
	AllocatedStorage *int64 `type:"integer"`

	// A list of the IAM roles that are associated with the DB cluster.
	AssociatedRoles []*AwsRdsDbClusterAssociatedRole `type:"list"`

	// Indicates if minor version upgrades are automatically applied to the cluster.
	AutoMinorVersionUpgrade *bool `type:"boolean"`

	// A list of Availability Zones (AZs) where instances in the DB cluster can
	// be created.
	AvailabilityZones []*string `type:"list"`

	// The number of days for which automated backups are retained.
	BackupRetentionPeriod *int64 `type:"integer"`

	// Indicates when the DB cluster was created, in Universal Coordinated Time
	// (UTC).
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	ClusterCreateTime *string `type:"string"`

	// Whether tags are copied from the DB cluster to snapshots of the DB cluster.
	CopyTagsToSnapshot *bool `type:"boolean"`

	// Whether the DB cluster is a clone of a DB cluster owned by a different Amazon
	// Web Services account.
	CrossAccountClone *bool `type:"boolean"`

	// A list of custom endpoints for the DB cluster.
	CustomEndpoints []*string `type:"list"`

	// The name of the database.
	DatabaseName *string `type:"string"`

	// The DB cluster identifier that the user assigned to the cluster. This identifier
	// is the unique key that identifies a DB cluster.
	DbClusterIdentifier *string `type:"string"`

	// The list of instances that make up the DB cluster.
	DbClusterMembers []*AwsRdsDbClusterMember `type:"list"`

	// The list of option group memberships for this DB cluster.
	DbClusterOptionGroupMemberships []*AwsRdsDbClusterOptionGroupMembership `type:"list"`

	// The name of the DB cluster parameter group for the DB cluster.
	DbClusterParameterGroup *string `type:"string"`

	// The identifier of the DB cluster. The identifier must be unique within each
	// Amazon Web Services Region and is immutable.
	DbClusterResourceId *string `type:"string"`

	// The subnet group that is associated with the DB cluster, including the name,
	// description, and subnets in the subnet group.
	DbSubnetGroup *string `type:"string"`

	// Whether the DB cluster has deletion protection enabled.
	DeletionProtection *bool `type:"boolean"`

	// The Active Directory domain membership records that are associated with the
	// DB cluster.
	DomainMemberships []*AwsRdsDbDomainMembership `type:"list"`

	// A list of log types that this DB cluster is configured to export to CloudWatch
	// Logs.
	EnabledCloudWatchLogsExports []*string `type:"list"`

	// The connection endpoint for the primary instance of the DB cluster.
	Endpoint *string `type:"string"`

	// The name of the database engine to use for this DB cluster. Valid values
	// are as follows:
	//
	//    * aurora
	//
	//    * aurora-mysql
	//
	//    * aurora-postgresql
	Engine *string `type:"string"`

	// The database engine mode of the DB cluster.Valid values are as follows:
	//
	//    * global
	//
	//    * multimaster
	//
	//    * parallelquery
	//
	//    * provisioned
	//
	//    * serverless
	EngineMode *string `type:"string"`

	// The version number of the database engine to use.
	EngineVersion *string `type:"string"`

	// Specifies the identifier that Amazon Route 53 assigns when you create a hosted
	// zone.
	HostedZoneId *string `type:"string"`

	// Whether the HTTP endpoint for an Aurora Serverless DB cluster is enabled.
	HttpEndpointEnabled *bool `type:"boolean"`

	// Whether the mapping of IAM accounts to database accounts is enabled.
	IamDatabaseAuthenticationEnabled *bool `type:"boolean"`

	// The ARN of the KMS master key that is used to encrypt the database instances
	// in the DB cluster.
	KmsKeyId *string `type:"string"`

	// The name of the master user for the DB cluster.
	MasterUsername *string `type:"string"`

	// Whether the DB cluster has instances in multiple Availability Zones.
	MultiAz *bool `type:"boolean"`

	// The port number on which the DB instances in the DB cluster accept connections.
	Port *int64 `type:"integer"`

	// The range of time each day when automated backups are created, if automated
	// backups are enabled.
	//
	// Uses the format HH:MM-HH:MM. For example, 04:52-05:22.
	PreferredBackupWindow *string `type:"string"`

	// The weekly time range during which system maintenance can occur, in Universal
	// Coordinated Time (UTC).
	//
	// Uses the format <day>:HH:MM-<day>:HH:MM.
	//
	// For the day values, use mon|tue|wed|thu|fri|sat|sun.
	//
	// For example, sun:09:32-sun:10:02.
	PreferredMaintenanceWindow *string `type:"string"`

	// The identifiers of the read replicas that are associated with this DB cluster.
	ReadReplicaIdentifiers []*string `type:"list"`

	// The reader endpoint for the DB cluster.
	ReaderEndpoint *string `type:"string"`

	// The current status of this DB cluster.
	Status *string `type:"string"`

	// Whether the DB cluster is encrypted.
	StorageEncrypted *bool `type:"boolean"`

	// A list of VPC security groups that the DB cluster belongs to.
	VpcSecurityGroups []*AwsRdsDbInstanceVpcSecurityGroup `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 AwsRdsDbClusterDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbClusterDetails) GoString() string {
	return s.String()
}

// SetActivityStreamStatus sets the ActivityStreamStatus field's value.
func (s *AwsRdsDbClusterDetails) SetActivityStreamStatus(v string) *AwsRdsDbClusterDetails {
	s.ActivityStreamStatus = &v
	return s
}

// SetAllocatedStorage sets the AllocatedStorage field's value.
func (s *AwsRdsDbClusterDetails) SetAllocatedStorage(v int64) *AwsRdsDbClusterDetails {
	s.AllocatedStorage = &v
	return s
}

// SetAssociatedRoles sets the AssociatedRoles field's value.
func (s *AwsRdsDbClusterDetails) SetAssociatedRoles(v []*AwsRdsDbClusterAssociatedRole) *AwsRdsDbClusterDetails {
	s.AssociatedRoles = v
	return s
}

// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
func (s *AwsRdsDbClusterDetails) SetAutoMinorVersionUpgrade(v bool) *AwsRdsDbClusterDetails {
	s.AutoMinorVersionUpgrade = &v
	return s
}

// SetAvailabilityZones sets the AvailabilityZones field's value.
func (s *AwsRdsDbClusterDetails) SetAvailabilityZones(v []*string) *AwsRdsDbClusterDetails {
	s.AvailabilityZones = v
	return s
}

// SetBackupRetentionPeriod sets the BackupRetentionPeriod field's value.
func (s *AwsRdsDbClusterDetails) SetBackupRetentionPeriod(v int64) *AwsRdsDbClusterDetails {
	s.BackupRetentionPeriod = &v
	return s
}

// SetClusterCreateTime sets the ClusterCreateTime field's value.
func (s *AwsRdsDbClusterDetails) SetClusterCreateTime(v string) *AwsRdsDbClusterDetails {
	s.ClusterCreateTime = &v
	return s
}

// SetCopyTagsToSnapshot sets the CopyTagsToSnapshot field's value.
func (s *AwsRdsDbClusterDetails) SetCopyTagsToSnapshot(v bool) *AwsRdsDbClusterDetails {
	s.CopyTagsToSnapshot = &v
	return s
}

// SetCrossAccountClone sets the CrossAccountClone field's value.
func (s *AwsRdsDbClusterDetails) SetCrossAccountClone(v bool) *AwsRdsDbClusterDetails {
	s.CrossAccountClone = &v
	return s
}

// SetCustomEndpoints sets the CustomEndpoints field's value.
func (s *AwsRdsDbClusterDetails) SetCustomEndpoints(v []*string) *AwsRdsDbClusterDetails {
	s.CustomEndpoints = v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *AwsRdsDbClusterDetails) SetDatabaseName(v string) *AwsRdsDbClusterDetails {
	s.DatabaseName = &v
	return s
}

// SetDbClusterIdentifier sets the DbClusterIdentifier field's value.
func (s *AwsRdsDbClusterDetails) SetDbClusterIdentifier(v string) *AwsRdsDbClusterDetails {
	s.DbClusterIdentifier = &v
	return s
}

// SetDbClusterMembers sets the DbClusterMembers field's value.
func (s *AwsRdsDbClusterDetails) SetDbClusterMembers(v []*AwsRdsDbClusterMember) *AwsRdsDbClusterDetails {
	s.DbClusterMembers = v
	return s
}

// SetDbClusterOptionGroupMemberships sets the DbClusterOptionGroupMemberships field's value.
func (s *AwsRdsDbClusterDetails) SetDbClusterOptionGroupMemberships(v []*AwsRdsDbClusterOptionGroupMembership) *AwsRdsDbClusterDetails {
	s.DbClusterOptionGroupMemberships = v
	return s
}

// SetDbClusterParameterGroup sets the DbClusterParameterGroup field's value.
func (s *AwsRdsDbClusterDetails) SetDbClusterParameterGroup(v string) *AwsRdsDbClusterDetails {
	s.DbClusterParameterGroup = &v
	return s
}

// SetDbClusterResourceId sets the DbClusterResourceId field's value.
func (s *AwsRdsDbClusterDetails) SetDbClusterResourceId(v string) *AwsRdsDbClusterDetails {
	s.DbClusterResourceId = &v
	return s
}

// SetDbSubnetGroup sets the DbSubnetGroup field's value.
func (s *AwsRdsDbClusterDetails) SetDbSubnetGroup(v string) *AwsRdsDbClusterDetails {
	s.DbSubnetGroup = &v
	return s
}

// SetDeletionProtection sets the DeletionProtection field's value.
func (s *AwsRdsDbClusterDetails) SetDeletionProtection(v bool) *AwsRdsDbClusterDetails {
	s.DeletionProtection = &v
	return s
}

// SetDomainMemberships sets the DomainMemberships field's value.
func (s *AwsRdsDbClusterDetails) SetDomainMemberships(v []*AwsRdsDbDomainMembership) *AwsRdsDbClusterDetails {
	s.DomainMemberships = v
	return s
}

// SetEnabledCloudWatchLogsExports sets the EnabledCloudWatchLogsExports field's value.
func (s *AwsRdsDbClusterDetails) SetEnabledCloudWatchLogsExports(v []*string) *AwsRdsDbClusterDetails {
	s.EnabledCloudWatchLogsExports = v
	return s
}

// SetEndpoint sets the Endpoint field's value.
func (s *AwsRdsDbClusterDetails) SetEndpoint(v string) *AwsRdsDbClusterDetails {
	s.Endpoint = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *AwsRdsDbClusterDetails) SetEngine(v string) *AwsRdsDbClusterDetails {
	s.Engine = &v
	return s
}

// SetEngineMode sets the EngineMode field's value.
func (s *AwsRdsDbClusterDetails) SetEngineMode(v string) *AwsRdsDbClusterDetails {
	s.EngineMode = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *AwsRdsDbClusterDetails) SetEngineVersion(v string) *AwsRdsDbClusterDetails {
	s.EngineVersion = &v
	return s
}

// SetHostedZoneId sets the HostedZoneId field's value.
func (s *AwsRdsDbClusterDetails) SetHostedZoneId(v string) *AwsRdsDbClusterDetails {
	s.HostedZoneId = &v
	return s
}

// SetHttpEndpointEnabled sets the HttpEndpointEnabled field's value.
func (s *AwsRdsDbClusterDetails) SetHttpEndpointEnabled(v bool) *AwsRdsDbClusterDetails {
	s.HttpEndpointEnabled = &v
	return s
}

// SetIamDatabaseAuthenticationEnabled sets the IamDatabaseAuthenticationEnabled field's value.
func (s *AwsRdsDbClusterDetails) SetIamDatabaseAuthenticationEnabled(v bool) *AwsRdsDbClusterDetails {
	s.IamDatabaseAuthenticationEnabled = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *AwsRdsDbClusterDetails) SetKmsKeyId(v string) *AwsRdsDbClusterDetails {
	s.KmsKeyId = &v
	return s
}

// SetMasterUsername sets the MasterUsername field's value.
func (s *AwsRdsDbClusterDetails) SetMasterUsername(v string) *AwsRdsDbClusterDetails {
	s.MasterUsername = &v
	return s
}

// SetMultiAz sets the MultiAz field's value.
func (s *AwsRdsDbClusterDetails) SetMultiAz(v bool) *AwsRdsDbClusterDetails {
	s.MultiAz = &v
	return s
}

// SetPort sets the Port field's value.
func (s *AwsRdsDbClusterDetails) SetPort(v int64) *AwsRdsDbClusterDetails {
	s.Port = &v
	return s
}

// SetPreferredBackupWindow sets the PreferredBackupWindow field's value.
func (s *AwsRdsDbClusterDetails) SetPreferredBackupWindow(v string) *AwsRdsDbClusterDetails {
	s.PreferredBackupWindow = &v
	return s
}

// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
func (s *AwsRdsDbClusterDetails) SetPreferredMaintenanceWindow(v string) *AwsRdsDbClusterDetails {
	s.PreferredMaintenanceWindow = &v
	return s
}

// SetReadReplicaIdentifiers sets the ReadReplicaIdentifiers field's value.
func (s *AwsRdsDbClusterDetails) SetReadReplicaIdentifiers(v []*string) *AwsRdsDbClusterDetails {
	s.ReadReplicaIdentifiers = v
	return s
}

// SetReaderEndpoint sets the ReaderEndpoint field's value.
func (s *AwsRdsDbClusterDetails) SetReaderEndpoint(v string) *AwsRdsDbClusterDetails {
	s.ReaderEndpoint = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsRdsDbClusterDetails) SetStatus(v string) *AwsRdsDbClusterDetails {
	s.Status = &v
	return s
}

// SetStorageEncrypted sets the StorageEncrypted field's value.
func (s *AwsRdsDbClusterDetails) SetStorageEncrypted(v bool) *AwsRdsDbClusterDetails {
	s.StorageEncrypted = &v
	return s
}

// SetVpcSecurityGroups sets the VpcSecurityGroups field's value.
func (s *AwsRdsDbClusterDetails) SetVpcSecurityGroups(v []*AwsRdsDbInstanceVpcSecurityGroup) *AwsRdsDbClusterDetails {
	s.VpcSecurityGroups = v
	return s
}

// Information about an instance in the DB cluster.
type AwsRdsDbClusterMember struct {
	_ struct{} `type:"structure"`

	// The status of the DB cluster parameter group for this member of the DB cluster.
	DbClusterParameterGroupStatus *string `type:"string"`

	// The instance identifier for this member of the DB cluster.
	DbInstanceIdentifier *string `type:"string"`

	// Whether the cluster member is the primary instance for the DB cluster.
	IsClusterWriter *bool `type:"boolean"`

	// Specifies the order in which an Aurora replica is promoted to the primary
	// instance when the existing primary instance fails.
	PromotionTier *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbClusterMember) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbClusterMember) GoString() string {
	return s.String()
}

// SetDbClusterParameterGroupStatus sets the DbClusterParameterGroupStatus field's value.
func (s *AwsRdsDbClusterMember) SetDbClusterParameterGroupStatus(v string) *AwsRdsDbClusterMember {
	s.DbClusterParameterGroupStatus = &v
	return s
}

// SetDbInstanceIdentifier sets the DbInstanceIdentifier field's value.
func (s *AwsRdsDbClusterMember) SetDbInstanceIdentifier(v string) *AwsRdsDbClusterMember {
	s.DbInstanceIdentifier = &v
	return s
}

// SetIsClusterWriter sets the IsClusterWriter field's value.
func (s *AwsRdsDbClusterMember) SetIsClusterWriter(v bool) *AwsRdsDbClusterMember {
	s.IsClusterWriter = &v
	return s
}

// SetPromotionTier sets the PromotionTier field's value.
func (s *AwsRdsDbClusterMember) SetPromotionTier(v int64) *AwsRdsDbClusterMember {
	s.PromotionTier = &v
	return s
}

// Information about an option group membership for a DB cluster.
type AwsRdsDbClusterOptionGroupMembership struct {
	_ struct{} `type:"structure"`

	// The name of the DB cluster option group.
	DbClusterOptionGroupName *string `type:"string"`

	// The status of the DB cluster option group.
	Status *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbClusterOptionGroupMembership) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbClusterOptionGroupMembership) GoString() string {
	return s.String()
}

// SetDbClusterOptionGroupName sets the DbClusterOptionGroupName field's value.
func (s *AwsRdsDbClusterOptionGroupMembership) SetDbClusterOptionGroupName(v string) *AwsRdsDbClusterOptionGroupMembership {
	s.DbClusterOptionGroupName = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsRdsDbClusterOptionGroupMembership) SetStatus(v string) *AwsRdsDbClusterOptionGroupMembership {
	s.Status = &v
	return s
}

// Contains the name and values of a manual Amazon Relational Database Service
// (RDS) DB cluster snapshot attribute.
type AwsRdsDbClusterSnapshotDbClusterSnapshotAttribute struct {
	_ struct{} `type:"structure"`

	// The name of the manual DB cluster snapshot attribute. The attribute named
	// restore refers to the list of Amazon Web Services accounts that have permission
	// to copy or restore the manual DB cluster snapshot.
	AttributeName *string `type:"string"`

	// The value(s) for the manual DB cluster snapshot attribute. If the AttributeName
	// field is set to restore, then this element returns a list of IDs of the Amazon
	// Web Services accounts that are authorized to copy or restore the manual DB
	// cluster snapshot. If a value of all is in the list, then the manual DB cluster
	// snapshot is public and available for any Amazon Web Services account to copy
	// or restore.
	AttributeValues []*string `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 AwsRdsDbClusterSnapshotDbClusterSnapshotAttribute) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbClusterSnapshotDbClusterSnapshotAttribute) GoString() string {
	return s.String()
}

// SetAttributeName sets the AttributeName field's value.
func (s *AwsRdsDbClusterSnapshotDbClusterSnapshotAttribute) SetAttributeName(v string) *AwsRdsDbClusterSnapshotDbClusterSnapshotAttribute {
	s.AttributeName = &v
	return s
}

// SetAttributeValues sets the AttributeValues field's value.
func (s *AwsRdsDbClusterSnapshotDbClusterSnapshotAttribute) SetAttributeValues(v []*string) *AwsRdsDbClusterSnapshotDbClusterSnapshotAttribute {
	s.AttributeValues = v
	return s
}

// Information about an Amazon RDS DB cluster snapshot.
type AwsRdsDbClusterSnapshotDetails struct {
	_ struct{} `type:"structure"`

	// Specifies the allocated storage size in gibibytes (GiB).
	AllocatedStorage *int64 `type:"integer"`

	// A list of Availability Zones where instances in the DB cluster can be created.
	AvailabilityZones []*string `type:"list"`

	// Indicates when the DB cluster was created, in Universal Coordinated Time
	// (UTC).
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	ClusterCreateTime *string `type:"string"`

	// The DB cluster identifier.
	DbClusterIdentifier *string `type:"string"`

	// Contains the name and values of a manual DB cluster snapshot attribute.
	DbClusterSnapshotAttributes []*AwsRdsDbClusterSnapshotDbClusterSnapshotAttribute `type:"list"`

	// The identifier of the DB cluster snapshot.
	DbClusterSnapshotIdentifier *string `type:"string"`

	// The name of the database engine that you want to use for this DB instance.
	Engine *string `type:"string"`

	// The version of the database engine to use.
	EngineVersion *string `type:"string"`

	// Whether mapping of IAM accounts to database accounts is enabled.
	IamDatabaseAuthenticationEnabled *bool `type:"boolean"`

	// The ARN of the KMS master key that is used to encrypt the database instances
	// in the DB cluster.
	KmsKeyId *string `type:"string"`

	// The license model information for this DB cluster snapshot.
	LicenseModel *string `type:"string"`

	// The name of the master user for the DB cluster.
	MasterUsername *string `type:"string"`

	// Specifies the percentage of the estimated data that has been transferred.
	PercentProgress *int64 `type:"integer"`

	// The port number on which the DB instances in the DB cluster accept connections.
	Port *int64 `type:"integer"`

	// Indicates when the snapshot was taken.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	SnapshotCreateTime *string `type:"string"`

	// The type of DB cluster snapshot.
	SnapshotType *string `type:"string"`

	// The status of this DB cluster snapshot.
	Status *string `type:"string"`

	// Whether the DB cluster is encrypted.
	StorageEncrypted *bool `type:"boolean"`

	// The VPC ID that is associated with the DB cluster snapshot.
	VpcId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbClusterSnapshotDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbClusterSnapshotDetails) GoString() string {
	return s.String()
}

// SetAllocatedStorage sets the AllocatedStorage field's value.
func (s *AwsRdsDbClusterSnapshotDetails) SetAllocatedStorage(v int64) *AwsRdsDbClusterSnapshotDetails {
	s.AllocatedStorage = &v
	return s
}

// SetAvailabilityZones sets the AvailabilityZones field's value.
func (s *AwsRdsDbClusterSnapshotDetails) SetAvailabilityZones(v []*string) *AwsRdsDbClusterSnapshotDetails {
	s.AvailabilityZones = v
	return s
}

// SetClusterCreateTime sets the ClusterCreateTime field's value.
func (s *AwsRdsDbClusterSnapshotDetails) SetClusterCreateTime(v string) *AwsRdsDbClusterSnapshotDetails {
	s.ClusterCreateTime = &v
	return s
}

// SetDbClusterIdentifier sets the DbClusterIdentifier field's value.
func (s *AwsRdsDbClusterSnapshotDetails) SetDbClusterIdentifier(v string) *AwsRdsDbClusterSnapshotDetails {
	s.DbClusterIdentifier = &v
	return s
}

// SetDbClusterSnapshotAttributes sets the DbClusterSnapshotAttributes field's value.
func (s *AwsRdsDbClusterSnapshotDetails) SetDbClusterSnapshotAttributes(v []*AwsRdsDbClusterSnapshotDbClusterSnapshotAttribute) *AwsRdsDbClusterSnapshotDetails {
	s.DbClusterSnapshotAttributes = v
	return s
}

// SetDbClusterSnapshotIdentifier sets the DbClusterSnapshotIdentifier field's value.
func (s *AwsRdsDbClusterSnapshotDetails) SetDbClusterSnapshotIdentifier(v string) *AwsRdsDbClusterSnapshotDetails {
	s.DbClusterSnapshotIdentifier = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *AwsRdsDbClusterSnapshotDetails) SetEngine(v string) *AwsRdsDbClusterSnapshotDetails {
	s.Engine = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *AwsRdsDbClusterSnapshotDetails) SetEngineVersion(v string) *AwsRdsDbClusterSnapshotDetails {
	s.EngineVersion = &v
	return s
}

// SetIamDatabaseAuthenticationEnabled sets the IamDatabaseAuthenticationEnabled field's value.
func (s *AwsRdsDbClusterSnapshotDetails) SetIamDatabaseAuthenticationEnabled(v bool) *AwsRdsDbClusterSnapshotDetails {
	s.IamDatabaseAuthenticationEnabled = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *AwsRdsDbClusterSnapshotDetails) SetKmsKeyId(v string) *AwsRdsDbClusterSnapshotDetails {
	s.KmsKeyId = &v
	return s
}

// SetLicenseModel sets the LicenseModel field's value.
func (s *AwsRdsDbClusterSnapshotDetails) SetLicenseModel(v string) *AwsRdsDbClusterSnapshotDetails {
	s.LicenseModel = &v
	return s
}

// SetMasterUsername sets the MasterUsername field's value.
func (s *AwsRdsDbClusterSnapshotDetails) SetMasterUsername(v string) *AwsRdsDbClusterSnapshotDetails {
	s.MasterUsername = &v
	return s
}

// SetPercentProgress sets the PercentProgress field's value.
func (s *AwsRdsDbClusterSnapshotDetails) SetPercentProgress(v int64) *AwsRdsDbClusterSnapshotDetails {
	s.PercentProgress = &v
	return s
}

// SetPort sets the Port field's value.
func (s *AwsRdsDbClusterSnapshotDetails) SetPort(v int64) *AwsRdsDbClusterSnapshotDetails {
	s.Port = &v
	return s
}

// SetSnapshotCreateTime sets the SnapshotCreateTime field's value.
func (s *AwsRdsDbClusterSnapshotDetails) SetSnapshotCreateTime(v string) *AwsRdsDbClusterSnapshotDetails {
	s.SnapshotCreateTime = &v
	return s
}

// SetSnapshotType sets the SnapshotType field's value.
func (s *AwsRdsDbClusterSnapshotDetails) SetSnapshotType(v string) *AwsRdsDbClusterSnapshotDetails {
	s.SnapshotType = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsRdsDbClusterSnapshotDetails) SetStatus(v string) *AwsRdsDbClusterSnapshotDetails {
	s.Status = &v
	return s
}

// SetStorageEncrypted sets the StorageEncrypted field's value.
func (s *AwsRdsDbClusterSnapshotDetails) SetStorageEncrypted(v bool) *AwsRdsDbClusterSnapshotDetails {
	s.StorageEncrypted = &v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *AwsRdsDbClusterSnapshotDetails) SetVpcId(v string) *AwsRdsDbClusterSnapshotDetails {
	s.VpcId = &v
	return s
}

// Information about an Active Directory domain membership record associated
// with the DB instance.
type AwsRdsDbDomainMembership struct {
	_ struct{} `type:"structure"`

	// The identifier of the Active Directory domain.
	Domain *string `type:"string"`

	// The fully qualified domain name of the Active Directory domain.
	Fqdn *string `type:"string"`

	// The name of the IAM role to use when making API calls to the Directory Service.
	IamRoleName *string `type:"string"`

	// The status of the Active Directory Domain membership for the DB instance.
	Status *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbDomainMembership) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbDomainMembership) GoString() string {
	return s.String()
}

// SetDomain sets the Domain field's value.
func (s *AwsRdsDbDomainMembership) SetDomain(v string) *AwsRdsDbDomainMembership {
	s.Domain = &v
	return s
}

// SetFqdn sets the Fqdn field's value.
func (s *AwsRdsDbDomainMembership) SetFqdn(v string) *AwsRdsDbDomainMembership {
	s.Fqdn = &v
	return s
}

// SetIamRoleName sets the IamRoleName field's value.
func (s *AwsRdsDbDomainMembership) SetIamRoleName(v string) *AwsRdsDbDomainMembership {
	s.IamRoleName = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsRdsDbDomainMembership) SetStatus(v string) *AwsRdsDbDomainMembership {
	s.Status = &v
	return s
}

// An IAM role associated with the DB instance.
type AwsRdsDbInstanceAssociatedRole struct {
	_ struct{} `type:"structure"`

	// The name of the feature associated with the IAM role.
	FeatureName *string `type:"string"`

	// The ARN of the IAM role that is associated with the DB instance.
	RoleArn *string `type:"string"`

	// Describes the state of the association between the IAM role and the DB instance.
	// The Status property returns one of the following values:
	//
	//    * ACTIVE - The IAM role ARN is associated with the DB instance and can
	//    be used to access other Amazon Web Services services on your behalf.
	//
	//    * PENDING - The IAM role ARN is being associated with the DB instance.
	//
	//    * INVALID - The IAM role ARN is associated with the DB instance. But the
	//    DB instance is unable to assume the IAM role in order to access other
	//    Amazon Web Services services on your behalf.
	Status *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbInstanceAssociatedRole) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbInstanceAssociatedRole) GoString() string {
	return s.String()
}

// SetFeatureName sets the FeatureName field's value.
func (s *AwsRdsDbInstanceAssociatedRole) SetFeatureName(v string) *AwsRdsDbInstanceAssociatedRole {
	s.FeatureName = &v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *AwsRdsDbInstanceAssociatedRole) SetRoleArn(v string) *AwsRdsDbInstanceAssociatedRole {
	s.RoleArn = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsRdsDbInstanceAssociatedRole) SetStatus(v string) *AwsRdsDbInstanceAssociatedRole {
	s.Status = &v
	return s
}

// Contains the details of an Amazon RDS DB instance.
type AwsRdsDbInstanceDetails struct {
	_ struct{} `type:"structure"`

	// The amount of storage (in gigabytes) to initially allocate for the DB instance.
	AllocatedStorage *int64 `type:"integer"`

	// The IAM roles associated with the DB instance.
	AssociatedRoles []*AwsRdsDbInstanceAssociatedRole `type:"list"`

	// Indicates whether minor version patches are applied automatically.
	AutoMinorVersionUpgrade *bool `type:"boolean"`

	// The Availability Zone where the DB instance will be created.
	AvailabilityZone *string `type:"string"`

	// The number of days for which to retain automated backups.
	BackupRetentionPeriod *int64 `type:"integer"`

	// The identifier of the CA certificate for this DB instance.
	CACertificateIdentifier *string `type:"string"`

	// The name of the character set that this DB instance is associated with.
	CharacterSetName *string `type:"string"`

	// Whether to copy resource tags to snapshots of the DB instance.
	CopyTagsToSnapshot *bool `type:"boolean"`

	// If the DB instance is a member of a DB cluster, contains the name of the
	// DB cluster that the DB instance is a member of.
	DBClusterIdentifier *string `type:"string"`

	// Contains the name of the compute and memory capacity class of the DB instance.
	DBInstanceClass *string `type:"string"`

	// Contains a user-supplied database identifier. This identifier is the unique
	// key that identifies a DB instance.
	DBInstanceIdentifier *string `type:"string"`

	// The meaning of this parameter differs according to the database engine you
	// use.
	//
	// MySQL, MariaDB, SQL Server, PostgreSQL
	//
	// Contains the name of the initial database of this instance that was provided
	// at create time, if one was specified when the DB instance was created. This
	// same name is returned for the life of the DB instance.
	//
	// Oracle
	//
	// Contains the Oracle System ID (SID) of the created DB instance. Not shown
	// when the returned parameters do not apply to an Oracle DB instance.
	DBName *string `type:"string"`

	// Specifies the port that the DB instance listens on. If the DB instance is
	// part of a DB cluster, this can be a different port than the DB cluster port.
	DbInstancePort *int64 `type:"integer"`

	// The current status of the DB instance.
	DbInstanceStatus *string `type:"string"`

	// A list of the DB parameter groups to assign to the DB instance.
	DbParameterGroups []*AwsRdsDbParameterGroup `type:"list"`

	// A list of the DB security groups to assign to the DB instance.
	DbSecurityGroups []*string `type:"list"`

	// Information about the subnet group that is associated with the DB instance.
	DbSubnetGroup *AwsRdsDbSubnetGroup `type:"structure"`

	// The Amazon Web Services Region-unique, immutable identifier for the DB instance.
	// This identifier is found in CloudTrail log entries whenever the KMS key for
	// the DB instance is accessed.
	DbiResourceId *string `type:"string"`

	// Indicates whether the DB instance has deletion protection enabled.
	//
	// When deletion protection is enabled, the database cannot be deleted.
	DeletionProtection *bool `type:"boolean"`

	// The Active Directory domain membership records associated with the DB instance.
	DomainMemberships []*AwsRdsDbDomainMembership `type:"list"`

	// A list of log types that this DB instance is configured to export to CloudWatch
	// Logs.
	EnabledCloudWatchLogsExports []*string `type:"list"`

	// Specifies the connection endpoint.
	Endpoint *AwsRdsDbInstanceEndpoint `type:"structure"`

	// Provides the name of the database engine to use for this DB instance.
	Engine *string `type:"string"`

	// Indicates the database engine version.
	EngineVersion *string `type:"string"`

	// The ARN of the CloudWatch Logs log stream that receives the enhanced monitoring
	// metrics data for the DB instance.
	EnhancedMonitoringResourceArn *string `type:"string"`

	// True if mapping of IAM accounts to database accounts is enabled, and otherwise
	// false.
	//
	// IAM database authentication can be enabled for the following database engines.
	//
	//    * For MySQL 5.6, minor version 5.6.34 or higher
	//
	//    * For MySQL 5.7, minor version 5.7.16 or higher
	//
	//    * Aurora 5.6 or higher
	IAMDatabaseAuthenticationEnabled *bool `type:"boolean"`

	// Indicates when the DB instance was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	InstanceCreateTime *string `type:"string"`

	// Specifies the provisioned IOPS (I/O operations per second) for this DB instance.
	Iops *int64 `type:"integer"`

	// If StorageEncrypted is true, the KMS key identifier for the encrypted DB
	// instance.
	KmsKeyId *string `type:"string"`

	// Specifies the latest time to which a database can be restored with point-in-time
	// restore.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	LatestRestorableTime *string `type:"string"`

	// License model information for this DB instance.
	LicenseModel *string `type:"string"`

	// Specifies the connection endpoint.
	ListenerEndpoint *AwsRdsDbInstanceEndpoint `type:"structure"`

	// The master user name of the DB instance.
	MasterUsername *string `type:"string"`

	// The upper limit to which Amazon RDS can automatically scale the storage of
	// the DB instance.
	MaxAllocatedStorage *int64 `type:"integer"`

	// The interval, in seconds, between points when enhanced monitoring metrics
	// are collected for the DB instance.
	MonitoringInterval *int64 `type:"integer"`

	// The ARN for the IAM role that permits Amazon RDS to send enhanced monitoring
	// metrics to CloudWatch Logs.
	MonitoringRoleArn *string `type:"string"`

	// Whether the DB instance is a multiple Availability Zone deployment.
	MultiAz *bool `type:"boolean"`

	// The list of option group memberships for this DB instance.
	OptionGroupMemberships []*AwsRdsDbOptionGroupMembership `type:"list"`

	// Changes to the DB instance that are currently pending.
	PendingModifiedValues *AwsRdsDbPendingModifiedValues `type:"structure"`

	// Indicates whether Performance Insights is enabled for the DB instance.
	PerformanceInsightsEnabled *bool `type:"boolean"`

	// The identifier of the KMS key used to encrypt the Performance Insights data.
	PerformanceInsightsKmsKeyId *string `type:"string"`

	// The number of days to retain Performance Insights data.
	PerformanceInsightsRetentionPeriod *int64 `type:"integer"`

	// The range of time each day when automated backups are created, if automated
	// backups are enabled.
	//
	// Uses the format HH:MM-HH:MM. For example, 04:52-05:22.
	PreferredBackupWindow *string `type:"string"`

	// The weekly time range during which system maintenance can occur, in Universal
	// Coordinated Time (UTC).
	//
	// Uses the format <day>:HH:MM-<day>:HH:MM.
	//
	// For the day values, use mon|tue|wed|thu|fri|sat|sun.
	//
	// For example, sun:09:32-sun:10:02.
	PreferredMaintenanceWindow *string `type:"string"`

	// The number of CPU cores and the number of threads per core for the DB instance
	// class of the DB instance.
	ProcessorFeatures []*AwsRdsDbProcessorFeature `type:"list"`

	// The order in which to promote an Aurora replica to the primary instance after
	// a failure of the existing primary instance.
	PromotionTier *int64 `type:"integer"`

	// Specifies the accessibility options for the DB instance.
	//
	// A value of true specifies an Internet-facing instance with a publicly resolvable
	// DNS name, which resolves to a public IP address.
	//
	// A value of false specifies an internal instance with a DNS name that resolves
	// to a private IP address.
	PubliclyAccessible *bool `type:"boolean"`

	// List of identifiers of Aurora DB clusters to which the RDS DB instance is
	// replicated as a read replica.
	ReadReplicaDBClusterIdentifiers []*string `type:"list"`

	// List of identifiers of the read replicas associated with this DB instance.
	ReadReplicaDBInstanceIdentifiers []*string `type:"list"`

	// If this DB instance is a read replica, contains the identifier of the source
	// DB instance.
	ReadReplicaSourceDBInstanceIdentifier *string `type:"string"`

	// For a DB instance with multi-Availability Zone support, the name of the secondary
	// Availability Zone.
	SecondaryAvailabilityZone *string `type:"string"`

	// The status of a read replica. If the instance isn't a read replica, this
	// is empty.
	StatusInfos []*AwsRdsDbStatusInfo `type:"list"`

	// Specifies whether the DB instance is encrypted.
	StorageEncrypted *bool `type:"boolean"`

	// The storage type for the DB instance.
	StorageType *string `type:"string"`

	// The ARN from the key store with which the instance is associated for TDE
	// encryption.
	TdeCredentialArn *string `type:"string"`

	// The time zone of the DB instance.
	Timezone *string `type:"string"`

	// A list of VPC security groups that the DB instance belongs to.
	VpcSecurityGroups []*AwsRdsDbInstanceVpcSecurityGroup `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 AwsRdsDbInstanceDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbInstanceDetails) GoString() string {
	return s.String()
}

// SetAllocatedStorage sets the AllocatedStorage field's value.
func (s *AwsRdsDbInstanceDetails) SetAllocatedStorage(v int64) *AwsRdsDbInstanceDetails {
	s.AllocatedStorage = &v
	return s
}

// SetAssociatedRoles sets the AssociatedRoles field's value.
func (s *AwsRdsDbInstanceDetails) SetAssociatedRoles(v []*AwsRdsDbInstanceAssociatedRole) *AwsRdsDbInstanceDetails {
	s.AssociatedRoles = v
	return s
}

// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
func (s *AwsRdsDbInstanceDetails) SetAutoMinorVersionUpgrade(v bool) *AwsRdsDbInstanceDetails {
	s.AutoMinorVersionUpgrade = &v
	return s
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *AwsRdsDbInstanceDetails) SetAvailabilityZone(v string) *AwsRdsDbInstanceDetails {
	s.AvailabilityZone = &v
	return s
}

// SetBackupRetentionPeriod sets the BackupRetentionPeriod field's value.
func (s *AwsRdsDbInstanceDetails) SetBackupRetentionPeriod(v int64) *AwsRdsDbInstanceDetails {
	s.BackupRetentionPeriod = &v
	return s
}

// SetCACertificateIdentifier sets the CACertificateIdentifier field's value.
func (s *AwsRdsDbInstanceDetails) SetCACertificateIdentifier(v string) *AwsRdsDbInstanceDetails {
	s.CACertificateIdentifier = &v
	return s
}

// SetCharacterSetName sets the CharacterSetName field's value.
func (s *AwsRdsDbInstanceDetails) SetCharacterSetName(v string) *AwsRdsDbInstanceDetails {
	s.CharacterSetName = &v
	return s
}

// SetCopyTagsToSnapshot sets the CopyTagsToSnapshot field's value.
func (s *AwsRdsDbInstanceDetails) SetCopyTagsToSnapshot(v bool) *AwsRdsDbInstanceDetails {
	s.CopyTagsToSnapshot = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *AwsRdsDbInstanceDetails) SetDBClusterIdentifier(v string) *AwsRdsDbInstanceDetails {
	s.DBClusterIdentifier = &v
	return s
}

// SetDBInstanceClass sets the DBInstanceClass field's value.
func (s *AwsRdsDbInstanceDetails) SetDBInstanceClass(v string) *AwsRdsDbInstanceDetails {
	s.DBInstanceClass = &v
	return s
}

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *AwsRdsDbInstanceDetails) SetDBInstanceIdentifier(v string) *AwsRdsDbInstanceDetails {
	s.DBInstanceIdentifier = &v
	return s
}

// SetDBName sets the DBName field's value.
func (s *AwsRdsDbInstanceDetails) SetDBName(v string) *AwsRdsDbInstanceDetails {
	s.DBName = &v
	return s
}

// SetDbInstancePort sets the DbInstancePort field's value.
func (s *AwsRdsDbInstanceDetails) SetDbInstancePort(v int64) *AwsRdsDbInstanceDetails {
	s.DbInstancePort = &v
	return s
}

// SetDbInstanceStatus sets the DbInstanceStatus field's value.
func (s *AwsRdsDbInstanceDetails) SetDbInstanceStatus(v string) *AwsRdsDbInstanceDetails {
	s.DbInstanceStatus = &v
	return s
}

// SetDbParameterGroups sets the DbParameterGroups field's value.
func (s *AwsRdsDbInstanceDetails) SetDbParameterGroups(v []*AwsRdsDbParameterGroup) *AwsRdsDbInstanceDetails {
	s.DbParameterGroups = v
	return s
}

// SetDbSecurityGroups sets the DbSecurityGroups field's value.
func (s *AwsRdsDbInstanceDetails) SetDbSecurityGroups(v []*string) *AwsRdsDbInstanceDetails {
	s.DbSecurityGroups = v
	return s
}

// SetDbSubnetGroup sets the DbSubnetGroup field's value.
func (s *AwsRdsDbInstanceDetails) SetDbSubnetGroup(v *AwsRdsDbSubnetGroup) *AwsRdsDbInstanceDetails {
	s.DbSubnetGroup = v
	return s
}

// SetDbiResourceId sets the DbiResourceId field's value.
func (s *AwsRdsDbInstanceDetails) SetDbiResourceId(v string) *AwsRdsDbInstanceDetails {
	s.DbiResourceId = &v
	return s
}

// SetDeletionProtection sets the DeletionProtection field's value.
func (s *AwsRdsDbInstanceDetails) SetDeletionProtection(v bool) *AwsRdsDbInstanceDetails {
	s.DeletionProtection = &v
	return s
}

// SetDomainMemberships sets the DomainMemberships field's value.
func (s *AwsRdsDbInstanceDetails) SetDomainMemberships(v []*AwsRdsDbDomainMembership) *AwsRdsDbInstanceDetails {
	s.DomainMemberships = v
	return s
}

// SetEnabledCloudWatchLogsExports sets the EnabledCloudWatchLogsExports field's value.
func (s *AwsRdsDbInstanceDetails) SetEnabledCloudWatchLogsExports(v []*string) *AwsRdsDbInstanceDetails {
	s.EnabledCloudWatchLogsExports = v
	return s
}

// SetEndpoint sets the Endpoint field's value.
func (s *AwsRdsDbInstanceDetails) SetEndpoint(v *AwsRdsDbInstanceEndpoint) *AwsRdsDbInstanceDetails {
	s.Endpoint = v
	return s
}

// SetEngine sets the Engine field's value.
func (s *AwsRdsDbInstanceDetails) SetEngine(v string) *AwsRdsDbInstanceDetails {
	s.Engine = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *AwsRdsDbInstanceDetails) SetEngineVersion(v string) *AwsRdsDbInstanceDetails {
	s.EngineVersion = &v
	return s
}

// SetEnhancedMonitoringResourceArn sets the EnhancedMonitoringResourceArn field's value.
func (s *AwsRdsDbInstanceDetails) SetEnhancedMonitoringResourceArn(v string) *AwsRdsDbInstanceDetails {
	s.EnhancedMonitoringResourceArn = &v
	return s
}

// SetIAMDatabaseAuthenticationEnabled sets the IAMDatabaseAuthenticationEnabled field's value.
func (s *AwsRdsDbInstanceDetails) SetIAMDatabaseAuthenticationEnabled(v bool) *AwsRdsDbInstanceDetails {
	s.IAMDatabaseAuthenticationEnabled = &v
	return s
}

// SetInstanceCreateTime sets the InstanceCreateTime field's value.
func (s *AwsRdsDbInstanceDetails) SetInstanceCreateTime(v string) *AwsRdsDbInstanceDetails {
	s.InstanceCreateTime = &v
	return s
}

// SetIops sets the Iops field's value.
func (s *AwsRdsDbInstanceDetails) SetIops(v int64) *AwsRdsDbInstanceDetails {
	s.Iops = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *AwsRdsDbInstanceDetails) SetKmsKeyId(v string) *AwsRdsDbInstanceDetails {
	s.KmsKeyId = &v
	return s
}

// SetLatestRestorableTime sets the LatestRestorableTime field's value.
func (s *AwsRdsDbInstanceDetails) SetLatestRestorableTime(v string) *AwsRdsDbInstanceDetails {
	s.LatestRestorableTime = &v
	return s
}

// SetLicenseModel sets the LicenseModel field's value.
func (s *AwsRdsDbInstanceDetails) SetLicenseModel(v string) *AwsRdsDbInstanceDetails {
	s.LicenseModel = &v
	return s
}

// SetListenerEndpoint sets the ListenerEndpoint field's value.
func (s *AwsRdsDbInstanceDetails) SetListenerEndpoint(v *AwsRdsDbInstanceEndpoint) *AwsRdsDbInstanceDetails {
	s.ListenerEndpoint = v
	return s
}

// SetMasterUsername sets the MasterUsername field's value.
func (s *AwsRdsDbInstanceDetails) SetMasterUsername(v string) *AwsRdsDbInstanceDetails {
	s.MasterUsername = &v
	return s
}

// SetMaxAllocatedStorage sets the MaxAllocatedStorage field's value.
func (s *AwsRdsDbInstanceDetails) SetMaxAllocatedStorage(v int64) *AwsRdsDbInstanceDetails {
	s.MaxAllocatedStorage = &v
	return s
}

// SetMonitoringInterval sets the MonitoringInterval field's value.
func (s *AwsRdsDbInstanceDetails) SetMonitoringInterval(v int64) *AwsRdsDbInstanceDetails {
	s.MonitoringInterval = &v
	return s
}

// SetMonitoringRoleArn sets the MonitoringRoleArn field's value.
func (s *AwsRdsDbInstanceDetails) SetMonitoringRoleArn(v string) *AwsRdsDbInstanceDetails {
	s.MonitoringRoleArn = &v
	return s
}

// SetMultiAz sets the MultiAz field's value.
func (s *AwsRdsDbInstanceDetails) SetMultiAz(v bool) *AwsRdsDbInstanceDetails {
	s.MultiAz = &v
	return s
}

// SetOptionGroupMemberships sets the OptionGroupMemberships field's value.
func (s *AwsRdsDbInstanceDetails) SetOptionGroupMemberships(v []*AwsRdsDbOptionGroupMembership) *AwsRdsDbInstanceDetails {
	s.OptionGroupMemberships = v
	return s
}

// SetPendingModifiedValues sets the PendingModifiedValues field's value.
func (s *AwsRdsDbInstanceDetails) SetPendingModifiedValues(v *AwsRdsDbPendingModifiedValues) *AwsRdsDbInstanceDetails {
	s.PendingModifiedValues = v
	return s
}

// SetPerformanceInsightsEnabled sets the PerformanceInsightsEnabled field's value.
func (s *AwsRdsDbInstanceDetails) SetPerformanceInsightsEnabled(v bool) *AwsRdsDbInstanceDetails {
	s.PerformanceInsightsEnabled = &v
	return s
}

// SetPerformanceInsightsKmsKeyId sets the PerformanceInsightsKmsKeyId field's value.
func (s *AwsRdsDbInstanceDetails) SetPerformanceInsightsKmsKeyId(v string) *AwsRdsDbInstanceDetails {
	s.PerformanceInsightsKmsKeyId = &v
	return s
}

// SetPerformanceInsightsRetentionPeriod sets the PerformanceInsightsRetentionPeriod field's value.
func (s *AwsRdsDbInstanceDetails) SetPerformanceInsightsRetentionPeriod(v int64) *AwsRdsDbInstanceDetails {
	s.PerformanceInsightsRetentionPeriod = &v
	return s
}

// SetPreferredBackupWindow sets the PreferredBackupWindow field's value.
func (s *AwsRdsDbInstanceDetails) SetPreferredBackupWindow(v string) *AwsRdsDbInstanceDetails {
	s.PreferredBackupWindow = &v
	return s
}

// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
func (s *AwsRdsDbInstanceDetails) SetPreferredMaintenanceWindow(v string) *AwsRdsDbInstanceDetails {
	s.PreferredMaintenanceWindow = &v
	return s
}

// SetProcessorFeatures sets the ProcessorFeatures field's value.
func (s *AwsRdsDbInstanceDetails) SetProcessorFeatures(v []*AwsRdsDbProcessorFeature) *AwsRdsDbInstanceDetails {
	s.ProcessorFeatures = v
	return s
}

// SetPromotionTier sets the PromotionTier field's value.
func (s *AwsRdsDbInstanceDetails) SetPromotionTier(v int64) *AwsRdsDbInstanceDetails {
	s.PromotionTier = &v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *AwsRdsDbInstanceDetails) SetPubliclyAccessible(v bool) *AwsRdsDbInstanceDetails {
	s.PubliclyAccessible = &v
	return s
}

// SetReadReplicaDBClusterIdentifiers sets the ReadReplicaDBClusterIdentifiers field's value.
func (s *AwsRdsDbInstanceDetails) SetReadReplicaDBClusterIdentifiers(v []*string) *AwsRdsDbInstanceDetails {
	s.ReadReplicaDBClusterIdentifiers = v
	return s
}

// SetReadReplicaDBInstanceIdentifiers sets the ReadReplicaDBInstanceIdentifiers field's value.
func (s *AwsRdsDbInstanceDetails) SetReadReplicaDBInstanceIdentifiers(v []*string) *AwsRdsDbInstanceDetails {
	s.ReadReplicaDBInstanceIdentifiers = v
	return s
}

// SetReadReplicaSourceDBInstanceIdentifier sets the ReadReplicaSourceDBInstanceIdentifier field's value.
func (s *AwsRdsDbInstanceDetails) SetReadReplicaSourceDBInstanceIdentifier(v string) *AwsRdsDbInstanceDetails {
	s.ReadReplicaSourceDBInstanceIdentifier = &v
	return s
}

// SetSecondaryAvailabilityZone sets the SecondaryAvailabilityZone field's value.
func (s *AwsRdsDbInstanceDetails) SetSecondaryAvailabilityZone(v string) *AwsRdsDbInstanceDetails {
	s.SecondaryAvailabilityZone = &v
	return s
}

// SetStatusInfos sets the StatusInfos field's value.
func (s *AwsRdsDbInstanceDetails) SetStatusInfos(v []*AwsRdsDbStatusInfo) *AwsRdsDbInstanceDetails {
	s.StatusInfos = v
	return s
}

// SetStorageEncrypted sets the StorageEncrypted field's value.
func (s *AwsRdsDbInstanceDetails) SetStorageEncrypted(v bool) *AwsRdsDbInstanceDetails {
	s.StorageEncrypted = &v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *AwsRdsDbInstanceDetails) SetStorageType(v string) *AwsRdsDbInstanceDetails {
	s.StorageType = &v
	return s
}

// SetTdeCredentialArn sets the TdeCredentialArn field's value.
func (s *AwsRdsDbInstanceDetails) SetTdeCredentialArn(v string) *AwsRdsDbInstanceDetails {
	s.TdeCredentialArn = &v
	return s
}

// SetTimezone sets the Timezone field's value.
func (s *AwsRdsDbInstanceDetails) SetTimezone(v string) *AwsRdsDbInstanceDetails {
	s.Timezone = &v
	return s
}

// SetVpcSecurityGroups sets the VpcSecurityGroups field's value.
func (s *AwsRdsDbInstanceDetails) SetVpcSecurityGroups(v []*AwsRdsDbInstanceVpcSecurityGroup) *AwsRdsDbInstanceDetails {
	s.VpcSecurityGroups = v
	return s
}

// Specifies the connection endpoint.
type AwsRdsDbInstanceEndpoint struct {
	_ struct{} `type:"structure"`

	// Specifies the DNS address of the DB instance.
	Address *string `type:"string"`

	// Specifies the ID that Amazon Route 53 assigns when you create a hosted zone.
	HostedZoneId *string `type:"string"`

	// Specifies the port that the database engine is listening on.
	Port *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbInstanceEndpoint) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbInstanceEndpoint) GoString() string {
	return s.String()
}

// SetAddress sets the Address field's value.
func (s *AwsRdsDbInstanceEndpoint) SetAddress(v string) *AwsRdsDbInstanceEndpoint {
	s.Address = &v
	return s
}

// SetHostedZoneId sets the HostedZoneId field's value.
func (s *AwsRdsDbInstanceEndpoint) SetHostedZoneId(v string) *AwsRdsDbInstanceEndpoint {
	s.HostedZoneId = &v
	return s
}

// SetPort sets the Port field's value.
func (s *AwsRdsDbInstanceEndpoint) SetPort(v int64) *AwsRdsDbInstanceEndpoint {
	s.Port = &v
	return s
}

// A VPC security groups that the DB instance belongs to.
type AwsRdsDbInstanceVpcSecurityGroup struct {
	_ struct{} `type:"structure"`

	// The status of the VPC security group.
	Status *string `type:"string"`

	// The name of the VPC security group.
	VpcSecurityGroupId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbInstanceVpcSecurityGroup) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbInstanceVpcSecurityGroup) GoString() string {
	return s.String()
}

// SetStatus sets the Status field's value.
func (s *AwsRdsDbInstanceVpcSecurityGroup) SetStatus(v string) *AwsRdsDbInstanceVpcSecurityGroup {
	s.Status = &v
	return s
}

// SetVpcSecurityGroupId sets the VpcSecurityGroupId field's value.
func (s *AwsRdsDbInstanceVpcSecurityGroup) SetVpcSecurityGroupId(v string) *AwsRdsDbInstanceVpcSecurityGroup {
	s.VpcSecurityGroupId = &v
	return s
}

// An option group membership.
type AwsRdsDbOptionGroupMembership struct {
	_ struct{} `type:"structure"`

	// The name of the option group.
	OptionGroupName *string `type:"string"`

	// The status of the option group membership.
	Status *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbOptionGroupMembership) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbOptionGroupMembership) GoString() string {
	return s.String()
}

// SetOptionGroupName sets the OptionGroupName field's value.
func (s *AwsRdsDbOptionGroupMembership) SetOptionGroupName(v string) *AwsRdsDbOptionGroupMembership {
	s.OptionGroupName = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsRdsDbOptionGroupMembership) SetStatus(v string) *AwsRdsDbOptionGroupMembership {
	s.Status = &v
	return s
}

// Provides information about a parameter group for a DB instance.
type AwsRdsDbParameterGroup struct {
	_ struct{} `type:"structure"`

	// The name of the parameter group.
	DbParameterGroupName *string `type:"string"`

	// The status of parameter updates.
	ParameterApplyStatus *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbParameterGroup) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbParameterGroup) GoString() string {
	return s.String()
}

// SetDbParameterGroupName sets the DbParameterGroupName field's value.
func (s *AwsRdsDbParameterGroup) SetDbParameterGroupName(v string) *AwsRdsDbParameterGroup {
	s.DbParameterGroupName = &v
	return s
}

// SetParameterApplyStatus sets the ParameterApplyStatus field's value.
func (s *AwsRdsDbParameterGroup) SetParameterApplyStatus(v string) *AwsRdsDbParameterGroup {
	s.ParameterApplyStatus = &v
	return s
}

// Changes to a DB instance that are currently pending.
type AwsRdsDbPendingModifiedValues struct {
	_ struct{} `type:"structure"`

	// The new value of the allocated storage for the DB instance.
	AllocatedStorage *int64 `type:"integer"`

	// The new backup retention period for the DB instance.
	BackupRetentionPeriod *int64 `type:"integer"`

	// The new CA certificate identifier for the DB instance.
	CaCertificateIdentifier *string `type:"string"`

	// The new DB instance class for the DB instance.
	DbInstanceClass *string `type:"string"`

	// The new DB instance identifier for the DB instance.
	DbInstanceIdentifier *string `type:"string"`

	// The name of the new subnet group for the DB instance.
	DbSubnetGroupName *string `type:"string"`

	// The new engine version for the DB instance.
	EngineVersion *string `type:"string"`

	// The new provisioned IOPS value for the DB instance.
	Iops *int64 `type:"integer"`

	// The new license model value for the DB instance.
	LicenseModel *string `type:"string"`

	// The new master user password for the DB instance.
	MasterUserPassword *string `type:"string"`

	// Indicates that a single Availability Zone DB instance is changing to a multiple
	// Availability Zone deployment.
	MultiAZ *bool `type:"boolean"`

	// A list of log types that are being enabled or disabled.
	PendingCloudWatchLogsExports *AwsRdsPendingCloudWatchLogsExports `type:"structure"`

	// The new port for the DB instance.
	Port *int64 `type:"integer"`

	// Processor features that are being updated.
	ProcessorFeatures []*AwsRdsDbProcessorFeature `type:"list"`

	// The new storage type for the DB instance.
	StorageType *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbPendingModifiedValues) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbPendingModifiedValues) GoString() string {
	return s.String()
}

// SetAllocatedStorage sets the AllocatedStorage field's value.
func (s *AwsRdsDbPendingModifiedValues) SetAllocatedStorage(v int64) *AwsRdsDbPendingModifiedValues {
	s.AllocatedStorage = &v
	return s
}

// SetBackupRetentionPeriod sets the BackupRetentionPeriod field's value.
func (s *AwsRdsDbPendingModifiedValues) SetBackupRetentionPeriod(v int64) *AwsRdsDbPendingModifiedValues {
	s.BackupRetentionPeriod = &v
	return s
}

// SetCaCertificateIdentifier sets the CaCertificateIdentifier field's value.
func (s *AwsRdsDbPendingModifiedValues) SetCaCertificateIdentifier(v string) *AwsRdsDbPendingModifiedValues {
	s.CaCertificateIdentifier = &v
	return s
}

// SetDbInstanceClass sets the DbInstanceClass field's value.
func (s *AwsRdsDbPendingModifiedValues) SetDbInstanceClass(v string) *AwsRdsDbPendingModifiedValues {
	s.DbInstanceClass = &v
	return s
}

// SetDbInstanceIdentifier sets the DbInstanceIdentifier field's value.
func (s *AwsRdsDbPendingModifiedValues) SetDbInstanceIdentifier(v string) *AwsRdsDbPendingModifiedValues {
	s.DbInstanceIdentifier = &v
	return s
}

// SetDbSubnetGroupName sets the DbSubnetGroupName field's value.
func (s *AwsRdsDbPendingModifiedValues) SetDbSubnetGroupName(v string) *AwsRdsDbPendingModifiedValues {
	s.DbSubnetGroupName = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *AwsRdsDbPendingModifiedValues) SetEngineVersion(v string) *AwsRdsDbPendingModifiedValues {
	s.EngineVersion = &v
	return s
}

// SetIops sets the Iops field's value.
func (s *AwsRdsDbPendingModifiedValues) SetIops(v int64) *AwsRdsDbPendingModifiedValues {
	s.Iops = &v
	return s
}

// SetLicenseModel sets the LicenseModel field's value.
func (s *AwsRdsDbPendingModifiedValues) SetLicenseModel(v string) *AwsRdsDbPendingModifiedValues {
	s.LicenseModel = &v
	return s
}

// SetMasterUserPassword sets the MasterUserPassword field's value.
func (s *AwsRdsDbPendingModifiedValues) SetMasterUserPassword(v string) *AwsRdsDbPendingModifiedValues {
	s.MasterUserPassword = &v
	return s
}

// SetMultiAZ sets the MultiAZ field's value.
func (s *AwsRdsDbPendingModifiedValues) SetMultiAZ(v bool) *AwsRdsDbPendingModifiedValues {
	s.MultiAZ = &v
	return s
}

// SetPendingCloudWatchLogsExports sets the PendingCloudWatchLogsExports field's value.
func (s *AwsRdsDbPendingModifiedValues) SetPendingCloudWatchLogsExports(v *AwsRdsPendingCloudWatchLogsExports) *AwsRdsDbPendingModifiedValues {
	s.PendingCloudWatchLogsExports = v
	return s
}

// SetPort sets the Port field's value.
func (s *AwsRdsDbPendingModifiedValues) SetPort(v int64) *AwsRdsDbPendingModifiedValues {
	s.Port = &v
	return s
}

// SetProcessorFeatures sets the ProcessorFeatures field's value.
func (s *AwsRdsDbPendingModifiedValues) SetProcessorFeatures(v []*AwsRdsDbProcessorFeature) *AwsRdsDbPendingModifiedValues {
	s.ProcessorFeatures = v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *AwsRdsDbPendingModifiedValues) SetStorageType(v string) *AwsRdsDbPendingModifiedValues {
	s.StorageType = &v
	return s
}

// A processor feature.
type AwsRdsDbProcessorFeature struct {
	_ struct{} `type:"structure"`

	// The name of the processor feature. Valid values are coreCount or threadsPerCore.
	Name *string `type:"string"`

	// The value of the processor feature.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbProcessorFeature) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbProcessorFeature) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *AwsRdsDbProcessorFeature) SetName(v string) *AwsRdsDbProcessorFeature {
	s.Name = &v
	return s
}

// SetValue sets the Value field's value.
func (s *AwsRdsDbProcessorFeature) SetValue(v string) *AwsRdsDbProcessorFeature {
	s.Value = &v
	return s
}

// Provides information about an Amazon RDS DB security group.
type AwsRdsDbSecurityGroupDetails struct {
	_ struct{} `type:"structure"`

	// The ARN for the DB security group.
	DbSecurityGroupArn *string `type:"string"`

	// Provides the description of the DB security group.
	DbSecurityGroupDescription *string `type:"string"`

	// Specifies the name of the DB security group.
	DbSecurityGroupName *string `type:"string"`

	// Contains a list of EC2 security groups.
	Ec2SecurityGroups []*AwsRdsDbSecurityGroupEc2SecurityGroup `type:"list"`

	// Contains a list of IP ranges.
	IpRanges []*AwsRdsDbSecurityGroupIpRange `type:"list"`

	// Provides the Amazon Web Services ID of the owner of a specific DB security
	// group.
	OwnerId *string `type:"string"`

	// Provides VPC ID associated with the DB security group.
	VpcId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbSecurityGroupDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbSecurityGroupDetails) GoString() string {
	return s.String()
}

// SetDbSecurityGroupArn sets the DbSecurityGroupArn field's value.
func (s *AwsRdsDbSecurityGroupDetails) SetDbSecurityGroupArn(v string) *AwsRdsDbSecurityGroupDetails {
	s.DbSecurityGroupArn = &v
	return s
}

// SetDbSecurityGroupDescription sets the DbSecurityGroupDescription field's value.
func (s *AwsRdsDbSecurityGroupDetails) SetDbSecurityGroupDescription(v string) *AwsRdsDbSecurityGroupDetails {
	s.DbSecurityGroupDescription = &v
	return s
}

// SetDbSecurityGroupName sets the DbSecurityGroupName field's value.
func (s *AwsRdsDbSecurityGroupDetails) SetDbSecurityGroupName(v string) *AwsRdsDbSecurityGroupDetails {
	s.DbSecurityGroupName = &v
	return s
}

// SetEc2SecurityGroups sets the Ec2SecurityGroups field's value.
func (s *AwsRdsDbSecurityGroupDetails) SetEc2SecurityGroups(v []*AwsRdsDbSecurityGroupEc2SecurityGroup) *AwsRdsDbSecurityGroupDetails {
	s.Ec2SecurityGroups = v
	return s
}

// SetIpRanges sets the IpRanges field's value.
func (s *AwsRdsDbSecurityGroupDetails) SetIpRanges(v []*AwsRdsDbSecurityGroupIpRange) *AwsRdsDbSecurityGroupDetails {
	s.IpRanges = v
	return s
}

// SetOwnerId sets the OwnerId field's value.
func (s *AwsRdsDbSecurityGroupDetails) SetOwnerId(v string) *AwsRdsDbSecurityGroupDetails {
	s.OwnerId = &v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *AwsRdsDbSecurityGroupDetails) SetVpcId(v string) *AwsRdsDbSecurityGroupDetails {
	s.VpcId = &v
	return s
}

// EC2 security group information for an RDS DB security group.
type AwsRdsDbSecurityGroupEc2SecurityGroup struct {
	_ struct{} `type:"structure"`

	// Specifies the ID for the EC2 security group.
	Ec2SecurityGroupId *string `type:"string"`

	// Specifies the name of the EC2 security group.
	Ec2SecurityGroupName *string `type:"string"`

	// Provides the Amazon Web Services ID of the owner of the EC2 security group.
	Ec2SecurityGroupOwnerId *string `type:"string"`

	// Provides the status of the EC2 security group.
	Status *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbSecurityGroupEc2SecurityGroup) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbSecurityGroupEc2SecurityGroup) GoString() string {
	return s.String()
}

// SetEc2SecurityGroupId sets the Ec2SecurityGroupId field's value.
func (s *AwsRdsDbSecurityGroupEc2SecurityGroup) SetEc2SecurityGroupId(v string) *AwsRdsDbSecurityGroupEc2SecurityGroup {
	s.Ec2SecurityGroupId = &v
	return s
}

// SetEc2SecurityGroupName sets the Ec2SecurityGroupName field's value.
func (s *AwsRdsDbSecurityGroupEc2SecurityGroup) SetEc2SecurityGroupName(v string) *AwsRdsDbSecurityGroupEc2SecurityGroup {
	s.Ec2SecurityGroupName = &v
	return s
}

// SetEc2SecurityGroupOwnerId sets the Ec2SecurityGroupOwnerId field's value.
func (s *AwsRdsDbSecurityGroupEc2SecurityGroup) SetEc2SecurityGroupOwnerId(v string) *AwsRdsDbSecurityGroupEc2SecurityGroup {
	s.Ec2SecurityGroupOwnerId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsRdsDbSecurityGroupEc2SecurityGroup) SetStatus(v string) *AwsRdsDbSecurityGroupEc2SecurityGroup {
	s.Status = &v
	return s
}

// IP range information for an RDS DB security group.
type AwsRdsDbSecurityGroupIpRange struct {
	_ struct{} `type:"structure"`

	// Specifies the IP range.
	CidrIp *string `type:"string"`

	// Specifies the status of the IP range.
	Status *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbSecurityGroupIpRange) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbSecurityGroupIpRange) GoString() string {
	return s.String()
}

// SetCidrIp sets the CidrIp field's value.
func (s *AwsRdsDbSecurityGroupIpRange) SetCidrIp(v string) *AwsRdsDbSecurityGroupIpRange {
	s.CidrIp = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsRdsDbSecurityGroupIpRange) SetStatus(v string) *AwsRdsDbSecurityGroupIpRange {
	s.Status = &v
	return s
}

// Provides details about an Amazon RDS DB cluster snapshot.
type AwsRdsDbSnapshotDetails struct {
	_ struct{} `type:"structure"`

	// The amount of storage (in gigabytes) to be initially allocated for the database
	// instance.
	AllocatedStorage *int64 `type:"integer"`

	// Specifies the name of the Availability Zone in which the DB instance was
	// located at the time of the DB snapshot.
	AvailabilityZone *string `type:"string"`

	// A name for the DB instance.
	DbInstanceIdentifier *string `type:"string"`

	// The name or ARN of the DB snapshot that is used to restore the DB instance.
	DbSnapshotIdentifier *string `type:"string"`

	// The identifier for the source DB instance.
	DbiResourceId *string `type:"string"`

	// Whether the DB snapshot is encrypted.
	Encrypted *bool `type:"boolean"`

	// The name of the database engine to use for this DB instance. Valid values
	// are as follows:
	//
	//    * aurora
	//
	//    * aurora-mysql
	//
	//    * aurora-postgresql
	//
	//    * c
	//
	//    * mariadb
	//
	//    * mysql
	//
	//    * oracle-ee
	//
	//    * oracle-se
	//
	//    * oracle-se1
	//
	//    * oracle-se2
	//
	//    * sqlserver-ee
	//
	//    * sqlserver-ex
	//
	//    * sqlserver-se
	//
	//    * sqlserver-web
	Engine *string `type:"string"`

	// The version of the database engine.
	EngineVersion *string `type:"string"`

	// Whether mapping of IAM accounts to database accounts is enabled.
	IamDatabaseAuthenticationEnabled *bool `type:"boolean"`

	// Specifies the time in Coordinated Universal Time (UTC) when the DB instance,
	// from which the snapshot was taken, was created.
	InstanceCreateTime *string `type:"string"`

	// The provisioned IOPS (I/O operations per second) value of the DB instance
	// at the time of the snapshot.
	Iops *int64 `type:"integer"`

	// If Encrypted is true, the KMS key identifier for the encrypted DB snapshot.
	KmsKeyId *string `type:"string"`

	// License model information for the restored DB instance.
	LicenseModel *string `type:"string"`

	// The master user name for the DB snapshot.
	MasterUsername *string `type:"string"`

	// The option group name for the DB snapshot.
	OptionGroupName *string `type:"string"`

	// The percentage of the estimated data that has been transferred.
	PercentProgress *int64 `type:"integer"`

	// The port that the database engine was listening on at the time of the snapshot.
	Port *int64 `type:"integer"`

	// The number of CPU cores and the number of threads per core for the DB instance
	// class of the DB instance.
	ProcessorFeatures []*AwsRdsDbProcessorFeature `type:"list"`

	// When the snapshot was taken in Coordinated Universal Time (UTC).
	SnapshotCreateTime *string `type:"string"`

	// The type of the DB snapshot.
	SnapshotType *string `type:"string"`

	// The DB snapshot ARN that the DB snapshot was copied from.
	SourceDbSnapshotIdentifier *string `type:"string"`

	// The Amazon Web Services Region that the DB snapshot was created in or copied
	// from.
	SourceRegion *string `type:"string"`

	// The status of this DB snapshot.
	Status *string `type:"string"`

	// The storage type associated with the DB snapshot. Valid values are as follows:
	//
	//    * gp2
	//
	//    * io1
	//
	//    * standard
	StorageType *string `type:"string"`

	// The ARN from the key store with which to associate the instance for TDE encryption.
	TdeCredentialArn *string `type:"string"`

	// The time zone of the DB snapshot.
	Timezone *string `type:"string"`

	// The VPC ID associated with the DB snapshot.
	VpcId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbSnapshotDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbSnapshotDetails) GoString() string {
	return s.String()
}

// SetAllocatedStorage sets the AllocatedStorage field's value.
func (s *AwsRdsDbSnapshotDetails) SetAllocatedStorage(v int64) *AwsRdsDbSnapshotDetails {
	s.AllocatedStorage = &v
	return s
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *AwsRdsDbSnapshotDetails) SetAvailabilityZone(v string) *AwsRdsDbSnapshotDetails {
	s.AvailabilityZone = &v
	return s
}

// SetDbInstanceIdentifier sets the DbInstanceIdentifier field's value.
func (s *AwsRdsDbSnapshotDetails) SetDbInstanceIdentifier(v string) *AwsRdsDbSnapshotDetails {
	s.DbInstanceIdentifier = &v
	return s
}

// SetDbSnapshotIdentifier sets the DbSnapshotIdentifier field's value.
func (s *AwsRdsDbSnapshotDetails) SetDbSnapshotIdentifier(v string) *AwsRdsDbSnapshotDetails {
	s.DbSnapshotIdentifier = &v
	return s
}

// SetDbiResourceId sets the DbiResourceId field's value.
func (s *AwsRdsDbSnapshotDetails) SetDbiResourceId(v string) *AwsRdsDbSnapshotDetails {
	s.DbiResourceId = &v
	return s
}

// SetEncrypted sets the Encrypted field's value.
func (s *AwsRdsDbSnapshotDetails) SetEncrypted(v bool) *AwsRdsDbSnapshotDetails {
	s.Encrypted = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *AwsRdsDbSnapshotDetails) SetEngine(v string) *AwsRdsDbSnapshotDetails {
	s.Engine = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *AwsRdsDbSnapshotDetails) SetEngineVersion(v string) *AwsRdsDbSnapshotDetails {
	s.EngineVersion = &v
	return s
}

// SetIamDatabaseAuthenticationEnabled sets the IamDatabaseAuthenticationEnabled field's value.
func (s *AwsRdsDbSnapshotDetails) SetIamDatabaseAuthenticationEnabled(v bool) *AwsRdsDbSnapshotDetails {
	s.IamDatabaseAuthenticationEnabled = &v
	return s
}

// SetInstanceCreateTime sets the InstanceCreateTime field's value.
func (s *AwsRdsDbSnapshotDetails) SetInstanceCreateTime(v string) *AwsRdsDbSnapshotDetails {
	s.InstanceCreateTime = &v
	return s
}

// SetIops sets the Iops field's value.
func (s *AwsRdsDbSnapshotDetails) SetIops(v int64) *AwsRdsDbSnapshotDetails {
	s.Iops = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *AwsRdsDbSnapshotDetails) SetKmsKeyId(v string) *AwsRdsDbSnapshotDetails {
	s.KmsKeyId = &v
	return s
}

// SetLicenseModel sets the LicenseModel field's value.
func (s *AwsRdsDbSnapshotDetails) SetLicenseModel(v string) *AwsRdsDbSnapshotDetails {
	s.LicenseModel = &v
	return s
}

// SetMasterUsername sets the MasterUsername field's value.
func (s *AwsRdsDbSnapshotDetails) SetMasterUsername(v string) *AwsRdsDbSnapshotDetails {
	s.MasterUsername = &v
	return s
}

// SetOptionGroupName sets the OptionGroupName field's value.
func (s *AwsRdsDbSnapshotDetails) SetOptionGroupName(v string) *AwsRdsDbSnapshotDetails {
	s.OptionGroupName = &v
	return s
}

// SetPercentProgress sets the PercentProgress field's value.
func (s *AwsRdsDbSnapshotDetails) SetPercentProgress(v int64) *AwsRdsDbSnapshotDetails {
	s.PercentProgress = &v
	return s
}

// SetPort sets the Port field's value.
func (s *AwsRdsDbSnapshotDetails) SetPort(v int64) *AwsRdsDbSnapshotDetails {
	s.Port = &v
	return s
}

// SetProcessorFeatures sets the ProcessorFeatures field's value.
func (s *AwsRdsDbSnapshotDetails) SetProcessorFeatures(v []*AwsRdsDbProcessorFeature) *AwsRdsDbSnapshotDetails {
	s.ProcessorFeatures = v
	return s
}

// SetSnapshotCreateTime sets the SnapshotCreateTime field's value.
func (s *AwsRdsDbSnapshotDetails) SetSnapshotCreateTime(v string) *AwsRdsDbSnapshotDetails {
	s.SnapshotCreateTime = &v
	return s
}

// SetSnapshotType sets the SnapshotType field's value.
func (s *AwsRdsDbSnapshotDetails) SetSnapshotType(v string) *AwsRdsDbSnapshotDetails {
	s.SnapshotType = &v
	return s
}

// SetSourceDbSnapshotIdentifier sets the SourceDbSnapshotIdentifier field's value.
func (s *AwsRdsDbSnapshotDetails) SetSourceDbSnapshotIdentifier(v string) *AwsRdsDbSnapshotDetails {
	s.SourceDbSnapshotIdentifier = &v
	return s
}

// SetSourceRegion sets the SourceRegion field's value.
func (s *AwsRdsDbSnapshotDetails) SetSourceRegion(v string) *AwsRdsDbSnapshotDetails {
	s.SourceRegion = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsRdsDbSnapshotDetails) SetStatus(v string) *AwsRdsDbSnapshotDetails {
	s.Status = &v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *AwsRdsDbSnapshotDetails) SetStorageType(v string) *AwsRdsDbSnapshotDetails {
	s.StorageType = &v
	return s
}

// SetTdeCredentialArn sets the TdeCredentialArn field's value.
func (s *AwsRdsDbSnapshotDetails) SetTdeCredentialArn(v string) *AwsRdsDbSnapshotDetails {
	s.TdeCredentialArn = &v
	return s
}

// SetTimezone sets the Timezone field's value.
func (s *AwsRdsDbSnapshotDetails) SetTimezone(v string) *AwsRdsDbSnapshotDetails {
	s.Timezone = &v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *AwsRdsDbSnapshotDetails) SetVpcId(v string) *AwsRdsDbSnapshotDetails {
	s.VpcId = &v
	return s
}

// Information about the status of a read replica.
type AwsRdsDbStatusInfo struct {
	_ struct{} `type:"structure"`

	// If the read replica is currently in an error state, provides the error details.
	Message *string `type:"string"`

	// Whether the read replica instance is operating normally.
	Normal *bool `type:"boolean"`

	// The status of the read replica instance.
	Status *string `type:"string"`

	// The type of status. For a read replica, the status type is read replication.
	StatusType *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbStatusInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbStatusInfo) GoString() string {
	return s.String()
}

// SetMessage sets the Message field's value.
func (s *AwsRdsDbStatusInfo) SetMessage(v string) *AwsRdsDbStatusInfo {
	s.Message = &v
	return s
}

// SetNormal sets the Normal field's value.
func (s *AwsRdsDbStatusInfo) SetNormal(v bool) *AwsRdsDbStatusInfo {
	s.Normal = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsRdsDbStatusInfo) SetStatus(v string) *AwsRdsDbStatusInfo {
	s.Status = &v
	return s
}

// SetStatusType sets the StatusType field's value.
func (s *AwsRdsDbStatusInfo) SetStatusType(v string) *AwsRdsDbStatusInfo {
	s.StatusType = &v
	return s
}

// Information about the subnet group for the database instance.
type AwsRdsDbSubnetGroup struct {
	_ struct{} `type:"structure"`

	// The ARN of the subnet group.
	DbSubnetGroupArn *string `type:"string"`

	// The description of the subnet group.
	DbSubnetGroupDescription *string `type:"string"`

	// The name of the subnet group.
	DbSubnetGroupName *string `type:"string"`

	// The status of the subnet group.
	SubnetGroupStatus *string `type:"string"`

	// A list of subnets in the subnet group.
	Subnets []*AwsRdsDbSubnetGroupSubnet `type:"list"`

	// The VPC ID of the subnet group.
	VpcId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbSubnetGroup) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbSubnetGroup) GoString() string {
	return s.String()
}

// SetDbSubnetGroupArn sets the DbSubnetGroupArn field's value.
func (s *AwsRdsDbSubnetGroup) SetDbSubnetGroupArn(v string) *AwsRdsDbSubnetGroup {
	s.DbSubnetGroupArn = &v
	return s
}

// SetDbSubnetGroupDescription sets the DbSubnetGroupDescription field's value.
func (s *AwsRdsDbSubnetGroup) SetDbSubnetGroupDescription(v string) *AwsRdsDbSubnetGroup {
	s.DbSubnetGroupDescription = &v
	return s
}

// SetDbSubnetGroupName sets the DbSubnetGroupName field's value.
func (s *AwsRdsDbSubnetGroup) SetDbSubnetGroupName(v string) *AwsRdsDbSubnetGroup {
	s.DbSubnetGroupName = &v
	return s
}

// SetSubnetGroupStatus sets the SubnetGroupStatus field's value.
func (s *AwsRdsDbSubnetGroup) SetSubnetGroupStatus(v string) *AwsRdsDbSubnetGroup {
	s.SubnetGroupStatus = &v
	return s
}

// SetSubnets sets the Subnets field's value.
func (s *AwsRdsDbSubnetGroup) SetSubnets(v []*AwsRdsDbSubnetGroupSubnet) *AwsRdsDbSubnetGroup {
	s.Subnets = v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *AwsRdsDbSubnetGroup) SetVpcId(v string) *AwsRdsDbSubnetGroup {
	s.VpcId = &v
	return s
}

// Information about a subnet in a subnet group.
type AwsRdsDbSubnetGroupSubnet struct {
	_ struct{} `type:"structure"`

	// Information about the Availability Zone for a subnet in the subnet group.
	SubnetAvailabilityZone *AwsRdsDbSubnetGroupSubnetAvailabilityZone `type:"structure"`

	// The identifier of a subnet in the subnet group.
	SubnetIdentifier *string `type:"string"`

	// The status of a subnet in the subnet group.
	SubnetStatus *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbSubnetGroupSubnet) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbSubnetGroupSubnet) GoString() string {
	return s.String()
}

// SetSubnetAvailabilityZone sets the SubnetAvailabilityZone field's value.
func (s *AwsRdsDbSubnetGroupSubnet) SetSubnetAvailabilityZone(v *AwsRdsDbSubnetGroupSubnetAvailabilityZone) *AwsRdsDbSubnetGroupSubnet {
	s.SubnetAvailabilityZone = v
	return s
}

// SetSubnetIdentifier sets the SubnetIdentifier field's value.
func (s *AwsRdsDbSubnetGroupSubnet) SetSubnetIdentifier(v string) *AwsRdsDbSubnetGroupSubnet {
	s.SubnetIdentifier = &v
	return s
}

// SetSubnetStatus sets the SubnetStatus field's value.
func (s *AwsRdsDbSubnetGroupSubnet) SetSubnetStatus(v string) *AwsRdsDbSubnetGroupSubnet {
	s.SubnetStatus = &v
	return s
}

// An Availability Zone for a subnet in a subnet group.
type AwsRdsDbSubnetGroupSubnetAvailabilityZone struct {
	_ struct{} `type:"structure"`

	// The name of the Availability Zone for a subnet in the subnet group.
	Name *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbSubnetGroupSubnetAvailabilityZone) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsDbSubnetGroupSubnetAvailabilityZone) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *AwsRdsDbSubnetGroupSubnetAvailabilityZone) SetName(v string) *AwsRdsDbSubnetGroupSubnetAvailabilityZone {
	s.Name = &v
	return s
}

// Details about an Amazon RDS event notification subscription. The subscription
// allows Amazon RDS to post events to an SNS topic.
type AwsRdsEventSubscriptionDetails struct {
	_ struct{} `type:"structure"`

	// The identifier of the account that is associated with the event notification
	// subscription.
	CustSubscriptionId *string `type:"string"`

	// The identifier of the event notification subscription.
	CustomerAwsId *string `type:"string"`

	// Whether the event notification subscription is enabled.
	Enabled *bool `type:"boolean"`

	// The list of event categories for the event notification subscription.
	EventCategoriesList []*string `type:"list"`

	// The ARN of the event notification subscription.
	EventSubscriptionArn *string `type:"string"`

	// The ARN of the SNS topic to post the event notifications to.
	SnsTopicArn *string `type:"string"`

	// A list of source identifiers for the event notification subscription.
	SourceIdsList []*string `type:"list"`

	// The source type for the event notification subscription.
	SourceType *string `type:"string"`

	// The status of the event notification subscription.
	//
	// Valid values: creating | modifying | deleting | active | no-permission |
	// topic-not-exist
	Status *string `type:"string"`

	// The datetime when the event notification subscription was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	SubscriptionCreationTime *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsEventSubscriptionDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsEventSubscriptionDetails) GoString() string {
	return s.String()
}

// SetCustSubscriptionId sets the CustSubscriptionId field's value.
func (s *AwsRdsEventSubscriptionDetails) SetCustSubscriptionId(v string) *AwsRdsEventSubscriptionDetails {
	s.CustSubscriptionId = &v
	return s
}

// SetCustomerAwsId sets the CustomerAwsId field's value.
func (s *AwsRdsEventSubscriptionDetails) SetCustomerAwsId(v string) *AwsRdsEventSubscriptionDetails {
	s.CustomerAwsId = &v
	return s
}

// SetEnabled sets the Enabled field's value.
func (s *AwsRdsEventSubscriptionDetails) SetEnabled(v bool) *AwsRdsEventSubscriptionDetails {
	s.Enabled = &v
	return s
}

// SetEventCategoriesList sets the EventCategoriesList field's value.
func (s *AwsRdsEventSubscriptionDetails) SetEventCategoriesList(v []*string) *AwsRdsEventSubscriptionDetails {
	s.EventCategoriesList = v
	return s
}

// SetEventSubscriptionArn sets the EventSubscriptionArn field's value.
func (s *AwsRdsEventSubscriptionDetails) SetEventSubscriptionArn(v string) *AwsRdsEventSubscriptionDetails {
	s.EventSubscriptionArn = &v
	return s
}

// SetSnsTopicArn sets the SnsTopicArn field's value.
func (s *AwsRdsEventSubscriptionDetails) SetSnsTopicArn(v string) *AwsRdsEventSubscriptionDetails {
	s.SnsTopicArn = &v
	return s
}

// SetSourceIdsList sets the SourceIdsList field's value.
func (s *AwsRdsEventSubscriptionDetails) SetSourceIdsList(v []*string) *AwsRdsEventSubscriptionDetails {
	s.SourceIdsList = v
	return s
}

// SetSourceType sets the SourceType field's value.
func (s *AwsRdsEventSubscriptionDetails) SetSourceType(v string) *AwsRdsEventSubscriptionDetails {
	s.SourceType = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsRdsEventSubscriptionDetails) SetStatus(v string) *AwsRdsEventSubscriptionDetails {
	s.Status = &v
	return s
}

// SetSubscriptionCreationTime sets the SubscriptionCreationTime field's value.
func (s *AwsRdsEventSubscriptionDetails) SetSubscriptionCreationTime(v string) *AwsRdsEventSubscriptionDetails {
	s.SubscriptionCreationTime = &v
	return s
}

// Identifies the log types to enable and disable.
type AwsRdsPendingCloudWatchLogsExports struct {
	_ struct{} `type:"structure"`

	// A list of log types that are being disabled.
	LogTypesToDisable []*string `type:"list"`

	// A list of log types that are being enabled.
	LogTypesToEnable []*string `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 AwsRdsPendingCloudWatchLogsExports) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRdsPendingCloudWatchLogsExports) GoString() string {
	return s.String()
}

// SetLogTypesToDisable sets the LogTypesToDisable field's value.
func (s *AwsRdsPendingCloudWatchLogsExports) SetLogTypesToDisable(v []*string) *AwsRdsPendingCloudWatchLogsExports {
	s.LogTypesToDisable = v
	return s
}

// SetLogTypesToEnable sets the LogTypesToEnable field's value.
func (s *AwsRdsPendingCloudWatchLogsExports) SetLogTypesToEnable(v []*string) *AwsRdsPendingCloudWatchLogsExports {
	s.LogTypesToEnable = v
	return s
}

// A node in an Amazon Redshift cluster.
type AwsRedshiftClusterClusterNode struct {
	_ struct{} `type:"structure"`

	// The role of the node. A node might be a leader node or a compute node.
	NodeRole *string `type:"string"`

	// The private IP address of the node.
	PrivateIpAddress *string `type:"string"`

	// The public IP address of the node.
	PublicIpAddress *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterClusterNode) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterClusterNode) GoString() string {
	return s.String()
}

// SetNodeRole sets the NodeRole field's value.
func (s *AwsRedshiftClusterClusterNode) SetNodeRole(v string) *AwsRedshiftClusterClusterNode {
	s.NodeRole = &v
	return s
}

// SetPrivateIpAddress sets the PrivateIpAddress field's value.
func (s *AwsRedshiftClusterClusterNode) SetPrivateIpAddress(v string) *AwsRedshiftClusterClusterNode {
	s.PrivateIpAddress = &v
	return s
}

// SetPublicIpAddress sets the PublicIpAddress field's value.
func (s *AwsRedshiftClusterClusterNode) SetPublicIpAddress(v string) *AwsRedshiftClusterClusterNode {
	s.PublicIpAddress = &v
	return s
}

// A cluster parameter group that is associated with an Amazon Redshift cluster.
type AwsRedshiftClusterClusterParameterGroup struct {
	_ struct{} `type:"structure"`

	// The list of parameter statuses.
	ClusterParameterStatusList []*AwsRedshiftClusterClusterParameterStatus `type:"list"`

	// The status of updates to the parameters.
	ParameterApplyStatus *string `type:"string"`

	// The name of the parameter group.
	ParameterGroupName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterClusterParameterGroup) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterClusterParameterGroup) GoString() string {
	return s.String()
}

// SetClusterParameterStatusList sets the ClusterParameterStatusList field's value.
func (s *AwsRedshiftClusterClusterParameterGroup) SetClusterParameterStatusList(v []*AwsRedshiftClusterClusterParameterStatus) *AwsRedshiftClusterClusterParameterGroup {
	s.ClusterParameterStatusList = v
	return s
}

// SetParameterApplyStatus sets the ParameterApplyStatus field's value.
func (s *AwsRedshiftClusterClusterParameterGroup) SetParameterApplyStatus(v string) *AwsRedshiftClusterClusterParameterGroup {
	s.ParameterApplyStatus = &v
	return s
}

// SetParameterGroupName sets the ParameterGroupName field's value.
func (s *AwsRedshiftClusterClusterParameterGroup) SetParameterGroupName(v string) *AwsRedshiftClusterClusterParameterGroup {
	s.ParameterGroupName = &v
	return s
}

// The status of a parameter in a cluster parameter group for an Amazon Redshift
// cluster.
type AwsRedshiftClusterClusterParameterStatus struct {
	_ struct{} `type:"structure"`

	// The error that prevented the parameter from being applied to the database.
	ParameterApplyErrorDescription *string `type:"string"`

	// The status of the parameter. Indicates whether the parameter is in sync with
	// the database, waiting for a cluster reboot, or encountered an error when
	// it was applied.
	//
	// Valid values: in-sync | pending-reboot | applying | invalid-parameter | apply-deferred
	// | apply-error | unknown-error
	ParameterApplyStatus *string `type:"string"`

	// The name of the parameter.
	ParameterName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterClusterParameterStatus) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterClusterParameterStatus) GoString() string {
	return s.String()
}

// SetParameterApplyErrorDescription sets the ParameterApplyErrorDescription field's value.
func (s *AwsRedshiftClusterClusterParameterStatus) SetParameterApplyErrorDescription(v string) *AwsRedshiftClusterClusterParameterStatus {
	s.ParameterApplyErrorDescription = &v
	return s
}

// SetParameterApplyStatus sets the ParameterApplyStatus field's value.
func (s *AwsRedshiftClusterClusterParameterStatus) SetParameterApplyStatus(v string) *AwsRedshiftClusterClusterParameterStatus {
	s.ParameterApplyStatus = &v
	return s
}

// SetParameterName sets the ParameterName field's value.
func (s *AwsRedshiftClusterClusterParameterStatus) SetParameterName(v string) *AwsRedshiftClusterClusterParameterStatus {
	s.ParameterName = &v
	return s
}

// A security group that is associated with the cluster.
type AwsRedshiftClusterClusterSecurityGroup struct {
	_ struct{} `type:"structure"`

	// The name of the cluster security group.
	ClusterSecurityGroupName *string `type:"string"`

	// The status of the cluster security group.
	Status *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterClusterSecurityGroup) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterClusterSecurityGroup) GoString() string {
	return s.String()
}

// SetClusterSecurityGroupName sets the ClusterSecurityGroupName field's value.
func (s *AwsRedshiftClusterClusterSecurityGroup) SetClusterSecurityGroupName(v string) *AwsRedshiftClusterClusterSecurityGroup {
	s.ClusterSecurityGroupName = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsRedshiftClusterClusterSecurityGroup) SetStatus(v string) *AwsRedshiftClusterClusterSecurityGroup {
	s.Status = &v
	return s
}

// You can configure Amazon Redshift to copy snapshots for a cluster to another
// Amazon Web Services Region. This parameter provides information about a cross-Region
// snapshot copy.
type AwsRedshiftClusterClusterSnapshotCopyStatus struct {
	_ struct{} `type:"structure"`

	// The destination Region that snapshots are automatically copied to when cross-Region
	// snapshot copy is enabled.
	DestinationRegion *string `type:"string"`

	// The number of days that manual snapshots are retained in the destination
	// Region after they are copied from a source Region.
	//
	// If the value is -1, then the manual snapshot is retained indefinitely.
	//
	// Valid values: Either -1 or an integer between 1 and 3,653
	ManualSnapshotRetentionPeriod *int64 `type:"integer"`

	// The number of days to retain automated snapshots in the destination Region
	// after they are copied from a source Region.
	RetentionPeriod *int64 `type:"integer"`

	// The name of the snapshot copy grant.
	SnapshotCopyGrantName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterClusterSnapshotCopyStatus) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterClusterSnapshotCopyStatus) GoString() string {
	return s.String()
}

// SetDestinationRegion sets the DestinationRegion field's value.
func (s *AwsRedshiftClusterClusterSnapshotCopyStatus) SetDestinationRegion(v string) *AwsRedshiftClusterClusterSnapshotCopyStatus {
	s.DestinationRegion = &v
	return s
}

// SetManualSnapshotRetentionPeriod sets the ManualSnapshotRetentionPeriod field's value.
func (s *AwsRedshiftClusterClusterSnapshotCopyStatus) SetManualSnapshotRetentionPeriod(v int64) *AwsRedshiftClusterClusterSnapshotCopyStatus {
	s.ManualSnapshotRetentionPeriod = &v
	return s
}

// SetRetentionPeriod sets the RetentionPeriod field's value.
func (s *AwsRedshiftClusterClusterSnapshotCopyStatus) SetRetentionPeriod(v int64) *AwsRedshiftClusterClusterSnapshotCopyStatus {
	s.RetentionPeriod = &v
	return s
}

// SetSnapshotCopyGrantName sets the SnapshotCopyGrantName field's value.
func (s *AwsRedshiftClusterClusterSnapshotCopyStatus) SetSnapshotCopyGrantName(v string) *AwsRedshiftClusterClusterSnapshotCopyStatus {
	s.SnapshotCopyGrantName = &v
	return s
}

// A time windows during which maintenance was deferred for an Amazon Redshift
// cluster.
type AwsRedshiftClusterDeferredMaintenanceWindow struct {
	_ struct{} `type:"structure"`

	// The end of the time window for which maintenance was deferred.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	DeferMaintenanceEndTime *string `type:"string"`

	// The identifier of the maintenance window.
	DeferMaintenanceIdentifier *string `type:"string"`

	// The start of the time window for which maintenance was deferred.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	DeferMaintenanceStartTime *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterDeferredMaintenanceWindow) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterDeferredMaintenanceWindow) GoString() string {
	return s.String()
}

// SetDeferMaintenanceEndTime sets the DeferMaintenanceEndTime field's value.
func (s *AwsRedshiftClusterDeferredMaintenanceWindow) SetDeferMaintenanceEndTime(v string) *AwsRedshiftClusterDeferredMaintenanceWindow {
	s.DeferMaintenanceEndTime = &v
	return s
}

// SetDeferMaintenanceIdentifier sets the DeferMaintenanceIdentifier field's value.
func (s *AwsRedshiftClusterDeferredMaintenanceWindow) SetDeferMaintenanceIdentifier(v string) *AwsRedshiftClusterDeferredMaintenanceWindow {
	s.DeferMaintenanceIdentifier = &v
	return s
}

// SetDeferMaintenanceStartTime sets the DeferMaintenanceStartTime field's value.
func (s *AwsRedshiftClusterDeferredMaintenanceWindow) SetDeferMaintenanceStartTime(v string) *AwsRedshiftClusterDeferredMaintenanceWindow {
	s.DeferMaintenanceStartTime = &v
	return s
}

// Details about an Amazon Redshift cluster.
type AwsRedshiftClusterDetails struct {
	_ struct{} `type:"structure"`

	// Indicates whether major version upgrades are applied automatically to the
	// cluster during the maintenance window.
	AllowVersionUpgrade *bool `type:"boolean"`

	// The number of days that automatic cluster snapshots are retained.
	AutomatedSnapshotRetentionPeriod *int64 `type:"integer"`

	// The name of the Availability Zone in which the cluster is located.
	AvailabilityZone *string `type:"string"`

	// The availability status of the cluster for queries. Possible values are the
	// following:
	//
	//    * Available - The cluster is available for queries.
	//
	//    * Unavailable - The cluster is not available for queries.
	//
	//    * Maintenance - The cluster is intermittently available for queries due
	//    to maintenance activities.
	//
	//    * Modifying -The cluster is intermittently available for queries due to
	//    changes that modify the cluster.
	//
	//    * Failed - The cluster failed and is not available for queries.
	ClusterAvailabilityStatus *string `type:"string"`

	// Indicates when the cluster was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	ClusterCreateTime *string `type:"string"`

	// The unique identifier of the cluster.
	ClusterIdentifier *string `type:"string"`

	// The nodes in the cluster.
	ClusterNodes []*AwsRedshiftClusterClusterNode `type:"list"`

	// The list of cluster parameter groups that are associated with this cluster.
	ClusterParameterGroups []*AwsRedshiftClusterClusterParameterGroup `type:"list"`

	// The public key for the cluster.
	ClusterPublicKey *string `type:"string"`

	// The specific revision number of the database in the cluster.
	ClusterRevisionNumber *string `type:"string"`

	// A list of cluster security groups that are associated with the cluster.
	ClusterSecurityGroups []*AwsRedshiftClusterClusterSecurityGroup `type:"list"`

	// Information about the destination Region and retention period for the cross-Region
	// snapshot copy.
	ClusterSnapshotCopyStatus *AwsRedshiftClusterClusterSnapshotCopyStatus `type:"structure"`

	// The current status of the cluster.
	//
	// Valid values: available | available, prep-for-resize | available, resize-cleanup
	// |cancelling-resize | creating | deleting | final-snapshot | hardware-failure
	// | incompatible-hsm |incompatible-network | incompatible-parameters | incompatible-restore
	// | modifying | paused | rebooting | renaming | resizing | rotating-keys |
	// storage-full | updating-hsm
	ClusterStatus *string `type:"string"`

	// The name of the subnet group that is associated with the cluster. This parameter
	// is valid only when the cluster is in a VPC.
	ClusterSubnetGroupName *string `type:"string"`

	// The version ID of the Amazon Redshift engine that runs on the cluster.
	ClusterVersion *string `type:"string"`

	// The name of the initial database that was created when the cluster was created.
	//
	// The same name is returned for the life of the cluster.
	//
	// If an initial database is not specified, a database named devdev is created
	// by default.
	DBName *string `type:"string"`

	// List of time windows during which maintenance was deferred.
	DeferredMaintenanceWindows []*AwsRedshiftClusterDeferredMaintenanceWindow `type:"list"`

	// Information about the status of the Elastic IP (EIP) address.
	ElasticIpStatus *AwsRedshiftClusterElasticIpStatus `type:"structure"`

	// The number of nodes that you can use the elastic resize method to resize
	// the cluster to.
	ElasticResizeNumberOfNodeOptions *string `type:"string"`

	// Indicates whether the data in the cluster is encrypted at rest.
	Encrypted *bool `type:"boolean"`

	// The connection endpoint.
	Endpoint *AwsRedshiftClusterEndpoint `type:"structure"`

	// Indicates whether to create the cluster with enhanced VPC routing enabled.
	EnhancedVpcRouting *bool `type:"boolean"`

	// Indicates when the next snapshot is expected to be taken. The cluster must
	// have a valid snapshot schedule and have backups enabled.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	ExpectedNextSnapshotScheduleTime *string `type:"string"`

	// The status of the next expected snapshot.
	//
	// Valid values: OnTrack | Pending
	ExpectedNextSnapshotScheduleTimeStatus *string `type:"string"`

	// Information about whether the Amazon Redshift cluster finished applying any
	// changes to hardware security module (HSM) settings that were specified in
	// a modify cluster command.
	HsmStatus *AwsRedshiftClusterHsmStatus `type:"structure"`

	// A list of IAM roles that the cluster can use to access other Amazon Web Services
	// services.
	IamRoles []*AwsRedshiftClusterIamRole `type:"list"`

	// The identifier of the KMS encryption key that is used to encrypt data in
	// the cluster.
	KmsKeyId *string `type:"string"`

	// Information about the logging status of the cluster.
	LoggingStatus *AwsRedshiftClusterLoggingStatus `type:"structure"`

	// The name of the maintenance track for the cluster.
	MaintenanceTrackName *string `type:"string"`

	// The default number of days to retain a manual snapshot.
	//
	// If the value is -1, the snapshot is retained indefinitely.
	//
	// This setting doesn't change the retention period of existing snapshots.
	//
	// Valid values: Either -1 or an integer between 1 and 3,653
	ManualSnapshotRetentionPeriod *int64 `type:"integer"`

	// The master user name for the cluster. This name is used to connect to the
	// database that is specified in as the value of DBName.
	MasterUsername *string `type:"string"`

	// Indicates the start of the next maintenance window.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	NextMaintenanceWindowStartTime *string `type:"string"`

	// The node type for the nodes in the cluster.
	NodeType *string `type:"string"`

	// The number of compute nodes in the cluster.
	NumberOfNodes *int64 `type:"integer"`

	// A list of cluster operations that are waiting to start.
	PendingActions []*string `type:"list"`

	// A list of changes to the cluster that are currently pending.
	PendingModifiedValues *AwsRedshiftClusterPendingModifiedValues `type:"structure"`

	// The weekly time range, in Universal Coordinated Time (UTC), during which
	// system maintenance can occur.
	//
	// Format: <day>:HH:MM-<day>:HH:MM
	//
	// For the day values, use mon | tue | wed | thu | fri | sat | sun
	//
	// For example, sun:09:32-sun:10:02
	PreferredMaintenanceWindow *string `type:"string"`

	// Whether the cluster can be accessed from a public network.
	PubliclyAccessible *bool `type:"boolean"`

	// Information about the resize operation for the cluster.
	ResizeInfo *AwsRedshiftClusterResizeInfo `type:"structure"`

	// Information about the status of a cluster restore action. Only applies to
	// a cluster that was created by restoring a snapshot.
	RestoreStatus *AwsRedshiftClusterRestoreStatus `type:"structure"`

	// A unique identifier for the cluster snapshot schedule.
	SnapshotScheduleIdentifier *string `type:"string"`

	// The current state of the cluster snapshot schedule.
	//
	// Valid values: MODIFYING | ACTIVE | FAILED
	SnapshotScheduleState *string `type:"string"`

	// The identifier of the VPC that the cluster is in, if the cluster is in a
	// VPC.
	VpcId *string `type:"string"`

	// The list of VPC security groups that the cluster belongs to, if the cluster
	// is in a VPC.
	VpcSecurityGroups []*AwsRedshiftClusterVpcSecurityGroup `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 AwsRedshiftClusterDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterDetails) GoString() string {
	return s.String()
}

// SetAllowVersionUpgrade sets the AllowVersionUpgrade field's value.
func (s *AwsRedshiftClusterDetails) SetAllowVersionUpgrade(v bool) *AwsRedshiftClusterDetails {
	s.AllowVersionUpgrade = &v
	return s
}

// SetAutomatedSnapshotRetentionPeriod sets the AutomatedSnapshotRetentionPeriod field's value.
func (s *AwsRedshiftClusterDetails) SetAutomatedSnapshotRetentionPeriod(v int64) *AwsRedshiftClusterDetails {
	s.AutomatedSnapshotRetentionPeriod = &v
	return s
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *AwsRedshiftClusterDetails) SetAvailabilityZone(v string) *AwsRedshiftClusterDetails {
	s.AvailabilityZone = &v
	return s
}

// SetClusterAvailabilityStatus sets the ClusterAvailabilityStatus field's value.
func (s *AwsRedshiftClusterDetails) SetClusterAvailabilityStatus(v string) *AwsRedshiftClusterDetails {
	s.ClusterAvailabilityStatus = &v
	return s
}

// SetClusterCreateTime sets the ClusterCreateTime field's value.
func (s *AwsRedshiftClusterDetails) SetClusterCreateTime(v string) *AwsRedshiftClusterDetails {
	s.ClusterCreateTime = &v
	return s
}

// SetClusterIdentifier sets the ClusterIdentifier field's value.
func (s *AwsRedshiftClusterDetails) SetClusterIdentifier(v string) *AwsRedshiftClusterDetails {
	s.ClusterIdentifier = &v
	return s
}

// SetClusterNodes sets the ClusterNodes field's value.
func (s *AwsRedshiftClusterDetails) SetClusterNodes(v []*AwsRedshiftClusterClusterNode) *AwsRedshiftClusterDetails {
	s.ClusterNodes = v
	return s
}

// SetClusterParameterGroups sets the ClusterParameterGroups field's value.
func (s *AwsRedshiftClusterDetails) SetClusterParameterGroups(v []*AwsRedshiftClusterClusterParameterGroup) *AwsRedshiftClusterDetails {
	s.ClusterParameterGroups = v
	return s
}

// SetClusterPublicKey sets the ClusterPublicKey field's value.
func (s *AwsRedshiftClusterDetails) SetClusterPublicKey(v string) *AwsRedshiftClusterDetails {
	s.ClusterPublicKey = &v
	return s
}

// SetClusterRevisionNumber sets the ClusterRevisionNumber field's value.
func (s *AwsRedshiftClusterDetails) SetClusterRevisionNumber(v string) *AwsRedshiftClusterDetails {
	s.ClusterRevisionNumber = &v
	return s
}

// SetClusterSecurityGroups sets the ClusterSecurityGroups field's value.
func (s *AwsRedshiftClusterDetails) SetClusterSecurityGroups(v []*AwsRedshiftClusterClusterSecurityGroup) *AwsRedshiftClusterDetails {
	s.ClusterSecurityGroups = v
	return s
}

// SetClusterSnapshotCopyStatus sets the ClusterSnapshotCopyStatus field's value.
func (s *AwsRedshiftClusterDetails) SetClusterSnapshotCopyStatus(v *AwsRedshiftClusterClusterSnapshotCopyStatus) *AwsRedshiftClusterDetails {
	s.ClusterSnapshotCopyStatus = v
	return s
}

// SetClusterStatus sets the ClusterStatus field's value.
func (s *AwsRedshiftClusterDetails) SetClusterStatus(v string) *AwsRedshiftClusterDetails {
	s.ClusterStatus = &v
	return s
}

// SetClusterSubnetGroupName sets the ClusterSubnetGroupName field's value.
func (s *AwsRedshiftClusterDetails) SetClusterSubnetGroupName(v string) *AwsRedshiftClusterDetails {
	s.ClusterSubnetGroupName = &v
	return s
}

// SetClusterVersion sets the ClusterVersion field's value.
func (s *AwsRedshiftClusterDetails) SetClusterVersion(v string) *AwsRedshiftClusterDetails {
	s.ClusterVersion = &v
	return s
}

// SetDBName sets the DBName field's value.
func (s *AwsRedshiftClusterDetails) SetDBName(v string) *AwsRedshiftClusterDetails {
	s.DBName = &v
	return s
}

// SetDeferredMaintenanceWindows sets the DeferredMaintenanceWindows field's value.
func (s *AwsRedshiftClusterDetails) SetDeferredMaintenanceWindows(v []*AwsRedshiftClusterDeferredMaintenanceWindow) *AwsRedshiftClusterDetails {
	s.DeferredMaintenanceWindows = v
	return s
}

// SetElasticIpStatus sets the ElasticIpStatus field's value.
func (s *AwsRedshiftClusterDetails) SetElasticIpStatus(v *AwsRedshiftClusterElasticIpStatus) *AwsRedshiftClusterDetails {
	s.ElasticIpStatus = v
	return s
}

// SetElasticResizeNumberOfNodeOptions sets the ElasticResizeNumberOfNodeOptions field's value.
func (s *AwsRedshiftClusterDetails) SetElasticResizeNumberOfNodeOptions(v string) *AwsRedshiftClusterDetails {
	s.ElasticResizeNumberOfNodeOptions = &v
	return s
}

// SetEncrypted sets the Encrypted field's value.
func (s *AwsRedshiftClusterDetails) SetEncrypted(v bool) *AwsRedshiftClusterDetails {
	s.Encrypted = &v
	return s
}

// SetEndpoint sets the Endpoint field's value.
func (s *AwsRedshiftClusterDetails) SetEndpoint(v *AwsRedshiftClusterEndpoint) *AwsRedshiftClusterDetails {
	s.Endpoint = v
	return s
}

// SetEnhancedVpcRouting sets the EnhancedVpcRouting field's value.
func (s *AwsRedshiftClusterDetails) SetEnhancedVpcRouting(v bool) *AwsRedshiftClusterDetails {
	s.EnhancedVpcRouting = &v
	return s
}

// SetExpectedNextSnapshotScheduleTime sets the ExpectedNextSnapshotScheduleTime field's value.
func (s *AwsRedshiftClusterDetails) SetExpectedNextSnapshotScheduleTime(v string) *AwsRedshiftClusterDetails {
	s.ExpectedNextSnapshotScheduleTime = &v
	return s
}

// SetExpectedNextSnapshotScheduleTimeStatus sets the ExpectedNextSnapshotScheduleTimeStatus field's value.
func (s *AwsRedshiftClusterDetails) SetExpectedNextSnapshotScheduleTimeStatus(v string) *AwsRedshiftClusterDetails {
	s.ExpectedNextSnapshotScheduleTimeStatus = &v
	return s
}

// SetHsmStatus sets the HsmStatus field's value.
func (s *AwsRedshiftClusterDetails) SetHsmStatus(v *AwsRedshiftClusterHsmStatus) *AwsRedshiftClusterDetails {
	s.HsmStatus = v
	return s
}

// SetIamRoles sets the IamRoles field's value.
func (s *AwsRedshiftClusterDetails) SetIamRoles(v []*AwsRedshiftClusterIamRole) *AwsRedshiftClusterDetails {
	s.IamRoles = v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *AwsRedshiftClusterDetails) SetKmsKeyId(v string) *AwsRedshiftClusterDetails {
	s.KmsKeyId = &v
	return s
}

// SetLoggingStatus sets the LoggingStatus field's value.
func (s *AwsRedshiftClusterDetails) SetLoggingStatus(v *AwsRedshiftClusterLoggingStatus) *AwsRedshiftClusterDetails {
	s.LoggingStatus = v
	return s
}

// SetMaintenanceTrackName sets the MaintenanceTrackName field's value.
func (s *AwsRedshiftClusterDetails) SetMaintenanceTrackName(v string) *AwsRedshiftClusterDetails {
	s.MaintenanceTrackName = &v
	return s
}

// SetManualSnapshotRetentionPeriod sets the ManualSnapshotRetentionPeriod field's value.
func (s *AwsRedshiftClusterDetails) SetManualSnapshotRetentionPeriod(v int64) *AwsRedshiftClusterDetails {
	s.ManualSnapshotRetentionPeriod = &v
	return s
}

// SetMasterUsername sets the MasterUsername field's value.
func (s *AwsRedshiftClusterDetails) SetMasterUsername(v string) *AwsRedshiftClusterDetails {
	s.MasterUsername = &v
	return s
}

// SetNextMaintenanceWindowStartTime sets the NextMaintenanceWindowStartTime field's value.
func (s *AwsRedshiftClusterDetails) SetNextMaintenanceWindowStartTime(v string) *AwsRedshiftClusterDetails {
	s.NextMaintenanceWindowStartTime = &v
	return s
}

// SetNodeType sets the NodeType field's value.
func (s *AwsRedshiftClusterDetails) SetNodeType(v string) *AwsRedshiftClusterDetails {
	s.NodeType = &v
	return s
}

// SetNumberOfNodes sets the NumberOfNodes field's value.
func (s *AwsRedshiftClusterDetails) SetNumberOfNodes(v int64) *AwsRedshiftClusterDetails {
	s.NumberOfNodes = &v
	return s
}

// SetPendingActions sets the PendingActions field's value.
func (s *AwsRedshiftClusterDetails) SetPendingActions(v []*string) *AwsRedshiftClusterDetails {
	s.PendingActions = v
	return s
}

// SetPendingModifiedValues sets the PendingModifiedValues field's value.
func (s *AwsRedshiftClusterDetails) SetPendingModifiedValues(v *AwsRedshiftClusterPendingModifiedValues) *AwsRedshiftClusterDetails {
	s.PendingModifiedValues = v
	return s
}

// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
func (s *AwsRedshiftClusterDetails) SetPreferredMaintenanceWindow(v string) *AwsRedshiftClusterDetails {
	s.PreferredMaintenanceWindow = &v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *AwsRedshiftClusterDetails) SetPubliclyAccessible(v bool) *AwsRedshiftClusterDetails {
	s.PubliclyAccessible = &v
	return s
}

// SetResizeInfo sets the ResizeInfo field's value.
func (s *AwsRedshiftClusterDetails) SetResizeInfo(v *AwsRedshiftClusterResizeInfo) *AwsRedshiftClusterDetails {
	s.ResizeInfo = v
	return s
}

// SetRestoreStatus sets the RestoreStatus field's value.
func (s *AwsRedshiftClusterDetails) SetRestoreStatus(v *AwsRedshiftClusterRestoreStatus) *AwsRedshiftClusterDetails {
	s.RestoreStatus = v
	return s
}

// SetSnapshotScheduleIdentifier sets the SnapshotScheduleIdentifier field's value.
func (s *AwsRedshiftClusterDetails) SetSnapshotScheduleIdentifier(v string) *AwsRedshiftClusterDetails {
	s.SnapshotScheduleIdentifier = &v
	return s
}

// SetSnapshotScheduleState sets the SnapshotScheduleState field's value.
func (s *AwsRedshiftClusterDetails) SetSnapshotScheduleState(v string) *AwsRedshiftClusterDetails {
	s.SnapshotScheduleState = &v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *AwsRedshiftClusterDetails) SetVpcId(v string) *AwsRedshiftClusterDetails {
	s.VpcId = &v
	return s
}

// SetVpcSecurityGroups sets the VpcSecurityGroups field's value.
func (s *AwsRedshiftClusterDetails) SetVpcSecurityGroups(v []*AwsRedshiftClusterVpcSecurityGroup) *AwsRedshiftClusterDetails {
	s.VpcSecurityGroups = v
	return s
}

// The status of the elastic IP (EIP) address for an Amazon Redshift cluster.
type AwsRedshiftClusterElasticIpStatus struct {
	_ struct{} `type:"structure"`

	// The elastic IP address for the cluster.
	ElasticIp *string `type:"string"`

	// The status of the elastic IP address.
	Status *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterElasticIpStatus) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterElasticIpStatus) GoString() string {
	return s.String()
}

// SetElasticIp sets the ElasticIp field's value.
func (s *AwsRedshiftClusterElasticIpStatus) SetElasticIp(v string) *AwsRedshiftClusterElasticIpStatus {
	s.ElasticIp = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsRedshiftClusterElasticIpStatus) SetStatus(v string) *AwsRedshiftClusterElasticIpStatus {
	s.Status = &v
	return s
}

// The connection endpoint for an Amazon Redshift cluster.
type AwsRedshiftClusterEndpoint struct {
	_ struct{} `type:"structure"`

	// The DNS address of the cluster.
	Address *string `type:"string"`

	// The port that the database engine listens on.
	Port *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterEndpoint) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterEndpoint) GoString() string {
	return s.String()
}

// SetAddress sets the Address field's value.
func (s *AwsRedshiftClusterEndpoint) SetAddress(v string) *AwsRedshiftClusterEndpoint {
	s.Address = &v
	return s
}

// SetPort sets the Port field's value.
func (s *AwsRedshiftClusterEndpoint) SetPort(v int64) *AwsRedshiftClusterEndpoint {
	s.Port = &v
	return s
}

// Information about whether an Amazon Redshift cluster finished applying any
// hardware changes to security module (HSM) settings that were specified in
// a modify cluster command.
type AwsRedshiftClusterHsmStatus struct {
	_ struct{} `type:"structure"`

	// The name of the HSM client certificate that the Amazon Redshift cluster uses
	// to retrieve the data encryption keys that are stored in an HSM.
	HsmClientCertificateIdentifier *string `type:"string"`

	// The name of the HSM configuration that contains the information that the
	// Amazon Redshift cluster can use to retrieve and store keys in an HSM.
	HsmConfigurationIdentifier *string `type:"string"`

	// Indicates whether the Amazon Redshift cluster has finished applying any HSM
	// settings changes specified in a modify cluster command.
	//
	// Type: String
	//
	// Valid values: active | applying
	Status *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterHsmStatus) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterHsmStatus) GoString() string {
	return s.String()
}

// SetHsmClientCertificateIdentifier sets the HsmClientCertificateIdentifier field's value.
func (s *AwsRedshiftClusterHsmStatus) SetHsmClientCertificateIdentifier(v string) *AwsRedshiftClusterHsmStatus {
	s.HsmClientCertificateIdentifier = &v
	return s
}

// SetHsmConfigurationIdentifier sets the HsmConfigurationIdentifier field's value.
func (s *AwsRedshiftClusterHsmStatus) SetHsmConfigurationIdentifier(v string) *AwsRedshiftClusterHsmStatus {
	s.HsmConfigurationIdentifier = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsRedshiftClusterHsmStatus) SetStatus(v string) *AwsRedshiftClusterHsmStatus {
	s.Status = &v
	return s
}

// An IAM role that the cluster can use to access other Amazon Web Services
// services.
type AwsRedshiftClusterIamRole struct {
	_ struct{} `type:"structure"`

	// The status of the IAM role's association with the cluster.
	//
	// Valid values: in-sync | adding | removing
	ApplyStatus *string `type:"string"`

	// The ARN of the IAM role.
	IamRoleArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterIamRole) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterIamRole) GoString() string {
	return s.String()
}

// SetApplyStatus sets the ApplyStatus field's value.
func (s *AwsRedshiftClusterIamRole) SetApplyStatus(v string) *AwsRedshiftClusterIamRole {
	s.ApplyStatus = &v
	return s
}

// SetIamRoleArn sets the IamRoleArn field's value.
func (s *AwsRedshiftClusterIamRole) SetIamRoleArn(v string) *AwsRedshiftClusterIamRole {
	s.IamRoleArn = &v
	return s
}

// Provides information about the logging status of the cluster.
type AwsRedshiftClusterLoggingStatus struct {
	_ struct{} `type:"structure"`

	// The name of the S3 bucket where the log files are stored.
	BucketName *string `type:"string"`

	// The message indicating that the logs failed to be delivered.
	LastFailureMessage *string `type:"string"`

	// The last time when logs failed to be delivered.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	LastFailureTime *string `type:"string"`

	// The last time that logs were delivered successfully.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	LastSuccessfulDeliveryTime *string `type:"string"`

	// Indicates whether logging is enabled.
	LoggingEnabled *bool `type:"boolean"`

	// Provides the prefix applied to the log file names.
	S3KeyPrefix *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterLoggingStatus) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterLoggingStatus) GoString() string {
	return s.String()
}

// SetBucketName sets the BucketName field's value.
func (s *AwsRedshiftClusterLoggingStatus) SetBucketName(v string) *AwsRedshiftClusterLoggingStatus {
	s.BucketName = &v
	return s
}

// SetLastFailureMessage sets the LastFailureMessage field's value.
func (s *AwsRedshiftClusterLoggingStatus) SetLastFailureMessage(v string) *AwsRedshiftClusterLoggingStatus {
	s.LastFailureMessage = &v
	return s
}

// SetLastFailureTime sets the LastFailureTime field's value.
func (s *AwsRedshiftClusterLoggingStatus) SetLastFailureTime(v string) *AwsRedshiftClusterLoggingStatus {
	s.LastFailureTime = &v
	return s
}

// SetLastSuccessfulDeliveryTime sets the LastSuccessfulDeliveryTime field's value.
func (s *AwsRedshiftClusterLoggingStatus) SetLastSuccessfulDeliveryTime(v string) *AwsRedshiftClusterLoggingStatus {
	s.LastSuccessfulDeliveryTime = &v
	return s
}

// SetLoggingEnabled sets the LoggingEnabled field's value.
func (s *AwsRedshiftClusterLoggingStatus) SetLoggingEnabled(v bool) *AwsRedshiftClusterLoggingStatus {
	s.LoggingEnabled = &v
	return s
}

// SetS3KeyPrefix sets the S3KeyPrefix field's value.
func (s *AwsRedshiftClusterLoggingStatus) SetS3KeyPrefix(v string) *AwsRedshiftClusterLoggingStatus {
	s.S3KeyPrefix = &v
	return s
}

// Changes to the Amazon Redshift cluster that are currently pending.
type AwsRedshiftClusterPendingModifiedValues struct {
	_ struct{} `type:"structure"`

	// The pending or in-progress change to the automated snapshot retention period.
	AutomatedSnapshotRetentionPeriod *int64 `type:"integer"`

	// The pending or in-progress change to the identifier for the cluster.
	ClusterIdentifier *string `type:"string"`

	// The pending or in-progress change to the cluster type.
	ClusterType *string `type:"string"`

	// The pending or in-progress change to the service version.
	ClusterVersion *string `type:"string"`

	// The encryption type for a cluster.
	EncryptionType *string `type:"string"`

	// Indicates whether to create the cluster with enhanced VPC routing enabled.
	EnhancedVpcRouting *bool `type:"boolean"`

	// The name of the maintenance track that the cluster changes to during the
	// next maintenance window.
	MaintenanceTrackName *string `type:"string"`

	// The pending or in-progress change to the master user password for the cluster.
	MasterUserPassword *string `type:"string"`

	// The pending or in-progress change to the cluster's node type.
	NodeType *string `type:"string"`

	// The pending or in-progress change to the number of nodes in the cluster.
	NumberOfNodes *int64 `type:"integer"`

	// The pending or in-progress change to whether the cluster can be connected
	// to from the public network.
	PubliclyAccessible *bool `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 AwsRedshiftClusterPendingModifiedValues) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterPendingModifiedValues) GoString() string {
	return s.String()
}

// SetAutomatedSnapshotRetentionPeriod sets the AutomatedSnapshotRetentionPeriod field's value.
func (s *AwsRedshiftClusterPendingModifiedValues) SetAutomatedSnapshotRetentionPeriod(v int64) *AwsRedshiftClusterPendingModifiedValues {
	s.AutomatedSnapshotRetentionPeriod = &v
	return s
}

// SetClusterIdentifier sets the ClusterIdentifier field's value.
func (s *AwsRedshiftClusterPendingModifiedValues) SetClusterIdentifier(v string) *AwsRedshiftClusterPendingModifiedValues {
	s.ClusterIdentifier = &v
	return s
}

// SetClusterType sets the ClusterType field's value.
func (s *AwsRedshiftClusterPendingModifiedValues) SetClusterType(v string) *AwsRedshiftClusterPendingModifiedValues {
	s.ClusterType = &v
	return s
}

// SetClusterVersion sets the ClusterVersion field's value.
func (s *AwsRedshiftClusterPendingModifiedValues) SetClusterVersion(v string) *AwsRedshiftClusterPendingModifiedValues {
	s.ClusterVersion = &v
	return s
}

// SetEncryptionType sets the EncryptionType field's value.
func (s *AwsRedshiftClusterPendingModifiedValues) SetEncryptionType(v string) *AwsRedshiftClusterPendingModifiedValues {
	s.EncryptionType = &v
	return s
}

// SetEnhancedVpcRouting sets the EnhancedVpcRouting field's value.
func (s *AwsRedshiftClusterPendingModifiedValues) SetEnhancedVpcRouting(v bool) *AwsRedshiftClusterPendingModifiedValues {
	s.EnhancedVpcRouting = &v
	return s
}

// SetMaintenanceTrackName sets the MaintenanceTrackName field's value.
func (s *AwsRedshiftClusterPendingModifiedValues) SetMaintenanceTrackName(v string) *AwsRedshiftClusterPendingModifiedValues {
	s.MaintenanceTrackName = &v
	return s
}

// SetMasterUserPassword sets the MasterUserPassword field's value.
func (s *AwsRedshiftClusterPendingModifiedValues) SetMasterUserPassword(v string) *AwsRedshiftClusterPendingModifiedValues {
	s.MasterUserPassword = &v
	return s
}

// SetNodeType sets the NodeType field's value.
func (s *AwsRedshiftClusterPendingModifiedValues) SetNodeType(v string) *AwsRedshiftClusterPendingModifiedValues {
	s.NodeType = &v
	return s
}

// SetNumberOfNodes sets the NumberOfNodes field's value.
func (s *AwsRedshiftClusterPendingModifiedValues) SetNumberOfNodes(v int64) *AwsRedshiftClusterPendingModifiedValues {
	s.NumberOfNodes = &v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *AwsRedshiftClusterPendingModifiedValues) SetPubliclyAccessible(v bool) *AwsRedshiftClusterPendingModifiedValues {
	s.PubliclyAccessible = &v
	return s
}

// Information about the resize operation for the cluster.
type AwsRedshiftClusterResizeInfo struct {
	_ struct{} `type:"structure"`

	// Indicates whether the resize operation can be canceled.
	AllowCancelResize *bool `type:"boolean"`

	// The type of resize operation.
	//
	// Valid values: ClassicResize
	ResizeType *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterResizeInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterResizeInfo) GoString() string {
	return s.String()
}

// SetAllowCancelResize sets the AllowCancelResize field's value.
func (s *AwsRedshiftClusterResizeInfo) SetAllowCancelResize(v bool) *AwsRedshiftClusterResizeInfo {
	s.AllowCancelResize = &v
	return s
}

// SetResizeType sets the ResizeType field's value.
func (s *AwsRedshiftClusterResizeInfo) SetResizeType(v string) *AwsRedshiftClusterResizeInfo {
	s.ResizeType = &v
	return s
}

// Information about the status of a cluster restore action. It only applies
// if the cluster was created by restoring a snapshot.
type AwsRedshiftClusterRestoreStatus struct {
	_ struct{} `type:"structure"`

	// The number of megabytes per second being transferred from the backup storage.
	// Returns the average rate for a completed backup.
	//
	// This field is only updated when you restore to DC2 and DS2 node types.
	CurrentRestoreRateInMegaBytesPerSecond *float64 `type:"double"`

	// The amount of time an in-progress restore has been running, or the amount
	// of time it took a completed restore to finish.
	//
	// This field is only updated when you restore to DC2 and DS2 node types.
	ElapsedTimeInSeconds *int64 `type:"long"`

	// The estimate of the time remaining before the restore is complete. Returns
	// 0 for a completed restore.
	//
	// This field is only updated when you restore to DC2 and DS2 node types.
	EstimatedTimeToCompletionInSeconds *int64 `type:"long"`

	// The number of megabytes that were transferred from snapshot storage.
	//
	// This field is only updated when you restore to DC2 and DS2 node types.
	ProgressInMegaBytes *int64 `type:"long"`

	// The size of the set of snapshot data that was used to restore the cluster.
	//
	// This field is only updated when you restore to DC2 and DS2 node types.
	SnapshotSizeInMegaBytes *int64 `type:"long"`

	// The status of the restore action.
	//
	// Valid values: starting | restoring | completed | failed
	Status *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterRestoreStatus) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterRestoreStatus) GoString() string {
	return s.String()
}

// SetCurrentRestoreRateInMegaBytesPerSecond sets the CurrentRestoreRateInMegaBytesPerSecond field's value.
func (s *AwsRedshiftClusterRestoreStatus) SetCurrentRestoreRateInMegaBytesPerSecond(v float64) *AwsRedshiftClusterRestoreStatus {
	s.CurrentRestoreRateInMegaBytesPerSecond = &v
	return s
}

// SetElapsedTimeInSeconds sets the ElapsedTimeInSeconds field's value.
func (s *AwsRedshiftClusterRestoreStatus) SetElapsedTimeInSeconds(v int64) *AwsRedshiftClusterRestoreStatus {
	s.ElapsedTimeInSeconds = &v
	return s
}

// SetEstimatedTimeToCompletionInSeconds sets the EstimatedTimeToCompletionInSeconds field's value.
func (s *AwsRedshiftClusterRestoreStatus) SetEstimatedTimeToCompletionInSeconds(v int64) *AwsRedshiftClusterRestoreStatus {
	s.EstimatedTimeToCompletionInSeconds = &v
	return s
}

// SetProgressInMegaBytes sets the ProgressInMegaBytes field's value.
func (s *AwsRedshiftClusterRestoreStatus) SetProgressInMegaBytes(v int64) *AwsRedshiftClusterRestoreStatus {
	s.ProgressInMegaBytes = &v
	return s
}

// SetSnapshotSizeInMegaBytes sets the SnapshotSizeInMegaBytes field's value.
func (s *AwsRedshiftClusterRestoreStatus) SetSnapshotSizeInMegaBytes(v int64) *AwsRedshiftClusterRestoreStatus {
	s.SnapshotSizeInMegaBytes = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsRedshiftClusterRestoreStatus) SetStatus(v string) *AwsRedshiftClusterRestoreStatus {
	s.Status = &v
	return s
}

// A VPC security group that the cluster belongs to, if the cluster is in a
// VPC.
type AwsRedshiftClusterVpcSecurityGroup struct {
	_ struct{} `type:"structure"`

	// The status of the VPC security group.
	Status *string `type:"string"`

	// The identifier of the VPC security group.
	VpcSecurityGroupId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterVpcSecurityGroup) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRedshiftClusterVpcSecurityGroup) GoString() string {
	return s.String()
}

// SetStatus sets the Status field's value.
func (s *AwsRedshiftClusterVpcSecurityGroup) SetStatus(v string) *AwsRedshiftClusterVpcSecurityGroup {
	s.Status = &v
	return s
}

// SetVpcSecurityGroupId sets the VpcSecurityGroupId field's value.
func (s *AwsRedshiftClusterVpcSecurityGroup) SetVpcSecurityGroupId(v string) *AwsRedshiftClusterVpcSecurityGroup {
	s.VpcSecurityGroupId = &v
	return s
}

// An object that contains an optional comment about your Amazon Route 53 hosted
// zone.
type AwsRoute53HostedZoneConfigDetails struct {
	_ struct{} `type:"structure"`

	// Any comments that you include about the hosted zone.
	Comment *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRoute53HostedZoneConfigDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRoute53HostedZoneConfigDetails) GoString() string {
	return s.String()
}

// SetComment sets the Comment field's value.
func (s *AwsRoute53HostedZoneConfigDetails) SetComment(v string) *AwsRoute53HostedZoneConfigDetails {
	s.Comment = &v
	return s
}

// Provides details about a specified Amazon Route 53 hosted zone, including
// the four name servers assigned to the hosted zone. A hosted zone represents
// a collection of records that can be managed together, belonging to a single
// parent domain name.
type AwsRoute53HostedZoneDetails struct {
	_ struct{} `type:"structure"`

	// An object that contains information about the specified hosted zone.
	HostedZone *AwsRoute53HostedZoneObjectDetails `type:"structure"`

	// An object that contains a list of the authoritative name servers for a hosted
	// zone or for a reusable delegation set.
	NameServers []*string `type:"list"`

	// An array that contains one QueryLoggingConfig element for each DNS query
	// logging configuration that is associated with the current Amazon Web Services
	// account.
	QueryLoggingConfig *AwsRoute53QueryLoggingConfigDetails `type:"structure"`

	// An object that contains information about the Amazon Virtual Private Clouds
	// (Amazon VPCs) that are associated with the specified hosted zone.
	Vpcs []*AwsRoute53HostedZoneVpcDetails `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 AwsRoute53HostedZoneDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRoute53HostedZoneDetails) GoString() string {
	return s.String()
}

// SetHostedZone sets the HostedZone field's value.
func (s *AwsRoute53HostedZoneDetails) SetHostedZone(v *AwsRoute53HostedZoneObjectDetails) *AwsRoute53HostedZoneDetails {
	s.HostedZone = v
	return s
}

// SetNameServers sets the NameServers field's value.
func (s *AwsRoute53HostedZoneDetails) SetNameServers(v []*string) *AwsRoute53HostedZoneDetails {
	s.NameServers = v
	return s
}

// SetQueryLoggingConfig sets the QueryLoggingConfig field's value.
func (s *AwsRoute53HostedZoneDetails) SetQueryLoggingConfig(v *AwsRoute53QueryLoggingConfigDetails) *AwsRoute53HostedZoneDetails {
	s.QueryLoggingConfig = v
	return s
}

// SetVpcs sets the Vpcs field's value.
func (s *AwsRoute53HostedZoneDetails) SetVpcs(v []*AwsRoute53HostedZoneVpcDetails) *AwsRoute53HostedZoneDetails {
	s.Vpcs = v
	return s
}

// An object that contains information about an Amazon Route 53 hosted zone.
type AwsRoute53HostedZoneObjectDetails struct {
	_ struct{} `type:"structure"`

	// An object that includes the Comment element.
	Config *AwsRoute53HostedZoneConfigDetails `type:"structure"`

	// The ID that Route 53 assigns to the hosted zone when you create it.
	Id *string `type:"string"`

	// The name of the domain. For public hosted zones, this is the name that you
	// have registered with your DNS registrar.
	Name *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRoute53HostedZoneObjectDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRoute53HostedZoneObjectDetails) GoString() string {
	return s.String()
}

// SetConfig sets the Config field's value.
func (s *AwsRoute53HostedZoneObjectDetails) SetConfig(v *AwsRoute53HostedZoneConfigDetails) *AwsRoute53HostedZoneObjectDetails {
	s.Config = v
	return s
}

// SetId sets the Id field's value.
func (s *AwsRoute53HostedZoneObjectDetails) SetId(v string) *AwsRoute53HostedZoneObjectDetails {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *AwsRoute53HostedZoneObjectDetails) SetName(v string) *AwsRoute53HostedZoneObjectDetails {
	s.Name = &v
	return s
}

// For private hosted zones, this is a complex type that contains information
// about an Amazon VPC.
type AwsRoute53HostedZoneVpcDetails struct {
	_ struct{} `type:"structure"`

	// The identifier of an Amazon VPC.
	Id *string `type:"string"`

	// The Amazon Web Services Region that an Amazon VPC was created in.
	Region *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRoute53HostedZoneVpcDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRoute53HostedZoneVpcDetails) GoString() string {
	return s.String()
}

// SetId sets the Id field's value.
func (s *AwsRoute53HostedZoneVpcDetails) SetId(v string) *AwsRoute53HostedZoneVpcDetails {
	s.Id = &v
	return s
}

// SetRegion sets the Region field's value.
func (s *AwsRoute53HostedZoneVpcDetails) SetRegion(v string) *AwsRoute53HostedZoneVpcDetails {
	s.Region = &v
	return s
}

// Provides details about a specified Amazon Route 53 configuration for DNS
// query logging.
type AwsRoute53QueryLoggingConfigDetails struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the Amazon CloudWatch Logs log group that
	// Route 53 is publishing logs to.
	CloudWatchLogsLogGroupArn *CloudWatchLogsLogGroupArnConfigDetails `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 AwsRoute53QueryLoggingConfigDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsRoute53QueryLoggingConfigDetails) GoString() string {
	return s.String()
}

// SetCloudWatchLogsLogGroupArn sets the CloudWatchLogsLogGroupArn field's value.
func (s *AwsRoute53QueryLoggingConfigDetails) SetCloudWatchLogsLogGroupArn(v *CloudWatchLogsLogGroupArnConfigDetails) *AwsRoute53QueryLoggingConfigDetails {
	s.CloudWatchLogsLogGroupArn = v
	return s
}

// Returns configuration information about the specified Amazon S3 access point.
// S3 access points are named network endpoints that are attached to buckets
// that you can use to perform S3 object operations.
type AwsS3AccessPointDetails struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the access point.
	AccessPointArn *string `type:"string"`

	// The name or alias of the access point.
	Alias *string `type:"string"`

	// The name of the S3 bucket associated with the specified access point.
	Bucket *string `type:"string"`

	// The Amazon Web Services account ID associated with the S3 bucket associated
	// with this access point.
	BucketAccountId *string `type:"string"`

	// The name of the specified access point.
	Name *string `type:"string"`

	// Indicates whether this access point allows access from the public internet.
	NetworkOrigin *string `type:"string"`

	// provides information about the Amazon S3 Public Access Block configuration
	// for accounts.
	PublicAccessBlockConfiguration *AwsS3AccountPublicAccessBlockDetails `type:"structure"`

	// Contains the virtual private cloud (VPC) configuration for the specified
	// access point.
	VpcConfiguration *AwsS3AccessPointVpcConfigurationDetails `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 AwsS3AccessPointDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3AccessPointDetails) GoString() string {
	return s.String()
}

// SetAccessPointArn sets the AccessPointArn field's value.
func (s *AwsS3AccessPointDetails) SetAccessPointArn(v string) *AwsS3AccessPointDetails {
	s.AccessPointArn = &v
	return s
}

// SetAlias sets the Alias field's value.
func (s *AwsS3AccessPointDetails) SetAlias(v string) *AwsS3AccessPointDetails {
	s.Alias = &v
	return s
}

// SetBucket sets the Bucket field's value.
func (s *AwsS3AccessPointDetails) SetBucket(v string) *AwsS3AccessPointDetails {
	s.Bucket = &v
	return s
}

// SetBucketAccountId sets the BucketAccountId field's value.
func (s *AwsS3AccessPointDetails) SetBucketAccountId(v string) *AwsS3AccessPointDetails {
	s.BucketAccountId = &v
	return s
}

// SetName sets the Name field's value.
func (s *AwsS3AccessPointDetails) SetName(v string) *AwsS3AccessPointDetails {
	s.Name = &v
	return s
}

// SetNetworkOrigin sets the NetworkOrigin field's value.
func (s *AwsS3AccessPointDetails) SetNetworkOrigin(v string) *AwsS3AccessPointDetails {
	s.NetworkOrigin = &v
	return s
}

// SetPublicAccessBlockConfiguration sets the PublicAccessBlockConfiguration field's value.
func (s *AwsS3AccessPointDetails) SetPublicAccessBlockConfiguration(v *AwsS3AccountPublicAccessBlockDetails) *AwsS3AccessPointDetails {
	s.PublicAccessBlockConfiguration = v
	return s
}

// SetVpcConfiguration sets the VpcConfiguration field's value.
func (s *AwsS3AccessPointDetails) SetVpcConfiguration(v *AwsS3AccessPointVpcConfigurationDetails) *AwsS3AccessPointDetails {
	s.VpcConfiguration = v
	return s
}

// The virtual private cloud (VPC) configuration for an Amazon S3 access point.
type AwsS3AccessPointVpcConfigurationDetails struct {
	_ struct{} `type:"structure"`

	// If this field is specified, this access point will only allow connections
	// from the specified VPC ID.
	VpcId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3AccessPointVpcConfigurationDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3AccessPointVpcConfigurationDetails) GoString() string {
	return s.String()
}

// SetVpcId sets the VpcId field's value.
func (s *AwsS3AccessPointVpcConfigurationDetails) SetVpcId(v string) *AwsS3AccessPointVpcConfigurationDetails {
	s.VpcId = &v
	return s
}

// provides information about the Amazon S3 Public Access Block configuration
// for accounts.
type AwsS3AccountPublicAccessBlockDetails struct {
	_ struct{} `type:"structure"`

	// Indicates whether to reject calls to update an S3 bucket if the calls include
	// a public access control list (ACL).
	BlockPublicAcls *bool `type:"boolean"`

	// Indicates whether to reject calls to update the access policy for an S3 bucket
	// or access point if the policy allows public access.
	BlockPublicPolicy *bool `type:"boolean"`

	// Indicates whether Amazon S3 ignores public ACLs that are associated with
	// an S3 bucket.
	IgnorePublicAcls *bool `type:"boolean"`

	// Indicates whether to restrict access to an access point or S3 bucket that
	// has a public policy to only Amazon Web Services service principals and authorized
	// users within the S3 bucket owner's account.
	RestrictPublicBuckets *bool `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 AwsS3AccountPublicAccessBlockDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3AccountPublicAccessBlockDetails) GoString() string {
	return s.String()
}

// SetBlockPublicAcls sets the BlockPublicAcls field's value.
func (s *AwsS3AccountPublicAccessBlockDetails) SetBlockPublicAcls(v bool) *AwsS3AccountPublicAccessBlockDetails {
	s.BlockPublicAcls = &v
	return s
}

// SetBlockPublicPolicy sets the BlockPublicPolicy field's value.
func (s *AwsS3AccountPublicAccessBlockDetails) SetBlockPublicPolicy(v bool) *AwsS3AccountPublicAccessBlockDetails {
	s.BlockPublicPolicy = &v
	return s
}

// SetIgnorePublicAcls sets the IgnorePublicAcls field's value.
func (s *AwsS3AccountPublicAccessBlockDetails) SetIgnorePublicAcls(v bool) *AwsS3AccountPublicAccessBlockDetails {
	s.IgnorePublicAcls = &v
	return s
}

// SetRestrictPublicBuckets sets the RestrictPublicBuckets field's value.
func (s *AwsS3AccountPublicAccessBlockDetails) SetRestrictPublicBuckets(v bool) *AwsS3AccountPublicAccessBlockDetails {
	s.RestrictPublicBuckets = &v
	return s
}

// The lifecycle configuration for the objects in the S3 bucket.
type AwsS3BucketBucketLifecycleConfigurationDetails struct {
	_ struct{} `type:"structure"`

	// The lifecycle rules.
	Rules []*AwsS3BucketBucketLifecycleConfigurationRulesDetails `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 AwsS3BucketBucketLifecycleConfigurationDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketBucketLifecycleConfigurationDetails) GoString() string {
	return s.String()
}

// SetRules sets the Rules field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationDetails) SetRules(v []*AwsS3BucketBucketLifecycleConfigurationRulesDetails) *AwsS3BucketBucketLifecycleConfigurationDetails {
	s.Rules = v
	return s
}

// Information about what Amazon S3 does when a multipart upload is incomplete.
type AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails struct {
	_ struct{} `type:"structure"`

	// The number of days after which Amazon S3 cancels an incomplete multipart
	// upload.
	DaysAfterInitiation *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails) GoString() string {
	return s.String()
}

// SetDaysAfterInitiation sets the DaysAfterInitiation field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails) SetDaysAfterInitiation(v int64) *AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails {
	s.DaysAfterInitiation = &v
	return s
}

// Configuration for a lifecycle rule.
type AwsS3BucketBucketLifecycleConfigurationRulesDetails struct {
	_ struct{} `type:"structure"`

	// How Amazon S3 responds when a multipart upload is incomplete. Specifically,
	// provides a number of days before Amazon S3 cancels the entire upload.
	AbortIncompleteMultipartUpload *AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails `type:"structure"`

	// The date when objects are moved or deleted.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	ExpirationDate *string `type:"string"`

	// The length in days of the lifetime for objects that are subject to the rule.
	ExpirationInDays *int64 `type:"integer"`

	// Whether Amazon S3 removes a delete marker that has no noncurrent versions.
	// If set to true, the delete marker is expired. If set to false, the policy
	// takes no action.
	//
	// If you provide ExpiredObjectDeleteMarker, you cannot provide ExpirationInDays
	// or ExpirationDate.
	ExpiredObjectDeleteMarker *bool `type:"boolean"`

	// Identifies the objects that a rule applies to.
	Filter *AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails `type:"structure"`

	// The unique identifier of the rule.
	ID *string `type:"string"`

	// The number of days that an object is noncurrent before Amazon S3 can perform
	// the associated action.
	NoncurrentVersionExpirationInDays *int64 `type:"integer"`

	// Transition rules that describe when noncurrent objects transition to a specified
	// storage class.
	NoncurrentVersionTransitions []*AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails `type:"list"`

	// A prefix that identifies one or more objects that the rule applies to.
	Prefix *string `type:"string"`

	// The current status of the rule. Indicates whether the rule is currently being
	// applied.
	Status *string `type:"string"`

	// Transition rules that indicate when objects transition to a specified storage
	// class.
	Transitions []*AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails `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 AwsS3BucketBucketLifecycleConfigurationRulesDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketBucketLifecycleConfigurationRulesDetails) GoString() string {
	return s.String()
}

// SetAbortIncompleteMultipartUpload sets the AbortIncompleteMultipartUpload field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesDetails) SetAbortIncompleteMultipartUpload(v *AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails) *AwsS3BucketBucketLifecycleConfigurationRulesDetails {
	s.AbortIncompleteMultipartUpload = v
	return s
}

// SetExpirationDate sets the ExpirationDate field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesDetails) SetExpirationDate(v string) *AwsS3BucketBucketLifecycleConfigurationRulesDetails {
	s.ExpirationDate = &v
	return s
}

// SetExpirationInDays sets the ExpirationInDays field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesDetails) SetExpirationInDays(v int64) *AwsS3BucketBucketLifecycleConfigurationRulesDetails {
	s.ExpirationInDays = &v
	return s
}

// SetExpiredObjectDeleteMarker sets the ExpiredObjectDeleteMarker field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesDetails) SetExpiredObjectDeleteMarker(v bool) *AwsS3BucketBucketLifecycleConfigurationRulesDetails {
	s.ExpiredObjectDeleteMarker = &v
	return s
}

// SetFilter sets the Filter field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesDetails) SetFilter(v *AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails) *AwsS3BucketBucketLifecycleConfigurationRulesDetails {
	s.Filter = v
	return s
}

// SetID sets the ID field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesDetails) SetID(v string) *AwsS3BucketBucketLifecycleConfigurationRulesDetails {
	s.ID = &v
	return s
}

// SetNoncurrentVersionExpirationInDays sets the NoncurrentVersionExpirationInDays field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesDetails) SetNoncurrentVersionExpirationInDays(v int64) *AwsS3BucketBucketLifecycleConfigurationRulesDetails {
	s.NoncurrentVersionExpirationInDays = &v
	return s
}

// SetNoncurrentVersionTransitions sets the NoncurrentVersionTransitions field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesDetails) SetNoncurrentVersionTransitions(v []*AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails) *AwsS3BucketBucketLifecycleConfigurationRulesDetails {
	s.NoncurrentVersionTransitions = v
	return s
}

// SetPrefix sets the Prefix field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesDetails) SetPrefix(v string) *AwsS3BucketBucketLifecycleConfigurationRulesDetails {
	s.Prefix = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesDetails) SetStatus(v string) *AwsS3BucketBucketLifecycleConfigurationRulesDetails {
	s.Status = &v
	return s
}

// SetTransitions sets the Transitions field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesDetails) SetTransitions(v []*AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails) *AwsS3BucketBucketLifecycleConfigurationRulesDetails {
	s.Transitions = v
	return s
}

// Identifies the objects that a rule applies to.
type AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails struct {
	_ struct{} `type:"structure"`

	// The configuration for the filter.
	Predicate *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateDetails `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 AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails) GoString() string {
	return s.String()
}

// SetPredicate sets the Predicate field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails) SetPredicate(v *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateDetails) *AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails {
	s.Predicate = v
	return s
}

// The configuration for the filter.
type AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateDetails struct {
	_ struct{} `type:"structure"`

	// The values to use for the filter.
	Operands []*AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateOperandsDetails `type:"list"`

	// A prefix filter.
	Prefix *string `type:"string"`

	// A tag filter.
	Tag *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateTagDetails `type:"structure"`

	// Whether to use AND or OR to join the operands. Valid values are LifecycleAndOperator
	// or LifecycleOrOperator.
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateDetails) GoString() string {
	return s.String()
}

// SetOperands sets the Operands field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateDetails) SetOperands(v []*AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateOperandsDetails) *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateDetails {
	s.Operands = v
	return s
}

// SetPrefix sets the Prefix field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateDetails) SetPrefix(v string) *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateDetails {
	s.Prefix = &v
	return s
}

// SetTag sets the Tag field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateDetails) SetTag(v *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateTagDetails) *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateDetails {
	s.Tag = v
	return s
}

// SetType sets the Type field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateDetails) SetType(v string) *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateDetails {
	s.Type = &v
	return s
}

// A value to use for the filter.
type AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateOperandsDetails struct {
	_ struct{} `type:"structure"`

	// Prefix text for matching objects.
	Prefix *string `type:"string"`

	// A tag that is assigned to matching objects.
	Tag *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateOperandsTagDetails `type:"structure"`

	// The type of filter value. Valid values are LifecyclePrefixPredicate or LifecycleTagPredicate.
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateOperandsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateOperandsDetails) GoString() string {
	return s.String()
}

// SetPrefix sets the Prefix field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateOperandsDetails) SetPrefix(v string) *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateOperandsDetails {
	s.Prefix = &v
	return s
}

// SetTag sets the Tag field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateOperandsDetails) SetTag(v *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateOperandsTagDetails) *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateOperandsDetails {
	s.Tag = v
	return s
}

// SetType sets the Type field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateOperandsDetails) SetType(v string) *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateOperandsDetails {
	s.Type = &v
	return s
}

// A tag that is assigned to matching objects.
type AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateOperandsTagDetails struct {
	_ struct{} `type:"structure"`

	// The tag key.
	Key *string `type:"string"`

	// The tag value.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateOperandsTagDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateOperandsTagDetails) GoString() string {
	return s.String()
}

// SetKey sets the Key field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateOperandsTagDetails) SetKey(v string) *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateOperandsTagDetails {
	s.Key = &v
	return s
}

// SetValue sets the Value field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateOperandsTagDetails) SetValue(v string) *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateOperandsTagDetails {
	s.Value = &v
	return s
}

// A tag filter.
type AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateTagDetails struct {
	_ struct{} `type:"structure"`

	// The tag key.
	Key *string `type:"string"`

	// The tag value
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateTagDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateTagDetails) GoString() string {
	return s.String()
}

// SetKey sets the Key field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateTagDetails) SetKey(v string) *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateTagDetails {
	s.Key = &v
	return s
}

// SetValue sets the Value field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateTagDetails) SetValue(v string) *AwsS3BucketBucketLifecycleConfigurationRulesFilterPredicateTagDetails {
	s.Value = &v
	return s
}

// A transition rule that describes when noncurrent objects transition to a
// specified storage class.
type AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails struct {
	_ struct{} `type:"structure"`

	// The number of days that an object is noncurrent before Amazon S3 can perform
	// the associated action.
	Days *int64 `type:"integer"`

	// The class of storage to change the object to after the object is noncurrent
	// for the specified number of days.
	StorageClass *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails) GoString() string {
	return s.String()
}

// SetDays sets the Days field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails) SetDays(v int64) *AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails {
	s.Days = &v
	return s
}

// SetStorageClass sets the StorageClass field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails) SetStorageClass(v string) *AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails {
	s.StorageClass = &v
	return s
}

// A rule for when objects transition to specific storage classes.
type AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails struct {
	_ struct{} `type:"structure"`

	// A date on which to transition objects to the specified storage class. If
	// you provide Date, you cannot provide Days.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	Date *string `type:"string"`

	// The number of days after which to transition the object to the specified
	// storage class. If you provide Days, you cannot provide Date.
	Days *int64 `type:"integer"`

	// The storage class to transition the object to. Valid values are as follows:
	//
	//    * DEEP_ARCHIVE
	//
	//    * GLACIER
	//
	//    * INTELLIGENT_TIERING
	//
	//    * ONEZONE_IA
	//
	//    * STANDARD_IA
	StorageClass *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails) GoString() string {
	return s.String()
}

// SetDate sets the Date field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails) SetDate(v string) *AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails {
	s.Date = &v
	return s
}

// SetDays sets the Days field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails) SetDays(v int64) *AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails {
	s.Days = &v
	return s
}

// SetStorageClass sets the StorageClass field's value.
func (s *AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails) SetStorageClass(v string) *AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails {
	s.StorageClass = &v
	return s
}

// Describes the versioning state of an S3 bucket.
type AwsS3BucketBucketVersioningConfiguration struct {
	_ struct{} `type:"structure"`

	// Specifies whether MFA delete is currently enabled in the S3 bucket versioning
	// configuration. If the S3 bucket was never configured with MFA delete, then
	// this attribute is not included.
	IsMfaDeleteEnabled *bool `type:"boolean"`

	// The versioning status of the S3 bucket. Valid values are Enabled or Suspended.
	Status *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketBucketVersioningConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketBucketVersioningConfiguration) GoString() string {
	return s.String()
}

// SetIsMfaDeleteEnabled sets the IsMfaDeleteEnabled field's value.
func (s *AwsS3BucketBucketVersioningConfiguration) SetIsMfaDeleteEnabled(v bool) *AwsS3BucketBucketVersioningConfiguration {
	s.IsMfaDeleteEnabled = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsS3BucketBucketVersioningConfiguration) SetStatus(v string) *AwsS3BucketBucketVersioningConfiguration {
	s.Status = &v
	return s
}

// The details of an Amazon Simple Storage Service (Amazon S3) bucket.
type AwsS3BucketDetails struct {
	_ struct{} `type:"structure"`

	// The access control list for the S3 bucket.
	AccessControlList *string `type:"string"`

	// The lifecycle configuration for objects in the specified bucket.
	BucketLifecycleConfiguration *AwsS3BucketBucketLifecycleConfigurationDetails `type:"structure"`

	// The logging configuration for the S3 bucket.
	BucketLoggingConfiguration *AwsS3BucketLoggingConfiguration `type:"structure"`

	// The notification configuration for the S3 bucket.
	BucketNotificationConfiguration *AwsS3BucketNotificationConfiguration `type:"structure"`

	// The versioning state of an S3 bucket.
	BucketVersioningConfiguration *AwsS3BucketBucketVersioningConfiguration `type:"structure"`

	// The website configuration parameters for the S3 bucket.
	BucketWebsiteConfiguration *AwsS3BucketWebsiteConfiguration `type:"structure"`

	// Indicates when the S3 bucket was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreatedAt *string `type:"string"`

	// The name of the bucket.
	Name *string `type:"string"`

	// Specifies which rule Amazon S3 applies by default to every new object placed
	// in the bucket.
	ObjectLockConfiguration *AwsS3BucketObjectLockConfiguration `type:"structure"`

	// The Amazon Web Services account identifier of the account that owns the S3
	// bucket.
	OwnerAccountId *string `type:"string"`

	// The canonical user ID of the owner of the S3 bucket.
	OwnerId *string `type:"string"`

	// The display name of the owner of the S3 bucket.
	OwnerName *string `type:"string"`

	// Provides information about the Amazon S3 Public Access Block configuration
	// for the S3 bucket.
	PublicAccessBlockConfiguration *AwsS3AccountPublicAccessBlockDetails `type:"structure"`

	// The encryption rules that are applied to the S3 bucket.
	ServerSideEncryptionConfiguration *AwsS3BucketServerSideEncryptionConfiguration `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 AwsS3BucketDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketDetails) GoString() string {
	return s.String()
}

// SetAccessControlList sets the AccessControlList field's value.
func (s *AwsS3BucketDetails) SetAccessControlList(v string) *AwsS3BucketDetails {
	s.AccessControlList = &v
	return s
}

// SetBucketLifecycleConfiguration sets the BucketLifecycleConfiguration field's value.
func (s *AwsS3BucketDetails) SetBucketLifecycleConfiguration(v *AwsS3BucketBucketLifecycleConfigurationDetails) *AwsS3BucketDetails {
	s.BucketLifecycleConfiguration = v
	return s
}

// SetBucketLoggingConfiguration sets the BucketLoggingConfiguration field's value.
func (s *AwsS3BucketDetails) SetBucketLoggingConfiguration(v *AwsS3BucketLoggingConfiguration) *AwsS3BucketDetails {
	s.BucketLoggingConfiguration = v
	return s
}

// SetBucketNotificationConfiguration sets the BucketNotificationConfiguration field's value.
func (s *AwsS3BucketDetails) SetBucketNotificationConfiguration(v *AwsS3BucketNotificationConfiguration) *AwsS3BucketDetails {
	s.BucketNotificationConfiguration = v
	return s
}

// SetBucketVersioningConfiguration sets the BucketVersioningConfiguration field's value.
func (s *AwsS3BucketDetails) SetBucketVersioningConfiguration(v *AwsS3BucketBucketVersioningConfiguration) *AwsS3BucketDetails {
	s.BucketVersioningConfiguration = v
	return s
}

// SetBucketWebsiteConfiguration sets the BucketWebsiteConfiguration field's value.
func (s *AwsS3BucketDetails) SetBucketWebsiteConfiguration(v *AwsS3BucketWebsiteConfiguration) *AwsS3BucketDetails {
	s.BucketWebsiteConfiguration = v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *AwsS3BucketDetails) SetCreatedAt(v string) *AwsS3BucketDetails {
	s.CreatedAt = &v
	return s
}

// SetName sets the Name field's value.
func (s *AwsS3BucketDetails) SetName(v string) *AwsS3BucketDetails {
	s.Name = &v
	return s
}

// SetObjectLockConfiguration sets the ObjectLockConfiguration field's value.
func (s *AwsS3BucketDetails) SetObjectLockConfiguration(v *AwsS3BucketObjectLockConfiguration) *AwsS3BucketDetails {
	s.ObjectLockConfiguration = v
	return s
}

// SetOwnerAccountId sets the OwnerAccountId field's value.
func (s *AwsS3BucketDetails) SetOwnerAccountId(v string) *AwsS3BucketDetails {
	s.OwnerAccountId = &v
	return s
}

// SetOwnerId sets the OwnerId field's value.
func (s *AwsS3BucketDetails) SetOwnerId(v string) *AwsS3BucketDetails {
	s.OwnerId = &v
	return s
}

// SetOwnerName sets the OwnerName field's value.
func (s *AwsS3BucketDetails) SetOwnerName(v string) *AwsS3BucketDetails {
	s.OwnerName = &v
	return s
}

// SetPublicAccessBlockConfiguration sets the PublicAccessBlockConfiguration field's value.
func (s *AwsS3BucketDetails) SetPublicAccessBlockConfiguration(v *AwsS3AccountPublicAccessBlockDetails) *AwsS3BucketDetails {
	s.PublicAccessBlockConfiguration = v
	return s
}

// SetServerSideEncryptionConfiguration sets the ServerSideEncryptionConfiguration field's value.
func (s *AwsS3BucketDetails) SetServerSideEncryptionConfiguration(v *AwsS3BucketServerSideEncryptionConfiguration) *AwsS3BucketDetails {
	s.ServerSideEncryptionConfiguration = v
	return s
}

// Information about logging for the S3 bucket
type AwsS3BucketLoggingConfiguration struct {
	_ struct{} `type:"structure"`

	// The name of the S3 bucket where log files for the S3 bucket are stored.
	DestinationBucketName *string `type:"string"`

	// The prefix added to log files for the S3 bucket.
	LogFilePrefix *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketLoggingConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketLoggingConfiguration) GoString() string {
	return s.String()
}

// SetDestinationBucketName sets the DestinationBucketName field's value.
func (s *AwsS3BucketLoggingConfiguration) SetDestinationBucketName(v string) *AwsS3BucketLoggingConfiguration {
	s.DestinationBucketName = &v
	return s
}

// SetLogFilePrefix sets the LogFilePrefix field's value.
func (s *AwsS3BucketLoggingConfiguration) SetLogFilePrefix(v string) *AwsS3BucketLoggingConfiguration {
	s.LogFilePrefix = &v
	return s
}

// The notification configuration for the S3 bucket.
type AwsS3BucketNotificationConfiguration struct {
	_ struct{} `type:"structure"`

	// Configurations for S3 bucket notifications.
	Configurations []*AwsS3BucketNotificationConfigurationDetail `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 AwsS3BucketNotificationConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketNotificationConfiguration) GoString() string {
	return s.String()
}

// SetConfigurations sets the Configurations field's value.
func (s *AwsS3BucketNotificationConfiguration) SetConfigurations(v []*AwsS3BucketNotificationConfigurationDetail) *AwsS3BucketNotificationConfiguration {
	s.Configurations = v
	return s
}

// Details for an S3 bucket notification configuration.
type AwsS3BucketNotificationConfigurationDetail struct {
	_ struct{} `type:"structure"`

	// The ARN of the Lambda function, Amazon SQS queue, or Amazon SNS topic that
	// generates the notification.
	Destination *string `type:"string"`

	// The list of events that trigger a notification.
	Events []*string `type:"list"`

	// The filters that determine which S3 buckets generate notifications.
	Filter *AwsS3BucketNotificationConfigurationFilter `type:"structure"`

	// Indicates the type of notification. Notifications can be generated using
	// Lambda functions, Amazon SQS queues, or Amazon SNS topics, with corresponding
	// valid values as follows:
	//
	//    * LambdaConfiguration
	//
	//    * QueueConfiguration
	//
	//    * TopicConfiguration
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketNotificationConfigurationDetail) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketNotificationConfigurationDetail) GoString() string {
	return s.String()
}

// SetDestination sets the Destination field's value.
func (s *AwsS3BucketNotificationConfigurationDetail) SetDestination(v string) *AwsS3BucketNotificationConfigurationDetail {
	s.Destination = &v
	return s
}

// SetEvents sets the Events field's value.
func (s *AwsS3BucketNotificationConfigurationDetail) SetEvents(v []*string) *AwsS3BucketNotificationConfigurationDetail {
	s.Events = v
	return s
}

// SetFilter sets the Filter field's value.
func (s *AwsS3BucketNotificationConfigurationDetail) SetFilter(v *AwsS3BucketNotificationConfigurationFilter) *AwsS3BucketNotificationConfigurationDetail {
	s.Filter = v
	return s
}

// SetType sets the Type field's value.
func (s *AwsS3BucketNotificationConfigurationDetail) SetType(v string) *AwsS3BucketNotificationConfigurationDetail {
	s.Type = &v
	return s
}

// Filtering information for the notifications. The filtering is based on Amazon
// S3 key names.
type AwsS3BucketNotificationConfigurationFilter struct {
	_ struct{} `type:"structure"`

	// Details for an Amazon S3 filter.
	S3KeyFilter *AwsS3BucketNotificationConfigurationS3KeyFilter `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 AwsS3BucketNotificationConfigurationFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketNotificationConfigurationFilter) GoString() string {
	return s.String()
}

// SetS3KeyFilter sets the S3KeyFilter field's value.
func (s *AwsS3BucketNotificationConfigurationFilter) SetS3KeyFilter(v *AwsS3BucketNotificationConfigurationS3KeyFilter) *AwsS3BucketNotificationConfigurationFilter {
	s.S3KeyFilter = v
	return s
}

// Details for an Amazon S3 filter.
type AwsS3BucketNotificationConfigurationS3KeyFilter struct {
	_ struct{} `type:"structure"`

	// The filter rules for the filter.
	FilterRules []*AwsS3BucketNotificationConfigurationS3KeyFilterRule `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 AwsS3BucketNotificationConfigurationS3KeyFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketNotificationConfigurationS3KeyFilter) GoString() string {
	return s.String()
}

// SetFilterRules sets the FilterRules field's value.
func (s *AwsS3BucketNotificationConfigurationS3KeyFilter) SetFilterRules(v []*AwsS3BucketNotificationConfigurationS3KeyFilterRule) *AwsS3BucketNotificationConfigurationS3KeyFilter {
	s.FilterRules = v
	return s
}

// Details for a filter rule.
type AwsS3BucketNotificationConfigurationS3KeyFilterRule struct {
	_ struct{} `type:"structure"`

	// Indicates whether the filter is based on the prefix or suffix of the Amazon
	// S3 key.
	Name *string `type:"string" enum:"AwsS3BucketNotificationConfigurationS3KeyFilterRuleName"`

	// The filter value.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketNotificationConfigurationS3KeyFilterRule) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketNotificationConfigurationS3KeyFilterRule) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *AwsS3BucketNotificationConfigurationS3KeyFilterRule) SetName(v string) *AwsS3BucketNotificationConfigurationS3KeyFilterRule {
	s.Name = &v
	return s
}

// SetValue sets the Value field's value.
func (s *AwsS3BucketNotificationConfigurationS3KeyFilterRule) SetValue(v string) *AwsS3BucketNotificationConfigurationS3KeyFilterRule {
	s.Value = &v
	return s
}

// The container element for S3 Object Lock configuration parameters. In Amazon
// S3, Object Lock can help prevent objects from being deleted or overwritten
// for a fixed amount of time or indefinitely.
type AwsS3BucketObjectLockConfiguration struct {
	_ struct{} `type:"structure"`

	// Indicates whether the bucket has an Object Lock configuration enabled.
	ObjectLockEnabled *string `type:"string"`

	// Specifies the Object Lock rule for the specified object.
	Rule *AwsS3BucketObjectLockConfigurationRuleDetails `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 AwsS3BucketObjectLockConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketObjectLockConfiguration) GoString() string {
	return s.String()
}

// SetObjectLockEnabled sets the ObjectLockEnabled field's value.
func (s *AwsS3BucketObjectLockConfiguration) SetObjectLockEnabled(v string) *AwsS3BucketObjectLockConfiguration {
	s.ObjectLockEnabled = &v
	return s
}

// SetRule sets the Rule field's value.
func (s *AwsS3BucketObjectLockConfiguration) SetRule(v *AwsS3BucketObjectLockConfigurationRuleDetails) *AwsS3BucketObjectLockConfiguration {
	s.Rule = v
	return s
}

// The default S3 Object Lock retention mode and period that you want to apply
// to new objects placed in the specified Amazon S3 bucket.
type AwsS3BucketObjectLockConfigurationRuleDefaultRetentionDetails struct {
	_ struct{} `type:"structure"`

	// The number of days that you want to specify for the default retention period.
	Days *int64 `type:"integer"`

	// The default Object Lock retention mode you want to apply to new objects placed
	// in the specified bucket.
	Mode *string `type:"string"`

	// The number of years that you want to specify for the default retention period.
	Years *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketObjectLockConfigurationRuleDefaultRetentionDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketObjectLockConfigurationRuleDefaultRetentionDetails) GoString() string {
	return s.String()
}

// SetDays sets the Days field's value.
func (s *AwsS3BucketObjectLockConfigurationRuleDefaultRetentionDetails) SetDays(v int64) *AwsS3BucketObjectLockConfigurationRuleDefaultRetentionDetails {
	s.Days = &v
	return s
}

// SetMode sets the Mode field's value.
func (s *AwsS3BucketObjectLockConfigurationRuleDefaultRetentionDetails) SetMode(v string) *AwsS3BucketObjectLockConfigurationRuleDefaultRetentionDetails {
	s.Mode = &v
	return s
}

// SetYears sets the Years field's value.
func (s *AwsS3BucketObjectLockConfigurationRuleDefaultRetentionDetails) SetYears(v int64) *AwsS3BucketObjectLockConfigurationRuleDefaultRetentionDetails {
	s.Years = &v
	return s
}

// Specifies the S3 Object Lock rule for the specified object. In Amazon S3,
// Object Lock can help prevent objects from being deleted or overwritten for
// a fixed amount of time or indefinitely.
type AwsS3BucketObjectLockConfigurationRuleDetails struct {
	_ struct{} `type:"structure"`

	// The default Object Lock retention mode and period that you want to apply
	// to new objects placed in the specified bucket.
	DefaultRetention *AwsS3BucketObjectLockConfigurationRuleDefaultRetentionDetails `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 AwsS3BucketObjectLockConfigurationRuleDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketObjectLockConfigurationRuleDetails) GoString() string {
	return s.String()
}

// SetDefaultRetention sets the DefaultRetention field's value.
func (s *AwsS3BucketObjectLockConfigurationRuleDetails) SetDefaultRetention(v *AwsS3BucketObjectLockConfigurationRuleDefaultRetentionDetails) *AwsS3BucketObjectLockConfigurationRuleDetails {
	s.DefaultRetention = v
	return s
}

// Specifies the default server-side encryption to apply to new objects in the
// bucket.
type AwsS3BucketServerSideEncryptionByDefault struct {
	_ struct{} `type:"structure"`

	// KMS key ID to use for the default encryption.
	KMSMasterKeyID *string `type:"string"`

	// Server-side encryption algorithm to use for the default encryption. Valid
	// values are aws: kms or AES256.
	SSEAlgorithm *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketServerSideEncryptionByDefault) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketServerSideEncryptionByDefault) GoString() string {
	return s.String()
}

// SetKMSMasterKeyID sets the KMSMasterKeyID field's value.
func (s *AwsS3BucketServerSideEncryptionByDefault) SetKMSMasterKeyID(v string) *AwsS3BucketServerSideEncryptionByDefault {
	s.KMSMasterKeyID = &v
	return s
}

// SetSSEAlgorithm sets the SSEAlgorithm field's value.
func (s *AwsS3BucketServerSideEncryptionByDefault) SetSSEAlgorithm(v string) *AwsS3BucketServerSideEncryptionByDefault {
	s.SSEAlgorithm = &v
	return s
}

// The encryption configuration for the S3 bucket.
type AwsS3BucketServerSideEncryptionConfiguration struct {
	_ struct{} `type:"structure"`

	// The encryption rules that are applied to the S3 bucket.
	Rules []*AwsS3BucketServerSideEncryptionRule `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 AwsS3BucketServerSideEncryptionConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketServerSideEncryptionConfiguration) GoString() string {
	return s.String()
}

// SetRules sets the Rules field's value.
func (s *AwsS3BucketServerSideEncryptionConfiguration) SetRules(v []*AwsS3BucketServerSideEncryptionRule) *AwsS3BucketServerSideEncryptionConfiguration {
	s.Rules = v
	return s
}

// An encryption rule to apply to the S3 bucket.
type AwsS3BucketServerSideEncryptionRule struct {
	_ struct{} `type:"structure"`

	// Specifies the default server-side encryption to apply to new objects in the
	// bucket. If a PUT object request doesn't specify any server-side encryption,
	// this default encryption is applied.
	ApplyServerSideEncryptionByDefault *AwsS3BucketServerSideEncryptionByDefault `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 AwsS3BucketServerSideEncryptionRule) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketServerSideEncryptionRule) GoString() string {
	return s.String()
}

// SetApplyServerSideEncryptionByDefault sets the ApplyServerSideEncryptionByDefault field's value.
func (s *AwsS3BucketServerSideEncryptionRule) SetApplyServerSideEncryptionByDefault(v *AwsS3BucketServerSideEncryptionByDefault) *AwsS3BucketServerSideEncryptionRule {
	s.ApplyServerSideEncryptionByDefault = v
	return s
}

// Website parameters for the S3 bucket.
type AwsS3BucketWebsiteConfiguration struct {
	_ struct{} `type:"structure"`

	// The name of the error document for the website.
	ErrorDocument *string `type:"string"`

	// The name of the index document for the website.
	IndexDocumentSuffix *string `type:"string"`

	// The redirect behavior for requests to the website.
	RedirectAllRequestsTo *AwsS3BucketWebsiteConfigurationRedirectTo `type:"structure"`

	// The rules for applying redirects for requests to the website.
	RoutingRules []*AwsS3BucketWebsiteConfigurationRoutingRule `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 AwsS3BucketWebsiteConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketWebsiteConfiguration) GoString() string {
	return s.String()
}

// SetErrorDocument sets the ErrorDocument field's value.
func (s *AwsS3BucketWebsiteConfiguration) SetErrorDocument(v string) *AwsS3BucketWebsiteConfiguration {
	s.ErrorDocument = &v
	return s
}

// SetIndexDocumentSuffix sets the IndexDocumentSuffix field's value.
func (s *AwsS3BucketWebsiteConfiguration) SetIndexDocumentSuffix(v string) *AwsS3BucketWebsiteConfiguration {
	s.IndexDocumentSuffix = &v
	return s
}

// SetRedirectAllRequestsTo sets the RedirectAllRequestsTo field's value.
func (s *AwsS3BucketWebsiteConfiguration) SetRedirectAllRequestsTo(v *AwsS3BucketWebsiteConfigurationRedirectTo) *AwsS3BucketWebsiteConfiguration {
	s.RedirectAllRequestsTo = v
	return s
}

// SetRoutingRules sets the RoutingRules field's value.
func (s *AwsS3BucketWebsiteConfiguration) SetRoutingRules(v []*AwsS3BucketWebsiteConfigurationRoutingRule) *AwsS3BucketWebsiteConfiguration {
	s.RoutingRules = v
	return s
}

// The redirect behavior for requests to the website.
type AwsS3BucketWebsiteConfigurationRedirectTo struct {
	_ struct{} `type:"structure"`

	// The name of the host to redirect requests to.
	Hostname *string `type:"string"`

	// The protocol to use when redirecting requests. By default, this field uses
	// the same protocol as the original request. Valid values are http or https.
	Protocol *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketWebsiteConfigurationRedirectTo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketWebsiteConfigurationRedirectTo) GoString() string {
	return s.String()
}

// SetHostname sets the Hostname field's value.
func (s *AwsS3BucketWebsiteConfigurationRedirectTo) SetHostname(v string) *AwsS3BucketWebsiteConfigurationRedirectTo {
	s.Hostname = &v
	return s
}

// SetProtocol sets the Protocol field's value.
func (s *AwsS3BucketWebsiteConfigurationRedirectTo) SetProtocol(v string) *AwsS3BucketWebsiteConfigurationRedirectTo {
	s.Protocol = &v
	return s
}

// A rule for redirecting requests to the website.
type AwsS3BucketWebsiteConfigurationRoutingRule struct {
	_ struct{} `type:"structure"`

	// Provides the condition that must be met in order to apply the routing rule.
	Condition *AwsS3BucketWebsiteConfigurationRoutingRuleCondition `type:"structure"`

	// Provides the rules to redirect the request if the condition in Condition
	// is met.
	Redirect *AwsS3BucketWebsiteConfigurationRoutingRuleRedirect `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 AwsS3BucketWebsiteConfigurationRoutingRule) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketWebsiteConfigurationRoutingRule) GoString() string {
	return s.String()
}

// SetCondition sets the Condition field's value.
func (s *AwsS3BucketWebsiteConfigurationRoutingRule) SetCondition(v *AwsS3BucketWebsiteConfigurationRoutingRuleCondition) *AwsS3BucketWebsiteConfigurationRoutingRule {
	s.Condition = v
	return s
}

// SetRedirect sets the Redirect field's value.
func (s *AwsS3BucketWebsiteConfigurationRoutingRule) SetRedirect(v *AwsS3BucketWebsiteConfigurationRoutingRuleRedirect) *AwsS3BucketWebsiteConfigurationRoutingRule {
	s.Redirect = v
	return s
}

// The condition that must be met in order to apply the routing rule.
type AwsS3BucketWebsiteConfigurationRoutingRuleCondition struct {
	_ struct{} `type:"structure"`

	// Indicates to redirect the request if the HTTP error code matches this value.
	HttpErrorCodeReturnedEquals *string `type:"string"`

	// Indicates to redirect the request if the key prefix matches this value.
	KeyPrefixEquals *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketWebsiteConfigurationRoutingRuleCondition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketWebsiteConfigurationRoutingRuleCondition) GoString() string {
	return s.String()
}

// SetHttpErrorCodeReturnedEquals sets the HttpErrorCodeReturnedEquals field's value.
func (s *AwsS3BucketWebsiteConfigurationRoutingRuleCondition) SetHttpErrorCodeReturnedEquals(v string) *AwsS3BucketWebsiteConfigurationRoutingRuleCondition {
	s.HttpErrorCodeReturnedEquals = &v
	return s
}

// SetKeyPrefixEquals sets the KeyPrefixEquals field's value.
func (s *AwsS3BucketWebsiteConfigurationRoutingRuleCondition) SetKeyPrefixEquals(v string) *AwsS3BucketWebsiteConfigurationRoutingRuleCondition {
	s.KeyPrefixEquals = &v
	return s
}

// The rules to redirect the request if the condition in Condition is met.
type AwsS3BucketWebsiteConfigurationRoutingRuleRedirect struct {
	_ struct{} `type:"structure"`

	// The host name to use in the redirect request.
	Hostname *string `type:"string"`

	// The HTTP redirect code to use in the response.
	HttpRedirectCode *string `type:"string"`

	// The protocol to use to redirect the request. By default, uses the protocol
	// from the original request.
	Protocol *string `type:"string"`

	// The object key prefix to use in the redirect request.
	//
	// Cannot be provided if ReplaceKeyWith is present.
	ReplaceKeyPrefixWith *string `type:"string"`

	// The specific object key to use in the redirect request.
	//
	// Cannot be provided if ReplaceKeyPrefixWith is present.
	ReplaceKeyWith *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketWebsiteConfigurationRoutingRuleRedirect) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3BucketWebsiteConfigurationRoutingRuleRedirect) GoString() string {
	return s.String()
}

// SetHostname sets the Hostname field's value.
func (s *AwsS3BucketWebsiteConfigurationRoutingRuleRedirect) SetHostname(v string) *AwsS3BucketWebsiteConfigurationRoutingRuleRedirect {
	s.Hostname = &v
	return s
}

// SetHttpRedirectCode sets the HttpRedirectCode field's value.
func (s *AwsS3BucketWebsiteConfigurationRoutingRuleRedirect) SetHttpRedirectCode(v string) *AwsS3BucketWebsiteConfigurationRoutingRuleRedirect {
	s.HttpRedirectCode = &v
	return s
}

// SetProtocol sets the Protocol field's value.
func (s *AwsS3BucketWebsiteConfigurationRoutingRuleRedirect) SetProtocol(v string) *AwsS3BucketWebsiteConfigurationRoutingRuleRedirect {
	s.Protocol = &v
	return s
}

// SetReplaceKeyPrefixWith sets the ReplaceKeyPrefixWith field's value.
func (s *AwsS3BucketWebsiteConfigurationRoutingRuleRedirect) SetReplaceKeyPrefixWith(v string) *AwsS3BucketWebsiteConfigurationRoutingRuleRedirect {
	s.ReplaceKeyPrefixWith = &v
	return s
}

// SetReplaceKeyWith sets the ReplaceKeyWith field's value.
func (s *AwsS3BucketWebsiteConfigurationRoutingRuleRedirect) SetReplaceKeyWith(v string) *AwsS3BucketWebsiteConfigurationRoutingRuleRedirect {
	s.ReplaceKeyWith = &v
	return s
}

// Details about an Amazon S3 object.
type AwsS3ObjectDetails struct {
	_ struct{} `type:"structure"`

	// A standard MIME type describing the format of the object data.
	ContentType *string `type:"string"`

	// The opaque identifier assigned by a web server to a specific version of a
	// resource found at a URL.
	ETag *string `type:"string"`

	// Indicates when the object was last modified.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	LastModified *string `type:"string"`

	// The identifier of the KMS symmetric customer managed key that was used for
	// the object.
	SSEKMSKeyId *string `type:"string"`

	// If the object is stored using server-side encryption, the value of the server-side
	// encryption algorithm used when storing this object in Amazon S3.
	ServerSideEncryption *string `type:"string"`

	// The version of the object.
	VersionId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3ObjectDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsS3ObjectDetails) GoString() string {
	return s.String()
}

// SetContentType sets the ContentType field's value.
func (s *AwsS3ObjectDetails) SetContentType(v string) *AwsS3ObjectDetails {
	s.ContentType = &v
	return s
}

// SetETag sets the ETag field's value.
func (s *AwsS3ObjectDetails) SetETag(v string) *AwsS3ObjectDetails {
	s.ETag = &v
	return s
}

// SetLastModified sets the LastModified field's value.
func (s *AwsS3ObjectDetails) SetLastModified(v string) *AwsS3ObjectDetails {
	s.LastModified = &v
	return s
}

// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
func (s *AwsS3ObjectDetails) SetSSEKMSKeyId(v string) *AwsS3ObjectDetails {
	s.SSEKMSKeyId = &v
	return s
}

// SetServerSideEncryption sets the ServerSideEncryption field's value.
func (s *AwsS3ObjectDetails) SetServerSideEncryption(v string) *AwsS3ObjectDetails {
	s.ServerSideEncryption = &v
	return s
}

// SetVersionId sets the VersionId field's value.
func (s *AwsS3ObjectDetails) SetVersionId(v string) *AwsS3ObjectDetails {
	s.VersionId = &v
	return s
}

// Provides details about an Amazon SageMaker notebook instance.
type AwsSageMakerNotebookInstanceDetails struct {
	_ struct{} `type:"structure"`

	// A list of Amazon Elastic Inference instance types to associate with the notebook
	// instance. Currently, only one instance type can be associated with a notebook
	// instance.
	AcceleratorTypes []*string `type:"list"`

	// An array of up to three Git repositories associated with the notebook instance.
	// These can be either the names of Git repositories stored as resources in
	// your account, or the URL of Git repositories in CodeCommit (https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)
	// or in any other Git repository. These repositories are cloned at the same
	// level as the default repository of your notebook instance. For more information,
	// see Associating Git repositories with SageMaker notebook instances (https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html)
	// in the Amazon SageMaker Developer Guide.
	AdditionalCodeRepositories []*string `type:"list"`

	// The Git repository associated with the notebook instance as its default code
	// repository. This can be either the name of a Git repository stored as a resource
	// in your account, or the URL of a Git repository in CodeCommit (https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)
	// or in any other Git repository. When you open a notebook instance, it opens
	// in the directory that contains this repository. For more information, see
	// Associating Git repositories with SageMaker notebook instances (https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html)
	// in the Amazon SageMaker Developer Guide.
	DefaultCodeRepository *string `type:"string"`

	// Sets whether SageMaker provides internet access to the notebook instance.
	// If you set this to Disabled, this notebook instance is able to access resources
	// only in your VPC, and is not be able to connect to SageMaker training and
	// endpoint services unless you configure a Network Address Translation (NAT)
	// Gateway in your VPC.
	DirectInternetAccess *string `type:"string"`

	// If status of the instance is Failed, the reason it failed.
	FailureReason *string `type:"string"`

	// Information on the IMDS configuration of the notebook instance.
	InstanceMetadataServiceConfiguration *AwsSageMakerNotebookInstanceMetadataServiceConfigurationDetails `type:"structure"`

	// The type of machine learning (ML) compute instance to launch for the notebook
	// instance.
	InstanceType *string `type:"string"`

	// The Amazon Resource Name (ARN) of an Key Management Service (KMS) key that
	// SageMaker uses to encrypt data on the storage volume attached to your notebook
	// instance. The KMS key you provide must be enabled. For information, see Enabling
	// and disabling keys (https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html)
	// in the Key Management Service Developer Guide.
	KmsKeyId *string `type:"string"`

	// The network interface ID that SageMaker created when the instance was created.
	NetworkInterfaceId *string `type:"string"`

	// The Amazon Resource Name (ARN) of the notebook instance.
	NotebookInstanceArn *string `type:"string"`

	// The name of a notebook instance lifecycle configuration.
	NotebookInstanceLifecycleConfigName *string `type:"string"`

	// The name of the new notebook instance.
	NotebookInstanceName *string `type:"string"`

	// The status of the notebook instance.
	NotebookInstanceStatus *string `type:"string"`

	// The platform identifier of the notebook instance runtime environment.
	PlatformIdentifier *string `type:"string"`

	// The Amazon Resource Name (ARN) of the IAM role associated with the instance.
	RoleArn *string `type:"string"`

	// Whether root access is enabled or disabled for users of the notebook instance.
	RootAccess *string `type:"string"`

	// The VPC security group IDs.
	SecurityGroups []*string `type:"list"`

	// The ID of the VPC subnet to which you have a connectivity from your ML compute
	// instance.
	SubnetId *string `type:"string"`

	// The URL that you use to connect to the Jupyter notebook that is running in
	// your notebook instance.
	Url *string `type:"string"`

	// The size, in GB, of the ML storage volume to attach to the notebook instance.
	VolumeSizeInGB *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsSageMakerNotebookInstanceDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsSageMakerNotebookInstanceDetails) GoString() string {
	return s.String()
}

// SetAcceleratorTypes sets the AcceleratorTypes field's value.
func (s *AwsSageMakerNotebookInstanceDetails) SetAcceleratorTypes(v []*string) *AwsSageMakerNotebookInstanceDetails {
	s.AcceleratorTypes = v
	return s
}

// SetAdditionalCodeRepositories sets the AdditionalCodeRepositories field's value.
func (s *AwsSageMakerNotebookInstanceDetails) SetAdditionalCodeRepositories(v []*string) *AwsSageMakerNotebookInstanceDetails {
	s.AdditionalCodeRepositories = v
	return s
}

// SetDefaultCodeRepository sets the DefaultCodeRepository field's value.
func (s *AwsSageMakerNotebookInstanceDetails) SetDefaultCodeRepository(v string) *AwsSageMakerNotebookInstanceDetails {
	s.DefaultCodeRepository = &v
	return s
}

// SetDirectInternetAccess sets the DirectInternetAccess field's value.
func (s *AwsSageMakerNotebookInstanceDetails) SetDirectInternetAccess(v string) *AwsSageMakerNotebookInstanceDetails {
	s.DirectInternetAccess = &v
	return s
}

// SetFailureReason sets the FailureReason field's value.
func (s *AwsSageMakerNotebookInstanceDetails) SetFailureReason(v string) *AwsSageMakerNotebookInstanceDetails {
	s.FailureReason = &v
	return s
}

// SetInstanceMetadataServiceConfiguration sets the InstanceMetadataServiceConfiguration field's value.
func (s *AwsSageMakerNotebookInstanceDetails) SetInstanceMetadataServiceConfiguration(v *AwsSageMakerNotebookInstanceMetadataServiceConfigurationDetails) *AwsSageMakerNotebookInstanceDetails {
	s.InstanceMetadataServiceConfiguration = v
	return s
}

// SetInstanceType sets the InstanceType field's value.
func (s *AwsSageMakerNotebookInstanceDetails) SetInstanceType(v string) *AwsSageMakerNotebookInstanceDetails {
	s.InstanceType = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *AwsSageMakerNotebookInstanceDetails) SetKmsKeyId(v string) *AwsSageMakerNotebookInstanceDetails {
	s.KmsKeyId = &v
	return s
}

// SetNetworkInterfaceId sets the NetworkInterfaceId field's value.
func (s *AwsSageMakerNotebookInstanceDetails) SetNetworkInterfaceId(v string) *AwsSageMakerNotebookInstanceDetails {
	s.NetworkInterfaceId = &v
	return s
}

// SetNotebookInstanceArn sets the NotebookInstanceArn field's value.
func (s *AwsSageMakerNotebookInstanceDetails) SetNotebookInstanceArn(v string) *AwsSageMakerNotebookInstanceDetails {
	s.NotebookInstanceArn = &v
	return s
}

// SetNotebookInstanceLifecycleConfigName sets the NotebookInstanceLifecycleConfigName field's value.
func (s *AwsSageMakerNotebookInstanceDetails) SetNotebookInstanceLifecycleConfigName(v string) *AwsSageMakerNotebookInstanceDetails {
	s.NotebookInstanceLifecycleConfigName = &v
	return s
}

// SetNotebookInstanceName sets the NotebookInstanceName field's value.
func (s *AwsSageMakerNotebookInstanceDetails) SetNotebookInstanceName(v string) *AwsSageMakerNotebookInstanceDetails {
	s.NotebookInstanceName = &v
	return s
}

// SetNotebookInstanceStatus sets the NotebookInstanceStatus field's value.
func (s *AwsSageMakerNotebookInstanceDetails) SetNotebookInstanceStatus(v string) *AwsSageMakerNotebookInstanceDetails {
	s.NotebookInstanceStatus = &v
	return s
}

// SetPlatformIdentifier sets the PlatformIdentifier field's value.
func (s *AwsSageMakerNotebookInstanceDetails) SetPlatformIdentifier(v string) *AwsSageMakerNotebookInstanceDetails {
	s.PlatformIdentifier = &v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *AwsSageMakerNotebookInstanceDetails) SetRoleArn(v string) *AwsSageMakerNotebookInstanceDetails {
	s.RoleArn = &v
	return s
}

// SetRootAccess sets the RootAccess field's value.
func (s *AwsSageMakerNotebookInstanceDetails) SetRootAccess(v string) *AwsSageMakerNotebookInstanceDetails {
	s.RootAccess = &v
	return s
}

// SetSecurityGroups sets the SecurityGroups field's value.
func (s *AwsSageMakerNotebookInstanceDetails) SetSecurityGroups(v []*string) *AwsSageMakerNotebookInstanceDetails {
	s.SecurityGroups = v
	return s
}

// SetSubnetId sets the SubnetId field's value.
func (s *AwsSageMakerNotebookInstanceDetails) SetSubnetId(v string) *AwsSageMakerNotebookInstanceDetails {
	s.SubnetId = &v
	return s
}

// SetUrl sets the Url field's value.
func (s *AwsSageMakerNotebookInstanceDetails) SetUrl(v string) *AwsSageMakerNotebookInstanceDetails {
	s.Url = &v
	return s
}

// SetVolumeSizeInGB sets the VolumeSizeInGB field's value.
func (s *AwsSageMakerNotebookInstanceDetails) SetVolumeSizeInGB(v int64) *AwsSageMakerNotebookInstanceDetails {
	s.VolumeSizeInGB = &v
	return s
}

// Information on the instance metadata service (IMDS) configuration of the
// notebook instance.
type AwsSageMakerNotebookInstanceMetadataServiceConfigurationDetails struct {
	_ struct{} `type:"structure"`

	// Indicates the minimum IMDS version that the notebook instance supports.
	MinimumInstanceMetadataServiceVersion *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsSageMakerNotebookInstanceMetadataServiceConfigurationDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsSageMakerNotebookInstanceMetadataServiceConfigurationDetails) GoString() string {
	return s.String()
}

// SetMinimumInstanceMetadataServiceVersion sets the MinimumInstanceMetadataServiceVersion field's value.
func (s *AwsSageMakerNotebookInstanceMetadataServiceConfigurationDetails) SetMinimumInstanceMetadataServiceVersion(v string) *AwsSageMakerNotebookInstanceMetadataServiceConfigurationDetails {
	s.MinimumInstanceMetadataServiceVersion = &v
	return s
}

// Details about an Secrets Manager secret.
type AwsSecretsManagerSecretDetails struct {
	_ struct{} `type:"structure"`

	// Whether the secret is deleted.
	Deleted *bool `type:"boolean"`

	// The user-provided description of the secret.
	Description *string `type:"string"`

	// The ARN, Key ID, or alias of the KMS key used to encrypt the SecretString
	// or SecretBinary values for versions of this secret.
	KmsKeyId *string `type:"string"`

	// The name of the secret.
	Name *string `type:"string"`

	// Whether rotation is enabled.
	RotationEnabled *bool `type:"boolean"`

	// The ARN of the Lambda function that rotates the secret.
	RotationLambdaArn *string `type:"string"`

	// Whether the rotation occurred within the specified rotation frequency.
	RotationOccurredWithinFrequency *bool `type:"boolean"`

	// Defines the rotation schedule for the secret.
	RotationRules *AwsSecretsManagerSecretRotationRules `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 AwsSecretsManagerSecretDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsSecretsManagerSecretDetails) GoString() string {
	return s.String()
}

// SetDeleted sets the Deleted field's value.
func (s *AwsSecretsManagerSecretDetails) SetDeleted(v bool) *AwsSecretsManagerSecretDetails {
	s.Deleted = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *AwsSecretsManagerSecretDetails) SetDescription(v string) *AwsSecretsManagerSecretDetails {
	s.Description = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *AwsSecretsManagerSecretDetails) SetKmsKeyId(v string) *AwsSecretsManagerSecretDetails {
	s.KmsKeyId = &v
	return s
}

// SetName sets the Name field's value.
func (s *AwsSecretsManagerSecretDetails) SetName(v string) *AwsSecretsManagerSecretDetails {
	s.Name = &v
	return s
}

// SetRotationEnabled sets the RotationEnabled field's value.
func (s *AwsSecretsManagerSecretDetails) SetRotationEnabled(v bool) *AwsSecretsManagerSecretDetails {
	s.RotationEnabled = &v
	return s
}

// SetRotationLambdaArn sets the RotationLambdaArn field's value.
func (s *AwsSecretsManagerSecretDetails) SetRotationLambdaArn(v string) *AwsSecretsManagerSecretDetails {
	s.RotationLambdaArn = &v
	return s
}

// SetRotationOccurredWithinFrequency sets the RotationOccurredWithinFrequency field's value.
func (s *AwsSecretsManagerSecretDetails) SetRotationOccurredWithinFrequency(v bool) *AwsSecretsManagerSecretDetails {
	s.RotationOccurredWithinFrequency = &v
	return s
}

// SetRotationRules sets the RotationRules field's value.
func (s *AwsSecretsManagerSecretDetails) SetRotationRules(v *AwsSecretsManagerSecretRotationRules) *AwsSecretsManagerSecretDetails {
	s.RotationRules = v
	return s
}

// Defines the rotation schedule for the secret.
type AwsSecretsManagerSecretRotationRules struct {
	_ struct{} `type:"structure"`

	// The number of days after the previous rotation to rotate the secret.
	AutomaticallyAfterDays *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsSecretsManagerSecretRotationRules) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsSecretsManagerSecretRotationRules) GoString() string {
	return s.String()
}

// SetAutomaticallyAfterDays sets the AutomaticallyAfterDays field's value.
func (s *AwsSecretsManagerSecretRotationRules) SetAutomaticallyAfterDays(v int64) *AwsSecretsManagerSecretRotationRules {
	s.AutomaticallyAfterDays = &v
	return s
}

// Provides a consistent format for Security Hub findings. AwsSecurityFinding
// format allows you to share findings between Amazon Web Services security
// services and third-party solutions.
//
// A finding is a potential security issue generated either by Amazon Web Services
// services or by the integrated third-party solutions and standards checks.
type AwsSecurityFinding struct {
	_ struct{} `type:"structure"`

	// Provides details about an action that affects or that was taken on a resource.
	Action *Action `type:"structure"`

	// The Amazon Web Services account ID that a finding is generated in.
	//
	// Length Constraints: 12.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `type:"string" required:"true"`

	// The name of the Amazon Web Services account from which a finding was generated.
	//
	// Length Constraints: Minimum length of 1. Maximum length of 50.
	AwsAccountName *string `type:"string"`

	// The name of the company for the product that generated the finding.
	//
	// Security Hub populates this attribute automatically for each finding. You
	// cannot update this attribute with BatchImportFindings or BatchUpdateFindings.
	// The exception to this is a custom integration.
	//
	// When you use the Security Hub console or API to filter findings by company
	// name, you use this attribute.
	//
	// Length Constraints: Minimum length of 1. Maximum length of 128.
	CompanyName *string `type:"string"`

	// This data type is exclusive to findings that are generated as the result
	// of a check run against a specific rule in a supported security standard,
	// such as CIS Amazon Web Services Foundations. Contains security standard-related
	// finding details.
	Compliance *Compliance `type:"structure"`

	// A finding's confidence. Confidence is defined as the likelihood that a finding
	// accurately identifies the behavior or issue that it was intended to identify.
	//
	// Confidence is scored on a 0-100 basis using a ratio scale, where 0 means
	// zero percent confidence and 100 means 100 percent confidence.
	Confidence *int64 `type:"integer"`

	// Indicates when the security findings provider created the potential security
	// issue that a finding captured.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	//
	// CreatedAt is a required field
	CreatedAt *string `type:"string" required:"true"`

	// The level of importance assigned to the resources associated with the finding.
	//
	// A score of 0 means that the underlying resources have no criticality, and
	// a score of 100 is reserved for the most critical resources.
	Criticality *int64 `type:"integer"`

	// A finding's description. Description is a required property.
	//
	// Length Constraints: Minimum length of 1. Maximum length of 1024.
	//
	// Description is a required field
	Description *string `type:"string" required:"true"`

	// In a BatchImportFindings request, finding providers use FindingProviderFields
	// to provide and update their own values for confidence, criticality, related
	// findings, severity, and types.
	FindingProviderFields *FindingProviderFields `type:"structure"`

	// Indicates when the security findings provider first observed the potential
	// security issue that a finding captured.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	FirstObservedAt *string `type:"string"`

	// Provides metadata for the Amazon CodeGuru detector associated with a finding.
	// This field pertains to findings that relate to Lambda functions. Amazon Inspector
	// identifies policy violations and vulnerabilities in Lambda function code
	// based on internal detectors developed in collaboration with Amazon CodeGuru.
	// Security Hub receives those findings.
	GeneratorDetails *GeneratorDetails `type:"structure"`

	// The identifier for the solution-specific component (a discrete unit of logic)
	// that generated a finding. In various security findings providers' solutions,
	// this generator can be called a rule, a check, a detector, a plugin, or something
	// else.
	//
	// Length Constraints: Minimum length of 1. Maximum length of 512.
	//
	// GeneratorId is a required field
	GeneratorId *string `type:"string" required:"true"`

	// The security findings provider-specific identifier for a finding.
	//
	// Length Constraints: Minimum length of 1. Maximum length of 512.
	//
	// Id is a required field
	Id *string `type:"string" required:"true"`

	// Indicates when the security findings provider most recently observed the
	// potential security issue that a finding captured.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	LastObservedAt *string `type:"string"`

	// A list of malware related to a finding.
	//
	// Array Members: Maximum number of 5 items.
	Malware []*Malware `type:"list"`

	// The details of network-related information about a finding.
	Network *Network `type:"structure"`

	// Provides information about a network path that is relevant to a finding.
	// Each entry under NetworkPath represents a component of that path.
	NetworkPath []*NetworkPathComponent `type:"list"`

	// A user-defined note added to a finding.
	Note *Note `type:"structure"`

	// Provides an overview of the patch compliance status for an instance against
	// a selected compliance standard.
	PatchSummary *PatchSummary `type:"structure"`

	// The details of process-related information about a finding.
	Process *ProcessDetails `type:"structure"`

	// A timestamp that indicates when Security Hub received a finding and begins
	// to process it.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	ProcessedAt *string `type:"string"`

	// The ARN generated by Security Hub that uniquely identifies a product that
	// generates findings. This can be the ARN for a third-party product that is
	// integrated with Security Hub, or the ARN for a custom integration.
	//
	// Length Constraints: Minimum length of 12. Maximum length of 2048.
	//
	// ProductArn is a required field
	ProductArn *string `type:"string" required:"true"`

	// A data type where security findings providers can include additional solution-specific
	// details that aren't part of the defined AwsSecurityFinding format.
	//
	// Can contain up to 50 key-value pairs. For each key-value pair, the key can
	// contain up to 128 characters, and the value can contain up to 2048 characters.
	ProductFields map[string]*string `type:"map"`

	// The name of the product that generated the finding.
	//
	// Security Hub populates this attribute automatically for each finding. You
	// cannot update this attribute with BatchImportFindings or BatchUpdateFindings.
	// The exception to this is a custom integration.
	//
	// When you use the Security Hub console or API to filter findings by product
	// name, you use this attribute.
	//
	// Length Constraints: Minimum length of 1. Maximum length of 128.
	ProductName *string `type:"string"`

	// The record state of a finding.
	RecordState *string `type:"string" enum:"RecordState"`

	// The Region from which the finding was generated.
	//
	// Security Hub populates this attribute automatically for each finding. You
	// cannot update it using BatchImportFindings or BatchUpdateFindings.
	//
	// Length Constraints: Minimum length of 1. Maximum length of 16.
	Region *string `type:"string"`

	// A list of related findings.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 10 items.
	RelatedFindings []*RelatedFinding `type:"list"`

	// A data type that describes the remediation options for a finding.
	Remediation *Remediation `type:"structure"`

	// A set of resource data types that describe the resources that the finding
	// refers to.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 32 items.
	//
	// Resources is a required field
	Resources []*Resource `type:"list" required:"true"`

	// Indicates whether the finding is a sample finding.
	Sample *bool `type:"boolean"`

	// The schema version that a finding is formatted for. The value is 2018-10-08.
	//
	// SchemaVersion is a required field
	SchemaVersion *string `type:"string" required:"true"`

	// A finding's severity.
	Severity *Severity `type:"structure"`

	// A URL that links to a page about the current finding in the security findings
	// provider's solution.
	SourceUrl *string `type:"string"`

	// Threat intelligence details related to a finding.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 5 items.
	ThreatIntelIndicators []*ThreatIntelIndicator `type:"list"`

	// Details about the threat detected in a security finding and the file paths
	// that were affected by the threat.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 32 items.
	Threats []*Threat `type:"list"`

	// A finding's title. Title is a required property.
	//
	// Length Constraints: Minimum length of 1. Maximum length of 256.
	//
	// Title is a required field
	Title *string `type:"string" required:"true"`

	// One or more finding types in the format of namespace/category/classifier
	// that classify a finding.
	//
	// Valid namespace values are: Software and Configuration Checks | TTPs | Effects
	// | Unusual Behaviors | Sensitive Data Identifications
	//
	// Array Members: Maximum number of 50 items.
	Types []*string `type:"list"`

	// Indicates when the security findings provider last updated the finding record.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	//
	// UpdatedAt is a required field
	UpdatedAt *string `type:"string" required:"true"`

	// A list of name/value string pairs associated with the finding. These are
	// custom, user-defined fields added to a finding.
	//
	// Can contain up to 50 key-value pairs. For each key-value pair, the key can
	// contain up to 128 characters, and the value can contain up to 1024 characters.
	UserDefinedFields map[string]*string `type:"map"`

	// Indicates the veracity of a finding.
	VerificationState *string `type:"string" enum:"VerificationState"`

	// Provides a list of vulnerabilities associated with the findings.
	Vulnerabilities []*Vulnerability `type:"list"`

	// Provides information about the status of the investigation into a finding.
	Workflow *Workflow `type:"structure"`

	// The workflow state of a finding.
	WorkflowState *string `deprecated:"true" type:"string" enum:"WorkflowState"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsSecurityFinding) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsSecurityFinding) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AwsSecurityFinding) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AwsSecurityFinding"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.CreatedAt == nil {
		invalidParams.Add(request.NewErrParamRequired("CreatedAt"))
	}
	if s.Description == nil {
		invalidParams.Add(request.NewErrParamRequired("Description"))
	}
	if s.GeneratorId == nil {
		invalidParams.Add(request.NewErrParamRequired("GeneratorId"))
	}
	if s.Id == nil {
		invalidParams.Add(request.NewErrParamRequired("Id"))
	}
	if s.ProductArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ProductArn"))
	}
	if s.Resources == nil {
		invalidParams.Add(request.NewErrParamRequired("Resources"))
	}
	if s.SchemaVersion == nil {
		invalidParams.Add(request.NewErrParamRequired("SchemaVersion"))
	}
	if s.Title == nil {
		invalidParams.Add(request.NewErrParamRequired("Title"))
	}
	if s.UpdatedAt == nil {
		invalidParams.Add(request.NewErrParamRequired("UpdatedAt"))
	}
	if s.Compliance != nil {
		if err := s.Compliance.Validate(); err != nil {
			invalidParams.AddNested("Compliance", err.(request.ErrInvalidParams))
		}
	}
	if s.FindingProviderFields != nil {
		if err := s.FindingProviderFields.Validate(); err != nil {
			invalidParams.AddNested("FindingProviderFields", err.(request.ErrInvalidParams))
		}
	}
	if s.Malware != nil {
		for i, v := range s.Malware {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Malware", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Note != nil {
		if err := s.Note.Validate(); err != nil {
			invalidParams.AddNested("Note", err.(request.ErrInvalidParams))
		}
	}
	if s.PatchSummary != nil {
		if err := s.PatchSummary.Validate(); err != nil {
			invalidParams.AddNested("PatchSummary", err.(request.ErrInvalidParams))
		}
	}
	if s.RelatedFindings != nil {
		for i, v := range s.RelatedFindings {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RelatedFindings", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Resources != nil {
		for i, v := range s.Resources {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Resources", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Vulnerabilities != nil {
		for i, v := range s.Vulnerabilities {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Vulnerabilities", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAction sets the Action field's value.
func (s *AwsSecurityFinding) SetAction(v *Action) *AwsSecurityFinding {
	s.Action = v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *AwsSecurityFinding) SetAwsAccountId(v string) *AwsSecurityFinding {
	s.AwsAccountId = &v
	return s
}

// SetAwsAccountName sets the AwsAccountName field's value.
func (s *AwsSecurityFinding) SetAwsAccountName(v string) *AwsSecurityFinding {
	s.AwsAccountName = &v
	return s
}

// SetCompanyName sets the CompanyName field's value.
func (s *AwsSecurityFinding) SetCompanyName(v string) *AwsSecurityFinding {
	s.CompanyName = &v
	return s
}

// SetCompliance sets the Compliance field's value.
func (s *AwsSecurityFinding) SetCompliance(v *Compliance) *AwsSecurityFinding {
	s.Compliance = v
	return s
}

// SetConfidence sets the Confidence field's value.
func (s *AwsSecurityFinding) SetConfidence(v int64) *AwsSecurityFinding {
	s.Confidence = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *AwsSecurityFinding) SetCreatedAt(v string) *AwsSecurityFinding {
	s.CreatedAt = &v
	return s
}

// SetCriticality sets the Criticality field's value.
func (s *AwsSecurityFinding) SetCriticality(v int64) *AwsSecurityFinding {
	s.Criticality = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *AwsSecurityFinding) SetDescription(v string) *AwsSecurityFinding {
	s.Description = &v
	return s
}

// SetFindingProviderFields sets the FindingProviderFields field's value.
func (s *AwsSecurityFinding) SetFindingProviderFields(v *FindingProviderFields) *AwsSecurityFinding {
	s.FindingProviderFields = v
	return s
}

// SetFirstObservedAt sets the FirstObservedAt field's value.
func (s *AwsSecurityFinding) SetFirstObservedAt(v string) *AwsSecurityFinding {
	s.FirstObservedAt = &v
	return s
}

// SetGeneratorDetails sets the GeneratorDetails field's value.
func (s *AwsSecurityFinding) SetGeneratorDetails(v *GeneratorDetails) *AwsSecurityFinding {
	s.GeneratorDetails = v
	return s
}

// SetGeneratorId sets the GeneratorId field's value.
func (s *AwsSecurityFinding) SetGeneratorId(v string) *AwsSecurityFinding {
	s.GeneratorId = &v
	return s
}

// SetId sets the Id field's value.
func (s *AwsSecurityFinding) SetId(v string) *AwsSecurityFinding {
	s.Id = &v
	return s
}

// SetLastObservedAt sets the LastObservedAt field's value.
func (s *AwsSecurityFinding) SetLastObservedAt(v string) *AwsSecurityFinding {
	s.LastObservedAt = &v
	return s
}

// SetMalware sets the Malware field's value.
func (s *AwsSecurityFinding) SetMalware(v []*Malware) *AwsSecurityFinding {
	s.Malware = v
	return s
}

// SetNetwork sets the Network field's value.
func (s *AwsSecurityFinding) SetNetwork(v *Network) *AwsSecurityFinding {
	s.Network = v
	return s
}

// SetNetworkPath sets the NetworkPath field's value.
func (s *AwsSecurityFinding) SetNetworkPath(v []*NetworkPathComponent) *AwsSecurityFinding {
	s.NetworkPath = v
	return s
}

// SetNote sets the Note field's value.
func (s *AwsSecurityFinding) SetNote(v *Note) *AwsSecurityFinding {
	s.Note = v
	return s
}

// SetPatchSummary sets the PatchSummary field's value.
func (s *AwsSecurityFinding) SetPatchSummary(v *PatchSummary) *AwsSecurityFinding {
	s.PatchSummary = v
	return s
}

// SetProcess sets the Process field's value.
func (s *AwsSecurityFinding) SetProcess(v *ProcessDetails) *AwsSecurityFinding {
	s.Process = v
	return s
}

// SetProcessedAt sets the ProcessedAt field's value.
func (s *AwsSecurityFinding) SetProcessedAt(v string) *AwsSecurityFinding {
	s.ProcessedAt = &v
	return s
}

// SetProductArn sets the ProductArn field's value.
func (s *AwsSecurityFinding) SetProductArn(v string) *AwsSecurityFinding {
	s.ProductArn = &v
	return s
}

// SetProductFields sets the ProductFields field's value.
func (s *AwsSecurityFinding) SetProductFields(v map[string]*string) *AwsSecurityFinding {
	s.ProductFields = v
	return s
}

// SetProductName sets the ProductName field's value.
func (s *AwsSecurityFinding) SetProductName(v string) *AwsSecurityFinding {
	s.ProductName = &v
	return s
}

// SetRecordState sets the RecordState field's value.
func (s *AwsSecurityFinding) SetRecordState(v string) *AwsSecurityFinding {
	s.RecordState = &v
	return s
}

// SetRegion sets the Region field's value.
func (s *AwsSecurityFinding) SetRegion(v string) *AwsSecurityFinding {
	s.Region = &v
	return s
}

// SetRelatedFindings sets the RelatedFindings field's value.
func (s *AwsSecurityFinding) SetRelatedFindings(v []*RelatedFinding) *AwsSecurityFinding {
	s.RelatedFindings = v
	return s
}

// SetRemediation sets the Remediation field's value.
func (s *AwsSecurityFinding) SetRemediation(v *Remediation) *AwsSecurityFinding {
	s.Remediation = v
	return s
}

// SetResources sets the Resources field's value.
func (s *AwsSecurityFinding) SetResources(v []*Resource) *AwsSecurityFinding {
	s.Resources = v
	return s
}

// SetSample sets the Sample field's value.
func (s *AwsSecurityFinding) SetSample(v bool) *AwsSecurityFinding {
	s.Sample = &v
	return s
}

// SetSchemaVersion sets the SchemaVersion field's value.
func (s *AwsSecurityFinding) SetSchemaVersion(v string) *AwsSecurityFinding {
	s.SchemaVersion = &v
	return s
}

// SetSeverity sets the Severity field's value.
func (s *AwsSecurityFinding) SetSeverity(v *Severity) *AwsSecurityFinding {
	s.Severity = v
	return s
}

// SetSourceUrl sets the SourceUrl field's value.
func (s *AwsSecurityFinding) SetSourceUrl(v string) *AwsSecurityFinding {
	s.SourceUrl = &v
	return s
}

// SetThreatIntelIndicators sets the ThreatIntelIndicators field's value.
func (s *AwsSecurityFinding) SetThreatIntelIndicators(v []*ThreatIntelIndicator) *AwsSecurityFinding {
	s.ThreatIntelIndicators = v
	return s
}

// SetThreats sets the Threats field's value.
func (s *AwsSecurityFinding) SetThreats(v []*Threat) *AwsSecurityFinding {
	s.Threats = v
	return s
}

// SetTitle sets the Title field's value.
func (s *AwsSecurityFinding) SetTitle(v string) *AwsSecurityFinding {
	s.Title = &v
	return s
}

// SetTypes sets the Types field's value.
func (s *AwsSecurityFinding) SetTypes(v []*string) *AwsSecurityFinding {
	s.Types = v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *AwsSecurityFinding) SetUpdatedAt(v string) *AwsSecurityFinding {
	s.UpdatedAt = &v
	return s
}

// SetUserDefinedFields sets the UserDefinedFields field's value.
func (s *AwsSecurityFinding) SetUserDefinedFields(v map[string]*string) *AwsSecurityFinding {
	s.UserDefinedFields = v
	return s
}

// SetVerificationState sets the VerificationState field's value.
func (s *AwsSecurityFinding) SetVerificationState(v string) *AwsSecurityFinding {
	s.VerificationState = &v
	return s
}

// SetVulnerabilities sets the Vulnerabilities field's value.
func (s *AwsSecurityFinding) SetVulnerabilities(v []*Vulnerability) *AwsSecurityFinding {
	s.Vulnerabilities = v
	return s
}

// SetWorkflow sets the Workflow field's value.
func (s *AwsSecurityFinding) SetWorkflow(v *Workflow) *AwsSecurityFinding {
	s.Workflow = v
	return s
}

// SetWorkflowState sets the WorkflowState field's value.
func (s *AwsSecurityFinding) SetWorkflowState(v string) *AwsSecurityFinding {
	s.WorkflowState = &v
	return s
}

// A collection of filters that are applied to all active findings aggregated
// by Security Hub.
//
// You can filter by up to ten finding attributes. For each attribute, you can
// provide up to 20 filter values.
type AwsSecurityFindingFilters struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID in which a finding is generated.
	AwsAccountId []*StringFilter `type:"list"`

	// The name of the Amazon Web Services account in which a finding is generated.
	AwsAccountName []*StringFilter `type:"list"`

	// The name of the findings provider (company) that owns the solution (product)
	// that generates findings.
	CompanyName []*StringFilter `type:"list"`

	// The unique identifier of a standard in which a control is enabled. This field
	// consists of the resource portion of the Amazon Resource Name (ARN) returned
	// for a standard in the DescribeStandards (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_DescribeStandards.html)
	// API response.
	ComplianceAssociatedStandardsId []*StringFilter `type:"list"`

	// The unique identifier of a control across standards. Values for this field
	// typically consist of an Amazon Web Service and a number, such as APIGateway.5.
	ComplianceSecurityControlId []*StringFilter `type:"list"`

	// The name of a security control parameter.
	ComplianceSecurityControlParametersName []*StringFilter `type:"list"`

	// The current value of a security control parameter.
	ComplianceSecurityControlParametersValue []*StringFilter `type:"list"`

	// Exclusive to findings that are generated as the result of a check run against
	// a specific rule in a supported standard, such as CIS Amazon Web Services
	// Foundations. Contains security standard-related finding details.
	ComplianceStatus []*StringFilter `type:"list"`

	// A finding's confidence. Confidence is defined as the likelihood that a finding
	// accurately identifies the behavior or issue that it was intended to identify.
	//
	// Confidence is scored on a 0-100 basis using a ratio scale, where 0 means
	// zero percent confidence and 100 means 100 percent confidence.
	Confidence []*NumberFilter `type:"list"`

	// A timestamp that indicates when the security findings provider created the
	// potential security issue that a finding reflects.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	CreatedAt []*DateFilter `type:"list"`

	// The level of importance assigned to the resources associated with the finding.
	//
	// A score of 0 means that the underlying resources have no criticality, and
	// a score of 100 is reserved for the most critical resources.
	Criticality []*NumberFilter `type:"list"`

	// A finding's description.
	Description []*StringFilter `type:"list"`

	// The finding provider value for the finding confidence. Confidence is defined
	// as the likelihood that a finding accurately identifies the behavior or issue
	// that it was intended to identify.
	//
	// Confidence is scored on a 0-100 basis using a ratio scale, where 0 means
	// zero percent confidence and 100 means 100 percent confidence.
	FindingProviderFieldsConfidence []*NumberFilter `type:"list"`

	// The finding provider value for the level of importance assigned to the resources
	// associated with the findings.
	//
	// A score of 0 means that the underlying resources have no criticality, and
	// a score of 100 is reserved for the most critical resources.
	FindingProviderFieldsCriticality []*NumberFilter `type:"list"`

	// The finding identifier of a related finding that is identified by the finding
	// provider.
	FindingProviderFieldsRelatedFindingsId []*StringFilter `type:"list"`

	// The ARN of the solution that generated a related finding that is identified
	// by the finding provider.
	FindingProviderFieldsRelatedFindingsProductArn []*StringFilter `type:"list"`

	// The finding provider value for the severity label.
	FindingProviderFieldsSeverityLabel []*StringFilter `type:"list"`

	// The finding provider's original value for the severity.
	FindingProviderFieldsSeverityOriginal []*StringFilter `type:"list"`

	// One or more finding types that the finding provider assigned to the finding.
	// Uses the format of namespace/category/classifier that classify a finding.
	//
	// Valid namespace values are: Software and Configuration Checks | TTPs | Effects
	// | Unusual Behaviors | Sensitive Data Identifications
	FindingProviderFieldsTypes []*StringFilter `type:"list"`

	// A timestamp that indicates when the security findings provider first observed
	// the potential security issue that a finding captured.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	FirstObservedAt []*DateFilter `type:"list"`

	// The identifier for the solution-specific component (a discrete unit of logic)
	// that generated a finding. In various security findings providers' solutions,
	// this generator can be called a rule, a check, a detector, a plugin, etc.
	GeneratorId []*StringFilter `type:"list"`

	// The security findings provider-specific identifier for a finding.
	Id []*StringFilter `type:"list"`

	// A keyword for a finding.
	//
	// Deprecated: The Keyword property is deprecated.
	Keyword []*KeywordFilter `deprecated:"true" type:"list"`

	// A timestamp that indicates when the security findings provider most recently
	// observed the potential security issue that a finding captured.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	LastObservedAt []*DateFilter `type:"list"`

	// The name of the malware that was observed.
	MalwareName []*StringFilter `type:"list"`

	// The filesystem path of the malware that was observed.
	MalwarePath []*StringFilter `type:"list"`

	// The state of the malware that was observed.
	MalwareState []*StringFilter `type:"list"`

	// The type of the malware that was observed.
	MalwareType []*StringFilter `type:"list"`

	// The destination domain of network-related information about a finding.
	NetworkDestinationDomain []*StringFilter `type:"list"`

	// The destination IPv4 address of network-related information about a finding.
	NetworkDestinationIpV4 []*IpFilter `type:"list"`

	// The destination IPv6 address of network-related information about a finding.
	NetworkDestinationIpV6 []*IpFilter `type:"list"`

	// The destination port of network-related information about a finding.
	NetworkDestinationPort []*NumberFilter `type:"list"`

	// Indicates the direction of network traffic associated with a finding.
	NetworkDirection []*StringFilter `type:"list"`

	// The protocol of network-related information about a finding.
	NetworkProtocol []*StringFilter `type:"list"`

	// The source domain of network-related information about a finding.
	NetworkSourceDomain []*StringFilter `type:"list"`

	// The source IPv4 address of network-related information about a finding.
	NetworkSourceIpV4 []*IpFilter `type:"list"`

	// The source IPv6 address of network-related information about a finding.
	NetworkSourceIpV6 []*IpFilter `type:"list"`

	// The source media access control (MAC) address of network-related information
	// about a finding.
	NetworkSourceMac []*StringFilter `type:"list"`

	// The source port of network-related information about a finding.
	NetworkSourcePort []*NumberFilter `type:"list"`

	// The text of a note.
	NoteText []*StringFilter `type:"list"`

	// The timestamp of when the note was updated.
	NoteUpdatedAt []*DateFilter `type:"list"`

	// The principal that created a note.
	NoteUpdatedBy []*StringFilter `type:"list"`

	// A timestamp that identifies when the process was launched.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	ProcessLaunchedAt []*DateFilter `type:"list"`

	// The name of the process.
	ProcessName []*StringFilter `type:"list"`

	// The parent process ID. This field accepts positive integers between O and
	// 2147483647.
	ProcessParentPid []*NumberFilter `type:"list"`

	// The path to the process executable.
	ProcessPath []*StringFilter `type:"list"`

	// The process ID.
	ProcessPid []*NumberFilter `type:"list"`

	// A timestamp that identifies when the process was terminated.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	ProcessTerminatedAt []*DateFilter `type:"list"`

	// The ARN generated by Security Hub that uniquely identifies a third-party
	// company (security findings provider) after this provider's product (solution
	// that generates findings) is registered with Security Hub.
	ProductArn []*StringFilter `type:"list"`

	// A data type where security findings providers can include additional solution-specific
	// details that aren't part of the defined AwsSecurityFinding format.
	ProductFields []*MapFilter `type:"list"`

	// The name of the solution (product) that generates findings.
	ProductName []*StringFilter `type:"list"`

	// The recommendation of what to do about the issue described in a finding.
	RecommendationText []*StringFilter `type:"list"`

	// The updated record state for the finding.
	RecordState []*StringFilter `type:"list"`

	// The Region from which the finding was generated.
	Region []*StringFilter `type:"list"`

	// The solution-generated identifier for a related finding.
	RelatedFindingsId []*StringFilter `type:"list"`

	// The ARN of the solution that generated a related finding.
	RelatedFindingsProductArn []*StringFilter `type:"list"`

	// The ARN of the application that is related to a finding.
	ResourceApplicationArn []*StringFilter `type:"list"`

	// The name of the application that is related to a finding.
	ResourceApplicationName []*StringFilter `type:"list"`

	// The IAM profile ARN of the instance.
	ResourceAwsEc2InstanceIamInstanceProfileArn []*StringFilter `type:"list"`

	// The Amazon Machine Image (AMI) ID of the instance.
	ResourceAwsEc2InstanceImageId []*StringFilter `type:"list"`

	// The IPv4 addresses associated with the instance.
	ResourceAwsEc2InstanceIpV4Addresses []*IpFilter `type:"list"`

	// The IPv6 addresses associated with the instance.
	ResourceAwsEc2InstanceIpV6Addresses []*IpFilter `type:"list"`

	// The key name associated with the instance.
	ResourceAwsEc2InstanceKeyName []*StringFilter `type:"list"`

	// The date and time the instance was launched.
	ResourceAwsEc2InstanceLaunchedAt []*DateFilter `type:"list"`

	// The identifier of the subnet that the instance was launched in.
	ResourceAwsEc2InstanceSubnetId []*StringFilter `type:"list"`

	// The instance type of the instance.
	ResourceAwsEc2InstanceType []*StringFilter `type:"list"`

	// The identifier of the VPC that the instance was launched in.
	ResourceAwsEc2InstanceVpcId []*StringFilter `type:"list"`

	// The creation date/time of the IAM access key related to a finding.
	ResourceAwsIamAccessKeyCreatedAt []*DateFilter `type:"list"`

	// The name of the principal that is associated with an IAM access key.
	ResourceAwsIamAccessKeyPrincipalName []*StringFilter `type:"list"`

	// The status of the IAM access key related to a finding.
	ResourceAwsIamAccessKeyStatus []*StringFilter `type:"list"`

	// The user associated with the IAM access key related to a finding.
	//
	// Deprecated: This filter is deprecated. Instead, use ResourceAwsIamAccessKeyPrincipalName.
	ResourceAwsIamAccessKeyUserName []*StringFilter `deprecated:"true" type:"list"`

	// The name of an IAM user.
	ResourceAwsIamUserUserName []*StringFilter `type:"list"`

	// The canonical user ID of the owner of the S3 bucket.
	ResourceAwsS3BucketOwnerId []*StringFilter `type:"list"`

	// The display name of the owner of the S3 bucket.
	ResourceAwsS3BucketOwnerName []*StringFilter `type:"list"`

	// The identifier of the image related to a finding.
	ResourceContainerImageId []*StringFilter `type:"list"`

	// The name of the image related to a finding.
	ResourceContainerImageName []*StringFilter `type:"list"`

	// A timestamp that identifies when the container was started.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	ResourceContainerLaunchedAt []*DateFilter `type:"list"`

	// The name of the container related to a finding.
	ResourceContainerName []*StringFilter `type:"list"`

	// The details of a resource that doesn't have a specific subfield for the resource
	// type defined.
	ResourceDetailsOther []*MapFilter `type:"list"`

	// The canonical identifier for the given resource type.
	ResourceId []*StringFilter `type:"list"`

	// The canonical Amazon Web Services partition name that the Region is assigned
	// to.
	ResourcePartition []*StringFilter `type:"list"`

	// The canonical Amazon Web Services external Region name where this resource
	// is located.
	ResourceRegion []*StringFilter `type:"list"`

	// A list of Amazon Web Services tags associated with a resource at the time
	// the finding was processed.
	ResourceTags []*MapFilter `type:"list"`

	// Specifies the type of the resource that details are provided for.
	ResourceType []*StringFilter `type:"list"`

	// Indicates whether or not sample findings are included in the filter results.
	Sample []*BooleanFilter `type:"list"`

	// The label of a finding's severity.
	SeverityLabel []*StringFilter `type:"list"`

	// The normalized severity of a finding.
	//
	// Deprecated: This filter is deprecated. Instead, use SeverityLabel or FindingProviderFieldsSeverityLabel.
	SeverityNormalized []*NumberFilter `deprecated:"true" type:"list"`

	// The native severity as defined by the security findings provider's solution
	// that generated the finding.
	//
	// Deprecated: This filter is deprecated. Instead, use FindingProviderSeverityOriginal.
	SeverityProduct []*NumberFilter `deprecated:"true" type:"list"`

	// A URL that links to a page about the current finding in the security findings
	// provider's solution.
	SourceUrl []*StringFilter `type:"list"`

	// The category of a threat intelligence indicator.
	ThreatIntelIndicatorCategory []*StringFilter `type:"list"`

	// A timestamp that identifies the last observation of a threat intelligence
	// indicator.
	ThreatIntelIndicatorLastObservedAt []*DateFilter `type:"list"`

	// The source of the threat intelligence.
	ThreatIntelIndicatorSource []*StringFilter `type:"list"`

	// The URL for more details from the source of the threat intelligence.
	ThreatIntelIndicatorSourceUrl []*StringFilter `type:"list"`

	// The type of a threat intelligence indicator.
	ThreatIntelIndicatorType []*StringFilter `type:"list"`

	// The value of a threat intelligence indicator.
	ThreatIntelIndicatorValue []*StringFilter `type:"list"`

	// A finding's title.
	Title []*StringFilter `type:"list"`

	// A finding type in the format of namespace/category/classifier that classifies
	// a finding.
	Type []*StringFilter `type:"list"`

	// A timestamp that indicates when the security findings provider last updated
	// the finding record.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	UpdatedAt []*DateFilter `type:"list"`

	// A list of name/value string pairs associated with the finding. These are
	// custom, user-defined fields added to a finding.
	UserDefinedFields []*MapFilter `type:"list"`

	// The veracity of a finding.
	VerificationState []*StringFilter `type:"list"`

	// Indicates whether a software vulnerability in your environment has a known
	// exploit. You can filter findings by this field only if you use Security Hub
	// and Amazon Inspector.
	VulnerabilitiesExploitAvailable []*StringFilter `type:"list"`

	// Indicates whether a vulnerability is fixed in a newer version of the affected
	// software packages. You can filter findings by this field only if you use
	// Security Hub and Amazon Inspector.
	VulnerabilitiesFixAvailable []*StringFilter `type:"list"`

	// The workflow state of a finding.
	//
	// Note that this field is deprecated. To search for a finding based on its
	// workflow status, use WorkflowStatus.
	WorkflowState []*StringFilter `type:"list"`

	// The status of the investigation into a finding. Allowed values are the following.
	//
	//    * NEW - The initial state of a finding, before it is reviewed. Security
	//    Hub also resets the workflow status from NOTIFIED or RESOLVED to NEW in
	//    the following cases: RecordState changes from ARCHIVED to ACTIVE. Compliance.Status
	//    changes from PASSED to either WARNING, FAILED, or NOT_AVAILABLE.
	//
	//    * NOTIFIED - Indicates that the resource owner has been notified about
	//    the security issue. Used when the initial reviewer is not the resource
	//    owner, and needs intervention from the resource owner. If one of the following
	//    occurs, the workflow status is changed automatically from NOTIFIED to
	//    NEW: RecordState changes from ARCHIVED to ACTIVE. Compliance.Status changes
	//    from PASSED to FAILED, WARNING, or NOT_AVAILABLE.
	//
	//    * SUPPRESSED - Indicates that you reviewed the finding and do not believe
	//    that any action is needed. The workflow status of a SUPPRESSED finding
	//    does not change if RecordState changes from ARCHIVED to ACTIVE.
	//
	//    * RESOLVED - The finding was reviewed and remediated and is now considered
	//    resolved. The finding remains RESOLVED unless one of the following occurs:
	//    RecordState changes from ARCHIVED to ACTIVE. Compliance.Status changes
	//    from PASSED to FAILED, WARNING, or NOT_AVAILABLE. In those cases, the
	//    workflow status is automatically reset to NEW. For findings from controls,
	//    if Compliance.Status is PASSED, then Security Hub automatically sets the
	//    workflow status to RESOLVED.
	WorkflowStatus []*StringFilter `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 AwsSecurityFindingFilters) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsSecurityFindingFilters) GoString() string {
	return s.String()
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *AwsSecurityFindingFilters) SetAwsAccountId(v []*StringFilter) *AwsSecurityFindingFilters {
	s.AwsAccountId = v
	return s
}

// SetAwsAccountName sets the AwsAccountName field's value.
func (s *AwsSecurityFindingFilters) SetAwsAccountName(v []*StringFilter) *AwsSecurityFindingFilters {
	s.AwsAccountName = v
	return s
}

// SetCompanyName sets the CompanyName field's value.
func (s *AwsSecurityFindingFilters) SetCompanyName(v []*StringFilter) *AwsSecurityFindingFilters {
	s.CompanyName = v
	return s
}

// SetComplianceAssociatedStandardsId sets the ComplianceAssociatedStandardsId field's value.
func (s *AwsSecurityFindingFilters) SetComplianceAssociatedStandardsId(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ComplianceAssociatedStandardsId = v
	return s
}

// SetComplianceSecurityControlId sets the ComplianceSecurityControlId field's value.
func (s *AwsSecurityFindingFilters) SetComplianceSecurityControlId(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ComplianceSecurityControlId = v
	return s
}

// SetComplianceSecurityControlParametersName sets the ComplianceSecurityControlParametersName field's value.
func (s *AwsSecurityFindingFilters) SetComplianceSecurityControlParametersName(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ComplianceSecurityControlParametersName = v
	return s
}

// SetComplianceSecurityControlParametersValue sets the ComplianceSecurityControlParametersValue field's value.
func (s *AwsSecurityFindingFilters) SetComplianceSecurityControlParametersValue(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ComplianceSecurityControlParametersValue = v
	return s
}

// SetComplianceStatus sets the ComplianceStatus field's value.
func (s *AwsSecurityFindingFilters) SetComplianceStatus(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ComplianceStatus = v
	return s
}

// SetConfidence sets the Confidence field's value.
func (s *AwsSecurityFindingFilters) SetConfidence(v []*NumberFilter) *AwsSecurityFindingFilters {
	s.Confidence = v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *AwsSecurityFindingFilters) SetCreatedAt(v []*DateFilter) *AwsSecurityFindingFilters {
	s.CreatedAt = v
	return s
}

// SetCriticality sets the Criticality field's value.
func (s *AwsSecurityFindingFilters) SetCriticality(v []*NumberFilter) *AwsSecurityFindingFilters {
	s.Criticality = v
	return s
}

// SetDescription sets the Description field's value.
func (s *AwsSecurityFindingFilters) SetDescription(v []*StringFilter) *AwsSecurityFindingFilters {
	s.Description = v
	return s
}

// SetFindingProviderFieldsConfidence sets the FindingProviderFieldsConfidence field's value.
func (s *AwsSecurityFindingFilters) SetFindingProviderFieldsConfidence(v []*NumberFilter) *AwsSecurityFindingFilters {
	s.FindingProviderFieldsConfidence = v
	return s
}

// SetFindingProviderFieldsCriticality sets the FindingProviderFieldsCriticality field's value.
func (s *AwsSecurityFindingFilters) SetFindingProviderFieldsCriticality(v []*NumberFilter) *AwsSecurityFindingFilters {
	s.FindingProviderFieldsCriticality = v
	return s
}

// SetFindingProviderFieldsRelatedFindingsId sets the FindingProviderFieldsRelatedFindingsId field's value.
func (s *AwsSecurityFindingFilters) SetFindingProviderFieldsRelatedFindingsId(v []*StringFilter) *AwsSecurityFindingFilters {
	s.FindingProviderFieldsRelatedFindingsId = v
	return s
}

// SetFindingProviderFieldsRelatedFindingsProductArn sets the FindingProviderFieldsRelatedFindingsProductArn field's value.
func (s *AwsSecurityFindingFilters) SetFindingProviderFieldsRelatedFindingsProductArn(v []*StringFilter) *AwsSecurityFindingFilters {
	s.FindingProviderFieldsRelatedFindingsProductArn = v
	return s
}

// SetFindingProviderFieldsSeverityLabel sets the FindingProviderFieldsSeverityLabel field's value.
func (s *AwsSecurityFindingFilters) SetFindingProviderFieldsSeverityLabel(v []*StringFilter) *AwsSecurityFindingFilters {
	s.FindingProviderFieldsSeverityLabel = v
	return s
}

// SetFindingProviderFieldsSeverityOriginal sets the FindingProviderFieldsSeverityOriginal field's value.
func (s *AwsSecurityFindingFilters) SetFindingProviderFieldsSeverityOriginal(v []*StringFilter) *AwsSecurityFindingFilters {
	s.FindingProviderFieldsSeverityOriginal = v
	return s
}

// SetFindingProviderFieldsTypes sets the FindingProviderFieldsTypes field's value.
func (s *AwsSecurityFindingFilters) SetFindingProviderFieldsTypes(v []*StringFilter) *AwsSecurityFindingFilters {
	s.FindingProviderFieldsTypes = v
	return s
}

// SetFirstObservedAt sets the FirstObservedAt field's value.
func (s *AwsSecurityFindingFilters) SetFirstObservedAt(v []*DateFilter) *AwsSecurityFindingFilters {
	s.FirstObservedAt = v
	return s
}

// SetGeneratorId sets the GeneratorId field's value.
func (s *AwsSecurityFindingFilters) SetGeneratorId(v []*StringFilter) *AwsSecurityFindingFilters {
	s.GeneratorId = v
	return s
}

// SetId sets the Id field's value.
func (s *AwsSecurityFindingFilters) SetId(v []*StringFilter) *AwsSecurityFindingFilters {
	s.Id = v
	return s
}

// SetKeyword sets the Keyword field's value.
func (s *AwsSecurityFindingFilters) SetKeyword(v []*KeywordFilter) *AwsSecurityFindingFilters {
	s.Keyword = v
	return s
}

// SetLastObservedAt sets the LastObservedAt field's value.
func (s *AwsSecurityFindingFilters) SetLastObservedAt(v []*DateFilter) *AwsSecurityFindingFilters {
	s.LastObservedAt = v
	return s
}

// SetMalwareName sets the MalwareName field's value.
func (s *AwsSecurityFindingFilters) SetMalwareName(v []*StringFilter) *AwsSecurityFindingFilters {
	s.MalwareName = v
	return s
}

// SetMalwarePath sets the MalwarePath field's value.
func (s *AwsSecurityFindingFilters) SetMalwarePath(v []*StringFilter) *AwsSecurityFindingFilters {
	s.MalwarePath = v
	return s
}

// SetMalwareState sets the MalwareState field's value.
func (s *AwsSecurityFindingFilters) SetMalwareState(v []*StringFilter) *AwsSecurityFindingFilters {
	s.MalwareState = v
	return s
}

// SetMalwareType sets the MalwareType field's value.
func (s *AwsSecurityFindingFilters) SetMalwareType(v []*StringFilter) *AwsSecurityFindingFilters {
	s.MalwareType = v
	return s
}

// SetNetworkDestinationDomain sets the NetworkDestinationDomain field's value.
func (s *AwsSecurityFindingFilters) SetNetworkDestinationDomain(v []*StringFilter) *AwsSecurityFindingFilters {
	s.NetworkDestinationDomain = v
	return s
}

// SetNetworkDestinationIpV4 sets the NetworkDestinationIpV4 field's value.
func (s *AwsSecurityFindingFilters) SetNetworkDestinationIpV4(v []*IpFilter) *AwsSecurityFindingFilters {
	s.NetworkDestinationIpV4 = v
	return s
}

// SetNetworkDestinationIpV6 sets the NetworkDestinationIpV6 field's value.
func (s *AwsSecurityFindingFilters) SetNetworkDestinationIpV6(v []*IpFilter) *AwsSecurityFindingFilters {
	s.NetworkDestinationIpV6 = v
	return s
}

// SetNetworkDestinationPort sets the NetworkDestinationPort field's value.
func (s *AwsSecurityFindingFilters) SetNetworkDestinationPort(v []*NumberFilter) *AwsSecurityFindingFilters {
	s.NetworkDestinationPort = v
	return s
}

// SetNetworkDirection sets the NetworkDirection field's value.
func (s *AwsSecurityFindingFilters) SetNetworkDirection(v []*StringFilter) *AwsSecurityFindingFilters {
	s.NetworkDirection = v
	return s
}

// SetNetworkProtocol sets the NetworkProtocol field's value.
func (s *AwsSecurityFindingFilters) SetNetworkProtocol(v []*StringFilter) *AwsSecurityFindingFilters {
	s.NetworkProtocol = v
	return s
}

// SetNetworkSourceDomain sets the NetworkSourceDomain field's value.
func (s *AwsSecurityFindingFilters) SetNetworkSourceDomain(v []*StringFilter) *AwsSecurityFindingFilters {
	s.NetworkSourceDomain = v
	return s
}

// SetNetworkSourceIpV4 sets the NetworkSourceIpV4 field's value.
func (s *AwsSecurityFindingFilters) SetNetworkSourceIpV4(v []*IpFilter) *AwsSecurityFindingFilters {
	s.NetworkSourceIpV4 = v
	return s
}

// SetNetworkSourceIpV6 sets the NetworkSourceIpV6 field's value.
func (s *AwsSecurityFindingFilters) SetNetworkSourceIpV6(v []*IpFilter) *AwsSecurityFindingFilters {
	s.NetworkSourceIpV6 = v
	return s
}

// SetNetworkSourceMac sets the NetworkSourceMac field's value.
func (s *AwsSecurityFindingFilters) SetNetworkSourceMac(v []*StringFilter) *AwsSecurityFindingFilters {
	s.NetworkSourceMac = v
	return s
}

// SetNetworkSourcePort sets the NetworkSourcePort field's value.
func (s *AwsSecurityFindingFilters) SetNetworkSourcePort(v []*NumberFilter) *AwsSecurityFindingFilters {
	s.NetworkSourcePort = v
	return s
}

// SetNoteText sets the NoteText field's value.
func (s *AwsSecurityFindingFilters) SetNoteText(v []*StringFilter) *AwsSecurityFindingFilters {
	s.NoteText = v
	return s
}

// SetNoteUpdatedAt sets the NoteUpdatedAt field's value.
func (s *AwsSecurityFindingFilters) SetNoteUpdatedAt(v []*DateFilter) *AwsSecurityFindingFilters {
	s.NoteUpdatedAt = v
	return s
}

// SetNoteUpdatedBy sets the NoteUpdatedBy field's value.
func (s *AwsSecurityFindingFilters) SetNoteUpdatedBy(v []*StringFilter) *AwsSecurityFindingFilters {
	s.NoteUpdatedBy = v
	return s
}

// SetProcessLaunchedAt sets the ProcessLaunchedAt field's value.
func (s *AwsSecurityFindingFilters) SetProcessLaunchedAt(v []*DateFilter) *AwsSecurityFindingFilters {
	s.ProcessLaunchedAt = v
	return s
}

// SetProcessName sets the ProcessName field's value.
func (s *AwsSecurityFindingFilters) SetProcessName(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ProcessName = v
	return s
}

// SetProcessParentPid sets the ProcessParentPid field's value.
func (s *AwsSecurityFindingFilters) SetProcessParentPid(v []*NumberFilter) *AwsSecurityFindingFilters {
	s.ProcessParentPid = v
	return s
}

// SetProcessPath sets the ProcessPath field's value.
func (s *AwsSecurityFindingFilters) SetProcessPath(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ProcessPath = v
	return s
}

// SetProcessPid sets the ProcessPid field's value.
func (s *AwsSecurityFindingFilters) SetProcessPid(v []*NumberFilter) *AwsSecurityFindingFilters {
	s.ProcessPid = v
	return s
}

// SetProcessTerminatedAt sets the ProcessTerminatedAt field's value.
func (s *AwsSecurityFindingFilters) SetProcessTerminatedAt(v []*DateFilter) *AwsSecurityFindingFilters {
	s.ProcessTerminatedAt = v
	return s
}

// SetProductArn sets the ProductArn field's value.
func (s *AwsSecurityFindingFilters) SetProductArn(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ProductArn = v
	return s
}

// SetProductFields sets the ProductFields field's value.
func (s *AwsSecurityFindingFilters) SetProductFields(v []*MapFilter) *AwsSecurityFindingFilters {
	s.ProductFields = v
	return s
}

// SetProductName sets the ProductName field's value.
func (s *AwsSecurityFindingFilters) SetProductName(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ProductName = v
	return s
}

// SetRecommendationText sets the RecommendationText field's value.
func (s *AwsSecurityFindingFilters) SetRecommendationText(v []*StringFilter) *AwsSecurityFindingFilters {
	s.RecommendationText = v
	return s
}

// SetRecordState sets the RecordState field's value.
func (s *AwsSecurityFindingFilters) SetRecordState(v []*StringFilter) *AwsSecurityFindingFilters {
	s.RecordState = v
	return s
}

// SetRegion sets the Region field's value.
func (s *AwsSecurityFindingFilters) SetRegion(v []*StringFilter) *AwsSecurityFindingFilters {
	s.Region = v
	return s
}

// SetRelatedFindingsId sets the RelatedFindingsId field's value.
func (s *AwsSecurityFindingFilters) SetRelatedFindingsId(v []*StringFilter) *AwsSecurityFindingFilters {
	s.RelatedFindingsId = v
	return s
}

// SetRelatedFindingsProductArn sets the RelatedFindingsProductArn field's value.
func (s *AwsSecurityFindingFilters) SetRelatedFindingsProductArn(v []*StringFilter) *AwsSecurityFindingFilters {
	s.RelatedFindingsProductArn = v
	return s
}

// SetResourceApplicationArn sets the ResourceApplicationArn field's value.
func (s *AwsSecurityFindingFilters) SetResourceApplicationArn(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ResourceApplicationArn = v
	return s
}

// SetResourceApplicationName sets the ResourceApplicationName field's value.
func (s *AwsSecurityFindingFilters) SetResourceApplicationName(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ResourceApplicationName = v
	return s
}

// SetResourceAwsEc2InstanceIamInstanceProfileArn sets the ResourceAwsEc2InstanceIamInstanceProfileArn field's value.
func (s *AwsSecurityFindingFilters) SetResourceAwsEc2InstanceIamInstanceProfileArn(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ResourceAwsEc2InstanceIamInstanceProfileArn = v
	return s
}

// SetResourceAwsEc2InstanceImageId sets the ResourceAwsEc2InstanceImageId field's value.
func (s *AwsSecurityFindingFilters) SetResourceAwsEc2InstanceImageId(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ResourceAwsEc2InstanceImageId = v
	return s
}

// SetResourceAwsEc2InstanceIpV4Addresses sets the ResourceAwsEc2InstanceIpV4Addresses field's value.
func (s *AwsSecurityFindingFilters) SetResourceAwsEc2InstanceIpV4Addresses(v []*IpFilter) *AwsSecurityFindingFilters {
	s.ResourceAwsEc2InstanceIpV4Addresses = v
	return s
}

// SetResourceAwsEc2InstanceIpV6Addresses sets the ResourceAwsEc2InstanceIpV6Addresses field's value.
func (s *AwsSecurityFindingFilters) SetResourceAwsEc2InstanceIpV6Addresses(v []*IpFilter) *AwsSecurityFindingFilters {
	s.ResourceAwsEc2InstanceIpV6Addresses = v
	return s
}

// SetResourceAwsEc2InstanceKeyName sets the ResourceAwsEc2InstanceKeyName field's value.
func (s *AwsSecurityFindingFilters) SetResourceAwsEc2InstanceKeyName(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ResourceAwsEc2InstanceKeyName = v
	return s
}

// SetResourceAwsEc2InstanceLaunchedAt sets the ResourceAwsEc2InstanceLaunchedAt field's value.
func (s *AwsSecurityFindingFilters) SetResourceAwsEc2InstanceLaunchedAt(v []*DateFilter) *AwsSecurityFindingFilters {
	s.ResourceAwsEc2InstanceLaunchedAt = v
	return s
}

// SetResourceAwsEc2InstanceSubnetId sets the ResourceAwsEc2InstanceSubnetId field's value.
func (s *AwsSecurityFindingFilters) SetResourceAwsEc2InstanceSubnetId(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ResourceAwsEc2InstanceSubnetId = v
	return s
}

// SetResourceAwsEc2InstanceType sets the ResourceAwsEc2InstanceType field's value.
func (s *AwsSecurityFindingFilters) SetResourceAwsEc2InstanceType(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ResourceAwsEc2InstanceType = v
	return s
}

// SetResourceAwsEc2InstanceVpcId sets the ResourceAwsEc2InstanceVpcId field's value.
func (s *AwsSecurityFindingFilters) SetResourceAwsEc2InstanceVpcId(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ResourceAwsEc2InstanceVpcId = v
	return s
}

// SetResourceAwsIamAccessKeyCreatedAt sets the ResourceAwsIamAccessKeyCreatedAt field's value.
func (s *AwsSecurityFindingFilters) SetResourceAwsIamAccessKeyCreatedAt(v []*DateFilter) *AwsSecurityFindingFilters {
	s.ResourceAwsIamAccessKeyCreatedAt = v
	return s
}

// SetResourceAwsIamAccessKeyPrincipalName sets the ResourceAwsIamAccessKeyPrincipalName field's value.
func (s *AwsSecurityFindingFilters) SetResourceAwsIamAccessKeyPrincipalName(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ResourceAwsIamAccessKeyPrincipalName = v
	return s
}

// SetResourceAwsIamAccessKeyStatus sets the ResourceAwsIamAccessKeyStatus field's value.
func (s *AwsSecurityFindingFilters) SetResourceAwsIamAccessKeyStatus(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ResourceAwsIamAccessKeyStatus = v
	return s
}

// SetResourceAwsIamAccessKeyUserName sets the ResourceAwsIamAccessKeyUserName field's value.
func (s *AwsSecurityFindingFilters) SetResourceAwsIamAccessKeyUserName(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ResourceAwsIamAccessKeyUserName = v
	return s
}

// SetResourceAwsIamUserUserName sets the ResourceAwsIamUserUserName field's value.
func (s *AwsSecurityFindingFilters) SetResourceAwsIamUserUserName(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ResourceAwsIamUserUserName = v
	return s
}

// SetResourceAwsS3BucketOwnerId sets the ResourceAwsS3BucketOwnerId field's value.
func (s *AwsSecurityFindingFilters) SetResourceAwsS3BucketOwnerId(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ResourceAwsS3BucketOwnerId = v
	return s
}

// SetResourceAwsS3BucketOwnerName sets the ResourceAwsS3BucketOwnerName field's value.
func (s *AwsSecurityFindingFilters) SetResourceAwsS3BucketOwnerName(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ResourceAwsS3BucketOwnerName = v
	return s
}

// SetResourceContainerImageId sets the ResourceContainerImageId field's value.
func (s *AwsSecurityFindingFilters) SetResourceContainerImageId(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ResourceContainerImageId = v
	return s
}

// SetResourceContainerImageName sets the ResourceContainerImageName field's value.
func (s *AwsSecurityFindingFilters) SetResourceContainerImageName(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ResourceContainerImageName = v
	return s
}

// SetResourceContainerLaunchedAt sets the ResourceContainerLaunchedAt field's value.
func (s *AwsSecurityFindingFilters) SetResourceContainerLaunchedAt(v []*DateFilter) *AwsSecurityFindingFilters {
	s.ResourceContainerLaunchedAt = v
	return s
}

// SetResourceContainerName sets the ResourceContainerName field's value.
func (s *AwsSecurityFindingFilters) SetResourceContainerName(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ResourceContainerName = v
	return s
}

// SetResourceDetailsOther sets the ResourceDetailsOther field's value.
func (s *AwsSecurityFindingFilters) SetResourceDetailsOther(v []*MapFilter) *AwsSecurityFindingFilters {
	s.ResourceDetailsOther = v
	return s
}

// SetResourceId sets the ResourceId field's value.
func (s *AwsSecurityFindingFilters) SetResourceId(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ResourceId = v
	return s
}

// SetResourcePartition sets the ResourcePartition field's value.
func (s *AwsSecurityFindingFilters) SetResourcePartition(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ResourcePartition = v
	return s
}

// SetResourceRegion sets the ResourceRegion field's value.
func (s *AwsSecurityFindingFilters) SetResourceRegion(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ResourceRegion = v
	return s
}

// SetResourceTags sets the ResourceTags field's value.
func (s *AwsSecurityFindingFilters) SetResourceTags(v []*MapFilter) *AwsSecurityFindingFilters {
	s.ResourceTags = v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *AwsSecurityFindingFilters) SetResourceType(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ResourceType = v
	return s
}

// SetSample sets the Sample field's value.
func (s *AwsSecurityFindingFilters) SetSample(v []*BooleanFilter) *AwsSecurityFindingFilters {
	s.Sample = v
	return s
}

// SetSeverityLabel sets the SeverityLabel field's value.
func (s *AwsSecurityFindingFilters) SetSeverityLabel(v []*StringFilter) *AwsSecurityFindingFilters {
	s.SeverityLabel = v
	return s
}

// SetSeverityNormalized sets the SeverityNormalized field's value.
func (s *AwsSecurityFindingFilters) SetSeverityNormalized(v []*NumberFilter) *AwsSecurityFindingFilters {
	s.SeverityNormalized = v
	return s
}

// SetSeverityProduct sets the SeverityProduct field's value.
func (s *AwsSecurityFindingFilters) SetSeverityProduct(v []*NumberFilter) *AwsSecurityFindingFilters {
	s.SeverityProduct = v
	return s
}

// SetSourceUrl sets the SourceUrl field's value.
func (s *AwsSecurityFindingFilters) SetSourceUrl(v []*StringFilter) *AwsSecurityFindingFilters {
	s.SourceUrl = v
	return s
}

// SetThreatIntelIndicatorCategory sets the ThreatIntelIndicatorCategory field's value.
func (s *AwsSecurityFindingFilters) SetThreatIntelIndicatorCategory(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ThreatIntelIndicatorCategory = v
	return s
}

// SetThreatIntelIndicatorLastObservedAt sets the ThreatIntelIndicatorLastObservedAt field's value.
func (s *AwsSecurityFindingFilters) SetThreatIntelIndicatorLastObservedAt(v []*DateFilter) *AwsSecurityFindingFilters {
	s.ThreatIntelIndicatorLastObservedAt = v
	return s
}

// SetThreatIntelIndicatorSource sets the ThreatIntelIndicatorSource field's value.
func (s *AwsSecurityFindingFilters) SetThreatIntelIndicatorSource(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ThreatIntelIndicatorSource = v
	return s
}

// SetThreatIntelIndicatorSourceUrl sets the ThreatIntelIndicatorSourceUrl field's value.
func (s *AwsSecurityFindingFilters) SetThreatIntelIndicatorSourceUrl(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ThreatIntelIndicatorSourceUrl = v
	return s
}

// SetThreatIntelIndicatorType sets the ThreatIntelIndicatorType field's value.
func (s *AwsSecurityFindingFilters) SetThreatIntelIndicatorType(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ThreatIntelIndicatorType = v
	return s
}

// SetThreatIntelIndicatorValue sets the ThreatIntelIndicatorValue field's value.
func (s *AwsSecurityFindingFilters) SetThreatIntelIndicatorValue(v []*StringFilter) *AwsSecurityFindingFilters {
	s.ThreatIntelIndicatorValue = v
	return s
}

// SetTitle sets the Title field's value.
func (s *AwsSecurityFindingFilters) SetTitle(v []*StringFilter) *AwsSecurityFindingFilters {
	s.Title = v
	return s
}

// SetType sets the Type field's value.
func (s *AwsSecurityFindingFilters) SetType(v []*StringFilter) *AwsSecurityFindingFilters {
	s.Type = v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *AwsSecurityFindingFilters) SetUpdatedAt(v []*DateFilter) *AwsSecurityFindingFilters {
	s.UpdatedAt = v
	return s
}

// SetUserDefinedFields sets the UserDefinedFields field's value.
func (s *AwsSecurityFindingFilters) SetUserDefinedFields(v []*MapFilter) *AwsSecurityFindingFilters {
	s.UserDefinedFields = v
	return s
}

// SetVerificationState sets the VerificationState field's value.
func (s *AwsSecurityFindingFilters) SetVerificationState(v []*StringFilter) *AwsSecurityFindingFilters {
	s.VerificationState = v
	return s
}

// SetVulnerabilitiesExploitAvailable sets the VulnerabilitiesExploitAvailable field's value.
func (s *AwsSecurityFindingFilters) SetVulnerabilitiesExploitAvailable(v []*StringFilter) *AwsSecurityFindingFilters {
	s.VulnerabilitiesExploitAvailable = v
	return s
}

// SetVulnerabilitiesFixAvailable sets the VulnerabilitiesFixAvailable field's value.
func (s *AwsSecurityFindingFilters) SetVulnerabilitiesFixAvailable(v []*StringFilter) *AwsSecurityFindingFilters {
	s.VulnerabilitiesFixAvailable = v
	return s
}

// SetWorkflowState sets the WorkflowState field's value.
func (s *AwsSecurityFindingFilters) SetWorkflowState(v []*StringFilter) *AwsSecurityFindingFilters {
	s.WorkflowState = v
	return s
}

// SetWorkflowStatus sets the WorkflowStatus field's value.
func (s *AwsSecurityFindingFilters) SetWorkflowStatus(v []*StringFilter) *AwsSecurityFindingFilters {
	s.WorkflowStatus = v
	return s
}

// Identifies which finding to get the finding history for.
type AwsSecurityFindingIdentifier struct {
	_ struct{} `type:"structure"`

	// The identifier of the finding that was specified by the finding provider.
	//
	// Id is a required field
	Id *string `type:"string" required:"true"`

	// The ARN generated by Security Hub that uniquely identifies a product that
	// generates findings. This can be the ARN for a third-party product that is
	// integrated with Security Hub, or the ARN for a custom integration.
	//
	// ProductArn is a required field
	ProductArn *string `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 AwsSecurityFindingIdentifier) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsSecurityFindingIdentifier) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AwsSecurityFindingIdentifier) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AwsSecurityFindingIdentifier"}
	if s.Id == nil {
		invalidParams.Add(request.NewErrParamRequired("Id"))
	}
	if s.ProductArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ProductArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetId sets the Id field's value.
func (s *AwsSecurityFindingIdentifier) SetId(v string) *AwsSecurityFindingIdentifier {
	s.Id = &v
	return s
}

// SetProductArn sets the ProductArn field's value.
func (s *AwsSecurityFindingIdentifier) SetProductArn(v string) *AwsSecurityFindingIdentifier {
	s.ProductArn = &v
	return s
}

// Provides information about an Amazon SNS topic to which notifications can
// be published.
type AwsSnsTopicDetails struct {
	_ struct{} `type:"structure"`

	// Indicates failed message delivery status for an Amazon SNS topic that is
	// subscribed to a platform application endpoint.
	ApplicationSuccessFeedbackRoleArn *string `type:"string"`

	// Indicates failed message delivery status for an Amazon SNS topic that is
	// subscribed to an Amazon Kinesis Data Firehose endpoint.
	FirehoseFailureFeedbackRoleArn *string `type:"string"`

	// Indicates successful message delivery status for an Amazon SNS topic that
	// is subscribed to an Amazon Kinesis Data Firehose endpoint.
	FirehoseSuccessFeedbackRoleArn *string `type:"string"`

	// Indicates failed message delivery status for an Amazon SNS topic that is
	// subscribed to an HTTP endpoint.
	HttpFailureFeedbackRoleArn *string `type:"string"`

	// Indicates successful message delivery status for an Amazon SNS topic that
	// is subscribed to an HTTP endpoint.
	HttpSuccessFeedbackRoleArn *string `type:"string"`

	// The ID of an Amazon Web Services managed key for Amazon SNS or a customer
	// managed key.
	KmsMasterKeyId *string `type:"string"`

	// The subscription's owner.
	Owner *string `type:"string"`

	// Indicates failed message delivery status for an Amazon SNS topic that is
	// subscribed to an Amazon SQS endpoint.
	SqsFailureFeedbackRoleArn *string `type:"string"`

	// Indicates successful message delivery status for an Amazon SNS topic that
	// is subscribed to an Amazon SQS endpoint.
	SqsSuccessFeedbackRoleArn *string `type:"string"`

	// Subscription is an embedded property that describes the subscription endpoints
	// of an Amazon SNS topic.
	Subscription []*AwsSnsTopicSubscription `type:"list"`

	// The name of the Amazon SNS topic.
	TopicName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsSnsTopicDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsSnsTopicDetails) GoString() string {
	return s.String()
}

// SetApplicationSuccessFeedbackRoleArn sets the ApplicationSuccessFeedbackRoleArn field's value.
func (s *AwsSnsTopicDetails) SetApplicationSuccessFeedbackRoleArn(v string) *AwsSnsTopicDetails {
	s.ApplicationSuccessFeedbackRoleArn = &v
	return s
}

// SetFirehoseFailureFeedbackRoleArn sets the FirehoseFailureFeedbackRoleArn field's value.
func (s *AwsSnsTopicDetails) SetFirehoseFailureFeedbackRoleArn(v string) *AwsSnsTopicDetails {
	s.FirehoseFailureFeedbackRoleArn = &v
	return s
}

// SetFirehoseSuccessFeedbackRoleArn sets the FirehoseSuccessFeedbackRoleArn field's value.
func (s *AwsSnsTopicDetails) SetFirehoseSuccessFeedbackRoleArn(v string) *AwsSnsTopicDetails {
	s.FirehoseSuccessFeedbackRoleArn = &v
	return s
}

// SetHttpFailureFeedbackRoleArn sets the HttpFailureFeedbackRoleArn field's value.
func (s *AwsSnsTopicDetails) SetHttpFailureFeedbackRoleArn(v string) *AwsSnsTopicDetails {
	s.HttpFailureFeedbackRoleArn = &v
	return s
}

// SetHttpSuccessFeedbackRoleArn sets the HttpSuccessFeedbackRoleArn field's value.
func (s *AwsSnsTopicDetails) SetHttpSuccessFeedbackRoleArn(v string) *AwsSnsTopicDetails {
	s.HttpSuccessFeedbackRoleArn = &v
	return s
}

// SetKmsMasterKeyId sets the KmsMasterKeyId field's value.
func (s *AwsSnsTopicDetails) SetKmsMasterKeyId(v string) *AwsSnsTopicDetails {
	s.KmsMasterKeyId = &v
	return s
}

// SetOwner sets the Owner field's value.
func (s *AwsSnsTopicDetails) SetOwner(v string) *AwsSnsTopicDetails {
	s.Owner = &v
	return s
}

// SetSqsFailureFeedbackRoleArn sets the SqsFailureFeedbackRoleArn field's value.
func (s *AwsSnsTopicDetails) SetSqsFailureFeedbackRoleArn(v string) *AwsSnsTopicDetails {
	s.SqsFailureFeedbackRoleArn = &v
	return s
}

// SetSqsSuccessFeedbackRoleArn sets the SqsSuccessFeedbackRoleArn field's value.
func (s *AwsSnsTopicDetails) SetSqsSuccessFeedbackRoleArn(v string) *AwsSnsTopicDetails {
	s.SqsSuccessFeedbackRoleArn = &v
	return s
}

// SetSubscription sets the Subscription field's value.
func (s *AwsSnsTopicDetails) SetSubscription(v []*AwsSnsTopicSubscription) *AwsSnsTopicDetails {
	s.Subscription = v
	return s
}

// SetTopicName sets the TopicName field's value.
func (s *AwsSnsTopicDetails) SetTopicName(v string) *AwsSnsTopicDetails {
	s.TopicName = &v
	return s
}

// A wrapper type for the attributes of an Amazon SNS subscription.
type AwsSnsTopicSubscription struct {
	_ struct{} `type:"structure"`

	// The subscription's endpoint (format depends on the protocol).
	Endpoint *string `type:"string"`

	// The subscription's protocol.
	Protocol *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsSnsTopicSubscription) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsSnsTopicSubscription) GoString() string {
	return s.String()
}

// SetEndpoint sets the Endpoint field's value.
func (s *AwsSnsTopicSubscription) SetEndpoint(v string) *AwsSnsTopicSubscription {
	s.Endpoint = &v
	return s
}

// SetProtocol sets the Protocol field's value.
func (s *AwsSnsTopicSubscription) SetProtocol(v string) *AwsSnsTopicSubscription {
	s.Protocol = &v
	return s
}

// Data about a queue.
type AwsSqsQueueDetails struct {
	_ struct{} `type:"structure"`

	// The ARN of the dead-letter queue to which Amazon SQS moves messages after
	// the value of maxReceiveCount is exceeded.
	DeadLetterTargetArn *string `type:"string"`

	// The length of time, in seconds, for which Amazon SQS can reuse a data key
	// to encrypt or decrypt messages before calling KMS again.
	KmsDataKeyReusePeriodSeconds *int64 `type:"integer"`

	// The ID of an Amazon Web Services managed key for Amazon SQS or a custom KMS
	// key.
	KmsMasterKeyId *string `type:"string"`

	// The name of the new queue.
	QueueName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsSqsQueueDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsSqsQueueDetails) GoString() string {
	return s.String()
}

// SetDeadLetterTargetArn sets the DeadLetterTargetArn field's value.
func (s *AwsSqsQueueDetails) SetDeadLetterTargetArn(v string) *AwsSqsQueueDetails {
	s.DeadLetterTargetArn = &v
	return s
}

// SetKmsDataKeyReusePeriodSeconds sets the KmsDataKeyReusePeriodSeconds field's value.
func (s *AwsSqsQueueDetails) SetKmsDataKeyReusePeriodSeconds(v int64) *AwsSqsQueueDetails {
	s.KmsDataKeyReusePeriodSeconds = &v
	return s
}

// SetKmsMasterKeyId sets the KmsMasterKeyId field's value.
func (s *AwsSqsQueueDetails) SetKmsMasterKeyId(v string) *AwsSqsQueueDetails {
	s.KmsMasterKeyId = &v
	return s
}

// SetQueueName sets the QueueName field's value.
func (s *AwsSqsQueueDetails) SetQueueName(v string) *AwsSqsQueueDetails {
	s.QueueName = &v
	return s
}

// Provides the details about the compliance status for a patch.
type AwsSsmComplianceSummary struct {
	_ struct{} `type:"structure"`

	// The type of resource for which the compliance was determined. For AwsSsmPatchCompliance,
	// ComplianceType is Patch.
	ComplianceType *string `type:"string"`

	// For the patches that are compliant, the number that have a severity of CRITICAL.
	CompliantCriticalCount *int64 `type:"integer"`

	// For the patches that are compliant, the number that have a severity of HIGH.
	CompliantHighCount *int64 `type:"integer"`

	// For the patches that are compliant, the number that have a severity of INFORMATIONAL.
	CompliantInformationalCount *int64 `type:"integer"`

	// For the patches that are compliant, the number that have a severity of LOW.
	CompliantLowCount *int64 `type:"integer"`

	// For the patches that are compliant, the number that have a severity of MEDIUM.
	CompliantMediumCount *int64 `type:"integer"`

	// For the patches that are compliant, the number that have a severity of UNSPECIFIED.
	CompliantUnspecifiedCount *int64 `type:"integer"`

	// The type of execution that was used determine compliance.
	ExecutionType *string `type:"string"`

	// For the patch items that are noncompliant, the number of items that have
	// a severity of CRITICAL.
	NonCompliantCriticalCount *int64 `type:"integer"`

	// For the patches that are noncompliant, the number that have a severity of
	// HIGH.
	NonCompliantHighCount *int64 `type:"integer"`

	// For the patches that are noncompliant, the number that have a severity of
	// INFORMATIONAL.
	NonCompliantInformationalCount *int64 `type:"integer"`

	// For the patches that are noncompliant, the number that have a severity of
	// LOW.
	NonCompliantLowCount *int64 `type:"integer"`

	// For the patches that are noncompliant, the number that have a severity of
	// MEDIUM.
	NonCompliantMediumCount *int64 `type:"integer"`

	// For the patches that are noncompliant, the number that have a severity of
	// UNSPECIFIED.
	NonCompliantUnspecifiedCount *int64 `type:"integer"`

	// The highest severity for the patches. Valid values are as follows:
	//
	//    * CRITICAL
	//
	//    * HIGH
	//
	//    * MEDIUM
	//
	//    * LOW
	//
	//    * INFORMATIONAL
	//
	//    * UNSPECIFIED
	OverallSeverity *string `type:"string"`

	// The identifier of the patch baseline. The patch baseline lists the patches
	// that are approved for installation.
	PatchBaselineId *string `type:"string"`

	// The identifier of the patch group for which compliance was determined. A
	// patch group uses tags to group EC2 instances that should have the same patch
	// compliance.
	PatchGroup *string `type:"string"`

	// The current patch compliance status. Valid values are as follows:
	//
	//    * COMPLIANT
	//
	//    * NON_COMPLIANT
	//
	//    * UNSPECIFIED_DATA
	Status *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsSsmComplianceSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsSsmComplianceSummary) GoString() string {
	return s.String()
}

// SetComplianceType sets the ComplianceType field's value.
func (s *AwsSsmComplianceSummary) SetComplianceType(v string) *AwsSsmComplianceSummary {
	s.ComplianceType = &v
	return s
}

// SetCompliantCriticalCount sets the CompliantCriticalCount field's value.
func (s *AwsSsmComplianceSummary) SetCompliantCriticalCount(v int64) *AwsSsmComplianceSummary {
	s.CompliantCriticalCount = &v
	return s
}

// SetCompliantHighCount sets the CompliantHighCount field's value.
func (s *AwsSsmComplianceSummary) SetCompliantHighCount(v int64) *AwsSsmComplianceSummary {
	s.CompliantHighCount = &v
	return s
}

// SetCompliantInformationalCount sets the CompliantInformationalCount field's value.
func (s *AwsSsmComplianceSummary) SetCompliantInformationalCount(v int64) *AwsSsmComplianceSummary {
	s.CompliantInformationalCount = &v
	return s
}

// SetCompliantLowCount sets the CompliantLowCount field's value.
func (s *AwsSsmComplianceSummary) SetCompliantLowCount(v int64) *AwsSsmComplianceSummary {
	s.CompliantLowCount = &v
	return s
}

// SetCompliantMediumCount sets the CompliantMediumCount field's value.
func (s *AwsSsmComplianceSummary) SetCompliantMediumCount(v int64) *AwsSsmComplianceSummary {
	s.CompliantMediumCount = &v
	return s
}

// SetCompliantUnspecifiedCount sets the CompliantUnspecifiedCount field's value.
func (s *AwsSsmComplianceSummary) SetCompliantUnspecifiedCount(v int64) *AwsSsmComplianceSummary {
	s.CompliantUnspecifiedCount = &v
	return s
}

// SetExecutionType sets the ExecutionType field's value.
func (s *AwsSsmComplianceSummary) SetExecutionType(v string) *AwsSsmComplianceSummary {
	s.ExecutionType = &v
	return s
}

// SetNonCompliantCriticalCount sets the NonCompliantCriticalCount field's value.
func (s *AwsSsmComplianceSummary) SetNonCompliantCriticalCount(v int64) *AwsSsmComplianceSummary {
	s.NonCompliantCriticalCount = &v
	return s
}

// SetNonCompliantHighCount sets the NonCompliantHighCount field's value.
func (s *AwsSsmComplianceSummary) SetNonCompliantHighCount(v int64) *AwsSsmComplianceSummary {
	s.NonCompliantHighCount = &v
	return s
}

// SetNonCompliantInformationalCount sets the NonCompliantInformationalCount field's value.
func (s *AwsSsmComplianceSummary) SetNonCompliantInformationalCount(v int64) *AwsSsmComplianceSummary {
	s.NonCompliantInformationalCount = &v
	return s
}

// SetNonCompliantLowCount sets the NonCompliantLowCount field's value.
func (s *AwsSsmComplianceSummary) SetNonCompliantLowCount(v int64) *AwsSsmComplianceSummary {
	s.NonCompliantLowCount = &v
	return s
}

// SetNonCompliantMediumCount sets the NonCompliantMediumCount field's value.
func (s *AwsSsmComplianceSummary) SetNonCompliantMediumCount(v int64) *AwsSsmComplianceSummary {
	s.NonCompliantMediumCount = &v
	return s
}

// SetNonCompliantUnspecifiedCount sets the NonCompliantUnspecifiedCount field's value.
func (s *AwsSsmComplianceSummary) SetNonCompliantUnspecifiedCount(v int64) *AwsSsmComplianceSummary {
	s.NonCompliantUnspecifiedCount = &v
	return s
}

// SetOverallSeverity sets the OverallSeverity field's value.
func (s *AwsSsmComplianceSummary) SetOverallSeverity(v string) *AwsSsmComplianceSummary {
	s.OverallSeverity = &v
	return s
}

// SetPatchBaselineId sets the PatchBaselineId field's value.
func (s *AwsSsmComplianceSummary) SetPatchBaselineId(v string) *AwsSsmComplianceSummary {
	s.PatchBaselineId = &v
	return s
}

// SetPatchGroup sets the PatchGroup field's value.
func (s *AwsSsmComplianceSummary) SetPatchGroup(v string) *AwsSsmComplianceSummary {
	s.PatchGroup = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsSsmComplianceSummary) SetStatus(v string) *AwsSsmComplianceSummary {
	s.Status = &v
	return s
}

// Provides details about the compliance for a patch.
type AwsSsmPatch struct {
	_ struct{} `type:"structure"`

	// The compliance status details for the patch.
	ComplianceSummary *AwsSsmComplianceSummary `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 AwsSsmPatch) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsSsmPatch) GoString() string {
	return s.String()
}

// SetComplianceSummary sets the ComplianceSummary field's value.
func (s *AwsSsmPatch) SetComplianceSummary(v *AwsSsmComplianceSummary) *AwsSsmPatch {
	s.ComplianceSummary = v
	return s
}

// Provides information about the state of a patch on an instance based on the
// patch baseline that was used to patch the instance.
type AwsSsmPatchComplianceDetails struct {
	_ struct{} `type:"structure"`

	// Information about the status of a patch.
	Patch *AwsSsmPatch `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 AwsSsmPatchComplianceDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsSsmPatchComplianceDetails) GoString() string {
	return s.String()
}

// SetPatch sets the Patch field's value.
func (s *AwsSsmPatchComplianceDetails) SetPatch(v *AwsSsmPatch) *AwsSsmPatchComplianceDetails {
	s.Patch = v
	return s
}

// Provides details about an Step Functions state machine, which is a workflow
// consisting of a series of event- driven steps.
type AwsStepFunctionStateMachineDetails struct {
	_ struct{} `type:"structure"`

	// A user-defined or an auto-generated string that identifies a Map state. This
	// parameter is present only if the stateMachineArn specified in input is a
	// qualified state machine ARN.
	Label *string `type:"string"`

	// Used to set CloudWatch Logs options.
	LoggingConfiguration *AwsStepFunctionStateMachineLoggingConfigurationDetails `type:"structure"`

	// The name of the state machine.
	Name *string `type:"string"`

	// The Amazon Resource Name (ARN) of the IAM role used when creating this state
	// machine.
	RoleArn *string `type:"string"`

	// The ARN that identifies the state machine.
	StateMachineArn *string `type:"string"`

	// The current status of the state machine.
	Status *string `type:"string"`

	// Specifies whether X-Ray tracing is enabled.
	TracingConfiguration *AwsStepFunctionStateMachineTracingConfigurationDetails `type:"structure"`

	// The type of the state machine (STANDARD or EXPRESS).
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsStepFunctionStateMachineDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsStepFunctionStateMachineDetails) GoString() string {
	return s.String()
}

// SetLabel sets the Label field's value.
func (s *AwsStepFunctionStateMachineDetails) SetLabel(v string) *AwsStepFunctionStateMachineDetails {
	s.Label = &v
	return s
}

// SetLoggingConfiguration sets the LoggingConfiguration field's value.
func (s *AwsStepFunctionStateMachineDetails) SetLoggingConfiguration(v *AwsStepFunctionStateMachineLoggingConfigurationDetails) *AwsStepFunctionStateMachineDetails {
	s.LoggingConfiguration = v
	return s
}

// SetName sets the Name field's value.
func (s *AwsStepFunctionStateMachineDetails) SetName(v string) *AwsStepFunctionStateMachineDetails {
	s.Name = &v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *AwsStepFunctionStateMachineDetails) SetRoleArn(v string) *AwsStepFunctionStateMachineDetails {
	s.RoleArn = &v
	return s
}

// SetStateMachineArn sets the StateMachineArn field's value.
func (s *AwsStepFunctionStateMachineDetails) SetStateMachineArn(v string) *AwsStepFunctionStateMachineDetails {
	s.StateMachineArn = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsStepFunctionStateMachineDetails) SetStatus(v string) *AwsStepFunctionStateMachineDetails {
	s.Status = &v
	return s
}

// SetTracingConfiguration sets the TracingConfiguration field's value.
func (s *AwsStepFunctionStateMachineDetails) SetTracingConfiguration(v *AwsStepFunctionStateMachineTracingConfigurationDetails) *AwsStepFunctionStateMachineDetails {
	s.TracingConfiguration = v
	return s
}

// SetType sets the Type field's value.
func (s *AwsStepFunctionStateMachineDetails) SetType(v string) *AwsStepFunctionStateMachineDetails {
	s.Type = &v
	return s
}

// An object describing a CloudWatch log group. For more information, see Amazon
// Web Services::Logs::LogGroup (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html)
// in the CloudFormation User Guide.
type AwsStepFunctionStateMachineLoggingConfigurationDestinationsCloudWatchLogsLogGroupDetails struct {
	_ struct{} `type:"structure"`

	// The ARN (ends with :*) of the CloudWatch Logs log group to which you want
	// your logs emitted.
	LogGroupArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsStepFunctionStateMachineLoggingConfigurationDestinationsCloudWatchLogsLogGroupDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsStepFunctionStateMachineLoggingConfigurationDestinationsCloudWatchLogsLogGroupDetails) GoString() string {
	return s.String()
}

// SetLogGroupArn sets the LogGroupArn field's value.
func (s *AwsStepFunctionStateMachineLoggingConfigurationDestinationsCloudWatchLogsLogGroupDetails) SetLogGroupArn(v string) *AwsStepFunctionStateMachineLoggingConfigurationDestinationsCloudWatchLogsLogGroupDetails {
	s.LogGroupArn = &v
	return s
}

// An array of objects that describes where your execution history events will
// be logged.
type AwsStepFunctionStateMachineLoggingConfigurationDestinationsDetails struct {
	_ struct{} `type:"structure"`

	// An object describing a CloudWatch Logs log group. For more information, see
	// Amazon Web Services::Logs::LogGroup (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html)
	// in the CloudFormation User Guide.
	CloudWatchLogsLogGroup *AwsStepFunctionStateMachineLoggingConfigurationDestinationsCloudWatchLogsLogGroupDetails `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 AwsStepFunctionStateMachineLoggingConfigurationDestinationsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsStepFunctionStateMachineLoggingConfigurationDestinationsDetails) GoString() string {
	return s.String()
}

// SetCloudWatchLogsLogGroup sets the CloudWatchLogsLogGroup field's value.
func (s *AwsStepFunctionStateMachineLoggingConfigurationDestinationsDetails) SetCloudWatchLogsLogGroup(v *AwsStepFunctionStateMachineLoggingConfigurationDestinationsCloudWatchLogsLogGroupDetails) *AwsStepFunctionStateMachineLoggingConfigurationDestinationsDetails {
	s.CloudWatchLogsLogGroup = v
	return s
}

// The LoggingConfiguration data type is used to set CloudWatch Logs options.
type AwsStepFunctionStateMachineLoggingConfigurationDetails struct {
	_ struct{} `type:"structure"`

	// An array of objects that describes where your execution history events will
	// be logged.
	Destinations []*AwsStepFunctionStateMachineLoggingConfigurationDestinationsDetails `type:"list"`

	// Determines whether execution data is included in your log. When set to false,
	// data is excluded.
	IncludeExecutionData *bool `type:"boolean"`

	// Defines which category of execution history events are logged.
	Level *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsStepFunctionStateMachineLoggingConfigurationDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsStepFunctionStateMachineLoggingConfigurationDetails) GoString() string {
	return s.String()
}

// SetDestinations sets the Destinations field's value.
func (s *AwsStepFunctionStateMachineLoggingConfigurationDetails) SetDestinations(v []*AwsStepFunctionStateMachineLoggingConfigurationDestinationsDetails) *AwsStepFunctionStateMachineLoggingConfigurationDetails {
	s.Destinations = v
	return s
}

// SetIncludeExecutionData sets the IncludeExecutionData field's value.
func (s *AwsStepFunctionStateMachineLoggingConfigurationDetails) SetIncludeExecutionData(v bool) *AwsStepFunctionStateMachineLoggingConfigurationDetails {
	s.IncludeExecutionData = &v
	return s
}

// SetLevel sets the Level field's value.
func (s *AwsStepFunctionStateMachineLoggingConfigurationDetails) SetLevel(v string) *AwsStepFunctionStateMachineLoggingConfigurationDetails {
	s.Level = &v
	return s
}

// Specifies whether X-Ray tracing is enabled.
type AwsStepFunctionStateMachineTracingConfigurationDetails struct {
	_ struct{} `type:"structure"`

	// When set to true, X-Ray tracing is enabled.
	Enabled *bool `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 AwsStepFunctionStateMachineTracingConfigurationDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsStepFunctionStateMachineTracingConfigurationDetails) GoString() string {
	return s.String()
}

// SetEnabled sets the Enabled field's value.
func (s *AwsStepFunctionStateMachineTracingConfigurationDetails) SetEnabled(v bool) *AwsStepFunctionStateMachineTracingConfigurationDetails {
	s.Enabled = &v
	return s
}

// Details about a rate-based rule for global resources. A rate-based rule provides
// settings to indicate when to allow, block, or count a request. Rate-based
// rules include the number of requests that arrive over a specified period
// of time.
type AwsWafRateBasedRuleDetails struct {
	_ struct{} `type:"structure"`

	// The predicates to include in the rate-based rule.
	MatchPredicates []*AwsWafRateBasedRuleMatchPredicate `type:"list"`

	// The name of the metrics for the rate-based rule.
	MetricName *string `type:"string"`

	// The name of the rate-based rule.
	Name *string `type:"string"`

	// The field that WAF uses to determine whether requests are likely arriving
	// from single source and are subject to rate monitoring.
	RateKey *string `type:"string"`

	// The maximum number of requests that have an identical value for the field
	// specified in RateKey that are allowed within a five-minute period. If the
	// number of requests exceeds RateLimit and the other predicates specified in
	// the rule are met, WAF triggers the action for the rule.
	RateLimit *int64 `type:"long"`

	// The unique identifier for the rate-based rule.
	RuleId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRateBasedRuleDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRateBasedRuleDetails) GoString() string {
	return s.String()
}

// SetMatchPredicates sets the MatchPredicates field's value.
func (s *AwsWafRateBasedRuleDetails) SetMatchPredicates(v []*AwsWafRateBasedRuleMatchPredicate) *AwsWafRateBasedRuleDetails {
	s.MatchPredicates = v
	return s
}

// SetMetricName sets the MetricName field's value.
func (s *AwsWafRateBasedRuleDetails) SetMetricName(v string) *AwsWafRateBasedRuleDetails {
	s.MetricName = &v
	return s
}

// SetName sets the Name field's value.
func (s *AwsWafRateBasedRuleDetails) SetName(v string) *AwsWafRateBasedRuleDetails {
	s.Name = &v
	return s
}

// SetRateKey sets the RateKey field's value.
func (s *AwsWafRateBasedRuleDetails) SetRateKey(v string) *AwsWafRateBasedRuleDetails {
	s.RateKey = &v
	return s
}

// SetRateLimit sets the RateLimit field's value.
func (s *AwsWafRateBasedRuleDetails) SetRateLimit(v int64) *AwsWafRateBasedRuleDetails {
	s.RateLimit = &v
	return s
}

// SetRuleId sets the RuleId field's value.
func (s *AwsWafRateBasedRuleDetails) SetRuleId(v string) *AwsWafRateBasedRuleDetails {
	s.RuleId = &v
	return s
}

// A match predicate. A predicate might look for characteristics such as specific
// IP addresses, geographic locations, or sizes.
type AwsWafRateBasedRuleMatchPredicate struct {
	_ struct{} `type:"structure"`

	// The unique identifier for the predicate.
	DataId *string `type:"string"`

	// If set to true, then the rule actions are performed on requests that match
	// the predicate settings.
	//
	// If set to false, then the rule actions are performed on all requests except
	// those that match the predicate settings.
	Negated *bool `type:"boolean"`

	// The type of predicate. Valid values are as follows:
	//
	//    * ByteMatch
	//
	//    * GeoMatch
	//
	//    * IPMatch
	//
	//    * RegexMatch
	//
	//    * SizeConstraint
	//
	//    * SqlInjectionMatch
	//
	//    * XssMatch
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRateBasedRuleMatchPredicate) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRateBasedRuleMatchPredicate) GoString() string {
	return s.String()
}

// SetDataId sets the DataId field's value.
func (s *AwsWafRateBasedRuleMatchPredicate) SetDataId(v string) *AwsWafRateBasedRuleMatchPredicate {
	s.DataId = &v
	return s
}

// SetNegated sets the Negated field's value.
func (s *AwsWafRateBasedRuleMatchPredicate) SetNegated(v bool) *AwsWafRateBasedRuleMatchPredicate {
	s.Negated = &v
	return s
}

// SetType sets the Type field's value.
func (s *AwsWafRateBasedRuleMatchPredicate) SetType(v string) *AwsWafRateBasedRuleMatchPredicate {
	s.Type = &v
	return s
}

// contains details about a rate-based rule for Regional resources. A rate-based
// rule provides settings to indicate when to allow, block, or count a request.
// Rate-based rules include the number of requests that arrive over a specified
// period of time.
type AwsWafRegionalRateBasedRuleDetails struct {
	_ struct{} `type:"structure"`

	// The predicates to include in the rate-based rule.
	MatchPredicates []*AwsWafRegionalRateBasedRuleMatchPredicate `type:"list"`

	// The name of the metrics for the rate-based rule.
	MetricName *string `type:"string"`

	// The name of the rate-based rule.
	Name *string `type:"string"`

	// The field that WAF uses to determine whether requests are likely arriving
	// from single source and are subject to rate monitoring.
	RateKey *string `type:"string"`

	// The maximum number of requests that have an identical value for the field
	// specified in RateKey that are allowed within a five-minute period. If the
	// number of requests exceeds RateLimit and the other predicates specified in
	// the rule are met, WAF triggers the action for the rule.
	RateLimit *int64 `type:"long"`

	// The unique identifier for the rate-based rule.
	RuleId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRegionalRateBasedRuleDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRegionalRateBasedRuleDetails) GoString() string {
	return s.String()
}

// SetMatchPredicates sets the MatchPredicates field's value.
func (s *AwsWafRegionalRateBasedRuleDetails) SetMatchPredicates(v []*AwsWafRegionalRateBasedRuleMatchPredicate) *AwsWafRegionalRateBasedRuleDetails {
	s.MatchPredicates = v
	return s
}

// SetMetricName sets the MetricName field's value.
func (s *AwsWafRegionalRateBasedRuleDetails) SetMetricName(v string) *AwsWafRegionalRateBasedRuleDetails {
	s.MetricName = &v
	return s
}

// SetName sets the Name field's value.
func (s *AwsWafRegionalRateBasedRuleDetails) SetName(v string) *AwsWafRegionalRateBasedRuleDetails {
	s.Name = &v
	return s
}

// SetRateKey sets the RateKey field's value.
func (s *AwsWafRegionalRateBasedRuleDetails) SetRateKey(v string) *AwsWafRegionalRateBasedRuleDetails {
	s.RateKey = &v
	return s
}

// SetRateLimit sets the RateLimit field's value.
func (s *AwsWafRegionalRateBasedRuleDetails) SetRateLimit(v int64) *AwsWafRegionalRateBasedRuleDetails {
	s.RateLimit = &v
	return s
}

// SetRuleId sets the RuleId field's value.
func (s *AwsWafRegionalRateBasedRuleDetails) SetRuleId(v string) *AwsWafRegionalRateBasedRuleDetails {
	s.RuleId = &v
	return s
}

// Details for a match predicate. A predicate might look for characteristics
// such as specific IP addresses, geographic locations, or sizes.
type AwsWafRegionalRateBasedRuleMatchPredicate struct {
	_ struct{} `type:"structure"`

	// The unique identifier for the predicate.
	DataId *string `type:"string"`

	// If set to true, then the rule actions are performed on requests that match
	// the predicate settings.
	//
	// If set to false, then the rule actions are performed on all requests except
	// those that match the predicate settings.
	Negated *bool `type:"boolean"`

	// The type of predicate. Valid values are as follows:
	//
	//    * ByteMatch
	//
	//    * GeoMatch
	//
	//    * IPMatch
	//
	//    * RegexMatch
	//
	//    * SizeConstraint
	//
	//    * SqlInjectionMatch
	//
	//    * XssMatch
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRegionalRateBasedRuleMatchPredicate) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRegionalRateBasedRuleMatchPredicate) GoString() string {
	return s.String()
}

// SetDataId sets the DataId field's value.
func (s *AwsWafRegionalRateBasedRuleMatchPredicate) SetDataId(v string) *AwsWafRegionalRateBasedRuleMatchPredicate {
	s.DataId = &v
	return s
}

// SetNegated sets the Negated field's value.
func (s *AwsWafRegionalRateBasedRuleMatchPredicate) SetNegated(v bool) *AwsWafRegionalRateBasedRuleMatchPredicate {
	s.Negated = &v
	return s
}

// SetType sets the Type field's value.
func (s *AwsWafRegionalRateBasedRuleMatchPredicate) SetType(v string) *AwsWafRegionalRateBasedRuleMatchPredicate {
	s.Type = &v
	return s
}

// Provides information about an WAF Regional rule. This rule identifies the
// web requests that you want to allow, block, or count.
type AwsWafRegionalRuleDetails struct {
	_ struct{} `type:"structure"`

	// A name for the metrics for the rule.
	MetricName *string `type:"string"`

	// A descriptive name for the rule.
	Name *string `type:"string"`

	// Specifies the ByteMatchSet, IPSet, SqlInjectionMatchSet, XssMatchSet, RegexMatchSet,
	// GeoMatchSet, and SizeConstraintSet objects that you want to add to a rule
	// and, for each object, indicates whether you want to negate the settings.
	PredicateList []*AwsWafRegionalRulePredicateListDetails `type:"list"`

	// The ID of the rule.
	RuleId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRegionalRuleDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRegionalRuleDetails) GoString() string {
	return s.String()
}

// SetMetricName sets the MetricName field's value.
func (s *AwsWafRegionalRuleDetails) SetMetricName(v string) *AwsWafRegionalRuleDetails {
	s.MetricName = &v
	return s
}

// SetName sets the Name field's value.
func (s *AwsWafRegionalRuleDetails) SetName(v string) *AwsWafRegionalRuleDetails {
	s.Name = &v
	return s
}

// SetPredicateList sets the PredicateList field's value.
func (s *AwsWafRegionalRuleDetails) SetPredicateList(v []*AwsWafRegionalRulePredicateListDetails) *AwsWafRegionalRuleDetails {
	s.PredicateList = v
	return s
}

// SetRuleId sets the RuleId field's value.
func (s *AwsWafRegionalRuleDetails) SetRuleId(v string) *AwsWafRegionalRuleDetails {
	s.RuleId = &v
	return s
}

// Provides information about an WAF Regional rule group. The rule group is
// a collection of rules for inspecting and controlling web requests.
type AwsWafRegionalRuleGroupDetails struct {
	_ struct{} `type:"structure"`

	// A name for the metrics for this rule group.
	MetricName *string `type:"string"`

	// The descriptive name of the rule group.
	Name *string `type:"string"`

	// The ID of the rule group.
	RuleGroupId *string `type:"string"`

	// Provides information about the rule statements used to identify the web requests
	// that you want to allow, block, or count.
	Rules []*AwsWafRegionalRuleGroupRulesDetails `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 AwsWafRegionalRuleGroupDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRegionalRuleGroupDetails) GoString() string {
	return s.String()
}

// SetMetricName sets the MetricName field's value.
func (s *AwsWafRegionalRuleGroupDetails) SetMetricName(v string) *AwsWafRegionalRuleGroupDetails {
	s.MetricName = &v
	return s
}

// SetName sets the Name field's value.
func (s *AwsWafRegionalRuleGroupDetails) SetName(v string) *AwsWafRegionalRuleGroupDetails {
	s.Name = &v
	return s
}

// SetRuleGroupId sets the RuleGroupId field's value.
func (s *AwsWafRegionalRuleGroupDetails) SetRuleGroupId(v string) *AwsWafRegionalRuleGroupDetails {
	s.RuleGroupId = &v
	return s
}

// SetRules sets the Rules field's value.
func (s *AwsWafRegionalRuleGroupDetails) SetRules(v []*AwsWafRegionalRuleGroupRulesDetails) *AwsWafRegionalRuleGroupDetails {
	s.Rules = v
	return s
}

// Describes the action that WAF should take on a web request when it matches
// the criteria defined in the rule.
type AwsWafRegionalRuleGroupRulesActionDetails struct {
	_ struct{} `type:"structure"`

	// Specifies the ByteMatchSet, IPSet, SqlInjectionMatchSet, XssMatchSet, RegexMatchSet,
	// GeoMatchSet, and SizeConstraintSet objects that you want to add to a rule
	// and, for each object, indicates whether you want to negate the settings.
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRegionalRuleGroupRulesActionDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRegionalRuleGroupRulesActionDetails) GoString() string {
	return s.String()
}

// SetType sets the Type field's value.
func (s *AwsWafRegionalRuleGroupRulesActionDetails) SetType(v string) *AwsWafRegionalRuleGroupRulesActionDetails {
	s.Type = &v
	return s
}

// Provides information about the rules attached to a rule group
type AwsWafRegionalRuleGroupRulesDetails struct {
	_ struct{} `type:"structure"`

	// The action that WAF should take on a web request when it matches the criteria
	// defined in the rule.
	Action *AwsWafRegionalRuleGroupRulesActionDetails `type:"structure"`

	// If you define more than one rule in a web ACL, WAF evaluates each request
	// against the rules in order based on the value of Priority.
	Priority *int64 `type:"integer"`

	// The ID for a rule.
	RuleId *string `type:"string"`

	// The type of rule in the rule group.
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRegionalRuleGroupRulesDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRegionalRuleGroupRulesDetails) GoString() string {
	return s.String()
}

// SetAction sets the Action field's value.
func (s *AwsWafRegionalRuleGroupRulesDetails) SetAction(v *AwsWafRegionalRuleGroupRulesActionDetails) *AwsWafRegionalRuleGroupRulesDetails {
	s.Action = v
	return s
}

// SetPriority sets the Priority field's value.
func (s *AwsWafRegionalRuleGroupRulesDetails) SetPriority(v int64) *AwsWafRegionalRuleGroupRulesDetails {
	s.Priority = &v
	return s
}

// SetRuleId sets the RuleId field's value.
func (s *AwsWafRegionalRuleGroupRulesDetails) SetRuleId(v string) *AwsWafRegionalRuleGroupRulesDetails {
	s.RuleId = &v
	return s
}

// SetType sets the Type field's value.
func (s *AwsWafRegionalRuleGroupRulesDetails) SetType(v string) *AwsWafRegionalRuleGroupRulesDetails {
	s.Type = &v
	return s
}

// Provides details about the ByteMatchSet, IPSet, SqlInjectionMatchSet, XssMatchSet,
// RegexMatchSet, GeoMatchSet, and SizeConstraintSet objects that you want to
// add to a rule and, for each object, indicates whether you want to negate
// the settings.
type AwsWafRegionalRulePredicateListDetails struct {
	_ struct{} `type:"structure"`

	// A unique identifier for a predicate in a rule, such as ByteMatchSetId or
	// IPSetId.
	DataId *string `type:"string"`

	// Specifies if you want WAF to allow, block, or count requests based on the
	// settings in the ByteMatchSet, IPSet, SqlInjectionMatchSet, XssMatchSet, RegexMatchSet,
	// GeoMatchSet, or SizeConstraintSet.
	Negated *bool `type:"boolean"`

	// The type of predicate in a rule, such as ByteMatch or IPSet.
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRegionalRulePredicateListDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRegionalRulePredicateListDetails) GoString() string {
	return s.String()
}

// SetDataId sets the DataId field's value.
func (s *AwsWafRegionalRulePredicateListDetails) SetDataId(v string) *AwsWafRegionalRulePredicateListDetails {
	s.DataId = &v
	return s
}

// SetNegated sets the Negated field's value.
func (s *AwsWafRegionalRulePredicateListDetails) SetNegated(v bool) *AwsWafRegionalRulePredicateListDetails {
	s.Negated = &v
	return s
}

// SetType sets the Type field's value.
func (s *AwsWafRegionalRulePredicateListDetails) SetType(v string) *AwsWafRegionalRulePredicateListDetails {
	s.Type = &v
	return s
}

// Provides information about the web access control list (web ACL). The web
// ACL contains the rules that identify the requests that you want to allow,
// block, or count.
type AwsWafRegionalWebAclDetails struct {
	_ struct{} `type:"structure"`

	// The action to perform if none of the rules contained in the web ACL match.
	DefaultAction *string `type:"string"`

	// A name for the metrics for this web ACL.
	MetricName *string `type:"string"`

	// A descriptive name for the web ACL.
	Name *string `type:"string"`

	// An array that contains the action for each rule in a web ACL, the priority
	// of the rule, and the ID of the rule.
	RulesList []*AwsWafRegionalWebAclRulesListDetails `type:"list"`

	// The ID of the web ACL.
	WebAclId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRegionalWebAclDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRegionalWebAclDetails) GoString() string {
	return s.String()
}

// SetDefaultAction sets the DefaultAction field's value.
func (s *AwsWafRegionalWebAclDetails) SetDefaultAction(v string) *AwsWafRegionalWebAclDetails {
	s.DefaultAction = &v
	return s
}

// SetMetricName sets the MetricName field's value.
func (s *AwsWafRegionalWebAclDetails) SetMetricName(v string) *AwsWafRegionalWebAclDetails {
	s.MetricName = &v
	return s
}

// SetName sets the Name field's value.
func (s *AwsWafRegionalWebAclDetails) SetName(v string) *AwsWafRegionalWebAclDetails {
	s.Name = &v
	return s
}

// SetRulesList sets the RulesList field's value.
func (s *AwsWafRegionalWebAclDetails) SetRulesList(v []*AwsWafRegionalWebAclRulesListDetails) *AwsWafRegionalWebAclDetails {
	s.RulesList = v
	return s
}

// SetWebAclId sets the WebAclId field's value.
func (s *AwsWafRegionalWebAclDetails) SetWebAclId(v string) *AwsWafRegionalWebAclDetails {
	s.WebAclId = &v
	return s
}

// The action that WAF takes when a web request matches all conditions in the
// rule, such as allow, block, or count the request.
type AwsWafRegionalWebAclRulesListActionDetails struct {
	_ struct{} `type:"structure"`

	// For actions that are associated with a rule, the action that WAF takes when
	// a web request matches all conditions in a rule.
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRegionalWebAclRulesListActionDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRegionalWebAclRulesListActionDetails) GoString() string {
	return s.String()
}

// SetType sets the Type field's value.
func (s *AwsWafRegionalWebAclRulesListActionDetails) SetType(v string) *AwsWafRegionalWebAclRulesListActionDetails {
	s.Type = &v
	return s
}

// A combination of ByteMatchSet, IPSet, and/or SqlInjectionMatchSet objects
// that identify the web requests that you want to allow, block, or count.
type AwsWafRegionalWebAclRulesListDetails struct {
	_ struct{} `type:"structure"`

	// The action that WAF takes when a web request matches all conditions in the
	// rule, such as allow, block, or count the request.
	Action *AwsWafRegionalWebAclRulesListActionDetails `type:"structure"`

	// Overrides the rule evaluation result in the rule group.
	OverrideAction *AwsWafRegionalWebAclRulesListOverrideActionDetails `type:"structure"`

	// The order in which WAF evaluates the rules in a web ACL.
	Priority *int64 `type:"integer"`

	// The ID of an WAF Regional rule to associate with a web ACL.
	RuleId *string `type:"string"`

	// For actions that are associated with a rule, the action that WAF takes when
	// a web request matches all conditions in a rule.
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRegionalWebAclRulesListDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRegionalWebAclRulesListDetails) GoString() string {
	return s.String()
}

// SetAction sets the Action field's value.
func (s *AwsWafRegionalWebAclRulesListDetails) SetAction(v *AwsWafRegionalWebAclRulesListActionDetails) *AwsWafRegionalWebAclRulesListDetails {
	s.Action = v
	return s
}

// SetOverrideAction sets the OverrideAction field's value.
func (s *AwsWafRegionalWebAclRulesListDetails) SetOverrideAction(v *AwsWafRegionalWebAclRulesListOverrideActionDetails) *AwsWafRegionalWebAclRulesListDetails {
	s.OverrideAction = v
	return s
}

// SetPriority sets the Priority field's value.
func (s *AwsWafRegionalWebAclRulesListDetails) SetPriority(v int64) *AwsWafRegionalWebAclRulesListDetails {
	s.Priority = &v
	return s
}

// SetRuleId sets the RuleId field's value.
func (s *AwsWafRegionalWebAclRulesListDetails) SetRuleId(v string) *AwsWafRegionalWebAclRulesListDetails {
	s.RuleId = &v
	return s
}

// SetType sets the Type field's value.
func (s *AwsWafRegionalWebAclRulesListDetails) SetType(v string) *AwsWafRegionalWebAclRulesListDetails {
	s.Type = &v
	return s
}

// Provides details about the action to use in the place of the action that
// results from the rule group evaluation.
type AwsWafRegionalWebAclRulesListOverrideActionDetails struct {
	_ struct{} `type:"structure"`

	// Overrides the rule evaluation result in the rule group.
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRegionalWebAclRulesListOverrideActionDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRegionalWebAclRulesListOverrideActionDetails) GoString() string {
	return s.String()
}

// SetType sets the Type field's value.
func (s *AwsWafRegionalWebAclRulesListOverrideActionDetails) SetType(v string) *AwsWafRegionalWebAclRulesListOverrideActionDetails {
	s.Type = &v
	return s
}

// Provides information about a WAF rule. This rule specifies the web requests
// that you want to allow, block, or count.
type AwsWafRuleDetails struct {
	_ struct{} `type:"structure"`

	// The name of the metrics for this rule.
	MetricName *string `type:"string"`

	// A descriptive name for the rule.
	Name *string `type:"string"`

	// Specifies the ByteMatchSet, IPSet, SqlInjectionMatchSet, XssMatchSet, RegexMatchSet,
	// GeoMatchSet, and SizeConstraintSet objects that you want to add to a rule
	// and, for each object, indicates whether you want to negate the settings.
	PredicateList []*AwsWafRulePredicateListDetails `type:"list"`

	// The ID of the WAF rule.
	RuleId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRuleDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRuleDetails) GoString() string {
	return s.String()
}

// SetMetricName sets the MetricName field's value.
func (s *AwsWafRuleDetails) SetMetricName(v string) *AwsWafRuleDetails {
	s.MetricName = &v
	return s
}

// SetName sets the Name field's value.
func (s *AwsWafRuleDetails) SetName(v string) *AwsWafRuleDetails {
	s.Name = &v
	return s
}

// SetPredicateList sets the PredicateList field's value.
func (s *AwsWafRuleDetails) SetPredicateList(v []*AwsWafRulePredicateListDetails) *AwsWafRuleDetails {
	s.PredicateList = v
	return s
}

// SetRuleId sets the RuleId field's value.
func (s *AwsWafRuleDetails) SetRuleId(v string) *AwsWafRuleDetails {
	s.RuleId = &v
	return s
}

// Provides information about an WAF rule group. A rule group is a collection
// of rules for inspecting and controlling web requests.
type AwsWafRuleGroupDetails struct {
	_ struct{} `type:"structure"`

	// The name of the metrics for this rule group.
	MetricName *string `type:"string"`

	// The name of the rule group.
	Name *string `type:"string"`

	// The ID of the rule group.
	RuleGroupId *string `type:"string"`

	// Provides information about the rules attached to the rule group. These rules
	// identify the web requests that you want to allow, block, or count.
	Rules []*AwsWafRuleGroupRulesDetails `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 AwsWafRuleGroupDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRuleGroupDetails) GoString() string {
	return s.String()
}

// SetMetricName sets the MetricName field's value.
func (s *AwsWafRuleGroupDetails) SetMetricName(v string) *AwsWafRuleGroupDetails {
	s.MetricName = &v
	return s
}

// SetName sets the Name field's value.
func (s *AwsWafRuleGroupDetails) SetName(v string) *AwsWafRuleGroupDetails {
	s.Name = &v
	return s
}

// SetRuleGroupId sets the RuleGroupId field's value.
func (s *AwsWafRuleGroupDetails) SetRuleGroupId(v string) *AwsWafRuleGroupDetails {
	s.RuleGroupId = &v
	return s
}

// SetRules sets the Rules field's value.
func (s *AwsWafRuleGroupDetails) SetRules(v []*AwsWafRuleGroupRulesDetails) *AwsWafRuleGroupDetails {
	s.Rules = v
	return s
}

// Provides information about what action WAF should take on a web request when
// it matches the criteria defined in the rule.
type AwsWafRuleGroupRulesActionDetails struct {
	_ struct{} `type:"structure"`

	// The action that WAF should take on a web request when it matches the rule's
	// statement.
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRuleGroupRulesActionDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRuleGroupRulesActionDetails) GoString() string {
	return s.String()
}

// SetType sets the Type field's value.
func (s *AwsWafRuleGroupRulesActionDetails) SetType(v string) *AwsWafRuleGroupRulesActionDetails {
	s.Type = &v
	return s
}

// Provides information about the rules attached to the rule group. These rules
// identify the web requests that you want to allow, block, or count.
type AwsWafRuleGroupRulesDetails struct {
	_ struct{} `type:"structure"`

	// Provides information about what action WAF should take on a web request when
	// it matches the criteria defined in the rule.
	Action *AwsWafRuleGroupRulesActionDetails `type:"structure"`

	// If you define more than one rule in a web ACL, WAF evaluates each request
	// against the rules in order based on the value of Priority.
	Priority *int64 `type:"integer"`

	// The rule ID for a rule.
	RuleId *string `type:"string"`

	// The type of rule.
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRuleGroupRulesDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRuleGroupRulesDetails) GoString() string {
	return s.String()
}

// SetAction sets the Action field's value.
func (s *AwsWafRuleGroupRulesDetails) SetAction(v *AwsWafRuleGroupRulesActionDetails) *AwsWafRuleGroupRulesDetails {
	s.Action = v
	return s
}

// SetPriority sets the Priority field's value.
func (s *AwsWafRuleGroupRulesDetails) SetPriority(v int64) *AwsWafRuleGroupRulesDetails {
	s.Priority = &v
	return s
}

// SetRuleId sets the RuleId field's value.
func (s *AwsWafRuleGroupRulesDetails) SetRuleId(v string) *AwsWafRuleGroupRulesDetails {
	s.RuleId = &v
	return s
}

// SetType sets the Type field's value.
func (s *AwsWafRuleGroupRulesDetails) SetType(v string) *AwsWafRuleGroupRulesDetails {
	s.Type = &v
	return s
}

// Provides details about the ByteMatchSet, IPSet, SqlInjectionMatchSet, XssMatchSet,
// RegexMatchSet, GeoMatchSet, and SizeConstraintSet objects that you want to
// add to a rule and, for each object, indicates whether you want to negate
// the settings.
type AwsWafRulePredicateListDetails struct {
	_ struct{} `type:"structure"`

	// A unique identifier for a predicate in a rule, such as ByteMatchSetId or
	// IPSetId.
	DataId *string `type:"string"`

	// Specifies if you want WAF to allow, block, or count requests based on the
	// settings in the ByteMatchSet, IPSet, SqlInjectionMatchSet, XssMatchSet, RegexMatchSet,
	// GeoMatchSet, or SizeConstraintSet.
	Negated *bool `type:"boolean"`

	// The type of predicate in a rule, such as ByteMatch or IPSet.
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRulePredicateListDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafRulePredicateListDetails) GoString() string {
	return s.String()
}

// SetDataId sets the DataId field's value.
func (s *AwsWafRulePredicateListDetails) SetDataId(v string) *AwsWafRulePredicateListDetails {
	s.DataId = &v
	return s
}

// SetNegated sets the Negated field's value.
func (s *AwsWafRulePredicateListDetails) SetNegated(v bool) *AwsWafRulePredicateListDetails {
	s.Negated = &v
	return s
}

// SetType sets the Type field's value.
func (s *AwsWafRulePredicateListDetails) SetType(v string) *AwsWafRulePredicateListDetails {
	s.Type = &v
	return s
}

// Provides information about an WAF web access control list (web ACL).
type AwsWafWebAclDetails struct {
	_ struct{} `type:"structure"`

	// The action to perform if none of the rules contained in the web ACL match.
	DefaultAction *string `type:"string"`

	// A friendly name or description of the web ACL. You can't change the name
	// of a web ACL after you create it.
	Name *string `type:"string"`

	// An array that contains the action for each rule in a web ACL, the priority
	// of the rule, and the ID of the rule.
	Rules []*AwsWafWebAclRule `type:"list"`

	// A unique identifier for a web ACL.
	WebAclId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafWebAclDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafWebAclDetails) GoString() string {
	return s.String()
}

// SetDefaultAction sets the DefaultAction field's value.
func (s *AwsWafWebAclDetails) SetDefaultAction(v string) *AwsWafWebAclDetails {
	s.DefaultAction = &v
	return s
}

// SetName sets the Name field's value.
func (s *AwsWafWebAclDetails) SetName(v string) *AwsWafWebAclDetails {
	s.Name = &v
	return s
}

// SetRules sets the Rules field's value.
func (s *AwsWafWebAclDetails) SetRules(v []*AwsWafWebAclRule) *AwsWafWebAclDetails {
	s.Rules = v
	return s
}

// SetWebAclId sets the WebAclId field's value.
func (s *AwsWafWebAclDetails) SetWebAclId(v string) *AwsWafWebAclDetails {
	s.WebAclId = &v
	return s
}

// Details for a rule in an WAF web ACL.
type AwsWafWebAclRule struct {
	_ struct{} `type:"structure"`

	// Specifies the action that CloudFront or WAF takes when a web request matches
	// the conditions in the rule.
	Action *WafAction `type:"structure"`

	// Rules to exclude from a rule group.
	ExcludedRules []*WafExcludedRule `type:"list"`

	// Use the OverrideAction to test your RuleGroup.
	//
	// Any rule in a RuleGroup can potentially block a request. If you set the OverrideAction
	// to None, the RuleGroup blocks a request if any individual rule in the RuleGroup
	// matches the request and is configured to block that request.
	//
	// However, if you first want to test the RuleGroup, set the OverrideAction
	// to Count. The RuleGroup then overrides any block action specified by individual
	// rules contained within the group. Instead of blocking matching requests,
	// those requests are counted.
	//
	// ActivatedRule|OverrideAction applies only when updating or adding a RuleGroup
	// to a web ACL. In this case you do not use ActivatedRule Action. For all other
	// update requests, ActivatedRule Action is used instead of ActivatedRule OverrideAction.
	OverrideAction *WafOverrideAction `type:"structure"`

	// Specifies the order in which the rules in a web ACL are evaluated. Rules
	// with a lower value for Priority are evaluated before rules with a higher
	// value. The value must be a unique integer. If you add multiple rules to a
	// web ACL, the values do not need to be consecutive.
	Priority *int64 `type:"integer"`

	// The identifier for a rule.
	RuleId *string `type:"string"`

	// The rule type.
	//
	// Valid values: REGULAR | RATE_BASED | GROUP
	//
	// The default is REGULAR.
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafWebAclRule) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafWebAclRule) GoString() string {
	return s.String()
}

// SetAction sets the Action field's value.
func (s *AwsWafWebAclRule) SetAction(v *WafAction) *AwsWafWebAclRule {
	s.Action = v
	return s
}

// SetExcludedRules sets the ExcludedRules field's value.
func (s *AwsWafWebAclRule) SetExcludedRules(v []*WafExcludedRule) *AwsWafWebAclRule {
	s.ExcludedRules = v
	return s
}

// SetOverrideAction sets the OverrideAction field's value.
func (s *AwsWafWebAclRule) SetOverrideAction(v *WafOverrideAction) *AwsWafWebAclRule {
	s.OverrideAction = v
	return s
}

// SetPriority sets the Priority field's value.
func (s *AwsWafWebAclRule) SetPriority(v int64) *AwsWafWebAclRule {
	s.Priority = &v
	return s
}

// SetRuleId sets the RuleId field's value.
func (s *AwsWafWebAclRule) SetRuleId(v string) *AwsWafWebAclRule {
	s.RuleId = &v
	return s
}

// SetType sets the Type field's value.
func (s *AwsWafWebAclRule) SetType(v string) *AwsWafWebAclRule {
	s.Type = &v
	return s
}

// Specifies that WAF should allow the request and optionally defines additional
// custom handling for the request.
type AwsWafv2ActionAllowDetails struct {
	_ struct{} `type:"structure"`

	// Defines custom handling for the web request. For information about customizing
	// web requests and responses, see Customizing web requests and responses in
	// WAF (https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html)
	// in the WAF Developer Guide..
	CustomRequestHandling *AwsWafv2CustomRequestHandlingDetails `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 AwsWafv2ActionAllowDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafv2ActionAllowDetails) GoString() string {
	return s.String()
}

// SetCustomRequestHandling sets the CustomRequestHandling field's value.
func (s *AwsWafv2ActionAllowDetails) SetCustomRequestHandling(v *AwsWafv2CustomRequestHandlingDetails) *AwsWafv2ActionAllowDetails {
	s.CustomRequestHandling = v
	return s
}

// Specifies that WAF should block the request and optionally defines additional
// custom handling for the response to the web request.
type AwsWafv2ActionBlockDetails struct {
	_ struct{} `type:"structure"`

	// Defines a custom response for the web request. For information, see Customizing
	// web requests and responses in WAF (https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html)
	// in the WAF Developer Guide..
	CustomResponse *AwsWafv2CustomResponseDetails `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 AwsWafv2ActionBlockDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafv2ActionBlockDetails) GoString() string {
	return s.String()
}

// SetCustomResponse sets the CustomResponse field's value.
func (s *AwsWafv2ActionBlockDetails) SetCustomResponse(v *AwsWafv2CustomResponseDetails) *AwsWafv2ActionBlockDetails {
	s.CustomResponse = v
	return s
}

// A custom header for custom request and response handling.
type AwsWafv2CustomHttpHeader struct {
	_ struct{} `type:"structure"`

	// The name of the custom header.
	Name *string `type:"string"`

	// The value of the custom header.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafv2CustomHttpHeader) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafv2CustomHttpHeader) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *AwsWafv2CustomHttpHeader) SetName(v string) *AwsWafv2CustomHttpHeader {
	s.Name = &v
	return s
}

// SetValue sets the Value field's value.
func (s *AwsWafv2CustomHttpHeader) SetValue(v string) *AwsWafv2CustomHttpHeader {
	s.Value = &v
	return s
}

// Custom request handling behavior that inserts custom headers into a web request.
// WAF uses custom request handling when the rule action doesn't block the request.
type AwsWafv2CustomRequestHandlingDetails struct {
	_ struct{} `type:"structure"`

	// The HTTP headers to insert into the request.
	InsertHeaders []*AwsWafv2CustomHttpHeader `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 AwsWafv2CustomRequestHandlingDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafv2CustomRequestHandlingDetails) GoString() string {
	return s.String()
}

// SetInsertHeaders sets the InsertHeaders field's value.
func (s *AwsWafv2CustomRequestHandlingDetails) SetInsertHeaders(v []*AwsWafv2CustomHttpHeader) *AwsWafv2CustomRequestHandlingDetails {
	s.InsertHeaders = v
	return s
}

// A custom response to send to the client. You can define a custom response
// for rule actions and default web ACL actions that are set to block.
type AwsWafv2CustomResponseDetails struct {
	_ struct{} `type:"structure"`

	// References the response body that you want WAF to return to the web request
	// client. You can define a custom response for a rule action or a default web
	// ACL action that is set to block.
	CustomResponseBodyKey *string `type:"string"`

	// The HTTP status code to return to the client. For a list of status codes
	// that you can use in your custom responses, see Supported status codes for
	// custom response (https://docs.aws.amazon.com/waf/latest/developerguide/customizing-the-response-status-codes.html)
	// in the WAF Developer Guide.
	ResponseCode *int64 `type:"integer"`

	// The HTTP headers to use in the response.
	ResponseHeaders []*AwsWafv2CustomHttpHeader `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 AwsWafv2CustomResponseDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafv2CustomResponseDetails) GoString() string {
	return s.String()
}

// SetCustomResponseBodyKey sets the CustomResponseBodyKey field's value.
func (s *AwsWafv2CustomResponseDetails) SetCustomResponseBodyKey(v string) *AwsWafv2CustomResponseDetails {
	s.CustomResponseBodyKey = &v
	return s
}

// SetResponseCode sets the ResponseCode field's value.
func (s *AwsWafv2CustomResponseDetails) SetResponseCode(v int64) *AwsWafv2CustomResponseDetails {
	s.ResponseCode = &v
	return s
}

// SetResponseHeaders sets the ResponseHeaders field's value.
func (s *AwsWafv2CustomResponseDetails) SetResponseHeaders(v []*AwsWafv2CustomHttpHeader) *AwsWafv2CustomResponseDetails {
	s.ResponseHeaders = v
	return s
}

// Details about an WAFv2 rule group.
type AwsWafv2RuleGroupDetails struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the entity.
	Arn *string `type:"string"`

	// The web ACL capacity units (WCUs) required for this rule group.
	Capacity *int64 `type:"long"`

	// A description of the rule group that helps with identification.
	Description *string `type:"string"`

	// A unique identifier for the rule group.
	Id *string `type:"string"`

	// The name of the rule group. You cannot change the name of a rule group after
	// you create it.
	Name *string `type:"string"`

	// The Rule statements used to identify the web requests that you want to allow,
	// block, or count. Each rule includes one top-level statement that WAF uses
	// to identify matching web requests, and parameters that govern how WAF handles
	// them.
	Rules []*AwsWafv2RulesDetails `type:"list"`

	// Specifies whether the rule group is for an Amazon CloudFront distribution
	// or for a regional application. A regional application can be an Application
	// Load Balancer (ALB), an Amazon API Gateway REST API, an AppSync GraphQL API,
	// or an Amazon Cognito user pool.
	Scope *string `type:"string"`

	// Defines and enables Amazon CloudWatch metrics and web request sample collection.
	VisibilityConfig *AwsWafv2VisibilityConfigDetails `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 AwsWafv2RuleGroupDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafv2RuleGroupDetails) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *AwsWafv2RuleGroupDetails) SetArn(v string) *AwsWafv2RuleGroupDetails {
	s.Arn = &v
	return s
}

// SetCapacity sets the Capacity field's value.
func (s *AwsWafv2RuleGroupDetails) SetCapacity(v int64) *AwsWafv2RuleGroupDetails {
	s.Capacity = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *AwsWafv2RuleGroupDetails) SetDescription(v string) *AwsWafv2RuleGroupDetails {
	s.Description = &v
	return s
}

// SetId sets the Id field's value.
func (s *AwsWafv2RuleGroupDetails) SetId(v string) *AwsWafv2RuleGroupDetails {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *AwsWafv2RuleGroupDetails) SetName(v string) *AwsWafv2RuleGroupDetails {
	s.Name = &v
	return s
}

// SetRules sets the Rules field's value.
func (s *AwsWafv2RuleGroupDetails) SetRules(v []*AwsWafv2RulesDetails) *AwsWafv2RuleGroupDetails {
	s.Rules = v
	return s
}

// SetScope sets the Scope field's value.
func (s *AwsWafv2RuleGroupDetails) SetScope(v string) *AwsWafv2RuleGroupDetails {
	s.Scope = &v
	return s
}

// SetVisibilityConfig sets the VisibilityConfig field's value.
func (s *AwsWafv2RuleGroupDetails) SetVisibilityConfig(v *AwsWafv2VisibilityConfigDetails) *AwsWafv2RuleGroupDetails {
	s.VisibilityConfig = v
	return s
}

// Specifies that WAF should run a CAPTCHA check against the request.
type AwsWafv2RulesActionCaptchaDetails struct {
	_ struct{} `type:"structure"`

	// Defines custom handling for the web request, used when the CAPTCHA inspection
	// determines that the request's token is valid and unexpired. For more information,
	// see Customizing web requests and responses in WAF (https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html)
	// in the WAF Developer Guide..
	CustomRequestHandling *AwsWafv2CustomRequestHandlingDetails `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 AwsWafv2RulesActionCaptchaDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafv2RulesActionCaptchaDetails) GoString() string {
	return s.String()
}

// SetCustomRequestHandling sets the CustomRequestHandling field's value.
func (s *AwsWafv2RulesActionCaptchaDetails) SetCustomRequestHandling(v *AwsWafv2CustomRequestHandlingDetails) *AwsWafv2RulesActionCaptchaDetails {
	s.CustomRequestHandling = v
	return s
}

// Specifies that WAF should count the request.
type AwsWafv2RulesActionCountDetails struct {
	_ struct{} `type:"structure"`

	// Defines custom handling for the web request. For more information, see Customizing
	// web requests and responses in WAF (https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html)
	// in the WAF Developer Guide..
	CustomRequestHandling *AwsWafv2CustomRequestHandlingDetails `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 AwsWafv2RulesActionCountDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafv2RulesActionCountDetails) GoString() string {
	return s.String()
}

// SetCustomRequestHandling sets the CustomRequestHandling field's value.
func (s *AwsWafv2RulesActionCountDetails) SetCustomRequestHandling(v *AwsWafv2CustomRequestHandlingDetails) *AwsWafv2RulesActionCountDetails {
	s.CustomRequestHandling = v
	return s
}

// The action that WAF should take on a web request when it matches a rule's
// statement. Settings at the web ACL level can override the rule action setting.
type AwsWafv2RulesActionDetails struct {
	_ struct{} `type:"structure"`

	// Instructs WAF to allow the web request.
	Allow *AwsWafv2ActionAllowDetails `type:"structure"`

	// Instructs WAF to block the web request.
	Block *AwsWafv2ActionBlockDetails `type:"structure"`

	// Instructs WAF to run a CAPTCHA check against the web request.
	Captcha *AwsWafv2RulesActionCaptchaDetails `type:"structure"`

	// Instructs WAF to count the web request and then continue evaluating the request
	// using the remaining rules in the web ACL.
	Count *AwsWafv2RulesActionCountDetails `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 AwsWafv2RulesActionDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafv2RulesActionDetails) GoString() string {
	return s.String()
}

// SetAllow sets the Allow field's value.
func (s *AwsWafv2RulesActionDetails) SetAllow(v *AwsWafv2ActionAllowDetails) *AwsWafv2RulesActionDetails {
	s.Allow = v
	return s
}

// SetBlock sets the Block field's value.
func (s *AwsWafv2RulesActionDetails) SetBlock(v *AwsWafv2ActionBlockDetails) *AwsWafv2RulesActionDetails {
	s.Block = v
	return s
}

// SetCaptcha sets the Captcha field's value.
func (s *AwsWafv2RulesActionDetails) SetCaptcha(v *AwsWafv2RulesActionCaptchaDetails) *AwsWafv2RulesActionDetails {
	s.Captcha = v
	return s
}

// SetCount sets the Count field's value.
func (s *AwsWafv2RulesActionDetails) SetCount(v *AwsWafv2RulesActionCountDetails) *AwsWafv2RulesActionDetails {
	s.Count = v
	return s
}

// Provides details about rules in a rule group. A rule identifies web requests
// that you want to allow, block, or count. Each rule includes one top-level
// Statement that WAF uses to identify matching web requests, and parameters
// that govern how WAF handles them.
type AwsWafv2RulesDetails struct {
	_ struct{} `type:"structure"`

	// The action that WAF should take on a web request when it matches the rule
	// statement. Settings at the web ACL level can override the rule action setting.
	Action *AwsWafv2RulesActionDetails `type:"structure"`

	// The name of the rule.
	Name *string `type:"string"`

	// The action to use in the place of the action that results from the rule group
	// evaluation.
	OverrideAction *string `type:"string"`

	// If you define more than one Rule in a WebACL, WAF evaluates each request
	// against the Rules in order based on the value of Priority. WAF processes
	// rules with lower priority first. The priorities don't need to be consecutive,
	// but they must all be different.
	Priority *int64 `type:"integer"`

	// Defines and enables Amazon CloudWatch metrics and web request sample collection.
	VisibilityConfig *AwsWafv2VisibilityConfigDetails `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 AwsWafv2RulesDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafv2RulesDetails) GoString() string {
	return s.String()
}

// SetAction sets the Action field's value.
func (s *AwsWafv2RulesDetails) SetAction(v *AwsWafv2RulesActionDetails) *AwsWafv2RulesDetails {
	s.Action = v
	return s
}

// SetName sets the Name field's value.
func (s *AwsWafv2RulesDetails) SetName(v string) *AwsWafv2RulesDetails {
	s.Name = &v
	return s
}

// SetOverrideAction sets the OverrideAction field's value.
func (s *AwsWafv2RulesDetails) SetOverrideAction(v string) *AwsWafv2RulesDetails {
	s.OverrideAction = &v
	return s
}

// SetPriority sets the Priority field's value.
func (s *AwsWafv2RulesDetails) SetPriority(v int64) *AwsWafv2RulesDetails {
	s.Priority = &v
	return s
}

// SetVisibilityConfig sets the VisibilityConfig field's value.
func (s *AwsWafv2RulesDetails) SetVisibilityConfig(v *AwsWafv2VisibilityConfigDetails) *AwsWafv2RulesDetails {
	s.VisibilityConfig = v
	return s
}

// Defines and enables Amazon CloudWatch metrics and web request sample collection.
type AwsWafv2VisibilityConfigDetails struct {
	_ struct{} `type:"structure"`

	// A boolean indicating whether the associated resource sends metrics to Amazon
	// CloudWatch. For the list of available metrics, see WAF metrics and dimensions
	// (https://docs.aws.amazon.com/waf/latest/developerguide/monitoring-cloudwatch.html#waf-metrics)
	// in the WAF Developer Guide.
	CloudWatchMetricsEnabled *bool `type:"boolean"`

	// A name of the Amazon CloudWatch metric.
	MetricName *string `type:"string"`

	// A boolean indicating whether WAF should store a sampling of the web requests
	// that match the rules. You can view the sampled requests through the WAF console.
	SampledRequestsEnabled *bool `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 AwsWafv2VisibilityConfigDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafv2VisibilityConfigDetails) GoString() string {
	return s.String()
}

// SetCloudWatchMetricsEnabled sets the CloudWatchMetricsEnabled field's value.
func (s *AwsWafv2VisibilityConfigDetails) SetCloudWatchMetricsEnabled(v bool) *AwsWafv2VisibilityConfigDetails {
	s.CloudWatchMetricsEnabled = &v
	return s
}

// SetMetricName sets the MetricName field's value.
func (s *AwsWafv2VisibilityConfigDetails) SetMetricName(v string) *AwsWafv2VisibilityConfigDetails {
	s.MetricName = &v
	return s
}

// SetSampledRequestsEnabled sets the SampledRequestsEnabled field's value.
func (s *AwsWafv2VisibilityConfigDetails) SetSampledRequestsEnabled(v bool) *AwsWafv2VisibilityConfigDetails {
	s.SampledRequestsEnabled = &v
	return s
}

// Specifies the action that Amazon CloudFront or WAF takes when a web request
// matches the conditions in the rule.
type AwsWafv2WebAclActionDetails struct {
	_ struct{} `type:"structure"`

	// Specifies that WAF should allow requests by default.
	Allow *AwsWafv2ActionAllowDetails `type:"structure"`

	// Specifies that WAF should block requests by default.
	Block *AwsWafv2ActionBlockDetails `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 AwsWafv2WebAclActionDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafv2WebAclActionDetails) GoString() string {
	return s.String()
}

// SetAllow sets the Allow field's value.
func (s *AwsWafv2WebAclActionDetails) SetAllow(v *AwsWafv2ActionAllowDetails) *AwsWafv2WebAclActionDetails {
	s.Allow = v
	return s
}

// SetBlock sets the Block field's value.
func (s *AwsWafv2WebAclActionDetails) SetBlock(v *AwsWafv2ActionBlockDetails) *AwsWafv2WebAclActionDetails {
	s.Block = v
	return s
}

// Specifies how WAF should handle CAPTCHA evaluations for rules that don't
// have their own CaptchaConfig settings.
type AwsWafv2WebAclCaptchaConfigDetails struct {
	_ struct{} `type:"structure"`

	// Determines how long a CAPTCHA timestamp in the token remains valid after
	// the client successfully solves a CAPTCHA puzzle.
	ImmunityTimeProperty *AwsWafv2WebAclCaptchaConfigImmunityTimePropertyDetails `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 AwsWafv2WebAclCaptchaConfigDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafv2WebAclCaptchaConfigDetails) GoString() string {
	return s.String()
}

// SetImmunityTimeProperty sets the ImmunityTimeProperty field's value.
func (s *AwsWafv2WebAclCaptchaConfigDetails) SetImmunityTimeProperty(v *AwsWafv2WebAclCaptchaConfigImmunityTimePropertyDetails) *AwsWafv2WebAclCaptchaConfigDetails {
	s.ImmunityTimeProperty = v
	return s
}

// Used for CAPTCHA and challenge token settings. Determines how long a CAPTCHA
// or challenge timestamp remains valid after WAF updates it for a successful
// CAPTCHA or challenge response.
type AwsWafv2WebAclCaptchaConfigImmunityTimePropertyDetails struct {
	_ struct{} `type:"structure"`

	// The amount of time, in seconds, that a CAPTCHA or challenge timestamp is
	// considered valid by WAF.
	ImmunityTime *int64 `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 AwsWafv2WebAclCaptchaConfigImmunityTimePropertyDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafv2WebAclCaptchaConfigImmunityTimePropertyDetails) GoString() string {
	return s.String()
}

// SetImmunityTime sets the ImmunityTime field's value.
func (s *AwsWafv2WebAclCaptchaConfigImmunityTimePropertyDetails) SetImmunityTime(v int64) *AwsWafv2WebAclCaptchaConfigImmunityTimePropertyDetails {
	s.ImmunityTime = &v
	return s
}

// Details about an WAFv2 web Access Control List (ACL).
type AwsWafv2WebAclDetails struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the web ACL that you want to associate
	// with the resource.
	Arn *string `type:"string"`

	// The web ACL capacity units (WCUs) currently being used by this web ACL.
	Capacity *int64 `type:"long"`

	// Specifies how WAF should handle CAPTCHA evaluations for rules that don't
	// have their own CaptchaConfig settings.
	CaptchaConfig *AwsWafv2WebAclCaptchaConfigDetails `type:"structure"`

	// The action to perform if none of the Rules contained in the web ACL match.
	DefaultAction *AwsWafv2WebAclActionDetails `type:"structure"`

	// A description of the web ACL that helps with identification.
	Description *string `type:"string"`

	// A unique identifier for the web ACL.
	Id *string `type:"string"`

	// Indicates whether this web ACL is managed by Firewall Manager.
	ManagedbyFirewallManager *bool `type:"boolean"`

	// The name of the web ACL.
	Name *string `type:"string"`

	// The Rule statements used to identify the web requests that you want to allow,
	// block, or count. Each rule includes one top-level statement that WAF uses
	// to identify matching web requests, and parameters that govern how WAF handles
	// them.
	Rules []*AwsWafv2RulesDetails `type:"list"`

	// Defines and enables Amazon CloudWatch metrics and web request sample collection.
	VisibilityConfig *AwsWafv2VisibilityConfigDetails `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 AwsWafv2WebAclDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsWafv2WebAclDetails) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *AwsWafv2WebAclDetails) SetArn(v string) *AwsWafv2WebAclDetails {
	s.Arn = &v
	return s
}

// SetCapacity sets the Capacity field's value.
func (s *AwsWafv2WebAclDetails) SetCapacity(v int64) *AwsWafv2WebAclDetails {
	s.Capacity = &v
	return s
}

// SetCaptchaConfig sets the CaptchaConfig field's value.
func (s *AwsWafv2WebAclDetails) SetCaptchaConfig(v *AwsWafv2WebAclCaptchaConfigDetails) *AwsWafv2WebAclDetails {
	s.CaptchaConfig = v
	return s
}

// SetDefaultAction sets the DefaultAction field's value.
func (s *AwsWafv2WebAclDetails) SetDefaultAction(v *AwsWafv2WebAclActionDetails) *AwsWafv2WebAclDetails {
	s.DefaultAction = v
	return s
}

// SetDescription sets the Description field's value.
func (s *AwsWafv2WebAclDetails) SetDescription(v string) *AwsWafv2WebAclDetails {
	s.Description = &v
	return s
}

// SetId sets the Id field's value.
func (s *AwsWafv2WebAclDetails) SetId(v string) *AwsWafv2WebAclDetails {
	s.Id = &v
	return s
}

// SetManagedbyFirewallManager sets the ManagedbyFirewallManager field's value.
func (s *AwsWafv2WebAclDetails) SetManagedbyFirewallManager(v bool) *AwsWafv2WebAclDetails {
	s.ManagedbyFirewallManager = &v
	return s
}

// SetName sets the Name field's value.
func (s *AwsWafv2WebAclDetails) SetName(v string) *AwsWafv2WebAclDetails {
	s.Name = &v
	return s
}

// SetRules sets the Rules field's value.
func (s *AwsWafv2WebAclDetails) SetRules(v []*AwsWafv2RulesDetails) *AwsWafv2WebAclDetails {
	s.Rules = v
	return s
}

// SetVisibilityConfig sets the VisibilityConfig field's value.
func (s *AwsWafv2WebAclDetails) SetVisibilityConfig(v *AwsWafv2VisibilityConfigDetails) *AwsWafv2WebAclDetails {
	s.VisibilityConfig = v
	return s
}

// Information about the encryption configuration for X-Ray.
type AwsXrayEncryptionConfigDetails struct {
	_ struct{} `type:"structure"`

	// The identifier of the KMS key that is used for encryption. Provided if Type
	// is KMS.
	KeyId *string `type:"string"`

	// The current status of the encryption configuration. Valid values are ACTIVE
	// or UPDATING.
	//
	// When Status is equal to UPDATING, X-Ray might use both the old and new encryption.
	Status *string `type:"string"`

	// The type of encryption. KMS indicates that the encryption uses KMS keys.
	// NONE indicates the default encryption.
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsXrayEncryptionConfigDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsXrayEncryptionConfigDetails) GoString() string {
	return s.String()
}

// SetKeyId sets the KeyId field's value.
func (s *AwsXrayEncryptionConfigDetails) SetKeyId(v string) *AwsXrayEncryptionConfigDetails {
	s.KeyId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AwsXrayEncryptionConfigDetails) SetStatus(v string) *AwsXrayEncryptionConfigDetails {
	s.Status = &v
	return s
}

// SetType sets the Type field's value.
func (s *AwsXrayEncryptionConfigDetails) SetType(v string) *AwsXrayEncryptionConfigDetails {
	s.Type = &v
	return s
}

type BatchDeleteAutomationRulesInput struct {
	_ struct{} `type:"structure"`

	// A list of Amazon Resource Names (ARNs) for the rules that are to be deleted.
	//
	// AutomationRulesArns is a required field
	AutomationRulesArns []*string `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 BatchDeleteAutomationRulesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchDeleteAutomationRulesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *BatchDeleteAutomationRulesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "BatchDeleteAutomationRulesInput"}
	if s.AutomationRulesArns == nil {
		invalidParams.Add(request.NewErrParamRequired("AutomationRulesArns"))
	}
	if s.AutomationRulesArns != nil && len(s.AutomationRulesArns) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AutomationRulesArns", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAutomationRulesArns sets the AutomationRulesArns field's value.
func (s *BatchDeleteAutomationRulesInput) SetAutomationRulesArns(v []*string) *BatchDeleteAutomationRulesInput {
	s.AutomationRulesArns = v
	return s
}

type BatchDeleteAutomationRulesOutput struct {
	_ struct{} `type:"structure"`

	// A list of properly processed rule ARNs.
	ProcessedAutomationRules []*string `min:"1" type:"list"`

	// A list of objects containing RuleArn, ErrorCode, and ErrorMessage. This parameter
	// tells you which automation rules the request didn't delete and why.
	UnprocessedAutomationRules []*UnprocessedAutomationRule `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 BatchDeleteAutomationRulesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchDeleteAutomationRulesOutput) GoString() string {
	return s.String()
}

// SetProcessedAutomationRules sets the ProcessedAutomationRules field's value.
func (s *BatchDeleteAutomationRulesOutput) SetProcessedAutomationRules(v []*string) *BatchDeleteAutomationRulesOutput {
	s.ProcessedAutomationRules = v
	return s
}

// SetUnprocessedAutomationRules sets the UnprocessedAutomationRules field's value.
func (s *BatchDeleteAutomationRulesOutput) SetUnprocessedAutomationRules(v []*UnprocessedAutomationRule) *BatchDeleteAutomationRulesOutput {
	s.UnprocessedAutomationRules = v
	return s
}

type BatchDisableStandardsInput struct {
	_ struct{} `type:"structure"`

	// The ARNs of the standards subscriptions to disable.
	//
	// StandardsSubscriptionArns is a required field
	StandardsSubscriptionArns []*string `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 BatchDisableStandardsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchDisableStandardsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *BatchDisableStandardsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "BatchDisableStandardsInput"}
	if s.StandardsSubscriptionArns == nil {
		invalidParams.Add(request.NewErrParamRequired("StandardsSubscriptionArns"))
	}
	if s.StandardsSubscriptionArns != nil && len(s.StandardsSubscriptionArns) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("StandardsSubscriptionArns", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetStandardsSubscriptionArns sets the StandardsSubscriptionArns field's value.
func (s *BatchDisableStandardsInput) SetStandardsSubscriptionArns(v []*string) *BatchDisableStandardsInput {
	s.StandardsSubscriptionArns = v
	return s
}

type BatchDisableStandardsOutput struct {
	_ struct{} `type:"structure"`

	// The details of the standards subscriptions that were disabled.
	StandardsSubscriptions []*StandardsSubscription `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 BatchDisableStandardsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchDisableStandardsOutput) GoString() string {
	return s.String()
}

// SetStandardsSubscriptions sets the StandardsSubscriptions field's value.
func (s *BatchDisableStandardsOutput) SetStandardsSubscriptions(v []*StandardsSubscription) *BatchDisableStandardsOutput {
	s.StandardsSubscriptions = v
	return s
}

type BatchEnableStandardsInput struct {
	_ struct{} `type:"structure"`

	// The list of standards checks to enable.
	//
	// StandardsSubscriptionRequests is a required field
	StandardsSubscriptionRequests []*StandardsSubscriptionRequest `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 BatchEnableStandardsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchEnableStandardsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *BatchEnableStandardsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "BatchEnableStandardsInput"}
	if s.StandardsSubscriptionRequests == nil {
		invalidParams.Add(request.NewErrParamRequired("StandardsSubscriptionRequests"))
	}
	if s.StandardsSubscriptionRequests != nil && len(s.StandardsSubscriptionRequests) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("StandardsSubscriptionRequests", 1))
	}
	if s.StandardsSubscriptionRequests != nil {
		for i, v := range s.StandardsSubscriptionRequests {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "StandardsSubscriptionRequests", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetStandardsSubscriptionRequests sets the StandardsSubscriptionRequests field's value.
func (s *BatchEnableStandardsInput) SetStandardsSubscriptionRequests(v []*StandardsSubscriptionRequest) *BatchEnableStandardsInput {
	s.StandardsSubscriptionRequests = v
	return s
}

type BatchEnableStandardsOutput struct {
	_ struct{} `type:"structure"`

	// The details of the standards subscriptions that were enabled.
	StandardsSubscriptions []*StandardsSubscription `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 BatchEnableStandardsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchEnableStandardsOutput) GoString() string {
	return s.String()
}

// SetStandardsSubscriptions sets the StandardsSubscriptions field's value.
func (s *BatchEnableStandardsOutput) SetStandardsSubscriptions(v []*StandardsSubscription) *BatchEnableStandardsOutput {
	s.StandardsSubscriptions = v
	return s
}

type BatchGetAutomationRulesInput struct {
	_ struct{} `type:"structure"`

	// A list of rule ARNs to get details for.
	//
	// AutomationRulesArns is a required field
	AutomationRulesArns []*string `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 BatchGetAutomationRulesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchGetAutomationRulesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *BatchGetAutomationRulesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "BatchGetAutomationRulesInput"}
	if s.AutomationRulesArns == nil {
		invalidParams.Add(request.NewErrParamRequired("AutomationRulesArns"))
	}
	if s.AutomationRulesArns != nil && len(s.AutomationRulesArns) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AutomationRulesArns", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAutomationRulesArns sets the AutomationRulesArns field's value.
func (s *BatchGetAutomationRulesInput) SetAutomationRulesArns(v []*string) *BatchGetAutomationRulesInput {
	s.AutomationRulesArns = v
	return s
}

type BatchGetAutomationRulesOutput struct {
	_ struct{} `type:"structure"`

	// A list of rule details for the provided rule ARNs.
	Rules []*AutomationRulesConfig `type:"list"`

	// A list of objects containing RuleArn, ErrorCode, and ErrorMessage. This parameter
	// tells you which automation rules the request didn't retrieve and why.
	UnprocessedAutomationRules []*UnprocessedAutomationRule `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 BatchGetAutomationRulesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchGetAutomationRulesOutput) GoString() string {
	return s.String()
}

// SetRules sets the Rules field's value.
func (s *BatchGetAutomationRulesOutput) SetRules(v []*AutomationRulesConfig) *BatchGetAutomationRulesOutput {
	s.Rules = v
	return s
}

// SetUnprocessedAutomationRules sets the UnprocessedAutomationRules field's value.
func (s *BatchGetAutomationRulesOutput) SetUnprocessedAutomationRules(v []*UnprocessedAutomationRule) *BatchGetAutomationRulesOutput {
	s.UnprocessedAutomationRules = v
	return s
}

type BatchGetConfigurationPolicyAssociationsInput struct {
	_ struct{} `type:"structure"`

	// Specifies one or more target account IDs, organizational unit (OU) IDs, or
	// the root ID to retrieve associations for.
	//
	// ConfigurationPolicyAssociationIdentifiers is a required field
	ConfigurationPolicyAssociationIdentifiers []*ConfigurationPolicyAssociation `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 BatchGetConfigurationPolicyAssociationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchGetConfigurationPolicyAssociationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *BatchGetConfigurationPolicyAssociationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "BatchGetConfigurationPolicyAssociationsInput"}
	if s.ConfigurationPolicyAssociationIdentifiers == nil {
		invalidParams.Add(request.NewErrParamRequired("ConfigurationPolicyAssociationIdentifiers"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConfigurationPolicyAssociationIdentifiers sets the ConfigurationPolicyAssociationIdentifiers field's value.
func (s *BatchGetConfigurationPolicyAssociationsInput) SetConfigurationPolicyAssociationIdentifiers(v []*ConfigurationPolicyAssociation) *BatchGetConfigurationPolicyAssociationsInput {
	s.ConfigurationPolicyAssociationIdentifiers = v
	return s
}

type BatchGetConfigurationPolicyAssociationsOutput struct {
	_ struct{} `type:"structure"`

	// Describes associations for the target accounts, OUs, or the root.
	ConfigurationPolicyAssociations []*ConfigurationPolicyAssociationSummary `type:"list"`

	// An array of configuration policy associations, one for each configuration
	// policy association identifier, that was specified in the request but couldn’t
	// be processed due to an error.
	UnprocessedConfigurationPolicyAssociations []*UnprocessedConfigurationPolicyAssociation `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 BatchGetConfigurationPolicyAssociationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchGetConfigurationPolicyAssociationsOutput) GoString() string {
	return s.String()
}

// SetConfigurationPolicyAssociations sets the ConfigurationPolicyAssociations field's value.
func (s *BatchGetConfigurationPolicyAssociationsOutput) SetConfigurationPolicyAssociations(v []*ConfigurationPolicyAssociationSummary) *BatchGetConfigurationPolicyAssociationsOutput {
	s.ConfigurationPolicyAssociations = v
	return s
}

// SetUnprocessedConfigurationPolicyAssociations sets the UnprocessedConfigurationPolicyAssociations field's value.
func (s *BatchGetConfigurationPolicyAssociationsOutput) SetUnprocessedConfigurationPolicyAssociations(v []*UnprocessedConfigurationPolicyAssociation) *BatchGetConfigurationPolicyAssociationsOutput {
	s.UnprocessedConfigurationPolicyAssociations = v
	return s
}

type BatchGetSecurityControlsInput struct {
	_ struct{} `type:"structure"`

	// A list of security controls (identified with SecurityControlId, SecurityControlArn,
	// or a mix of both parameters). The security control ID or Amazon Resource
	// Name (ARN) is the same across standards.
	//
	// SecurityControlIds is a required field
	SecurityControlIds []*string `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 BatchGetSecurityControlsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchGetSecurityControlsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *BatchGetSecurityControlsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "BatchGetSecurityControlsInput"}
	if s.SecurityControlIds == nil {
		invalidParams.Add(request.NewErrParamRequired("SecurityControlIds"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSecurityControlIds sets the SecurityControlIds field's value.
func (s *BatchGetSecurityControlsInput) SetSecurityControlIds(v []*string) *BatchGetSecurityControlsInput {
	s.SecurityControlIds = v
	return s
}

type BatchGetSecurityControlsOutput struct {
	_ struct{} `type:"structure"`

	// An array that returns the identifier, Amazon Resource Name (ARN), and other
	// details about a security control. The same information is returned whether
	// the request includes SecurityControlId or SecurityControlArn.
	//
	// SecurityControls is a required field
	SecurityControls []*SecurityControl `type:"list" required:"true"`

	// A security control (identified with SecurityControlId, SecurityControlArn,
	// or a mix of both parameters) for which details cannot be returned.
	UnprocessedIds []*UnprocessedSecurityControl `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 BatchGetSecurityControlsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchGetSecurityControlsOutput) GoString() string {
	return s.String()
}

// SetSecurityControls sets the SecurityControls field's value.
func (s *BatchGetSecurityControlsOutput) SetSecurityControls(v []*SecurityControl) *BatchGetSecurityControlsOutput {
	s.SecurityControls = v
	return s
}

// SetUnprocessedIds sets the UnprocessedIds field's value.
func (s *BatchGetSecurityControlsOutput) SetUnprocessedIds(v []*UnprocessedSecurityControl) *BatchGetSecurityControlsOutput {
	s.UnprocessedIds = v
	return s
}

type BatchGetStandardsControlAssociationsInput struct {
	_ struct{} `type:"structure"`

	// An array with one or more objects that includes a security control (identified
	// with SecurityControlId, SecurityControlArn, or a mix of both parameters)
	// and the Amazon Resource Name (ARN) of a standard. This field is used to query
	// the enablement status of a control in a specified standard. The security
	// control ID or ARN is the same across standards.
	//
	// StandardsControlAssociationIds is a required field
	StandardsControlAssociationIds []*StandardsControlAssociationId `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 BatchGetStandardsControlAssociationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchGetStandardsControlAssociationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *BatchGetStandardsControlAssociationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "BatchGetStandardsControlAssociationsInput"}
	if s.StandardsControlAssociationIds == nil {
		invalidParams.Add(request.NewErrParamRequired("StandardsControlAssociationIds"))
	}
	if s.StandardsControlAssociationIds != nil {
		for i, v := range s.StandardsControlAssociationIds {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "StandardsControlAssociationIds", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetStandardsControlAssociationIds sets the StandardsControlAssociationIds field's value.
func (s *BatchGetStandardsControlAssociationsInput) SetStandardsControlAssociationIds(v []*StandardsControlAssociationId) *BatchGetStandardsControlAssociationsInput {
	s.StandardsControlAssociationIds = v
	return s
}

type BatchGetStandardsControlAssociationsOutput struct {
	_ struct{} `type:"structure"`

	// Provides the enablement status of a security control in a specified standard
	// and other details for the control in relation to the specified standard.
	//
	// StandardsControlAssociationDetails is a required field
	StandardsControlAssociationDetails []*StandardsControlAssociationDetail `type:"list" required:"true"`

	// A security control (identified with SecurityControlId, SecurityControlArn,
	// or a mix of both parameters) whose enablement status in a specified standard
	// cannot be returned.
	UnprocessedAssociations []*UnprocessedStandardsControlAssociation `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 BatchGetStandardsControlAssociationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchGetStandardsControlAssociationsOutput) GoString() string {
	return s.String()
}

// SetStandardsControlAssociationDetails sets the StandardsControlAssociationDetails field's value.
func (s *BatchGetStandardsControlAssociationsOutput) SetStandardsControlAssociationDetails(v []*StandardsControlAssociationDetail) *BatchGetStandardsControlAssociationsOutput {
	s.StandardsControlAssociationDetails = v
	return s
}

// SetUnprocessedAssociations sets the UnprocessedAssociations field's value.
func (s *BatchGetStandardsControlAssociationsOutput) SetUnprocessedAssociations(v []*UnprocessedStandardsControlAssociation) *BatchGetStandardsControlAssociationsOutput {
	s.UnprocessedAssociations = v
	return s
}

type BatchImportFindingsInput struct {
	_ struct{} `type:"structure"`

	// A list of findings to import. To successfully import a finding, it must follow
	// the Amazon Web Services Security Finding Format (https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-findings-format.html).
	// Maximum of 100 findings per request.
	//
	// Findings is a required field
	Findings []*AwsSecurityFinding `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 BatchImportFindingsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchImportFindingsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *BatchImportFindingsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "BatchImportFindingsInput"}
	if s.Findings == nil {
		invalidParams.Add(request.NewErrParamRequired("Findings"))
	}
	if s.Findings != nil && len(s.Findings) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Findings", 1))
	}
	if s.Findings != nil {
		for i, v := range s.Findings {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Findings", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFindings sets the Findings field's value.
func (s *BatchImportFindingsInput) SetFindings(v []*AwsSecurityFinding) *BatchImportFindingsInput {
	s.Findings = v
	return s
}

type BatchImportFindingsOutput struct {
	_ struct{} `type:"structure"`

	// The number of findings that failed to import.
	//
	// FailedCount is a required field
	FailedCount *int64 `type:"integer" required:"true"`

	// The list of findings that failed to import.
	FailedFindings []*ImportFindingsError `type:"list"`

	// The number of findings that were successfully imported.
	//
	// SuccessCount is a required field
	SuccessCount *int64 `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 BatchImportFindingsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchImportFindingsOutput) GoString() string {
	return s.String()
}

// SetFailedCount sets the FailedCount field's value.
func (s *BatchImportFindingsOutput) SetFailedCount(v int64) *BatchImportFindingsOutput {
	s.FailedCount = &v
	return s
}

// SetFailedFindings sets the FailedFindings field's value.
func (s *BatchImportFindingsOutput) SetFailedFindings(v []*ImportFindingsError) *BatchImportFindingsOutput {
	s.FailedFindings = v
	return s
}

// SetSuccessCount sets the SuccessCount field's value.
func (s *BatchImportFindingsOutput) SetSuccessCount(v int64) *BatchImportFindingsOutput {
	s.SuccessCount = &v
	return s
}

type BatchUpdateAutomationRulesInput struct {
	_ struct{} `type:"structure"`

	// An array of ARNs for the rules that are to be updated. Optionally, you can
	// also include RuleStatus and RuleOrder.
	//
	// UpdateAutomationRulesRequestItems is a required field
	UpdateAutomationRulesRequestItems []*UpdateAutomationRulesRequestItem `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 BatchUpdateAutomationRulesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchUpdateAutomationRulesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *BatchUpdateAutomationRulesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "BatchUpdateAutomationRulesInput"}
	if s.UpdateAutomationRulesRequestItems == nil {
		invalidParams.Add(request.NewErrParamRequired("UpdateAutomationRulesRequestItems"))
	}
	if s.UpdateAutomationRulesRequestItems != nil && len(s.UpdateAutomationRulesRequestItems) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UpdateAutomationRulesRequestItems", 1))
	}
	if s.UpdateAutomationRulesRequestItems != nil {
		for i, v := range s.UpdateAutomationRulesRequestItems {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "UpdateAutomationRulesRequestItems", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetUpdateAutomationRulesRequestItems sets the UpdateAutomationRulesRequestItems field's value.
func (s *BatchUpdateAutomationRulesInput) SetUpdateAutomationRulesRequestItems(v []*UpdateAutomationRulesRequestItem) *BatchUpdateAutomationRulesInput {
	s.UpdateAutomationRulesRequestItems = v
	return s
}

type BatchUpdateAutomationRulesOutput struct {
	_ struct{} `type:"structure"`

	// A list of properly processed rule ARNs.
	ProcessedAutomationRules []*string `min:"1" type:"list"`

	// A list of objects containing RuleArn, ErrorCode, and ErrorMessage. This parameter
	// tells you which automation rules the request didn't update and why.
	UnprocessedAutomationRules []*UnprocessedAutomationRule `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 BatchUpdateAutomationRulesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchUpdateAutomationRulesOutput) GoString() string {
	return s.String()
}

// SetProcessedAutomationRules sets the ProcessedAutomationRules field's value.
func (s *BatchUpdateAutomationRulesOutput) SetProcessedAutomationRules(v []*string) *BatchUpdateAutomationRulesOutput {
	s.ProcessedAutomationRules = v
	return s
}

// SetUnprocessedAutomationRules sets the UnprocessedAutomationRules field's value.
func (s *BatchUpdateAutomationRulesOutput) SetUnprocessedAutomationRules(v []*UnprocessedAutomationRule) *BatchUpdateAutomationRulesOutput {
	s.UnprocessedAutomationRules = v
	return s
}

type BatchUpdateFindingsInput struct {
	_ struct{} `type:"structure"`

	// The updated value for the finding confidence. Confidence is defined as the
	// likelihood that a finding accurately identifies the behavior or issue that
	// it was intended to identify.
	//
	// Confidence is scored on a 0-100 basis using a ratio scale, where 0 means
	// zero percent confidence and 100 means 100 percent confidence.
	Confidence *int64 `type:"integer"`

	// The updated value for the level of importance assigned to the resources associated
	// with the findings.
	//
	// A score of 0 means that the underlying resources have no criticality, and
	// a score of 100 is reserved for the most critical resources.
	Criticality *int64 `type:"integer"`

	// The list of findings to update. BatchUpdateFindings can be used to update
	// up to 100 findings at a time.
	//
	// For each finding, the list provides the finding identifier and the ARN of
	// the finding provider.
	//
	// FindingIdentifiers is a required field
	FindingIdentifiers []*AwsSecurityFindingIdentifier `type:"list" required:"true"`

	// The updated note.
	Note *NoteUpdate `type:"structure"`

	// A list of findings that are related to the updated findings.
	RelatedFindings []*RelatedFinding `type:"list"`

	// Used to update the finding severity.
	Severity *SeverityUpdate `type:"structure"`

	// One or more finding types in the format of namespace/category/classifier
	// that classify a finding.
	//
	// Valid namespace values are as follows.
	//
	//    * Software and Configuration Checks
	//
	//    * TTPs
	//
	//    * Effects
	//
	//    * Unusual Behaviors
	//
	//    * Sensitive Data Identifications
	Types []*string `type:"list"`

	// A list of name/value string pairs associated with the finding. These are
	// custom, user-defined fields added to a finding.
	UserDefinedFields map[string]*string `type:"map"`

	// Indicates the veracity of a finding.
	//
	// The available values for VerificationState are as follows.
	//
	//    * UNKNOWN – The default disposition of a security finding
	//
	//    * TRUE_POSITIVE – The security finding is confirmed
	//
	//    * FALSE_POSITIVE – The security finding was determined to be a false
	//    alarm
	//
	//    * BENIGN_POSITIVE – A special case of TRUE_POSITIVE where the finding
	//    doesn't pose any threat, is expected, or both
	VerificationState *string `type:"string" enum:"VerificationState"`

	// Used to update the workflow status of a finding.
	//
	// The workflow status indicates the progress of the investigation into the
	// finding.
	Workflow *WorkflowUpdate `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 BatchUpdateFindingsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchUpdateFindingsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *BatchUpdateFindingsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "BatchUpdateFindingsInput"}
	if s.FindingIdentifiers == nil {
		invalidParams.Add(request.NewErrParamRequired("FindingIdentifiers"))
	}
	if s.FindingIdentifiers != nil {
		for i, v := range s.FindingIdentifiers {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "FindingIdentifiers", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Note != nil {
		if err := s.Note.Validate(); err != nil {
			invalidParams.AddNested("Note", err.(request.ErrInvalidParams))
		}
	}
	if s.RelatedFindings != nil {
		for i, v := range s.RelatedFindings {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RelatedFindings", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConfidence sets the Confidence field's value.
func (s *BatchUpdateFindingsInput) SetConfidence(v int64) *BatchUpdateFindingsInput {
	s.Confidence = &v
	return s
}

// SetCriticality sets the Criticality field's value.
func (s *BatchUpdateFindingsInput) SetCriticality(v int64) *BatchUpdateFindingsInput {
	s.Criticality = &v
	return s
}

// SetFindingIdentifiers sets the FindingIdentifiers field's value.
func (s *BatchUpdateFindingsInput) SetFindingIdentifiers(v []*AwsSecurityFindingIdentifier) *BatchUpdateFindingsInput {
	s.FindingIdentifiers = v
	return s
}

// SetNote sets the Note field's value.
func (s *BatchUpdateFindingsInput) SetNote(v *NoteUpdate) *BatchUpdateFindingsInput {
	s.Note = v
	return s
}

// SetRelatedFindings sets the RelatedFindings field's value.
func (s *BatchUpdateFindingsInput) SetRelatedFindings(v []*RelatedFinding) *BatchUpdateFindingsInput {
	s.RelatedFindings = v
	return s
}

// SetSeverity sets the Severity field's value.
func (s *BatchUpdateFindingsInput) SetSeverity(v *SeverityUpdate) *BatchUpdateFindingsInput {
	s.Severity = v
	return s
}

// SetTypes sets the Types field's value.
func (s *BatchUpdateFindingsInput) SetTypes(v []*string) *BatchUpdateFindingsInput {
	s.Types = v
	return s
}

// SetUserDefinedFields sets the UserDefinedFields field's value.
func (s *BatchUpdateFindingsInput) SetUserDefinedFields(v map[string]*string) *BatchUpdateFindingsInput {
	s.UserDefinedFields = v
	return s
}

// SetVerificationState sets the VerificationState field's value.
func (s *BatchUpdateFindingsInput) SetVerificationState(v string) *BatchUpdateFindingsInput {
	s.VerificationState = &v
	return s
}

// SetWorkflow sets the Workflow field's value.
func (s *BatchUpdateFindingsInput) SetWorkflow(v *WorkflowUpdate) *BatchUpdateFindingsInput {
	s.Workflow = v
	return s
}

type BatchUpdateFindingsOutput struct {
	_ struct{} `type:"structure"`

	// The list of findings that were updated successfully.
	//
	// ProcessedFindings is a required field
	ProcessedFindings []*AwsSecurityFindingIdentifier `type:"list" required:"true"`

	// The list of findings that were not updated.
	//
	// UnprocessedFindings is a required field
	UnprocessedFindings []*BatchUpdateFindingsUnprocessedFinding `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 BatchUpdateFindingsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchUpdateFindingsOutput) GoString() string {
	return s.String()
}

// SetProcessedFindings sets the ProcessedFindings field's value.
func (s *BatchUpdateFindingsOutput) SetProcessedFindings(v []*AwsSecurityFindingIdentifier) *BatchUpdateFindingsOutput {
	s.ProcessedFindings = v
	return s
}

// SetUnprocessedFindings sets the UnprocessedFindings field's value.
func (s *BatchUpdateFindingsOutput) SetUnprocessedFindings(v []*BatchUpdateFindingsUnprocessedFinding) *BatchUpdateFindingsOutput {
	s.UnprocessedFindings = v
	return s
}

// A finding from a BatchUpdateFindings request that Security Hub was unable
// to update.
type BatchUpdateFindingsUnprocessedFinding struct {
	_ struct{} `type:"structure"`

	// The code associated with the error. Possible values are:
	//
	//    * ConcurrentUpdateError - Another request attempted to update the finding
	//    while this request was being processed. This error may also occur if you
	//    call BatchUpdateFindings (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_BatchUpdateFindings.html)
	//    and BatchImportFindings (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_BatchImportFindings.html)
	//    at the same time.
	//
	//    * DuplicatedFindingIdentifier - The request included two or more findings
	//    with the same FindingIdentifier.
	//
	//    * FindingNotFound - The FindingIdentifier included in the request did
	//    not match an existing finding.
	//
	//    * FindingSizeExceeded - The finding size was greater than the permissible
	//    value of 240 KB.
	//
	//    * InternalFailure - An internal service failure occurred when updating
	//    the finding.
	//
	//    * InvalidInput - The finding update contained an invalid value that did
	//    not satisfy the Amazon Web Services Security Finding Format (https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-findings-format.html)
	//    syntax.
	//
	// ErrorCode is a required field
	ErrorCode *string `type:"string" required:"true"`

	// The message associated with the error. Possible values are:
	//
	//    * Concurrent finding updates detected
	//
	//    * Finding Identifier is duplicated
	//
	//    * Finding Not Found
	//
	//    * Finding size exceeded 240 KB
	//
	//    * Internal service failure
	//
	//    * Invalid Input
	//
	// ErrorMessage is a required field
	ErrorMessage *string `type:"string" required:"true"`

	// The identifier of the finding that was not updated.
	//
	// FindingIdentifier is a required field
	FindingIdentifier *AwsSecurityFindingIdentifier `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 BatchUpdateFindingsUnprocessedFinding) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchUpdateFindingsUnprocessedFinding) GoString() string {
	return s.String()
}

// SetErrorCode sets the ErrorCode field's value.
func (s *BatchUpdateFindingsUnprocessedFinding) SetErrorCode(v string) *BatchUpdateFindingsUnprocessedFinding {
	s.ErrorCode = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *BatchUpdateFindingsUnprocessedFinding) SetErrorMessage(v string) *BatchUpdateFindingsUnprocessedFinding {
	s.ErrorMessage = &v
	return s
}

// SetFindingIdentifier sets the FindingIdentifier field's value.
func (s *BatchUpdateFindingsUnprocessedFinding) SetFindingIdentifier(v *AwsSecurityFindingIdentifier) *BatchUpdateFindingsUnprocessedFinding {
	s.FindingIdentifier = v
	return s
}

type BatchUpdateStandardsControlAssociationsInput struct {
	_ struct{} `type:"structure"`

	// Updates the enablement status of a security control in a specified standard.
	//
	// StandardsControlAssociationUpdates is a required field
	StandardsControlAssociationUpdates []*StandardsControlAssociationUpdate `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 BatchUpdateStandardsControlAssociationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchUpdateStandardsControlAssociationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *BatchUpdateStandardsControlAssociationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "BatchUpdateStandardsControlAssociationsInput"}
	if s.StandardsControlAssociationUpdates == nil {
		invalidParams.Add(request.NewErrParamRequired("StandardsControlAssociationUpdates"))
	}
	if s.StandardsControlAssociationUpdates != nil {
		for i, v := range s.StandardsControlAssociationUpdates {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "StandardsControlAssociationUpdates", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetStandardsControlAssociationUpdates sets the StandardsControlAssociationUpdates field's value.
func (s *BatchUpdateStandardsControlAssociationsInput) SetStandardsControlAssociationUpdates(v []*StandardsControlAssociationUpdate) *BatchUpdateStandardsControlAssociationsInput {
	s.StandardsControlAssociationUpdates = v
	return s
}

type BatchUpdateStandardsControlAssociationsOutput struct {
	_ struct{} `type:"structure"`

	// A security control (identified with SecurityControlId, SecurityControlArn,
	// or a mix of both parameters) whose enablement status in a specified standard
	// couldn't be updated.
	UnprocessedAssociationUpdates []*UnprocessedStandardsControlAssociationUpdate `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 BatchUpdateStandardsControlAssociationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchUpdateStandardsControlAssociationsOutput) GoString() string {
	return s.String()
}

// SetUnprocessedAssociationUpdates sets the UnprocessedAssociationUpdates field's value.
func (s *BatchUpdateStandardsControlAssociationsOutput) SetUnprocessedAssociationUpdates(v []*UnprocessedStandardsControlAssociationUpdate) *BatchUpdateStandardsControlAssociationsOutput {
	s.UnprocessedAssociationUpdates = v
	return s
}

// The options for customizing a security control parameter with a boolean.
// For a boolean parameter, the options are true and false.
type BooleanConfigurationOptions struct {
	_ struct{} `type:"structure"`

	// The Security Hub default value for a boolean parameter.
	DefaultValue *bool `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 BooleanConfigurationOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BooleanConfigurationOptions) GoString() string {
	return s.String()
}

// SetDefaultValue sets the DefaultValue field's value.
func (s *BooleanConfigurationOptions) SetDefaultValue(v bool) *BooleanConfigurationOptions {
	s.DefaultValue = &v
	return s
}

// Boolean filter for querying findings.
type BooleanFilter struct {
	_ struct{} `type:"structure"`

	// The value of the boolean.
	Value *bool `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 BooleanFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BooleanFilter) GoString() string {
	return s.String()
}

// SetValue sets the Value field's value.
func (s *BooleanFilter) SetValue(v bool) *BooleanFilter {
	s.Value = &v
	return s
}

// An occurrence of sensitive data detected in a Microsoft Excel workbook, comma-separated
// value (CSV) file, or tab-separated value (TSV) file.
type Cell struct {
	_ struct{} `type:"structure"`

	// For a Microsoft Excel workbook, provides the location of the cell, as an
	// absolute cell reference, that contains the data. For example, Sheet2!C5 for
	// cell C5 on Sheet2.
	CellReference *string `type:"string"`

	// The column number of the column that contains the data. For a Microsoft Excel
	// workbook, the column number corresponds to the alphabetical column identifiers.
	// For example, a value of 1 for Column corresponds to the A column in the workbook.
	Column *int64 `type:"long"`

	// The name of the column that contains the data.
	ColumnName *string `type:"string"`

	// The row number of the row that contains the data.
	Row *int64 `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 Cell) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Cell) GoString() string {
	return s.String()
}

// SetCellReference sets the CellReference field's value.
func (s *Cell) SetCellReference(v string) *Cell {
	s.CellReference = &v
	return s
}

// SetColumn sets the Column field's value.
func (s *Cell) SetColumn(v int64) *Cell {
	s.Column = &v
	return s
}

// SetColumnName sets the ColumnName field's value.
func (s *Cell) SetColumnName(v string) *Cell {
	s.ColumnName = &v
	return s
}

// SetRow sets the Row field's value.
func (s *Cell) SetRow(v int64) *Cell {
	s.Row = &v
	return s
}

// An IPv4 CIDR block association.
type CidrBlockAssociation struct {
	_ struct{} `type:"structure"`

	// The association ID for the IPv4 CIDR block.
	AssociationId *string `type:"string"`

	// The IPv4 CIDR block.
	CidrBlock *string `type:"string"`

	// Information about the state of the IPv4 CIDR block.
	CidrBlockState *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CidrBlockAssociation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CidrBlockAssociation) GoString() string {
	return s.String()
}

// SetAssociationId sets the AssociationId field's value.
func (s *CidrBlockAssociation) SetAssociationId(v string) *CidrBlockAssociation {
	s.AssociationId = &v
	return s
}

// SetCidrBlock sets the CidrBlock field's value.
func (s *CidrBlockAssociation) SetCidrBlock(v string) *CidrBlockAssociation {
	s.CidrBlock = &v
	return s
}

// SetCidrBlockState sets the CidrBlockState field's value.
func (s *CidrBlockAssociation) SetCidrBlockState(v string) *CidrBlockAssociation {
	s.CidrBlockState = &v
	return s
}

// Information about a city.
type City struct {
	_ struct{} `type:"structure"`

	// The name of the city.
	CityName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s City) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s City) GoString() string {
	return s.String()
}

// SetCityName sets the CityName field's value.
func (s *City) SetCityName(v string) *City {
	s.CityName = &v
	return s
}

// Details about the sensitive data that was detected on the resource.
type ClassificationResult struct {
	_ struct{} `type:"structure"`

	// Indicates whether there are additional occurrences of sensitive data that
	// are not included in the finding. This occurs when the number of occurrences
	// exceeds the maximum that can be included.
	AdditionalOccurrences *bool `type:"boolean"`

	// Provides details about sensitive data that was identified based on customer-defined
	// configuration.
	CustomDataIdentifiers *CustomDataIdentifiersResult `type:"structure"`

	// The type of content that the finding applies to.
	MimeType *string `type:"string"`

	// Provides details about sensitive data that was identified based on built-in
	// configuration.
	SensitiveData []*SensitiveDataResult `type:"list"`

	// The total size in bytes of the affected data.
	SizeClassified *int64 `type:"long"`

	// The current status of the sensitive data detection.
	Status *ClassificationStatus `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 ClassificationResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ClassificationResult) GoString() string {
	return s.String()
}

// SetAdditionalOccurrences sets the AdditionalOccurrences field's value.
func (s *ClassificationResult) SetAdditionalOccurrences(v bool) *ClassificationResult {
	s.AdditionalOccurrences = &v
	return s
}

// SetCustomDataIdentifiers sets the CustomDataIdentifiers field's value.
func (s *ClassificationResult) SetCustomDataIdentifiers(v *CustomDataIdentifiersResult) *ClassificationResult {
	s.CustomDataIdentifiers = v
	return s
}

// SetMimeType sets the MimeType field's value.
func (s *ClassificationResult) SetMimeType(v string) *ClassificationResult {
	s.MimeType = &v
	return s
}

// SetSensitiveData sets the SensitiveData field's value.
func (s *ClassificationResult) SetSensitiveData(v []*SensitiveDataResult) *ClassificationResult {
	s.SensitiveData = v
	return s
}

// SetSizeClassified sets the SizeClassified field's value.
func (s *ClassificationResult) SetSizeClassified(v int64) *ClassificationResult {
	s.SizeClassified = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ClassificationResult) SetStatus(v *ClassificationStatus) *ClassificationResult {
	s.Status = v
	return s
}

// Provides details about the current status of the sensitive data detection.
type ClassificationStatus struct {
	_ struct{} `type:"structure"`

	// The code that represents the status of the sensitive data detection.
	Code *string `type:"string"`

	// A longer description of the current status of the sensitive data detection.
	Reason *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ClassificationStatus) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ClassificationStatus) GoString() string {
	return s.String()
}

// SetCode sets the Code field's value.
func (s *ClassificationStatus) SetCode(v string) *ClassificationStatus {
	s.Code = &v
	return s
}

// SetReason sets the Reason field's value.
func (s *ClassificationStatus) SetReason(v string) *ClassificationStatus {
	s.Reason = &v
	return s
}

// The Amazon Resource Name (ARN) and other details of the Amazon CloudWatch
// Logs log group that Amazon Route 53 is publishing logs to.
type CloudWatchLogsLogGroupArnConfigDetails struct {
	_ struct{} `type:"structure"`

	// The ARN of the CloudWatch Logs log group that Route 53 is publishing logs
	// to.
	CloudWatchLogsLogGroupArn *string `type:"string"`

	// The ID of the hosted zone that CloudWatch Logs is logging queries for.
	HostedZoneId *string `type:"string"`

	// The ID for a DNS query logging configuration.
	Id *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CloudWatchLogsLogGroupArnConfigDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CloudWatchLogsLogGroupArnConfigDetails) GoString() string {
	return s.String()
}

// SetCloudWatchLogsLogGroupArn sets the CloudWatchLogsLogGroupArn field's value.
func (s *CloudWatchLogsLogGroupArnConfigDetails) SetCloudWatchLogsLogGroupArn(v string) *CloudWatchLogsLogGroupArnConfigDetails {
	s.CloudWatchLogsLogGroupArn = &v
	return s
}

// SetHostedZoneId sets the HostedZoneId field's value.
func (s *CloudWatchLogsLogGroupArnConfigDetails) SetHostedZoneId(v string) *CloudWatchLogsLogGroupArnConfigDetails {
	s.HostedZoneId = &v
	return s
}

// SetId sets the Id field's value.
func (s *CloudWatchLogsLogGroupArnConfigDetails) SetId(v string) *CloudWatchLogsLogGroupArnConfigDetails {
	s.Id = &v
	return s
}

// Provides details about where a code vulnerability is located in your Lambda
// function.
type CodeVulnerabilitiesFilePath struct {
	_ struct{} `type:"structure"`

	// The line number of the last line of code in which the vulnerability is located.
	EndLine *int64 `type:"integer"`

	// The name of the file in which the code vulnerability is located.
	FileName *string `type:"string"`

	// The file path to the code in which the vulnerability is located.
	FilePath *string `type:"string"`

	// The line number of the first line of code in which the vulnerability is located.
	StartLine *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CodeVulnerabilitiesFilePath) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CodeVulnerabilitiesFilePath) GoString() string {
	return s.String()
}

// SetEndLine sets the EndLine field's value.
func (s *CodeVulnerabilitiesFilePath) SetEndLine(v int64) *CodeVulnerabilitiesFilePath {
	s.EndLine = &v
	return s
}

// SetFileName sets the FileName field's value.
func (s *CodeVulnerabilitiesFilePath) SetFileName(v string) *CodeVulnerabilitiesFilePath {
	s.FileName = &v
	return s
}

// SetFilePath sets the FilePath field's value.
func (s *CodeVulnerabilitiesFilePath) SetFilePath(v string) *CodeVulnerabilitiesFilePath {
	s.FilePath = &v
	return s
}

// SetStartLine sets the StartLine field's value.
func (s *CodeVulnerabilitiesFilePath) SetStartLine(v int64) *CodeVulnerabilitiesFilePath {
	s.StartLine = &v
	return s
}

// Contains finding details that are specific to control-based findings. Only
// returned for findings generated from controls.
type Compliance struct {
	_ struct{} `type:"structure"`

	// The enabled security standards in which a security control is currently enabled.
	AssociatedStandards []*AssociatedStandard `type:"list"`

	// For a control, the industry or regulatory framework requirements that are
	// related to the control. The check for that control is aligned with these
	// requirements.
	//
	// Array Members: Maximum number of 32 items.
	RelatedRequirements []*string `type:"list"`

	// The unique identifier of a control across standards. Values for this field
	// typically consist of an Amazon Web Service and a number, such as APIGateway.5.
	SecurityControlId *string `type:"string"`

	// An object that includes security control parameter names and values.
	SecurityControlParameters []*SecurityControlParameter `type:"list"`

	// The result of a standards check.
	//
	// The valid values for Status are as follows.
	//
	//    * PASSED - Standards check passed for all evaluated resources. WARNING
	//    - Some information is missing or this check is not supported for your
	//    configuration. FAILED - Standards check failed for at least one evaluated
	//    resource. NOT_AVAILABLE - Check could not be performed due to a service
	//    outage, API error, or because the result of the Config evaluation was
	//    NOT_APPLICABLE. If the Config evaluation result was NOT_APPLICABLE for
	//    a Security Hub control, Security Hub automatically archives the finding
	//    after 3 days.
	Status *string `type:"string" enum:"ComplianceStatus"`

	// For findings generated from controls, a list of reasons behind the value
	// of Status. For the list of status reason codes and their meanings, see Standards-related
	// information in the ASFF (https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-standards-results.html#securityhub-standards-results-asff)
	// in the Security Hub User Guide.
	StatusReasons []*StatusReason `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 Compliance) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Compliance) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Compliance) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Compliance"}
	if s.StatusReasons != nil {
		for i, v := range s.StatusReasons {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "StatusReasons", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssociatedStandards sets the AssociatedStandards field's value.
func (s *Compliance) SetAssociatedStandards(v []*AssociatedStandard) *Compliance {
	s.AssociatedStandards = v
	return s
}

// SetRelatedRequirements sets the RelatedRequirements field's value.
func (s *Compliance) SetRelatedRequirements(v []*string) *Compliance {
	s.RelatedRequirements = v
	return s
}

// SetSecurityControlId sets the SecurityControlId field's value.
func (s *Compliance) SetSecurityControlId(v string) *Compliance {
	s.SecurityControlId = &v
	return s
}

// SetSecurityControlParameters sets the SecurityControlParameters field's value.
func (s *Compliance) SetSecurityControlParameters(v []*SecurityControlParameter) *Compliance {
	s.SecurityControlParameters = v
	return s
}

// SetStatus sets the Status field's value.
func (s *Compliance) SetStatus(v string) *Compliance {
	s.Status = &v
	return s
}

// SetStatusReasons sets the StatusReasons field's value.
func (s *Compliance) SetStatusReasons(v []*StatusReason) *Compliance {
	s.StatusReasons = v
	return s
}

// The options for customizing a security control parameter.
type ConfigurationOptions struct {
	_ struct{} `type:"structure"`

	// The options for customizing a security control parameter that is a boolean.
	// For a boolean parameter, the options are true and false.
	Boolean *BooleanConfigurationOptions `type:"structure"`

	// The options for customizing a security control parameter that is a double.
	Double *DoubleConfigurationOptions `type:"structure"`

	// The options for customizing a security control parameter that is an enum.
	Enum *EnumConfigurationOptions `type:"structure"`

	// The options for customizing a security control parameter that is a list of
	// enums.
	EnumList *EnumListConfigurationOptions `type:"structure"`

	// The options for customizing a security control parameter that is an integer.
	Integer *IntegerConfigurationOptions `type:"structure"`

	// The options for customizing a security control parameter that is a list of
	// integers.
	IntegerList *IntegerListConfigurationOptions `type:"structure"`

	// The options for customizing a security control parameter that is a list of
	// strings.
	StringList *StringListConfigurationOptions `type:"structure"`

	// The options for customizing a security control parameter that is a string
	// data type.
	String_ *StringConfigurationOptions `locationName:"String" 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 ConfigurationOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConfigurationOptions) GoString() string {
	return s.String()
}

// SetBoolean sets the Boolean field's value.
func (s *ConfigurationOptions) SetBoolean(v *BooleanConfigurationOptions) *ConfigurationOptions {
	s.Boolean = v
	return s
}

// SetDouble sets the Double field's value.
func (s *ConfigurationOptions) SetDouble(v *DoubleConfigurationOptions) *ConfigurationOptions {
	s.Double = v
	return s
}

// SetEnum sets the Enum field's value.
func (s *ConfigurationOptions) SetEnum(v *EnumConfigurationOptions) *ConfigurationOptions {
	s.Enum = v
	return s
}

// SetEnumList sets the EnumList field's value.
func (s *ConfigurationOptions) SetEnumList(v *EnumListConfigurationOptions) *ConfigurationOptions {
	s.EnumList = v
	return s
}

// SetInteger sets the Integer field's value.
func (s *ConfigurationOptions) SetInteger(v *IntegerConfigurationOptions) *ConfigurationOptions {
	s.Integer = v
	return s
}

// SetIntegerList sets the IntegerList field's value.
func (s *ConfigurationOptions) SetIntegerList(v *IntegerListConfigurationOptions) *ConfigurationOptions {
	s.IntegerList = v
	return s
}

// SetStringList sets the StringList field's value.
func (s *ConfigurationOptions) SetStringList(v *StringListConfigurationOptions) *ConfigurationOptions {
	s.StringList = v
	return s
}

// SetString_ sets the String_ field's value.
func (s *ConfigurationOptions) SetString_(v *StringConfigurationOptions) *ConfigurationOptions {
	s.String_ = v
	return s
}

// Provides details about the association between an Security Hub configuration
// and a target account, organizational unit, or the root. An association can
// exist between a target and a configuration policy, or between a target and
// self-managed behavior.
type ConfigurationPolicyAssociation struct {
	_ struct{} `type:"structure"`

	// The target account, organizational unit, or the root.
	Target *Target `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 ConfigurationPolicyAssociation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConfigurationPolicyAssociation) GoString() string {
	return s.String()
}

// SetTarget sets the Target field's value.
func (s *ConfigurationPolicyAssociation) SetTarget(v *Target) *ConfigurationPolicyAssociation {
	s.Target = v
	return s
}

// An object that contains the details of a configuration policy association
// that’s returned in a ListConfigurationPolicyAssociations request.
type ConfigurationPolicyAssociationSummary struct {
	_ struct{} `type:"structure"`

	// The current status of the association between the specified target and the
	// configuration.
	AssociationStatus *string `type:"string" enum:"ConfigurationPolicyAssociationStatus"`

	// The explanation for a FAILED value for AssociationStatus.
	AssociationStatusMessage *string `type:"string"`

	// Indicates whether the association between the specified target and the configuration
	// was directly applied by the Security Hub delegated administrator or inherited
	// from a parent.
	AssociationType *string `type:"string" enum:"AssociationType"`

	// The universally unique identifier (UUID) of the configuration policy.
	ConfigurationPolicyId *string `type:"string"`

	// The identifier of the target account, organizational unit, or the root.
	TargetId *string `type:"string"`

	// Specifies whether the target is an Amazon Web Services account, organizational
	// unit, or the root.
	TargetType *string `type:"string" enum:"TargetType"`

	// The date and time, in UTC and ISO 8601 format, that the configuration policy
	// association was last updated.
	UpdatedAt *time.Time `type:"timestamp" timestampFormat:"iso8601"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConfigurationPolicyAssociationSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConfigurationPolicyAssociationSummary) GoString() string {
	return s.String()
}

// SetAssociationStatus sets the AssociationStatus field's value.
func (s *ConfigurationPolicyAssociationSummary) SetAssociationStatus(v string) *ConfigurationPolicyAssociationSummary {
	s.AssociationStatus = &v
	return s
}

// SetAssociationStatusMessage sets the AssociationStatusMessage field's value.
func (s *ConfigurationPolicyAssociationSummary) SetAssociationStatusMessage(v string) *ConfigurationPolicyAssociationSummary {
	s.AssociationStatusMessage = &v
	return s
}

// SetAssociationType sets the AssociationType field's value.
func (s *ConfigurationPolicyAssociationSummary) SetAssociationType(v string) *ConfigurationPolicyAssociationSummary {
	s.AssociationType = &v
	return s
}

// SetConfigurationPolicyId sets the ConfigurationPolicyId field's value.
func (s *ConfigurationPolicyAssociationSummary) SetConfigurationPolicyId(v string) *ConfigurationPolicyAssociationSummary {
	s.ConfigurationPolicyId = &v
	return s
}

// SetTargetId sets the TargetId field's value.
func (s *ConfigurationPolicyAssociationSummary) SetTargetId(v string) *ConfigurationPolicyAssociationSummary {
	s.TargetId = &v
	return s
}

// SetTargetType sets the TargetType field's value.
func (s *ConfigurationPolicyAssociationSummary) SetTargetType(v string) *ConfigurationPolicyAssociationSummary {
	s.TargetType = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *ConfigurationPolicyAssociationSummary) SetUpdatedAt(v time.Time) *ConfigurationPolicyAssociationSummary {
	s.UpdatedAt = &v
	return s
}

// An object that contains the details of an Security Hub configuration policy
// that’s returned in a ListConfigurationPolicies request.
type ConfigurationPolicySummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the configuration policy.
	Arn *string `type:"string"`

	// The description of the configuration policy.
	Description *string `type:"string"`

	// The universally unique identifier (UUID) of the configuration policy.
	Id *string `type:"string"`

	// The name of the configuration policy. Alphanumeric characters and the following
	// ASCII characters are permitted: -, ., !, *, /.
	Name *string `type:"string"`

	// Indicates whether the service that the configuration policy applies to is
	// enabled in the policy.
	ServiceEnabled *bool `type:"boolean"`

	// The date and time, in UTC and ISO 8601 format, that the configuration policy
	// was last updated.
	UpdatedAt *time.Time `type:"timestamp" timestampFormat:"iso8601"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConfigurationPolicySummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConfigurationPolicySummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *ConfigurationPolicySummary) SetArn(v string) *ConfigurationPolicySummary {
	s.Arn = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *ConfigurationPolicySummary) SetDescription(v string) *ConfigurationPolicySummary {
	s.Description = &v
	return s
}

// SetId sets the Id field's value.
func (s *ConfigurationPolicySummary) SetId(v string) *ConfigurationPolicySummary {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *ConfigurationPolicySummary) SetName(v string) *ConfigurationPolicySummary {
	s.Name = &v
	return s
}

// SetServiceEnabled sets the ServiceEnabled field's value.
func (s *ConfigurationPolicySummary) SetServiceEnabled(v bool) *ConfigurationPolicySummary {
	s.ServiceEnabled = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *ConfigurationPolicySummary) SetUpdatedAt(v time.Time) *ConfigurationPolicySummary {
	s.UpdatedAt = &v
	return s
}

// Container details related to a finding.
type ContainerDetails struct {
	_ struct{} `type:"structure"`

	// The runtime of the container.
	ContainerRuntime *string `type:"string"`

	// The identifier of the container image related to a finding.
	ImageId *string `type:"string"`

	// The name of the container image related to a finding.
	ImageName *string `type:"string"`

	// Indicates when the container started.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	LaunchedAt *string `type:"string"`

	// The name of the container related to a finding.
	Name *string `type:"string"`

	// When this parameter is true, the container is given elevated privileges on
	// the host container instance (similar to the root user).
	Privileged *bool `type:"boolean"`

	// Provides information about the mounting of a volume in a container.
	VolumeMounts []*VolumeMount `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 ContainerDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContainerDetails) GoString() string {
	return s.String()
}

// SetContainerRuntime sets the ContainerRuntime field's value.
func (s *ContainerDetails) SetContainerRuntime(v string) *ContainerDetails {
	s.ContainerRuntime = &v
	return s
}

// SetImageId sets the ImageId field's value.
func (s *ContainerDetails) SetImageId(v string) *ContainerDetails {
	s.ImageId = &v
	return s
}

// SetImageName sets the ImageName field's value.
func (s *ContainerDetails) SetImageName(v string) *ContainerDetails {
	s.ImageName = &v
	return s
}

// SetLaunchedAt sets the LaunchedAt field's value.
func (s *ContainerDetails) SetLaunchedAt(v string) *ContainerDetails {
	s.LaunchedAt = &v
	return s
}

// SetName sets the Name field's value.
func (s *ContainerDetails) SetName(v string) *ContainerDetails {
	s.Name = &v
	return s
}

// SetPrivileged sets the Privileged field's value.
func (s *ContainerDetails) SetPrivileged(v bool) *ContainerDetails {
	s.Privileged = &v
	return s
}

// SetVolumeMounts sets the VolumeMounts field's value.
func (s *ContainerDetails) SetVolumeMounts(v []*VolumeMount) *ContainerDetails {
	s.VolumeMounts = v
	return s
}

// Information about a country.
type Country struct {
	_ struct{} `type:"structure"`

	// The 2-letter ISO 3166 country code for the country.
	CountryCode *string `type:"string"`

	// The name of the country.
	CountryName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Country) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Country) GoString() string {
	return s.String()
}

// SetCountryCode sets the CountryCode field's value.
func (s *Country) SetCountryCode(v string) *Country {
	s.CountryCode = &v
	return s
}

// SetCountryName sets the CountryName field's value.
func (s *Country) SetCountryName(v string) *Country {
	s.CountryName = &v
	return s
}

type CreateActionTargetInput struct {
	_ struct{} `type:"structure"`

	// The description for the custom action target.
	//
	// Description is a required field
	Description *string `type:"string" required:"true"`

	// The ID for the custom action target. Can contain up to 20 alphanumeric characters.
	//
	// Id is a required field
	Id *string `type:"string" required:"true"`

	// The name of the custom action target. Can contain up to 20 characters.
	//
	// Name is a required field
	Name *string `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 CreateActionTargetInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateActionTargetInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateActionTargetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateActionTargetInput"}
	if s.Description == nil {
		invalidParams.Add(request.NewErrParamRequired("Description"))
	}
	if s.Id == nil {
		invalidParams.Add(request.NewErrParamRequired("Id"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *CreateActionTargetInput) SetDescription(v string) *CreateActionTargetInput {
	s.Description = &v
	return s
}

// SetId sets the Id field's value.
func (s *CreateActionTargetInput) SetId(v string) *CreateActionTargetInput {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateActionTargetInput) SetName(v string) *CreateActionTargetInput {
	s.Name = &v
	return s
}

type CreateActionTargetOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the custom action target.
	//
	// ActionTargetArn is a required field
	ActionTargetArn *string `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 CreateActionTargetOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateActionTargetOutput) GoString() string {
	return s.String()
}

// SetActionTargetArn sets the ActionTargetArn field's value.
func (s *CreateActionTargetOutput) SetActionTargetArn(v string) *CreateActionTargetOutput {
	s.ActionTargetArn = &v
	return s
}

type CreateAutomationRuleInput struct {
	_ struct{} `type:"structure"`

	// One or more actions to update finding fields if a finding matches the conditions
	// specified in Criteria.
	//
	// Actions is a required field
	Actions []*AutomationRulesAction `min:"1" type:"list" required:"true"`

	// A set of ASFF finding field attributes and corresponding expected values
	// that Security Hub uses to filter findings. If a rule is enabled and a finding
	// matches the conditions specified in this parameter, Security Hub applies
	// the rule action to the finding.
	//
	// Criteria is a required field
	Criteria *AutomationRulesFindingFilters `type:"structure" required:"true"`

	// A description of the rule.
	//
	// Description is a required field
	Description *string `type:"string" required:"true"`

	// Specifies whether a rule is the last to be applied with respect to a finding
	// that matches the rule criteria. This is useful when a finding matches the
	// criteria for multiple rules, and each rule has different actions. If a rule
	// is terminal, Security Hub applies the rule action to a finding that matches
	// the rule criteria and doesn't evaluate other rules for the finding. By default,
	// a rule isn't terminal.
	IsTerminal *bool `type:"boolean"`

	// The name of the rule.
	//
	// RuleName is a required field
	RuleName *string `type:"string" required:"true"`

	// An integer ranging from 1 to 1000 that represents the order in which the
	// rule action is applied to findings. Security Hub applies rules with lower
	// values for this parameter first.
	//
	// RuleOrder is a required field
	RuleOrder *int64 `min:"1" type:"integer" required:"true"`

	// Whether the rule is active after it is created. If this parameter is equal
	// to ENABLED, Security Hub starts applying the rule to findings and finding
	// updates after the rule is created. To change the value of this parameter
	// after creating a rule, use BatchUpdateAutomationRules (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_BatchUpdateAutomationRules.html).
	RuleStatus *string `type:"string" enum:"RuleStatus"`

	// User-defined tags associated with an automation rule.
	Tags map[string]*string `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 CreateAutomationRuleInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateAutomationRuleInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateAutomationRuleInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateAutomationRuleInput"}
	if s.Actions == nil {
		invalidParams.Add(request.NewErrParamRequired("Actions"))
	}
	if s.Actions != nil && len(s.Actions) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Actions", 1))
	}
	if s.Criteria == nil {
		invalidParams.Add(request.NewErrParamRequired("Criteria"))
	}
	if s.Description == nil {
		invalidParams.Add(request.NewErrParamRequired("Description"))
	}
	if s.RuleName == nil {
		invalidParams.Add(request.NewErrParamRequired("RuleName"))
	}
	if s.RuleOrder == nil {
		invalidParams.Add(request.NewErrParamRequired("RuleOrder"))
	}
	if s.RuleOrder != nil && *s.RuleOrder < 1 {
		invalidParams.Add(request.NewErrParamMinValue("RuleOrder", 1))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}
	if s.Actions != nil {
		for i, v := range s.Actions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *CreateAutomationRuleInput) SetActions(v []*AutomationRulesAction) *CreateAutomationRuleInput {
	s.Actions = v
	return s
}

// SetCriteria sets the Criteria field's value.
func (s *CreateAutomationRuleInput) SetCriteria(v *AutomationRulesFindingFilters) *CreateAutomationRuleInput {
	s.Criteria = v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateAutomationRuleInput) SetDescription(v string) *CreateAutomationRuleInput {
	s.Description = &v
	return s
}

// SetIsTerminal sets the IsTerminal field's value.
func (s *CreateAutomationRuleInput) SetIsTerminal(v bool) *CreateAutomationRuleInput {
	s.IsTerminal = &v
	return s
}

// SetRuleName sets the RuleName field's value.
func (s *CreateAutomationRuleInput) SetRuleName(v string) *CreateAutomationRuleInput {
	s.RuleName = &v
	return s
}

// SetRuleOrder sets the RuleOrder field's value.
func (s *CreateAutomationRuleInput) SetRuleOrder(v int64) *CreateAutomationRuleInput {
	s.RuleOrder = &v
	return s
}

// SetRuleStatus sets the RuleStatus field's value.
func (s *CreateAutomationRuleInput) SetRuleStatus(v string) *CreateAutomationRuleInput {
	s.RuleStatus = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateAutomationRuleInput) SetTags(v map[string]*string) *CreateAutomationRuleInput {
	s.Tags = v
	return s
}

type CreateAutomationRuleOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the automation rule that you created.
	RuleArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateAutomationRuleOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateAutomationRuleOutput) GoString() string {
	return s.String()
}

// SetRuleArn sets the RuleArn field's value.
func (s *CreateAutomationRuleOutput) SetRuleArn(v string) *CreateAutomationRuleOutput {
	s.RuleArn = &v
	return s
}

type CreateConfigurationPolicyInput struct {
	_ struct{} `type:"structure"`

	// An object that defines how Security Hub is configured. It includes whether
	// Security Hub is enabled or disabled, a list of enabled security standards,
	// a list of enabled or disabled security controls, and a list of custom parameter
	// values for specified controls. If you provide a list of security controls
	// that are enabled in the configuration policy, Security Hub disables all other
	// controls (including newly released controls). If you provide a list of security
	// controls that are disabled in the configuration policy, Security Hub enables
	// all other controls (including newly released controls).
	//
	// ConfigurationPolicy is a required field
	ConfigurationPolicy *Policy `type:"structure" required:"true"`

	// The description of the configuration policy.
	Description *string `type:"string"`

	// The name of the configuration policy. Alphanumeric characters and the following
	// ASCII characters are permitted: -, ., !, *, /.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// User-defined tags associated with a configuration policy. For more information,
	// see Tagging Security Hub resources (https://docs.aws.amazon.com/securityhub/latest/userguide/tagging-resources.html)
	// in the Security Hub user guide.
	Tags map[string]*string `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 CreateConfigurationPolicyInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateConfigurationPolicyInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateConfigurationPolicyInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateConfigurationPolicyInput"}
	if s.ConfigurationPolicy == nil {
		invalidParams.Add(request.NewErrParamRequired("ConfigurationPolicy"))
	}
	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.ConfigurationPolicy != nil {
		if err := s.ConfigurationPolicy.Validate(); err != nil {
			invalidParams.AddNested("ConfigurationPolicy", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConfigurationPolicy sets the ConfigurationPolicy field's value.
func (s *CreateConfigurationPolicyInput) SetConfigurationPolicy(v *Policy) *CreateConfigurationPolicyInput {
	s.ConfigurationPolicy = v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateConfigurationPolicyInput) SetDescription(v string) *CreateConfigurationPolicyInput {
	s.Description = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateConfigurationPolicyInput) SetName(v string) *CreateConfigurationPolicyInput {
	s.Name = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateConfigurationPolicyInput) SetTags(v map[string]*string) *CreateConfigurationPolicyInput {
	s.Tags = v
	return s
}

type CreateConfigurationPolicyOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the configuration policy.
	Arn *string `type:"string"`

	// An object that defines how Security Hub is configured. It includes whether
	// Security Hub is enabled or disabled, a list of enabled security standards,
	// a list of enabled or disabled security controls, and a list of custom parameter
	// values for specified controls. If the request included a list of security
	// controls that are enabled in the configuration policy, Security Hub disables
	// all other controls (including newly released controls). If the request included
	// a list of security controls that are disabled in the configuration policy,
	// Security Hub enables all other controls (including newly released controls).
	ConfigurationPolicy *Policy `type:"structure"`

	// The date and time, in UTC and ISO 8601 format, that the configuration policy
	// was created.
	CreatedAt *time.Time `type:"timestamp" timestampFormat:"iso8601"`

	// The description of the configuration policy.
	Description *string `type:"string"`

	// The universally unique identifier (UUID) of the configuration policy.
	Id *string `type:"string"`

	// The name of the configuration policy.
	Name *string `type:"string"`

	// The date and time, in UTC and ISO 8601 format, that the configuration policy
	// was last updated.
	UpdatedAt *time.Time `type:"timestamp" timestampFormat:"iso8601"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateConfigurationPolicyOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateConfigurationPolicyOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *CreateConfigurationPolicyOutput) SetArn(v string) *CreateConfigurationPolicyOutput {
	s.Arn = &v
	return s
}

// SetConfigurationPolicy sets the ConfigurationPolicy field's value.
func (s *CreateConfigurationPolicyOutput) SetConfigurationPolicy(v *Policy) *CreateConfigurationPolicyOutput {
	s.ConfigurationPolicy = v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *CreateConfigurationPolicyOutput) SetCreatedAt(v time.Time) *CreateConfigurationPolicyOutput {
	s.CreatedAt = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateConfigurationPolicyOutput) SetDescription(v string) *CreateConfigurationPolicyOutput {
	s.Description = &v
	return s
}

// SetId sets the Id field's value.
func (s *CreateConfigurationPolicyOutput) SetId(v string) *CreateConfigurationPolicyOutput {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateConfigurationPolicyOutput) SetName(v string) *CreateConfigurationPolicyOutput {
	s.Name = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *CreateConfigurationPolicyOutput) SetUpdatedAt(v time.Time) *CreateConfigurationPolicyOutput {
	s.UpdatedAt = &v
	return s
}

type CreateFindingAggregatorInput struct {
	_ struct{} `type:"structure"`

	// Indicates whether to aggregate findings from all of the available Regions
	// in the current partition. Also determines whether to automatically aggregate
	// findings from new Regions as Security Hub supports them and you opt into
	// them.
	//
	// The selected option also determines how to use the Regions provided in the
	// Regions list.
	//
	// The options are as follows:
	//
	//    * ALL_REGIONS - Indicates to aggregate findings from all of the Regions
	//    where Security Hub is enabled. When you choose this option, Security Hub
	//    also automatically aggregates findings from new Regions as Security Hub
	//    supports them and you opt into them.
	//
	//    * ALL_REGIONS_EXCEPT_SPECIFIED - Indicates to aggregate findings from
	//    all of the Regions where Security Hub is enabled, except for the Regions
	//    listed in the Regions parameter. When you choose this option, Security
	//    Hub also automatically aggregates findings from new Regions as Security
	//    Hub supports them and you opt into them.
	//
	//    * SPECIFIED_REGIONS - Indicates to aggregate findings only from the Regions
	//    listed in the Regions parameter. Security Hub does not automatically aggregate
	//    findings from new Regions.
	//
	// RegionLinkingMode is a required field
	RegionLinkingMode *string `type:"string" required:"true"`

	// If RegionLinkingMode is ALL_REGIONS_EXCEPT_SPECIFIED, then this is a space-separated
	// list of Regions that do not aggregate findings to the aggregation Region.
	//
	// If RegionLinkingMode is SPECIFIED_REGIONS, then this is a space-separated
	// list of Regions that do aggregate findings to the aggregation Region.
	Regions []*string `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 CreateFindingAggregatorInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateFindingAggregatorInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateFindingAggregatorInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateFindingAggregatorInput"}
	if s.RegionLinkingMode == nil {
		invalidParams.Add(request.NewErrParamRequired("RegionLinkingMode"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRegionLinkingMode sets the RegionLinkingMode field's value.
func (s *CreateFindingAggregatorInput) SetRegionLinkingMode(v string) *CreateFindingAggregatorInput {
	s.RegionLinkingMode = &v
	return s
}

// SetRegions sets the Regions field's value.
func (s *CreateFindingAggregatorInput) SetRegions(v []*string) *CreateFindingAggregatorInput {
	s.Regions = v
	return s
}

type CreateFindingAggregatorOutput struct {
	_ struct{} `type:"structure"`

	// The aggregation Region.
	FindingAggregationRegion *string `type:"string"`

	// The ARN of the finding aggregator. You use the finding aggregator ARN to
	// retrieve details for, update, and stop finding aggregation.
	FindingAggregatorArn *string `type:"string"`

	// Indicates whether to link all Regions, all Regions except for a list of excluded
	// Regions, or a list of included Regions.
	RegionLinkingMode *string `type:"string"`

	// The list of excluded Regions or included Regions.
	Regions []*string `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 CreateFindingAggregatorOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateFindingAggregatorOutput) GoString() string {
	return s.String()
}

// SetFindingAggregationRegion sets the FindingAggregationRegion field's value.
func (s *CreateFindingAggregatorOutput) SetFindingAggregationRegion(v string) *CreateFindingAggregatorOutput {
	s.FindingAggregationRegion = &v
	return s
}

// SetFindingAggregatorArn sets the FindingAggregatorArn field's value.
func (s *CreateFindingAggregatorOutput) SetFindingAggregatorArn(v string) *CreateFindingAggregatorOutput {
	s.FindingAggregatorArn = &v
	return s
}

// SetRegionLinkingMode sets the RegionLinkingMode field's value.
func (s *CreateFindingAggregatorOutput) SetRegionLinkingMode(v string) *CreateFindingAggregatorOutput {
	s.RegionLinkingMode = &v
	return s
}

// SetRegions sets the Regions field's value.
func (s *CreateFindingAggregatorOutput) SetRegions(v []*string) *CreateFindingAggregatorOutput {
	s.Regions = v
	return s
}

type CreateInsightInput struct {
	_ struct{} `type:"structure"`

	// One or more attributes used to filter the findings included in the insight.
	// The insight only includes findings that match the criteria defined in the
	// filters.
	//
	// Filters is a required field
	Filters *AwsSecurityFindingFilters `type:"structure" required:"true"`

	// The attribute used to group the findings for the insight. The grouping attribute
	// identifies the type of item that the insight applies to. For example, if
	// an insight is grouped by resource identifier, then the insight produces a
	// list of resource identifiers.
	//
	// GroupByAttribute is a required field
	GroupByAttribute *string `type:"string" required:"true"`

	// The name of the custom insight to create.
	//
	// Name is a required field
	Name *string `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 CreateInsightInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateInsightInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateInsightInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateInsightInput"}
	if s.Filters == nil {
		invalidParams.Add(request.NewErrParamRequired("Filters"))
	}
	if s.GroupByAttribute == nil {
		invalidParams.Add(request.NewErrParamRequired("GroupByAttribute"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *CreateInsightInput) SetFilters(v *AwsSecurityFindingFilters) *CreateInsightInput {
	s.Filters = v
	return s
}

// SetGroupByAttribute sets the GroupByAttribute field's value.
func (s *CreateInsightInput) SetGroupByAttribute(v string) *CreateInsightInput {
	s.GroupByAttribute = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateInsightInput) SetName(v string) *CreateInsightInput {
	s.Name = &v
	return s
}

type CreateInsightOutput struct {
	_ struct{} `type:"structure"`

	// The ARN of the insight created.
	//
	// InsightArn is a required field
	InsightArn *string `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 CreateInsightOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateInsightOutput) GoString() string {
	return s.String()
}

// SetInsightArn sets the InsightArn field's value.
func (s *CreateInsightOutput) SetInsightArn(v string) *CreateInsightOutput {
	s.InsightArn = &v
	return s
}

type CreateMembersInput struct {
	_ struct{} `type:"structure"`

	// The list of accounts to associate with the Security Hub administrator account.
	// For each account, the list includes the account ID and optionally the email
	// address.
	//
	// AccountDetails is a required field
	AccountDetails []*AccountDetails `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 CreateMembersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateMembersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateMembersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateMembersInput"}
	if s.AccountDetails == nil {
		invalidParams.Add(request.NewErrParamRequired("AccountDetails"))
	}
	if s.AccountDetails != nil && len(s.AccountDetails) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AccountDetails", 1))
	}
	if s.AccountDetails != nil {
		for i, v := range s.AccountDetails {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AccountDetails", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccountDetails sets the AccountDetails field's value.
func (s *CreateMembersInput) SetAccountDetails(v []*AccountDetails) *CreateMembersInput {
	s.AccountDetails = v
	return s
}

type CreateMembersOutput struct {
	_ struct{} `type:"structure"`

	// The list of Amazon Web Services accounts that were not processed. For each
	// account, the list includes the account ID and the email address.
	UnprocessedAccounts []*Result `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 CreateMembersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateMembersOutput) GoString() string {
	return s.String()
}

// SetUnprocessedAccounts sets the UnprocessedAccounts field's value.
func (s *CreateMembersOutput) SetUnprocessedAccounts(v []*Result) *CreateMembersOutput {
	s.UnprocessedAccounts = v
	return s
}

// The list of detected instances of sensitive data.
type CustomDataIdentifiersDetections struct {
	_ struct{} `type:"structure"`

	// The ARN of the custom identifier that was used to detect the sensitive data.
	Arn *string `type:"string"`

	// The total number of occurrences of sensitive data that were detected.
	Count *int64 `type:"long"`

	// he name of the custom identifier that detected the sensitive data.
	Name *string `type:"string"`

	// Details about the sensitive data that was detected.
	Occurrences *Occurrences `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 CustomDataIdentifiersDetections) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CustomDataIdentifiersDetections) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *CustomDataIdentifiersDetections) SetArn(v string) *CustomDataIdentifiersDetections {
	s.Arn = &v
	return s
}

// SetCount sets the Count field's value.
func (s *CustomDataIdentifiersDetections) SetCount(v int64) *CustomDataIdentifiersDetections {
	s.Count = &v
	return s
}

// SetName sets the Name field's value.
func (s *CustomDataIdentifiersDetections) SetName(v string) *CustomDataIdentifiersDetections {
	s.Name = &v
	return s
}

// SetOccurrences sets the Occurrences field's value.
func (s *CustomDataIdentifiersDetections) SetOccurrences(v *Occurrences) *CustomDataIdentifiersDetections {
	s.Occurrences = v
	return s
}

// Contains an instance of sensitive data that was detected by a customer-defined
// identifier.
type CustomDataIdentifiersResult struct {
	_ struct{} `type:"structure"`

	// The list of detected instances of sensitive data.
	Detections []*CustomDataIdentifiersDetections `type:"list"`

	// The total number of occurrences of sensitive data.
	TotalCount *int64 `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 CustomDataIdentifiersResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CustomDataIdentifiersResult) GoString() string {
	return s.String()
}

// SetDetections sets the Detections field's value.
func (s *CustomDataIdentifiersResult) SetDetections(v []*CustomDataIdentifiersDetections) *CustomDataIdentifiersResult {
	s.Detections = v
	return s
}

// SetTotalCount sets the TotalCount field's value.
func (s *CustomDataIdentifiersResult) SetTotalCount(v int64) *CustomDataIdentifiersResult {
	s.TotalCount = &v
	return s
}

// CVSS scores from the advisory related to the vulnerability.
type Cvss struct {
	_ struct{} `type:"structure"`

	// Adjustments to the CVSS metrics.
	Adjustments []*Adjustment `type:"list"`

	// The base CVSS score.
	BaseScore *float64 `type:"double"`

	// The base scoring vector for the CVSS score.
	BaseVector *string `type:"string"`

	// The origin of the original CVSS score and vector.
	Source *string `type:"string"`

	// The version of CVSS for the CVSS score.
	Version *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Cvss) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Cvss) GoString() string {
	return s.String()
}

// SetAdjustments sets the Adjustments field's value.
func (s *Cvss) SetAdjustments(v []*Adjustment) *Cvss {
	s.Adjustments = v
	return s
}

// SetBaseScore sets the BaseScore field's value.
func (s *Cvss) SetBaseScore(v float64) *Cvss {
	s.BaseScore = &v
	return s
}

// SetBaseVector sets the BaseVector field's value.
func (s *Cvss) SetBaseVector(v string) *Cvss {
	s.BaseVector = &v
	return s
}

// SetSource sets the Source field's value.
func (s *Cvss) SetSource(v string) *Cvss {
	s.Source = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *Cvss) SetVersion(v string) *Cvss {
	s.Version = &v
	return s
}

// Provides details about sensitive data that was detected on a resource.
type DataClassificationDetails struct {
	_ struct{} `type:"structure"`

	// The path to the folder or file that contains the sensitive data.
	DetailedResultsLocation *string `type:"string"`

	// The details about the sensitive data that was detected on the resource.
	Result *ClassificationResult `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 DataClassificationDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataClassificationDetails) GoString() string {
	return s.String()
}

// SetDetailedResultsLocation sets the DetailedResultsLocation field's value.
func (s *DataClassificationDetails) SetDetailedResultsLocation(v string) *DataClassificationDetails {
	s.DetailedResultsLocation = &v
	return s
}

// SetResult sets the Result field's value.
func (s *DataClassificationDetails) SetResult(v *ClassificationResult) *DataClassificationDetails {
	s.Result = v
	return s
}

// A date filter for querying findings.
type DateFilter struct {
	_ struct{} `type:"structure"`

	// A date range for the date filter.
	DateRange *DateRange `type:"structure"`

	// A timestamp that provides the end date for the date filter.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	End *string `type:"string"`

	// A timestamp that provides the start date for the date filter.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	Start *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DateFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DateFilter) GoString() string {
	return s.String()
}

// SetDateRange sets the DateRange field's value.
func (s *DateFilter) SetDateRange(v *DateRange) *DateFilter {
	s.DateRange = v
	return s
}

// SetEnd sets the End field's value.
func (s *DateFilter) SetEnd(v string) *DateFilter {
	s.End = &v
	return s
}

// SetStart sets the Start field's value.
func (s *DateFilter) SetStart(v string) *DateFilter {
	s.Start = &v
	return s
}

// A date range for the date filter.
type DateRange struct {
	_ struct{} `type:"structure"`

	// A date range unit for the date filter.
	Unit *string `type:"string" enum:"DateRangeUnit"`

	// A date range value for the date filter.
	Value *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DateRange) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DateRange) GoString() string {
	return s.String()
}

// SetUnit sets the Unit field's value.
func (s *DateRange) SetUnit(v string) *DateRange {
	s.Unit = &v
	return s
}

// SetValue sets the Value field's value.
func (s *DateRange) SetValue(v int64) *DateRange {
	s.Value = &v
	return s
}

type DeclineInvitationsInput struct {
	_ struct{} `type:"structure"`

	// The list of prospective member account IDs for which to decline an invitation.
	//
	// AccountIds is a required field
	AccountIds []*string `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 DeclineInvitationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeclineInvitationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeclineInvitationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeclineInvitationsInput"}
	if s.AccountIds == nil {
		invalidParams.Add(request.NewErrParamRequired("AccountIds"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccountIds sets the AccountIds field's value.
func (s *DeclineInvitationsInput) SetAccountIds(v []*string) *DeclineInvitationsInput {
	s.AccountIds = v
	return s
}

type DeclineInvitationsOutput struct {
	_ struct{} `type:"structure"`

	// The list of Amazon Web Services accounts that were not processed. For each
	// account, the list includes the account ID and the email address.
	UnprocessedAccounts []*Result `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 DeclineInvitationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeclineInvitationsOutput) GoString() string {
	return s.String()
}

// SetUnprocessedAccounts sets the UnprocessedAccounts field's value.
func (s *DeclineInvitationsOutput) SetUnprocessedAccounts(v []*Result) *DeclineInvitationsOutput {
	s.UnprocessedAccounts = v
	return s
}

type DeleteActionTargetInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the custom action target to delete.
	//
	// ActionTargetArn is a required field
	ActionTargetArn *string `location:"uri" locationName:"ActionTargetArn" 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 DeleteActionTargetInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteActionTargetInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteActionTargetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteActionTargetInput"}
	if s.ActionTargetArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ActionTargetArn"))
	}
	if s.ActionTargetArn != nil && len(*s.ActionTargetArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ActionTargetArn", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActionTargetArn sets the ActionTargetArn field's value.
func (s *DeleteActionTargetInput) SetActionTargetArn(v string) *DeleteActionTargetInput {
	s.ActionTargetArn = &v
	return s
}

type DeleteActionTargetOutput struct {
	_ struct{} `type:"structure"`

	// The ARN of the custom action target that was deleted.
	//
	// ActionTargetArn is a required field
	ActionTargetArn *string `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 DeleteActionTargetOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteActionTargetOutput) GoString() string {
	return s.String()
}

// SetActionTargetArn sets the ActionTargetArn field's value.
func (s *DeleteActionTargetOutput) SetActionTargetArn(v string) *DeleteActionTargetOutput {
	s.ActionTargetArn = &v
	return s
}

type DeleteConfigurationPolicyInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) or universally unique identifier (UUID) of
	// the configuration policy.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"Identifier" 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 DeleteConfigurationPolicyInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteConfigurationPolicyInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteConfigurationPolicyInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteConfigurationPolicyInput"}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetIdentifier sets the Identifier field's value.
func (s *DeleteConfigurationPolicyInput) SetIdentifier(v string) *DeleteConfigurationPolicyInput {
	s.Identifier = &v
	return s
}

type DeleteConfigurationPolicyOutput 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 DeleteConfigurationPolicyOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteConfigurationPolicyOutput) GoString() string {
	return s.String()
}

type DeleteFindingAggregatorInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ARN of the finding aggregator to delete. To obtain the ARN, use ListFindingAggregators.
	//
	// FindingAggregatorArn is a required field
	FindingAggregatorArn *string `location:"uri" locationName:"FindingAggregatorArn" 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 DeleteFindingAggregatorInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteFindingAggregatorInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteFindingAggregatorInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteFindingAggregatorInput"}
	if s.FindingAggregatorArn == nil {
		invalidParams.Add(request.NewErrParamRequired("FindingAggregatorArn"))
	}
	if s.FindingAggregatorArn != nil && len(*s.FindingAggregatorArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FindingAggregatorArn", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFindingAggregatorArn sets the FindingAggregatorArn field's value.
func (s *DeleteFindingAggregatorInput) SetFindingAggregatorArn(v string) *DeleteFindingAggregatorInput {
	s.FindingAggregatorArn = &v
	return s
}

type DeleteFindingAggregatorOutput 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 DeleteFindingAggregatorOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteFindingAggregatorOutput) GoString() string {
	return s.String()
}

type DeleteInsightInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ARN of the insight to delete.
	//
	// InsightArn is a required field
	InsightArn *string `location:"uri" locationName:"InsightArn" 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 DeleteInsightInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteInsightInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteInsightInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteInsightInput"}
	if s.InsightArn == nil {
		invalidParams.Add(request.NewErrParamRequired("InsightArn"))
	}
	if s.InsightArn != nil && len(*s.InsightArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InsightArn", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInsightArn sets the InsightArn field's value.
func (s *DeleteInsightInput) SetInsightArn(v string) *DeleteInsightInput {
	s.InsightArn = &v
	return s
}

type DeleteInsightOutput struct {
	_ struct{} `type:"structure"`

	// The ARN of the insight that was deleted.
	//
	// InsightArn is a required field
	InsightArn *string `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 DeleteInsightOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteInsightOutput) GoString() string {
	return s.String()
}

// SetInsightArn sets the InsightArn field's value.
func (s *DeleteInsightOutput) SetInsightArn(v string) *DeleteInsightOutput {
	s.InsightArn = &v
	return s
}

type DeleteInvitationsInput struct {
	_ struct{} `type:"structure"`

	// The list of member account IDs that received the invitations you want to
	// delete.
	//
	// AccountIds is a required field
	AccountIds []*string `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 DeleteInvitationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteInvitationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteInvitationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteInvitationsInput"}
	if s.AccountIds == nil {
		invalidParams.Add(request.NewErrParamRequired("AccountIds"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccountIds sets the AccountIds field's value.
func (s *DeleteInvitationsInput) SetAccountIds(v []*string) *DeleteInvitationsInput {
	s.AccountIds = v
	return s
}

type DeleteInvitationsOutput struct {
	_ struct{} `type:"structure"`

	// The list of Amazon Web Services accounts for which the invitations were not
	// deleted. For each account, the list includes the account ID and the email
	// address.
	UnprocessedAccounts []*Result `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 DeleteInvitationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteInvitationsOutput) GoString() string {
	return s.String()
}

// SetUnprocessedAccounts sets the UnprocessedAccounts field's value.
func (s *DeleteInvitationsOutput) SetUnprocessedAccounts(v []*Result) *DeleteInvitationsOutput {
	s.UnprocessedAccounts = v
	return s
}

type DeleteMembersInput struct {
	_ struct{} `type:"structure"`

	// The list of account IDs for the member accounts to delete.
	//
	// AccountIds is a required field
	AccountIds []*string `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 DeleteMembersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteMembersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteMembersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteMembersInput"}
	if s.AccountIds == nil {
		invalidParams.Add(request.NewErrParamRequired("AccountIds"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccountIds sets the AccountIds field's value.
func (s *DeleteMembersInput) SetAccountIds(v []*string) *DeleteMembersInput {
	s.AccountIds = v
	return s
}

type DeleteMembersOutput struct {
	_ struct{} `type:"structure"`

	// The list of Amazon Web Services accounts that were not deleted. For each
	// account, the list includes the account ID and the email address.
	UnprocessedAccounts []*Result `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 DeleteMembersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteMembersOutput) GoString() string {
	return s.String()
}

// SetUnprocessedAccounts sets the UnprocessedAccounts field's value.
func (s *DeleteMembersOutput) SetUnprocessedAccounts(v []*Result) *DeleteMembersOutput {
	s.UnprocessedAccounts = v
	return s
}

type DescribeActionTargetsInput struct {
	_ struct{} `type:"structure"`

	// A list of custom action target ARNs for the custom action targets to retrieve.
	ActionTargetArns []*string `type:"list"`

	// The maximum number of results to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token that is required for pagination. On your first call to the DescribeActionTargets
	// operation, set the value of this parameter to NULL.
	//
	// For subsequent calls to the operation, to continue listing data, set the
	// value of this parameter to the value returned from the previous response.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeActionTargetsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeActionTargetsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeActionTargetsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeActionTargetsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActionTargetArns sets the ActionTargetArns field's value.
func (s *DescribeActionTargetsInput) SetActionTargetArns(v []*string) *DescribeActionTargetsInput {
	s.ActionTargetArns = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeActionTargetsInput) SetMaxResults(v int64) *DescribeActionTargetsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeActionTargetsInput) SetNextToken(v string) *DescribeActionTargetsInput {
	s.NextToken = &v
	return s
}

type DescribeActionTargetsOutput struct {
	_ struct{} `type:"structure"`

	// A list of ActionTarget objects. Each object includes the ActionTargetArn,
	// Description, and Name of a custom action target available in Security Hub.
	//
	// ActionTargets is a required field
	ActionTargets []*ActionTarget `type:"list" required:"true"`

	// The pagination token to use to request the next page of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeActionTargetsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeActionTargetsOutput) GoString() string {
	return s.String()
}

// SetActionTargets sets the ActionTargets field's value.
func (s *DescribeActionTargetsOutput) SetActionTargets(v []*ActionTarget) *DescribeActionTargetsOutput {
	s.ActionTargets = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeActionTargetsOutput) SetNextToken(v string) *DescribeActionTargetsOutput {
	s.NextToken = &v
	return s
}

type DescribeHubInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ARN of the Hub resource to retrieve.
	HubArn *string `location:"querystring" locationName:"HubArn" 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 DescribeHubInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeHubInput) GoString() string {
	return s.String()
}

// SetHubArn sets the HubArn field's value.
func (s *DescribeHubInput) SetHubArn(v string) *DescribeHubInput {
	s.HubArn = &v
	return s
}

type DescribeHubOutput struct {
	_ struct{} `type:"structure"`

	// Whether to automatically enable new controls when they are added to standards
	// that are enabled.
	//
	// If set to true, then new controls for enabled standards are enabled automatically.
	// If set to false, then new controls are not enabled.
	AutoEnableControls *bool `type:"boolean"`

	// Specifies whether the calling account has consolidated control findings turned
	// on. If the value for this field is set to SECURITY_CONTROL, Security Hub
	// generates a single finding for a control check even when the check applies
	// to multiple enabled standards.
	//
	// If the value for this field is set to STANDARD_CONTROL, Security Hub generates
	// separate findings for a control check when the check applies to multiple
	// enabled standards.
	//
	// The value for this field in a member account matches the value in the administrator
	// account. For accounts that aren't part of an organization, the default value
	// of this field is SECURITY_CONTROL if you enabled Security Hub on or after
	// February 23, 2023.
	ControlFindingGenerator *string `type:"string" enum:"ControlFindingGenerator"`

	// The ARN of the Hub resource that was retrieved.
	HubArn *string `type:"string"`

	// The date and time when Security Hub was enabled in the account.
	SubscribedAt *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeHubOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeHubOutput) GoString() string {
	return s.String()
}

// SetAutoEnableControls sets the AutoEnableControls field's value.
func (s *DescribeHubOutput) SetAutoEnableControls(v bool) *DescribeHubOutput {
	s.AutoEnableControls = &v
	return s
}

// SetControlFindingGenerator sets the ControlFindingGenerator field's value.
func (s *DescribeHubOutput) SetControlFindingGenerator(v string) *DescribeHubOutput {
	s.ControlFindingGenerator = &v
	return s
}

// SetHubArn sets the HubArn field's value.
func (s *DescribeHubOutput) SetHubArn(v string) *DescribeHubOutput {
	s.HubArn = &v
	return s
}

// SetSubscribedAt sets the SubscribedAt field's value.
func (s *DescribeHubOutput) SetSubscribedAt(v string) *DescribeHubOutput {
	s.SubscribedAt = &v
	return s
}

type DescribeOrganizationConfigurationInput struct {
	_ struct{} `type:"structure" nopayload:"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 DescribeOrganizationConfigurationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeOrganizationConfigurationInput) GoString() string {
	return s.String()
}

type DescribeOrganizationConfigurationOutput struct {
	_ struct{} `type:"structure"`

	// Whether to automatically enable Security Hub in new member accounts when
	// they join the organization.
	//
	// If set to true, then Security Hub is automatically enabled in new accounts.
	// If set to false, then Security Hub isn't enabled in new accounts automatically.
	// The default value is false.
	//
	// If the ConfigurationType of your organization is set to CENTRAL, then this
	// field is set to false and can't be changed in the home Region and linked
	// Regions. However, in that case, the delegated administrator can create a
	// configuration policy in which Security Hub is enabled and associate the policy
	// with new organization accounts.
	AutoEnable *bool `type:"boolean"`

	// Whether to automatically enable Security Hub default standards (https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-standards-enable-disable.html)
	// in new member accounts when they join the organization.
	//
	// If equal to DEFAULT, then Security Hub default standards are automatically
	// enabled for new member accounts. If equal to NONE, then default standards
	// are not automatically enabled for new member accounts. The default value
	// of this parameter is equal to DEFAULT.
	//
	// If the ConfigurationType of your organization is set to CENTRAL, then this
	// field is set to NONE and can't be changed in the home Region and linked Regions.
	// However, in that case, the delegated administrator can create a configuration
	// policy in which specific security standards are enabled and associate the
	// policy with new organization accounts.
	AutoEnableStandards *string `type:"string" enum:"AutoEnableStandards"`

	// Whether the maximum number of allowed member accounts are already associated
	// with the Security Hub administrator account.
	MemberAccountLimitReached *bool `type:"boolean"`

	// Provides information about the way an organization is configured in Security
	// Hub.
	OrganizationConfiguration *OrganizationConfiguration `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 DescribeOrganizationConfigurationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeOrganizationConfigurationOutput) GoString() string {
	return s.String()
}

// SetAutoEnable sets the AutoEnable field's value.
func (s *DescribeOrganizationConfigurationOutput) SetAutoEnable(v bool) *DescribeOrganizationConfigurationOutput {
	s.AutoEnable = &v
	return s
}

// SetAutoEnableStandards sets the AutoEnableStandards field's value.
func (s *DescribeOrganizationConfigurationOutput) SetAutoEnableStandards(v string) *DescribeOrganizationConfigurationOutput {
	s.AutoEnableStandards = &v
	return s
}

// SetMemberAccountLimitReached sets the MemberAccountLimitReached field's value.
func (s *DescribeOrganizationConfigurationOutput) SetMemberAccountLimitReached(v bool) *DescribeOrganizationConfigurationOutput {
	s.MemberAccountLimitReached = &v
	return s
}

// SetOrganizationConfiguration sets the OrganizationConfiguration field's value.
func (s *DescribeOrganizationConfigurationOutput) SetOrganizationConfiguration(v *OrganizationConfiguration) *DescribeOrganizationConfigurationOutput {
	s.OrganizationConfiguration = v
	return s
}

type DescribeProductsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The maximum number of results to return.
	MaxResults *int64 `location:"querystring" locationName:"MaxResults" min:"1" type:"integer"`

	// The token that is required for pagination. On your first call to the DescribeProducts
	// operation, set the value of this parameter to NULL.
	//
	// For subsequent calls to the operation, to continue listing data, set the
	// value of this parameter to the value returned from the previous response.
	NextToken *string `location:"querystring" locationName:"NextToken" type:"string"`

	// The ARN of the integration to return.
	ProductArn *string `location:"querystring" locationName:"ProductArn" 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 DescribeProductsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeProductsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeProductsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeProductsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeProductsInput) SetMaxResults(v int64) *DescribeProductsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeProductsInput) SetNextToken(v string) *DescribeProductsInput {
	s.NextToken = &v
	return s
}

// SetProductArn sets the ProductArn field's value.
func (s *DescribeProductsInput) SetProductArn(v string) *DescribeProductsInput {
	s.ProductArn = &v
	return s
}

type DescribeProductsOutput struct {
	_ struct{} `type:"structure"`

	// The pagination token to use to request the next page of results.
	NextToken *string `type:"string"`

	// A list of products, including details for each product.
	//
	// Products is a required field
	Products []*Product `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 DescribeProductsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeProductsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeProductsOutput) SetNextToken(v string) *DescribeProductsOutput {
	s.NextToken = &v
	return s
}

// SetProducts sets the Products field's value.
func (s *DescribeProductsOutput) SetProducts(v []*Product) *DescribeProductsOutput {
	s.Products = v
	return s
}

type DescribeStandardsControlsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The maximum number of security standard controls to return.
	MaxResults *int64 `location:"querystring" locationName:"MaxResults" min:"1" type:"integer"`

	// The token that is required for pagination. On your first call to the DescribeStandardsControls
	// operation, set the value of this parameter to NULL.
	//
	// For subsequent calls to the operation, to continue listing data, set the
	// value of this parameter to the value returned from the previous response.
	NextToken *string `location:"querystring" locationName:"NextToken" type:"string"`

	// The ARN of a resource that represents your subscription to a supported standard.
	// To get the subscription ARNs of the standards you have enabled, use the GetEnabledStandards
	// operation.
	//
	// StandardsSubscriptionArn is a required field
	StandardsSubscriptionArn *string `location:"uri" locationName:"StandardsSubscriptionArn" 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 DescribeStandardsControlsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeStandardsControlsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeStandardsControlsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeStandardsControlsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.StandardsSubscriptionArn == nil {
		invalidParams.Add(request.NewErrParamRequired("StandardsSubscriptionArn"))
	}
	if s.StandardsSubscriptionArn != nil && len(*s.StandardsSubscriptionArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("StandardsSubscriptionArn", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeStandardsControlsInput) SetMaxResults(v int64) *DescribeStandardsControlsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeStandardsControlsInput) SetNextToken(v string) *DescribeStandardsControlsInput {
	s.NextToken = &v
	return s
}

// SetStandardsSubscriptionArn sets the StandardsSubscriptionArn field's value.
func (s *DescribeStandardsControlsInput) SetStandardsSubscriptionArn(v string) *DescribeStandardsControlsInput {
	s.StandardsSubscriptionArn = &v
	return s
}

type DescribeStandardsControlsOutput struct {
	_ struct{} `type:"structure"`

	// A list of security standards controls.
	Controls []*StandardsControl `type:"list"`

	// The pagination token to use to request the next page of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeStandardsControlsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeStandardsControlsOutput) GoString() string {
	return s.String()
}

// SetControls sets the Controls field's value.
func (s *DescribeStandardsControlsOutput) SetControls(v []*StandardsControl) *DescribeStandardsControlsOutput {
	s.Controls = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeStandardsControlsOutput) SetNextToken(v string) *DescribeStandardsControlsOutput {
	s.NextToken = &v
	return s
}

type DescribeStandardsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The maximum number of standards to return.
	MaxResults *int64 `location:"querystring" locationName:"MaxResults" min:"1" type:"integer"`

	// The token that is required for pagination. On your first call to the DescribeStandards
	// operation, set the value of this parameter to NULL.
	//
	// For subsequent calls to the operation, to continue listing data, set the
	// value of this parameter to the value returned from the previous response.
	NextToken *string `location:"querystring" locationName:"NextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeStandardsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeStandardsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeStandardsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeStandardsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeStandardsInput) SetMaxResults(v int64) *DescribeStandardsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeStandardsInput) SetNextToken(v string) *DescribeStandardsInput {
	s.NextToken = &v
	return s
}

type DescribeStandardsOutput struct {
	_ struct{} `type:"structure"`

	// The pagination token to use to request the next page of results.
	NextToken *string `type:"string"`

	// A list of available standards.
	Standards []*Standard `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 DescribeStandardsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeStandardsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeStandardsOutput) SetNextToken(v string) *DescribeStandardsOutput {
	s.NextToken = &v
	return s
}

// SetStandards sets the Standards field's value.
func (s *DescribeStandardsOutput) SetStandards(v []*Standard) *DescribeStandardsOutput {
	s.Standards = v
	return s
}

type DisableImportFindingsForProductInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ARN of the integrated product to disable the integration for.
	//
	// ProductSubscriptionArn is a required field
	ProductSubscriptionArn *string `location:"uri" locationName:"ProductSubscriptionArn" 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 DisableImportFindingsForProductInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisableImportFindingsForProductInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DisableImportFindingsForProductInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DisableImportFindingsForProductInput"}
	if s.ProductSubscriptionArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ProductSubscriptionArn"))
	}
	if s.ProductSubscriptionArn != nil && len(*s.ProductSubscriptionArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ProductSubscriptionArn", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetProductSubscriptionArn sets the ProductSubscriptionArn field's value.
func (s *DisableImportFindingsForProductInput) SetProductSubscriptionArn(v string) *DisableImportFindingsForProductInput {
	s.ProductSubscriptionArn = &v
	return s
}

type DisableImportFindingsForProductOutput 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 DisableImportFindingsForProductOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisableImportFindingsForProductOutput) GoString() string {
	return s.String()
}

type DisableOrganizationAdminAccountInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account identifier of the Security Hub administrator
	// account.
	//
	// AdminAccountId is a required field
	AdminAccountId *string `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 DisableOrganizationAdminAccountInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisableOrganizationAdminAccountInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DisableOrganizationAdminAccountInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DisableOrganizationAdminAccountInput"}
	if s.AdminAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AdminAccountId"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdminAccountId sets the AdminAccountId field's value.
func (s *DisableOrganizationAdminAccountInput) SetAdminAccountId(v string) *DisableOrganizationAdminAccountInput {
	s.AdminAccountId = &v
	return s
}

type DisableOrganizationAdminAccountOutput 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 DisableOrganizationAdminAccountOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisableOrganizationAdminAccountOutput) GoString() string {
	return s.String()
}

type DisableSecurityHubInput struct {
	_ struct{} `type:"structure" nopayload:"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 DisableSecurityHubInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisableSecurityHubInput) GoString() string {
	return s.String()
}

type DisableSecurityHubOutput 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 DisableSecurityHubOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisableSecurityHubOutput) GoString() string {
	return s.String()
}

type DisassociateFromAdministratorAccountInput struct {
	_ struct{} `type:"structure" nopayload:"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 DisassociateFromAdministratorAccountInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateFromAdministratorAccountInput) GoString() string {
	return s.String()
}

type DisassociateFromAdministratorAccountOutput 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 DisassociateFromAdministratorAccountOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateFromAdministratorAccountOutput) GoString() string {
	return s.String()
}

type DisassociateFromMasterAccountInput struct {
	_ struct{} `type:"structure" nopayload:"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 DisassociateFromMasterAccountInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateFromMasterAccountInput) GoString() string {
	return s.String()
}

type DisassociateFromMasterAccountOutput 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 DisassociateFromMasterAccountOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateFromMasterAccountOutput) GoString() string {
	return s.String()
}

type DisassociateMembersInput struct {
	_ struct{} `type:"structure"`

	// The account IDs of the member accounts to disassociate from the administrator
	// account.
	//
	// AccountIds is a required field
	AccountIds []*string `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 DisassociateMembersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateMembersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DisassociateMembersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DisassociateMembersInput"}
	if s.AccountIds == nil {
		invalidParams.Add(request.NewErrParamRequired("AccountIds"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccountIds sets the AccountIds field's value.
func (s *DisassociateMembersInput) SetAccountIds(v []*string) *DisassociateMembersInput {
	s.AccountIds = v
	return s
}

type DisassociateMembersOutput 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 DisassociateMembersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateMembersOutput) GoString() string {
	return s.String()
}

// Provided if ActionType is DNS_REQUEST. It provides details about the DNS
// request that was detected.
type DnsRequestAction struct {
	_ struct{} `type:"structure"`

	// Indicates whether the DNS request was blocked.
	Blocked *bool `type:"boolean"`

	// The DNS domain that is associated with the DNS request.
	//
	// Length Constraints: 128.
	Domain *string `type:"string"`

	// The protocol that was used for the DNS request.
	//
	// Length Constraints: Minimum length of 1. Maximum length of 64.
	Protocol *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DnsRequestAction) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DnsRequestAction) GoString() string {
	return s.String()
}

// SetBlocked sets the Blocked field's value.
func (s *DnsRequestAction) SetBlocked(v bool) *DnsRequestAction {
	s.Blocked = &v
	return s
}

// SetDomain sets the Domain field's value.
func (s *DnsRequestAction) SetDomain(v string) *DnsRequestAction {
	s.Domain = &v
	return s
}

// SetProtocol sets the Protocol field's value.
func (s *DnsRequestAction) SetProtocol(v string) *DnsRequestAction {
	s.Protocol = &v
	return s
}

// The options for customizing a security control parameter that is a double.
type DoubleConfigurationOptions struct {
	_ struct{} `type:"structure"`

	// The Security Hub default value for a control parameter that is a double.
	DefaultValue *float64 `type:"double"`

	// The maximum valid value for a control parameter that is a double.
	Max *float64 `type:"double"`

	// The minimum valid value for a control parameter that is a double.
	Min *float64 `type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DoubleConfigurationOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DoubleConfigurationOptions) GoString() string {
	return s.String()
}

// SetDefaultValue sets the DefaultValue field's value.
func (s *DoubleConfigurationOptions) SetDefaultValue(v float64) *DoubleConfigurationOptions {
	s.DefaultValue = &v
	return s
}

// SetMax sets the Max field's value.
func (s *DoubleConfigurationOptions) SetMax(v float64) *DoubleConfigurationOptions {
	s.Max = &v
	return s
}

// SetMin sets the Min field's value.
func (s *DoubleConfigurationOptions) SetMin(v float64) *DoubleConfigurationOptions {
	s.Min = &v
	return s
}

type EnableImportFindingsForProductInput struct {
	_ struct{} `type:"structure"`

	// The ARN of the product to enable the integration for.
	//
	// ProductArn is a required field
	ProductArn *string `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 EnableImportFindingsForProductInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnableImportFindingsForProductInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EnableImportFindingsForProductInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EnableImportFindingsForProductInput"}
	if s.ProductArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ProductArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetProductArn sets the ProductArn field's value.
func (s *EnableImportFindingsForProductInput) SetProductArn(v string) *EnableImportFindingsForProductInput {
	s.ProductArn = &v
	return s
}

type EnableImportFindingsForProductOutput struct {
	_ struct{} `type:"structure"`

	// The ARN of your subscription to the product to enable integrations for.
	ProductSubscriptionArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnableImportFindingsForProductOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnableImportFindingsForProductOutput) GoString() string {
	return s.String()
}

// SetProductSubscriptionArn sets the ProductSubscriptionArn field's value.
func (s *EnableImportFindingsForProductOutput) SetProductSubscriptionArn(v string) *EnableImportFindingsForProductOutput {
	s.ProductSubscriptionArn = &v
	return s
}

type EnableOrganizationAdminAccountInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account identifier of the account to designate as
	// the Security Hub administrator account.
	//
	// AdminAccountId is a required field
	AdminAccountId *string `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 EnableOrganizationAdminAccountInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnableOrganizationAdminAccountInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EnableOrganizationAdminAccountInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EnableOrganizationAdminAccountInput"}
	if s.AdminAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AdminAccountId"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdminAccountId sets the AdminAccountId field's value.
func (s *EnableOrganizationAdminAccountInput) SetAdminAccountId(v string) *EnableOrganizationAdminAccountInput {
	s.AdminAccountId = &v
	return s
}

type EnableOrganizationAdminAccountOutput 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 EnableOrganizationAdminAccountOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnableOrganizationAdminAccountOutput) GoString() string {
	return s.String()
}

type EnableSecurityHubInput struct {
	_ struct{} `type:"structure"`

	// This field, used when enabling Security Hub, specifies whether the calling
	// account has consolidated control findings turned on. If the value for this
	// field is set to SECURITY_CONTROL, Security Hub generates a single finding
	// for a control check even when the check applies to multiple enabled standards.
	//
	// If the value for this field is set to STANDARD_CONTROL, Security Hub generates
	// separate findings for a control check when the check applies to multiple
	// enabled standards.
	//
	// The value for this field in a member account matches the value in the administrator
	// account. For accounts that aren't part of an organization, the default value
	// of this field is SECURITY_CONTROL if you enabled Security Hub on or after
	// February 23, 2023.
	ControlFindingGenerator *string `type:"string" enum:"ControlFindingGenerator"`

	// Whether to enable the security standards that Security Hub has designated
	// as automatically enabled. If you do not provide a value for EnableDefaultStandards,
	// it is set to true. To not enable the automatically enabled standards, set
	// EnableDefaultStandards to false.
	EnableDefaultStandards *bool `type:"boolean"`

	// The tags to add to the hub resource when you enable Security Hub.
	Tags map[string]*string `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 EnableSecurityHubInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnableSecurityHubInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EnableSecurityHubInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EnableSecurityHubInput"}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetControlFindingGenerator sets the ControlFindingGenerator field's value.
func (s *EnableSecurityHubInput) SetControlFindingGenerator(v string) *EnableSecurityHubInput {
	s.ControlFindingGenerator = &v
	return s
}

// SetEnableDefaultStandards sets the EnableDefaultStandards field's value.
func (s *EnableSecurityHubInput) SetEnableDefaultStandards(v bool) *EnableSecurityHubInput {
	s.EnableDefaultStandards = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *EnableSecurityHubInput) SetTags(v map[string]*string) *EnableSecurityHubInput {
	s.Tags = v
	return s
}

type EnableSecurityHubOutput 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 EnableSecurityHubOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnableSecurityHubOutput) GoString() string {
	return s.String()
}

// The options for customizing a security control parameter that is an enum.
type EnumConfigurationOptions struct {
	_ struct{} `type:"structure"`

	// The valid values for a control parameter that is an enum.
	AllowedValues []*string `type:"list"`

	// The Security Hub default value for a control parameter that is an enum.
	DefaultValue *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnumConfigurationOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnumConfigurationOptions) GoString() string {
	return s.String()
}

// SetAllowedValues sets the AllowedValues field's value.
func (s *EnumConfigurationOptions) SetAllowedValues(v []*string) *EnumConfigurationOptions {
	s.AllowedValues = v
	return s
}

// SetDefaultValue sets the DefaultValue field's value.
func (s *EnumConfigurationOptions) SetDefaultValue(v string) *EnumConfigurationOptions {
	s.DefaultValue = &v
	return s
}

// The options for customizing a security control parameter that is a list of
// enums.
type EnumListConfigurationOptions struct {
	_ struct{} `type:"structure"`

	// The valid values for a control parameter that is a list of enums.
	AllowedValues []*string `type:"list"`

	// The Security Hub default value for a control parameter that is a list of
	// enums.
	DefaultValue []*string `type:"list"`

	// The maximum number of list items that an enum list control parameter can
	// accept.
	MaxItems *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnumListConfigurationOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnumListConfigurationOptions) GoString() string {
	return s.String()
}

// SetAllowedValues sets the AllowedValues field's value.
func (s *EnumListConfigurationOptions) SetAllowedValues(v []*string) *EnumListConfigurationOptions {
	s.AllowedValues = v
	return s
}

// SetDefaultValue sets the DefaultValue field's value.
func (s *EnumListConfigurationOptions) SetDefaultValue(v []*string) *EnumListConfigurationOptions {
	s.DefaultValue = v
	return s
}

// SetMaxItems sets the MaxItems field's value.
func (s *EnumListConfigurationOptions) SetMaxItems(v int64) *EnumListConfigurationOptions {
	s.MaxItems = &v
	return s
}

// Provides information about the file paths that were affected by the threat.
type FilePaths struct {
	_ struct{} `type:"structure"`

	// The name of the infected or suspicious file corresponding to the hash.
	//
	// Length Constraints: Minimum of 1 length. Maximum of 128 length.
	FileName *string `type:"string"`

	// Path to the infected or suspicious file on the resource it was detected on.
	//
	// Length Constraints: Minimum of 1 length. Maximum of 128 length.
	FilePath *string `type:"string"`

	// The hash value for the infected or suspicious file.
	//
	// Length Constraints: Minimum of 1 length. Maximum of 128 length.
	Hash *string `type:"string"`

	// The Amazon Resource Name (ARN) of the resource on which the threat was detected.
	//
	// Length Constraints: Minimum of 1 length. Maximum of 128 length.
	ResourceId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FilePaths) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FilePaths) GoString() string {
	return s.String()
}

// SetFileName sets the FileName field's value.
func (s *FilePaths) SetFileName(v string) *FilePaths {
	s.FileName = &v
	return s
}

// SetFilePath sets the FilePath field's value.
func (s *FilePaths) SetFilePath(v string) *FilePaths {
	s.FilePath = &v
	return s
}

// SetHash sets the Hash field's value.
func (s *FilePaths) SetHash(v string) *FilePaths {
	s.Hash = &v
	return s
}

// SetResourceId sets the ResourceId field's value.
func (s *FilePaths) SetResourceId(v string) *FilePaths {
	s.ResourceId = &v
	return s
}

// A finding aggregator. A finding aggregator contains the configuration for
// finding aggregation.
type FindingAggregator struct {
	_ struct{} `type:"structure"`

	// The ARN of the finding aggregator. You use the finding aggregator ARN to
	// retrieve details for, update, and delete the finding aggregator.
	FindingAggregatorArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FindingAggregator) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FindingAggregator) GoString() string {
	return s.String()
}

// SetFindingAggregatorArn sets the FindingAggregatorArn field's value.
func (s *FindingAggregator) SetFindingAggregatorArn(v string) *FindingAggregator {
	s.FindingAggregatorArn = &v
	return s
}

// A list of events that changed the specified finding during the specified
// time period. Each record represents a single finding change event.
type FindingHistoryRecord struct {
	_ struct{} `type:"structure"`

	// Identifies whether the event marks the creation of a new finding. A value
	// of True means that the finding is newly created. A value of False means that
	// the finding isn’t newly created.
	FindingCreated *bool `type:"boolean"`

	// Identifies which finding to get the finding history for.
	FindingIdentifier *AwsSecurityFindingIdentifier `type:"structure"`

	// A token for pagination purposes. Provide this token in the subsequent request
	// to GetFindingsHistory (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_GetFindingsHistory.html)
	// to get up to an additional 100 results of history for the same finding that
	// you specified in your initial request.
	NextToken *string `type:"string"`

	// Identifies the source of the event that changed the finding. For example,
	// an integrated Amazon Web Service or third-party partner integration may call
	// BatchImportFindings (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_BatchImportFindings.html),
	// or an Security Hub customer may call BatchUpdateFindings (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_BatchUpdateFindings.html).
	UpdateSource *FindingHistoryUpdateSource `type:"structure"`

	// A timestamp that indicates when Security Hub processed the updated finding
	// record.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	UpdateTime *time.Time `type:"timestamp" timestampFormat:"iso8601"`

	// An array of objects that provides details about the finding change event,
	// including the Amazon Web Services Security Finding Format (ASFF) field that
	// changed, the value of the field before the change, and the value of the field
	// after the change.
	Updates []*FindingHistoryUpdate `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 FindingHistoryRecord) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FindingHistoryRecord) GoString() string {
	return s.String()
}

// SetFindingCreated sets the FindingCreated field's value.
func (s *FindingHistoryRecord) SetFindingCreated(v bool) *FindingHistoryRecord {
	s.FindingCreated = &v
	return s
}

// SetFindingIdentifier sets the FindingIdentifier field's value.
func (s *FindingHistoryRecord) SetFindingIdentifier(v *AwsSecurityFindingIdentifier) *FindingHistoryRecord {
	s.FindingIdentifier = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *FindingHistoryRecord) SetNextToken(v string) *FindingHistoryRecord {
	s.NextToken = &v
	return s
}

// SetUpdateSource sets the UpdateSource field's value.
func (s *FindingHistoryRecord) SetUpdateSource(v *FindingHistoryUpdateSource) *FindingHistoryRecord {
	s.UpdateSource = v
	return s
}

// SetUpdateTime sets the UpdateTime field's value.
func (s *FindingHistoryRecord) SetUpdateTime(v time.Time) *FindingHistoryRecord {
	s.UpdateTime = &v
	return s
}

// SetUpdates sets the Updates field's value.
func (s *FindingHistoryRecord) SetUpdates(v []*FindingHistoryUpdate) *FindingHistoryRecord {
	s.Updates = v
	return s
}

// An array of objects that provides details about a change to a finding, including
// the Amazon Web Services Security Finding Format (ASFF) field that changed,
// the value of the field before the change, and the value of the field after
// the change.
type FindingHistoryUpdate struct {
	_ struct{} `type:"structure"`

	// The value of the ASFF field after the finding change event. To preserve storage
	// and readability, Security Hub omits this value if FindingHistoryRecord (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_FindingHistoryRecord.html)
	// exceeds database limits.
	NewValue *string `type:"string"`

	// The value of the ASFF field before the finding change event.
	OldValue *string `type:"string"`

	// The ASFF field that changed during the finding change event.
	UpdatedField *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FindingHistoryUpdate) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FindingHistoryUpdate) GoString() string {
	return s.String()
}

// SetNewValue sets the NewValue field's value.
func (s *FindingHistoryUpdate) SetNewValue(v string) *FindingHistoryUpdate {
	s.NewValue = &v
	return s
}

// SetOldValue sets the OldValue field's value.
func (s *FindingHistoryUpdate) SetOldValue(v string) *FindingHistoryUpdate {
	s.OldValue = &v
	return s
}

// SetUpdatedField sets the UpdatedField field's value.
func (s *FindingHistoryUpdate) SetUpdatedField(v string) *FindingHistoryUpdate {
	s.UpdatedField = &v
	return s
}

// Identifies the source of the finding change event.
type FindingHistoryUpdateSource struct {
	_ struct{} `type:"structure"`

	// The identity of the source that initiated the finding change event. For example,
	// the Amazon Resource Name (ARN) of a partner that calls BatchImportFindings
	// or of a customer that calls BatchUpdateFindings.
	Identity *string `type:"string"`

	// Describes the type of finding change event, such as a call to BatchImportFindings
	// (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_BatchImportFindings.html)
	// (by an integrated Amazon Web Service or third party partner integration)
	// or BatchUpdateFindings (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_BatchUpdateFindings.html)
	// (by a Security Hub customer).
	Type *string `type:"string" enum:"FindingHistoryUpdateSourceType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FindingHistoryUpdateSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FindingHistoryUpdateSource) GoString() string {
	return s.String()
}

// SetIdentity sets the Identity field's value.
func (s *FindingHistoryUpdateSource) SetIdentity(v string) *FindingHistoryUpdateSource {
	s.Identity = &v
	return s
}

// SetType sets the Type field's value.
func (s *FindingHistoryUpdateSource) SetType(v string) *FindingHistoryUpdateSource {
	s.Type = &v
	return s
}

// In a BatchImportFindings (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_BatchImportFindings.html)
// request, finding providers use FindingProviderFields to provide and update
// values for the following fields:
//
//   - Confidence
//
//   - Criticality
//
//   - RelatedFindings
//
//   - Severity
//
//   - Types
//
// The preceding fields are nested under the FindingProviderFields object, but
// also have analogues of the same name as top-level ASFF fields. When a new
// finding is sent to Security Hub by a finding provider, Security Hub populates
// the FindingProviderFields object automatically, if it is empty, based on
// the corresponding top-level fields.
//
// Finding providers can update FindingProviderFields only by using the BatchImportFindings
// operation. Finding providers can't update this object with the BatchUpdateFindings
// (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_BatchUpdateFindings.html)
// operation. Customers can update the top-level fields by using the BatchUpdateFindings
// operation. Customers can't update FindingProviderFields.
//
// For information about how Security Hub handles updates from BatchImportFindings
// to FindingProviderFields and to the corresponding top-level attributes, see
// Using FindingProviderFields (https://docs.aws.amazon.com/securityhub/latest/userguide/finding-update-batchimportfindings.html#batchimportfindings-findingproviderfields)
// in the Security Hub User Guide.
type FindingProviderFields struct {
	_ struct{} `type:"structure"`

	// A finding's confidence. Confidence is defined as the likelihood that a finding
	// accurately identifies the behavior or issue that it was intended to identify.
	//
	// Confidence is scored on a 0-100 basis using a ratio scale, where 0 means
	// zero percent confidence and 100 means 100 percent confidence.
	Confidence *int64 `type:"integer"`

	// The level of importance assigned to the resources associated with the finding.
	//
	// A score of 0 means that the underlying resources have no criticality, and
	// a score of 100 is reserved for the most critical resources.
	Criticality *int64 `type:"integer"`

	// A list of findings that are related to the current finding.
	RelatedFindings []*RelatedFinding `type:"list"`

	// The severity of a finding.
	Severity *FindingProviderSeverity `type:"structure"`

	// One or more finding types in the format of namespace/category/classifier
	// that classify a finding.
	//
	// Valid namespace values are: Software and Configuration Checks | TTPs | Effects
	// | Unusual Behaviors | Sensitive Data Identifications
	Types []*string `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 FindingProviderFields) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FindingProviderFields) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FindingProviderFields) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FindingProviderFields"}
	if s.RelatedFindings != nil {
		for i, v := range s.RelatedFindings {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RelatedFindings", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConfidence sets the Confidence field's value.
func (s *FindingProviderFields) SetConfidence(v int64) *FindingProviderFields {
	s.Confidence = &v
	return s
}

// SetCriticality sets the Criticality field's value.
func (s *FindingProviderFields) SetCriticality(v int64) *FindingProviderFields {
	s.Criticality = &v
	return s
}

// SetRelatedFindings sets the RelatedFindings field's value.
func (s *FindingProviderFields) SetRelatedFindings(v []*RelatedFinding) *FindingProviderFields {
	s.RelatedFindings = v
	return s
}

// SetSeverity sets the Severity field's value.
func (s *FindingProviderFields) SetSeverity(v *FindingProviderSeverity) *FindingProviderFields {
	s.Severity = v
	return s
}

// SetTypes sets the Types field's value.
func (s *FindingProviderFields) SetTypes(v []*string) *FindingProviderFields {
	s.Types = v
	return s
}

// The severity assigned to a finding by the finding provider. This object may
// include one or more of the following attributes:
//
//   - Label
//
//   - Normalized
//
//   - Original
//
//   - Product
//
// If a BatchImportFindings (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_BatchImportFindings.html)
// request for a new finding only provides Label or only provides Normalized,
// Security Hub automatically populates the value of the other field.
//
// The Normalized and Product attributes are included in the FindingProviderSeverity
// structure to preserve the historical information associated with the finding,
// even if the top-level Severity object is later modified using the BatchUpdateFindings
// (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_BatchUpdateFindings.html)
// operation.
//
// If the top-level Finding.Severity object is present, but Finding.FindingProviderFields
// isn't present, Security Hub creates the FindingProviderFields.Severity object
// and copies the entire Finding.Severity object into it. This ensures that
// the original, provider-supplied details are retained within the FindingProviderFields.Severity
// object, even if the top-level Severity object is overwritten.
type FindingProviderSeverity struct {
	_ struct{} `type:"structure"`

	// The severity label assigned to the finding by the finding provider.
	Label *string `type:"string" enum:"SeverityLabel"`

	// The finding provider's original value for the severity.
	//
	// Length Constraints: Minimum length of 1. Maximum length of 64.
	Original *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FindingProviderSeverity) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FindingProviderSeverity) GoString() string {
	return s.String()
}

// SetLabel sets the Label field's value.
func (s *FindingProviderSeverity) SetLabel(v string) *FindingProviderSeverity {
	s.Label = &v
	return s
}

// SetOriginal sets the Original field's value.
func (s *FindingProviderSeverity) SetOriginal(v string) *FindingProviderSeverity {
	s.Original = &v
	return s
}

// Defines the behavior of the firewall.
type FirewallPolicyDetails struct {
	_ struct{} `type:"structure"`

	// The stateful rule groups that are used in the firewall policy.
	StatefulRuleGroupReferences []*FirewallPolicyStatefulRuleGroupReferencesDetails `type:"list"`

	// The custom action definitions that are available to use in the firewall policy's
	// StatelessDefaultActions setting.
	StatelessCustomActions []*FirewallPolicyStatelessCustomActionsDetails `type:"list"`

	// The actions to take on a packet if it doesn't match any of the stateless
	// rules in the policy.
	//
	// You must specify a standard action (aws:pass, aws:drop, aws:forward_to_sfe),
	// and can optionally include a custom action from StatelessCustomActions.
	StatelessDefaultActions []*string `type:"list"`

	// The actions to take on a fragmented UDP packet if it doesn't match any of
	// the stateless rules in the policy.
	//
	// You must specify a standard action (aws:pass, aws:drop, aws:forward_to_sfe),
	// and can optionally include a custom action from StatelessCustomActions.
	StatelessFragmentDefaultActions []*string `type:"list"`

	// The stateless rule groups that are used in the firewall policy.
	StatelessRuleGroupReferences []*FirewallPolicyStatelessRuleGroupReferencesDetails `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 FirewallPolicyDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FirewallPolicyDetails) GoString() string {
	return s.String()
}

// SetStatefulRuleGroupReferences sets the StatefulRuleGroupReferences field's value.
func (s *FirewallPolicyDetails) SetStatefulRuleGroupReferences(v []*FirewallPolicyStatefulRuleGroupReferencesDetails) *FirewallPolicyDetails {
	s.StatefulRuleGroupReferences = v
	return s
}

// SetStatelessCustomActions sets the StatelessCustomActions field's value.
func (s *FirewallPolicyDetails) SetStatelessCustomActions(v []*FirewallPolicyStatelessCustomActionsDetails) *FirewallPolicyDetails {
	s.StatelessCustomActions = v
	return s
}

// SetStatelessDefaultActions sets the StatelessDefaultActions field's value.
func (s *FirewallPolicyDetails) SetStatelessDefaultActions(v []*string) *FirewallPolicyDetails {
	s.StatelessDefaultActions = v
	return s
}

// SetStatelessFragmentDefaultActions sets the StatelessFragmentDefaultActions field's value.
func (s *FirewallPolicyDetails) SetStatelessFragmentDefaultActions(v []*string) *FirewallPolicyDetails {
	s.StatelessFragmentDefaultActions = v
	return s
}

// SetStatelessRuleGroupReferences sets the StatelessRuleGroupReferences field's value.
func (s *FirewallPolicyDetails) SetStatelessRuleGroupReferences(v []*FirewallPolicyStatelessRuleGroupReferencesDetails) *FirewallPolicyDetails {
	s.StatelessRuleGroupReferences = v
	return s
}

// A stateful rule group that is used by the firewall policy.
type FirewallPolicyStatefulRuleGroupReferencesDetails struct {
	_ struct{} `type:"structure"`

	// The ARN of the stateful rule group.
	ResourceArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FirewallPolicyStatefulRuleGroupReferencesDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FirewallPolicyStatefulRuleGroupReferencesDetails) GoString() string {
	return s.String()
}

// SetResourceArn sets the ResourceArn field's value.
func (s *FirewallPolicyStatefulRuleGroupReferencesDetails) SetResourceArn(v string) *FirewallPolicyStatefulRuleGroupReferencesDetails {
	s.ResourceArn = &v
	return s
}

// A custom action that can be used for stateless packet handling.
type FirewallPolicyStatelessCustomActionsDetails struct {
	_ struct{} `type:"structure"`

	// The definition of the custom action.
	ActionDefinition *StatelessCustomActionDefinition `type:"structure"`

	// The name of the custom action.
	ActionName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FirewallPolicyStatelessCustomActionsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FirewallPolicyStatelessCustomActionsDetails) GoString() string {
	return s.String()
}

// SetActionDefinition sets the ActionDefinition field's value.
func (s *FirewallPolicyStatelessCustomActionsDetails) SetActionDefinition(v *StatelessCustomActionDefinition) *FirewallPolicyStatelessCustomActionsDetails {
	s.ActionDefinition = v
	return s
}

// SetActionName sets the ActionName field's value.
func (s *FirewallPolicyStatelessCustomActionsDetails) SetActionName(v string) *FirewallPolicyStatelessCustomActionsDetails {
	s.ActionName = &v
	return s
}

// A stateless rule group that is used by the firewall policy.
type FirewallPolicyStatelessRuleGroupReferencesDetails struct {
	_ struct{} `type:"structure"`

	// The order in which to run the stateless rule group.
	Priority *int64 `type:"integer"`

	// The ARN of the stateless rule group.
	ResourceArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FirewallPolicyStatelessRuleGroupReferencesDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FirewallPolicyStatelessRuleGroupReferencesDetails) GoString() string {
	return s.String()
}

// SetPriority sets the Priority field's value.
func (s *FirewallPolicyStatelessRuleGroupReferencesDetails) SetPriority(v int64) *FirewallPolicyStatelessRuleGroupReferencesDetails {
	s.Priority = &v
	return s
}

// SetResourceArn sets the ResourceArn field's value.
func (s *FirewallPolicyStatelessRuleGroupReferencesDetails) SetResourceArn(v string) *FirewallPolicyStatelessRuleGroupReferencesDetails {
	s.ResourceArn = &v
	return s
}

// Provides metadata for the Amazon CodeGuru detector associated with a finding.
// This field pertains to findings that relate to Lambda functions. Amazon Inspector
// identifies policy violations and vulnerabilities in Lambda function code
// based on internal detectors developed in collaboration with Amazon CodeGuru.
// Security Hub receives those findings.
type GeneratorDetails struct {
	_ struct{} `type:"structure"`

	// The description of the detector used to identify the code vulnerability.
	Description *string `type:"string"`

	// An array of tags used to identify the detector associated with the finding.
	//
	// Array Members: Minimum number of 0 items. Maximum number of 10 items.
	Labels []*string `type:"list"`

	// The name of the detector used to identify the code vulnerability.
	Name *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GeneratorDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GeneratorDetails) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *GeneratorDetails) SetDescription(v string) *GeneratorDetails {
	s.Description = &v
	return s
}

// SetLabels sets the Labels field's value.
func (s *GeneratorDetails) SetLabels(v []*string) *GeneratorDetails {
	s.Labels = v
	return s
}

// SetName sets the Name field's value.
func (s *GeneratorDetails) SetName(v string) *GeneratorDetails {
	s.Name = &v
	return s
}

// Provides the latitude and longitude coordinates of a location.
type GeoLocation struct {
	_ struct{} `type:"structure"`

	// The latitude of the location.
	Lat *float64 `type:"double"`

	// The longitude of the location.
	Lon *float64 `type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GeoLocation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GeoLocation) GoString() string {
	return s.String()
}

// SetLat sets the Lat field's value.
func (s *GeoLocation) SetLat(v float64) *GeoLocation {
	s.Lat = &v
	return s
}

// SetLon sets the Lon field's value.
func (s *GeoLocation) SetLon(v float64) *GeoLocation {
	s.Lon = &v
	return s
}

type GetAdministratorAccountInput struct {
	_ struct{} `type:"structure" nopayload:"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 GetAdministratorAccountInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetAdministratorAccountInput) GoString() string {
	return s.String()
}

type GetAdministratorAccountOutput struct {
	_ struct{} `type:"structure"`

	// Details about an invitation.
	Administrator *Invitation `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 GetAdministratorAccountOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetAdministratorAccountOutput) GoString() string {
	return s.String()
}

// SetAdministrator sets the Administrator field's value.
func (s *GetAdministratorAccountOutput) SetAdministrator(v *Invitation) *GetAdministratorAccountOutput {
	s.Administrator = v
	return s
}

type GetConfigurationPolicyAssociationInput struct {
	_ struct{} `type:"structure"`

	// The target account ID, organizational unit ID, or the root ID to retrieve
	// the association for.
	//
	// Target is a required field
	Target *Target `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 GetConfigurationPolicyAssociationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetConfigurationPolicyAssociationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetConfigurationPolicyAssociationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetConfigurationPolicyAssociationInput"}
	if s.Target == nil {
		invalidParams.Add(request.NewErrParamRequired("Target"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetTarget sets the Target field's value.
func (s *GetConfigurationPolicyAssociationInput) SetTarget(v *Target) *GetConfigurationPolicyAssociationInput {
	s.Target = v
	return s
}

type GetConfigurationPolicyAssociationOutput struct {
	_ struct{} `type:"structure"`

	// The current status of the association between the specified target and the
	// configuration.
	AssociationStatus *string `type:"string" enum:"ConfigurationPolicyAssociationStatus"`

	// The explanation for a FAILED value for AssociationStatus.
	AssociationStatusMessage *string `type:"string"`

	// Indicates whether the association between the specified target and the configuration
	// was directly applied by the Security Hub delegated administrator or inherited
	// from a parent.
	AssociationType *string `type:"string" enum:"AssociationType"`

	// The universally unique identifier (UUID) of a configuration policy. For self-managed
	// behavior, the value is SELF_MANAGED_SECURITY_HUB.
	ConfigurationPolicyId *string `type:"string"`

	// The target account ID, organizational unit ID, or the root ID for which the
	// association is retrieved.
	TargetId *string `type:"string"`

	// Specifies whether the target is an Amazon Web Services account, organizational
	// unit, or the organization root.
	TargetType *string `type:"string" enum:"TargetType"`

	// The date and time, in UTC and ISO 8601 format, that the configuration policy
	// association was last updated.
	UpdatedAt *time.Time `type:"timestamp" timestampFormat:"iso8601"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetConfigurationPolicyAssociationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetConfigurationPolicyAssociationOutput) GoString() string {
	return s.String()
}

// SetAssociationStatus sets the AssociationStatus field's value.
func (s *GetConfigurationPolicyAssociationOutput) SetAssociationStatus(v string) *GetConfigurationPolicyAssociationOutput {
	s.AssociationStatus = &v
	return s
}

// SetAssociationStatusMessage sets the AssociationStatusMessage field's value.
func (s *GetConfigurationPolicyAssociationOutput) SetAssociationStatusMessage(v string) *GetConfigurationPolicyAssociationOutput {
	s.AssociationStatusMessage = &v
	return s
}

// SetAssociationType sets the AssociationType field's value.
func (s *GetConfigurationPolicyAssociationOutput) SetAssociationType(v string) *GetConfigurationPolicyAssociationOutput {
	s.AssociationType = &v
	return s
}

// SetConfigurationPolicyId sets the ConfigurationPolicyId field's value.
func (s *GetConfigurationPolicyAssociationOutput) SetConfigurationPolicyId(v string) *GetConfigurationPolicyAssociationOutput {
	s.ConfigurationPolicyId = &v
	return s
}

// SetTargetId sets the TargetId field's value.
func (s *GetConfigurationPolicyAssociationOutput) SetTargetId(v string) *GetConfigurationPolicyAssociationOutput {
	s.TargetId = &v
	return s
}

// SetTargetType sets the TargetType field's value.
func (s *GetConfigurationPolicyAssociationOutput) SetTargetType(v string) *GetConfigurationPolicyAssociationOutput {
	s.TargetType = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *GetConfigurationPolicyAssociationOutput) SetUpdatedAt(v time.Time) *GetConfigurationPolicyAssociationOutput {
	s.UpdatedAt = &v
	return s
}

type GetConfigurationPolicyInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) or universally unique identifier (UUID) of
	// the configuration policy.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"Identifier" 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 GetConfigurationPolicyInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetConfigurationPolicyInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetConfigurationPolicyInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetConfigurationPolicyInput"}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetIdentifier sets the Identifier field's value.
func (s *GetConfigurationPolicyInput) SetIdentifier(v string) *GetConfigurationPolicyInput {
	s.Identifier = &v
	return s
}

type GetConfigurationPolicyOutput struct {
	_ struct{} `type:"structure"`

	// The ARN of the configuration policy.
	Arn *string `type:"string"`

	// An object that defines how Security Hub is configured. It includes whether
	// Security Hub is enabled or disabled, a list of enabled security standards,
	// a list of enabled or disabled security controls, and a list of custom parameter
	// values for specified controls. If the policy includes a list of security
	// controls that are enabled, Security Hub disables all other controls (including
	// newly released controls). If the policy includes a list of security controls
	// that are disabled, Security Hub enables all other controls (including newly
	// released controls).
	ConfigurationPolicy *Policy `type:"structure"`

	// The date and time, in UTC and ISO 8601 format, that the configuration policy
	// was created.
	CreatedAt *time.Time `type:"timestamp" timestampFormat:"iso8601"`

	// The description of the configuration policy.
	Description *string `type:"string"`

	// The UUID of the configuration policy.
	Id *string `type:"string"`

	// The name of the configuration policy.
	Name *string `type:"string"`

	// The date and time, in UTC and ISO 8601 format, that the configuration policy
	// was last updated.
	UpdatedAt *time.Time `type:"timestamp" timestampFormat:"iso8601"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetConfigurationPolicyOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetConfigurationPolicyOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *GetConfigurationPolicyOutput) SetArn(v string) *GetConfigurationPolicyOutput {
	s.Arn = &v
	return s
}

// SetConfigurationPolicy sets the ConfigurationPolicy field's value.
func (s *GetConfigurationPolicyOutput) SetConfigurationPolicy(v *Policy) *GetConfigurationPolicyOutput {
	s.ConfigurationPolicy = v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *GetConfigurationPolicyOutput) SetCreatedAt(v time.Time) *GetConfigurationPolicyOutput {
	s.CreatedAt = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *GetConfigurationPolicyOutput) SetDescription(v string) *GetConfigurationPolicyOutput {
	s.Description = &v
	return s
}

// SetId sets the Id field's value.
func (s *GetConfigurationPolicyOutput) SetId(v string) *GetConfigurationPolicyOutput {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetConfigurationPolicyOutput) SetName(v string) *GetConfigurationPolicyOutput {
	s.Name = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *GetConfigurationPolicyOutput) SetUpdatedAt(v time.Time) *GetConfigurationPolicyOutput {
	s.UpdatedAt = &v
	return s
}

type GetEnabledStandardsInput struct {
	_ struct{} `type:"structure"`

	// The maximum number of results to return in the response.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token that is required for pagination. On your first call to the GetEnabledStandards
	// operation, set the value of this parameter to NULL.
	//
	// For subsequent calls to the operation, to continue listing data, set the
	// value of this parameter to the value returned from the previous response.
	NextToken *string `type:"string"`

	// The list of the standards subscription ARNs for the standards to retrieve.
	StandardsSubscriptionArns []*string `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 GetEnabledStandardsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEnabledStandardsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetEnabledStandardsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetEnabledStandardsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.StandardsSubscriptionArns != nil && len(s.StandardsSubscriptionArns) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("StandardsSubscriptionArns", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetEnabledStandardsInput) SetMaxResults(v int64) *GetEnabledStandardsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetEnabledStandardsInput) SetNextToken(v string) *GetEnabledStandardsInput {
	s.NextToken = &v
	return s
}

// SetStandardsSubscriptionArns sets the StandardsSubscriptionArns field's value.
func (s *GetEnabledStandardsInput) SetStandardsSubscriptionArns(v []*string) *GetEnabledStandardsInput {
	s.StandardsSubscriptionArns = v
	return s
}

type GetEnabledStandardsOutput struct {
	_ struct{} `type:"structure"`

	// The pagination token to use to request the next page of results.
	NextToken *string `type:"string"`

	// The list of StandardsSubscriptions objects that include information about
	// the enabled standards.
	StandardsSubscriptions []*StandardsSubscription `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 GetEnabledStandardsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEnabledStandardsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *GetEnabledStandardsOutput) SetNextToken(v string) *GetEnabledStandardsOutput {
	s.NextToken = &v
	return s
}

// SetStandardsSubscriptions sets the StandardsSubscriptions field's value.
func (s *GetEnabledStandardsOutput) SetStandardsSubscriptions(v []*StandardsSubscription) *GetEnabledStandardsOutput {
	s.StandardsSubscriptions = v
	return s
}

type GetFindingAggregatorInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ARN of the finding aggregator to return details for. To obtain the ARN,
	// use ListFindingAggregators.
	//
	// FindingAggregatorArn is a required field
	FindingAggregatorArn *string `location:"uri" locationName:"FindingAggregatorArn" 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 GetFindingAggregatorInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetFindingAggregatorInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetFindingAggregatorInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetFindingAggregatorInput"}
	if s.FindingAggregatorArn == nil {
		invalidParams.Add(request.NewErrParamRequired("FindingAggregatorArn"))
	}
	if s.FindingAggregatorArn != nil && len(*s.FindingAggregatorArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FindingAggregatorArn", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFindingAggregatorArn sets the FindingAggregatorArn field's value.
func (s *GetFindingAggregatorInput) SetFindingAggregatorArn(v string) *GetFindingAggregatorInput {
	s.FindingAggregatorArn = &v
	return s
}

type GetFindingAggregatorOutput struct {
	_ struct{} `type:"structure"`

	// The aggregation Region.
	FindingAggregationRegion *string `type:"string"`

	// The ARN of the finding aggregator.
	FindingAggregatorArn *string `type:"string"`

	// Indicates whether to link all Regions, all Regions except for a list of excluded
	// Regions, or a list of included Regions.
	RegionLinkingMode *string `type:"string"`

	// The list of excluded Regions or included Regions.
	Regions []*string `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 GetFindingAggregatorOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetFindingAggregatorOutput) GoString() string {
	return s.String()
}

// SetFindingAggregationRegion sets the FindingAggregationRegion field's value.
func (s *GetFindingAggregatorOutput) SetFindingAggregationRegion(v string) *GetFindingAggregatorOutput {
	s.FindingAggregationRegion = &v
	return s
}

// SetFindingAggregatorArn sets the FindingAggregatorArn field's value.
func (s *GetFindingAggregatorOutput) SetFindingAggregatorArn(v string) *GetFindingAggregatorOutput {
	s.FindingAggregatorArn = &v
	return s
}

// SetRegionLinkingMode sets the RegionLinkingMode field's value.
func (s *GetFindingAggregatorOutput) SetRegionLinkingMode(v string) *GetFindingAggregatorOutput {
	s.RegionLinkingMode = &v
	return s
}

// SetRegions sets the Regions field's value.
func (s *GetFindingAggregatorOutput) SetRegions(v []*string) *GetFindingAggregatorOutput {
	s.Regions = v
	return s
}

type GetFindingHistoryInput struct {
	_ struct{} `type:"structure"`

	// An ISO 8601-formatted timestamp that indicates the end time of the requested
	// finding history.
	//
	// If you provide values for both StartTime and EndTime, Security Hub returns
	// finding history for the specified time period. If you provide a value for
	// StartTime but not for EndTime, Security Hub returns finding history from
	// the StartTime to the time at which the API is called. If you provide a value
	// for EndTime but not for StartTime, Security Hub returns finding history from
	// the CreatedAt (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_AwsSecurityFindingFilters.html#securityhub-Type-AwsSecurityFindingFilters-CreatedAt)
	// timestamp of the finding to the EndTime. If you provide neither StartTime
	// nor EndTime, Security Hub returns finding history from the CreatedAt timestamp
	// of the finding to the time at which the API is called. In all of these scenarios,
	// the response is limited to 100 results, and the maximum time period is limited
	// to 90 days.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	EndTime *time.Time `type:"timestamp" timestampFormat:"iso8601"`

	// Identifies which finding to get the finding history for.
	//
	// FindingIdentifier is a required field
	FindingIdentifier *AwsSecurityFindingIdentifier `type:"structure" required:"true"`

	// The maximum number of results to be returned. If you don’t provide it,
	// Security Hub returns up to 100 results of finding history.
	MaxResults *int64 `min:"1" type:"integer"`

	// A token for pagination purposes. Provide NULL as the initial value. In subsequent
	// requests, provide the token included in the response to get up to an additional
	// 100 results of finding history. If you don’t provide NextToken, Security
	// Hub returns up to 100 results of finding history for each request.
	NextToken *string `type:"string"`

	// A timestamp that indicates the start time of the requested finding history.
	//
	// If you provide values for both StartTime and EndTime, Security Hub returns
	// finding history for the specified time period. If you provide a value for
	// StartTime but not for EndTime, Security Hub returns finding history from
	// the StartTime to the time at which the API is called. If you provide a value
	// for EndTime but not for StartTime, Security Hub returns finding history from
	// the CreatedAt (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_AwsSecurityFindingFilters.html#securityhub-Type-AwsSecurityFindingFilters-CreatedAt)
	// timestamp of the finding to the EndTime. If you provide neither StartTime
	// nor EndTime, Security Hub returns finding history from the CreatedAt timestamp
	// of the finding to the time at which the API is called. In all of these scenarios,
	// the response is limited to 100 results, and the maximum time period is limited
	// to 90 days.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	StartTime *time.Time `type:"timestamp" timestampFormat:"iso8601"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetFindingHistoryInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetFindingHistoryInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetFindingHistoryInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetFindingHistoryInput"}
	if s.FindingIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("FindingIdentifier"))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.FindingIdentifier != nil {
		if err := s.FindingIdentifier.Validate(); err != nil {
			invalidParams.AddNested("FindingIdentifier", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEndTime sets the EndTime field's value.
func (s *GetFindingHistoryInput) SetEndTime(v time.Time) *GetFindingHistoryInput {
	s.EndTime = &v
	return s
}

// SetFindingIdentifier sets the FindingIdentifier field's value.
func (s *GetFindingHistoryInput) SetFindingIdentifier(v *AwsSecurityFindingIdentifier) *GetFindingHistoryInput {
	s.FindingIdentifier = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetFindingHistoryInput) SetMaxResults(v int64) *GetFindingHistoryInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetFindingHistoryInput) SetNextToken(v string) *GetFindingHistoryInput {
	s.NextToken = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *GetFindingHistoryInput) SetStartTime(v time.Time) *GetFindingHistoryInput {
	s.StartTime = &v
	return s
}

type GetFindingHistoryOutput struct {
	_ struct{} `type:"structure"`

	// A token for pagination purposes. Provide this token in the subsequent request
	// to GetFindingsHistory to get up to an additional 100 results of history for
	// the same finding that you specified in your initial request.
	NextToken *string `type:"string"`

	// A list of events that altered the specified finding during the specified
	// time period.
	Records []*FindingHistoryRecord `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 GetFindingHistoryOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetFindingHistoryOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *GetFindingHistoryOutput) SetNextToken(v string) *GetFindingHistoryOutput {
	s.NextToken = &v
	return s
}

// SetRecords sets the Records field's value.
func (s *GetFindingHistoryOutput) SetRecords(v []*FindingHistoryRecord) *GetFindingHistoryOutput {
	s.Records = v
	return s
}

type GetFindingsInput struct {
	_ struct{} `type:"structure"`

	// The finding attributes used to define a condition to filter the returned
	// findings.
	//
	// You can filter by up to 10 finding attributes. For each attribute, you can
	// provide up to 20 filter values.
	//
	// Note that in the available filter fields, WorkflowState is deprecated. To
	// search for a finding based on its workflow status, use WorkflowStatus.
	Filters *AwsSecurityFindingFilters `type:"structure"`

	// The maximum number of findings to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token that is required for pagination. On your first call to the GetFindings
	// operation, set the value of this parameter to NULL.
	//
	// For subsequent calls to the operation, to continue listing data, set the
	// value of this parameter to the value returned from the previous response.
	NextToken *string `type:"string"`

	// The finding attributes used to sort the list of returned findings.
	SortCriteria []*SortCriterion `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 GetFindingsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetFindingsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetFindingsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetFindingsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *GetFindingsInput) SetFilters(v *AwsSecurityFindingFilters) *GetFindingsInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetFindingsInput) SetMaxResults(v int64) *GetFindingsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetFindingsInput) SetNextToken(v string) *GetFindingsInput {
	s.NextToken = &v
	return s
}

// SetSortCriteria sets the SortCriteria field's value.
func (s *GetFindingsInput) SetSortCriteria(v []*SortCriterion) *GetFindingsInput {
	s.SortCriteria = v
	return s
}

type GetFindingsOutput struct {
	_ struct{} `type:"structure"`

	// The findings that matched the filters specified in the request.
	//
	// Findings is a required field
	Findings []*AwsSecurityFinding `type:"list" required:"true"`

	// The pagination token to use to request the next page of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetFindingsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetFindingsOutput) GoString() string {
	return s.String()
}

// SetFindings sets the Findings field's value.
func (s *GetFindingsOutput) SetFindings(v []*AwsSecurityFinding) *GetFindingsOutput {
	s.Findings = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetFindingsOutput) SetNextToken(v string) *GetFindingsOutput {
	s.NextToken = &v
	return s
}

type GetInsightResultsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ARN of the insight for which to return results.
	//
	// InsightArn is a required field
	InsightArn *string `location:"uri" locationName:"InsightArn" 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 GetInsightResultsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInsightResultsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetInsightResultsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetInsightResultsInput"}
	if s.InsightArn == nil {
		invalidParams.Add(request.NewErrParamRequired("InsightArn"))
	}
	if s.InsightArn != nil && len(*s.InsightArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InsightArn", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInsightArn sets the InsightArn field's value.
func (s *GetInsightResultsInput) SetInsightArn(v string) *GetInsightResultsInput {
	s.InsightArn = &v
	return s
}

type GetInsightResultsOutput struct {
	_ struct{} `type:"structure"`

	// The insight results returned by the operation.
	//
	// InsightResults is a required field
	InsightResults *InsightResults `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 GetInsightResultsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInsightResultsOutput) GoString() string {
	return s.String()
}

// SetInsightResults sets the InsightResults field's value.
func (s *GetInsightResultsOutput) SetInsightResults(v *InsightResults) *GetInsightResultsOutput {
	s.InsightResults = v
	return s
}

type GetInsightsInput struct {
	_ struct{} `type:"structure"`

	// The ARNs of the insights to describe. If you do not provide any insight ARNs,
	// then GetInsights returns all of your custom insights. It does not return
	// any managed insights.
	InsightArns []*string `type:"list"`

	// The maximum number of items to return in the response.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token that is required for pagination. On your first call to the GetInsights
	// operation, set the value of this parameter to NULL.
	//
	// For subsequent calls to the operation, to continue listing data, set the
	// value of this parameter to the value returned from the previous response.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInsightsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInsightsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetInsightsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetInsightsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInsightArns sets the InsightArns field's value.
func (s *GetInsightsInput) SetInsightArns(v []*string) *GetInsightsInput {
	s.InsightArns = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetInsightsInput) SetMaxResults(v int64) *GetInsightsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetInsightsInput) SetNextToken(v string) *GetInsightsInput {
	s.NextToken = &v
	return s
}

type GetInsightsOutput struct {
	_ struct{} `type:"structure"`

	// The insights returned by the operation.
	//
	// Insights is a required field
	Insights []*Insight `type:"list" required:"true"`

	// The pagination token to use to request the next page of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInsightsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInsightsOutput) GoString() string {
	return s.String()
}

// SetInsights sets the Insights field's value.
func (s *GetInsightsOutput) SetInsights(v []*Insight) *GetInsightsOutput {
	s.Insights = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetInsightsOutput) SetNextToken(v string) *GetInsightsOutput {
	s.NextToken = &v
	return s
}

type GetInvitationsCountInput struct {
	_ struct{} `type:"structure" nopayload:"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 GetInvitationsCountInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInvitationsCountInput) GoString() string {
	return s.String()
}

type GetInvitationsCountOutput struct {
	_ struct{} `type:"structure"`

	// The number of all membership invitations sent to this Security Hub member
	// account, not including the currently accepted invitation.
	InvitationsCount *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInvitationsCountOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetInvitationsCountOutput) GoString() string {
	return s.String()
}

// SetInvitationsCount sets the InvitationsCount field's value.
func (s *GetInvitationsCountOutput) SetInvitationsCount(v int64) *GetInvitationsCountOutput {
	s.InvitationsCount = &v
	return s
}

type GetMasterAccountInput struct {
	_ struct{} `type:"structure" nopayload:"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 GetMasterAccountInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetMasterAccountInput) GoString() string {
	return s.String()
}

type GetMasterAccountOutput struct {
	_ struct{} `type:"structure"`

	// A list of details about the Security Hub administrator account for the current
	// member account.
	Master *Invitation `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 GetMasterAccountOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetMasterAccountOutput) GoString() string {
	return s.String()
}

// SetMaster sets the Master field's value.
func (s *GetMasterAccountOutput) SetMaster(v *Invitation) *GetMasterAccountOutput {
	s.Master = v
	return s
}

type GetMembersInput struct {
	_ struct{} `type:"structure"`

	// The list of account IDs for the Security Hub member accounts to return the
	// details for.
	//
	// AccountIds is a required field
	AccountIds []*string `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 GetMembersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetMembersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetMembersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetMembersInput"}
	if s.AccountIds == nil {
		invalidParams.Add(request.NewErrParamRequired("AccountIds"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccountIds sets the AccountIds field's value.
func (s *GetMembersInput) SetAccountIds(v []*string) *GetMembersInput {
	s.AccountIds = v
	return s
}

type GetMembersOutput struct {
	_ struct{} `type:"structure"`

	// The list of details about the Security Hub member accounts.
	Members []*Member `type:"list"`

	// The list of Amazon Web Services accounts that could not be processed. For
	// each account, the list includes the account ID and the email address.
	UnprocessedAccounts []*Result `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 GetMembersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetMembersOutput) GoString() string {
	return s.String()
}

// SetMembers sets the Members field's value.
func (s *GetMembersOutput) SetMembers(v []*Member) *GetMembersOutput {
	s.Members = v
	return s
}

// SetUnprocessedAccounts sets the UnprocessedAccounts field's value.
func (s *GetMembersOutput) SetUnprocessedAccounts(v []*Result) *GetMembersOutput {
	s.UnprocessedAccounts = v
	return s
}

type GetSecurityControlDefinitionInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the security control to retrieve the definition for. This field
	// doesn’t accept an Amazon Resource Name (ARN).
	//
	// SecurityControlId is a required field
	SecurityControlId *string `location:"querystring" locationName:"SecurityControlId" 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 GetSecurityControlDefinitionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSecurityControlDefinitionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetSecurityControlDefinitionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetSecurityControlDefinitionInput"}
	if s.SecurityControlId == nil {
		invalidParams.Add(request.NewErrParamRequired("SecurityControlId"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSecurityControlId sets the SecurityControlId field's value.
func (s *GetSecurityControlDefinitionInput) SetSecurityControlId(v string) *GetSecurityControlDefinitionInput {
	s.SecurityControlId = &v
	return s
}

type GetSecurityControlDefinitionOutput struct {
	_ struct{} `type:"structure"`

	// Provides metadata for a security control, including its unique standard-agnostic
	// identifier, title, description, severity, availability in Amazon Web Services
	// Regions, and a link to remediation steps.
	//
	// SecurityControlDefinition is a required field
	SecurityControlDefinition *SecurityControlDefinition `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 GetSecurityControlDefinitionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSecurityControlDefinitionOutput) GoString() string {
	return s.String()
}

// SetSecurityControlDefinition sets the SecurityControlDefinition field's value.
func (s *GetSecurityControlDefinitionOutput) SetSecurityControlDefinition(v *SecurityControlDefinition) *GetSecurityControlDefinitionOutput {
	s.SecurityControlDefinition = v
	return s
}

// An Internet Control Message Protocol (ICMP) type and code.
type IcmpTypeCode struct {
	_ struct{} `type:"structure"`

	// The ICMP code for which to deny or allow access. To deny or allow all codes,
	// use the value -1.
	Code *int64 `type:"integer"`

	// The ICMP type for which to deny or allow access. To deny or allow all types,
	// use the value -1.
	Type *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IcmpTypeCode) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IcmpTypeCode) GoString() string {
	return s.String()
}

// SetCode sets the Code field's value.
func (s *IcmpTypeCode) SetCode(v int64) *IcmpTypeCode {
	s.Code = &v
	return s
}

// SetType sets the Type field's value.
func (s *IcmpTypeCode) SetType(v int64) *IcmpTypeCode {
	s.Type = &v
	return s
}

// The list of the findings that cannot be imported. For each finding, the list
// provides the error.
type ImportFindingsError struct {
	_ struct{} `type:"structure"`

	// The code of the error returned by the BatchImportFindings operation.
	//
	// ErrorCode is a required field
	ErrorCode *string `type:"string" required:"true"`

	// The message of the error returned by the BatchImportFindings operation.
	//
	// ErrorMessage is a required field
	ErrorMessage *string `type:"string" required:"true"`

	// The identifier of the finding that could not be updated.
	//
	// Id is a required field
	Id *string `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 ImportFindingsError) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImportFindingsError) GoString() string {
	return s.String()
}

// SetErrorCode sets the ErrorCode field's value.
func (s *ImportFindingsError) SetErrorCode(v string) *ImportFindingsError {
	s.ErrorCode = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *ImportFindingsError) SetErrorMessage(v string) *ImportFindingsError {
	s.ErrorMessage = &v
	return s
}

// SetId sets the Id field's value.
func (s *ImportFindingsError) SetId(v string) *ImportFindingsError {
	s.Id = &v
	return s
}

// Contains information about a Security Hub insight.
type Insight struct {
	_ struct{} `type:"structure"`

	// One or more attributes used to filter the findings included in the insight.
	// You can filter by up to ten finding attributes. For each attribute, you can
	// provide up to 20 filter values. The insight only includes findings that match
	// the criteria defined in the filters.
	//
	// Filters is a required field
	Filters *AwsSecurityFindingFilters `type:"structure" required:"true"`

	// The grouping attribute for the insight's findings. Indicates how to group
	// the matching findings, and identifies the type of item that the insight applies
	// to. For example, if an insight is grouped by resource identifier, then the
	// insight produces a list of resource identifiers.
	//
	// GroupByAttribute is a required field
	GroupByAttribute *string `type:"string" required:"true"`

	// The ARN of a Security Hub insight.
	//
	// InsightArn is a required field
	InsightArn *string `type:"string" required:"true"`

	// The name of a Security Hub insight.
	//
	// Name is a required field
	Name *string `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 Insight) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Insight) GoString() string {
	return s.String()
}

// SetFilters sets the Filters field's value.
func (s *Insight) SetFilters(v *AwsSecurityFindingFilters) *Insight {
	s.Filters = v
	return s
}

// SetGroupByAttribute sets the GroupByAttribute field's value.
func (s *Insight) SetGroupByAttribute(v string) *Insight {
	s.GroupByAttribute = &v
	return s
}

// SetInsightArn sets the InsightArn field's value.
func (s *Insight) SetInsightArn(v string) *Insight {
	s.InsightArn = &v
	return s
}

// SetName sets the Name field's value.
func (s *Insight) SetName(v string) *Insight {
	s.Name = &v
	return s
}

// The insight result values returned by the GetInsightResults operation.
type InsightResultValue struct {
	_ struct{} `type:"structure"`

	// The number of findings returned for each GroupByAttributeValue.
	//
	// Count is a required field
	Count *int64 `type:"integer" required:"true"`

	// The value of the attribute that the findings are grouped by for the insight
	// whose results are returned by the GetInsightResults operation.
	//
	// GroupByAttributeValue is a required field
	GroupByAttributeValue *string `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 InsightResultValue) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InsightResultValue) GoString() string {
	return s.String()
}

// SetCount sets the Count field's value.
func (s *InsightResultValue) SetCount(v int64) *InsightResultValue {
	s.Count = &v
	return s
}

// SetGroupByAttributeValue sets the GroupByAttributeValue field's value.
func (s *InsightResultValue) SetGroupByAttributeValue(v string) *InsightResultValue {
	s.GroupByAttributeValue = &v
	return s
}

// The insight results returned by the GetInsightResults operation.
type InsightResults struct {
	_ struct{} `type:"structure"`

	// The attribute that the findings are grouped by for the insight whose results
	// are returned by the GetInsightResults operation.
	//
	// GroupByAttribute is a required field
	GroupByAttribute *string `type:"string" required:"true"`

	// The ARN of the insight whose results are returned by the GetInsightResults
	// operation.
	//
	// InsightArn is a required field
	InsightArn *string `type:"string" required:"true"`

	// The list of insight result values returned by the GetInsightResults operation.
	//
	// ResultValues is a required field
	ResultValues []*InsightResultValue `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 InsightResults) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InsightResults) GoString() string {
	return s.String()
}

// SetGroupByAttribute sets the GroupByAttribute field's value.
func (s *InsightResults) SetGroupByAttribute(v string) *InsightResults {
	s.GroupByAttribute = &v
	return s
}

// SetInsightArn sets the InsightArn field's value.
func (s *InsightResults) SetInsightArn(v string) *InsightResults {
	s.InsightArn = &v
	return s
}

// SetResultValues sets the ResultValues field's value.
func (s *InsightResults) SetResultValues(v []*InsightResultValue) *InsightResults {
	s.ResultValues = v
	return s
}

// The options for customizing a security control parameter that is an integer.
type IntegerConfigurationOptions struct {
	_ struct{} `type:"structure"`

	// The Security Hub default value for a control parameter that is an integer.
	DefaultValue *int64 `type:"integer"`

	// The maximum valid value for a control parameter that is an integer.
	Max *int64 `type:"integer"`

	// The minimum valid value for a control parameter that is an integer.
	Min *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IntegerConfigurationOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IntegerConfigurationOptions) GoString() string {
	return s.String()
}

// SetDefaultValue sets the DefaultValue field's value.
func (s *IntegerConfigurationOptions) SetDefaultValue(v int64) *IntegerConfigurationOptions {
	s.DefaultValue = &v
	return s
}

// SetMax sets the Max field's value.
func (s *IntegerConfigurationOptions) SetMax(v int64) *IntegerConfigurationOptions {
	s.Max = &v
	return s
}

// SetMin sets the Min field's value.
func (s *IntegerConfigurationOptions) SetMin(v int64) *IntegerConfigurationOptions {
	s.Min = &v
	return s
}

// The options for customizing a security control parameter that is a list of
// integers.
type IntegerListConfigurationOptions struct {
	_ struct{} `type:"structure"`

	// The Security Hub default value for a control parameter that is a list of
	// integers.
	DefaultValue []*int64 `type:"list"`

	// The maximum valid value for a control parameter that is a list of integers.
	Max *int64 `type:"integer"`

	// The maximum number of list items that an interger list control parameter
	// can accept.
	MaxItems *int64 `type:"integer"`

	// The minimum valid value for a control parameter that is a list of integers.
	Min *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IntegerListConfigurationOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IntegerListConfigurationOptions) GoString() string {
	return s.String()
}

// SetDefaultValue sets the DefaultValue field's value.
func (s *IntegerListConfigurationOptions) SetDefaultValue(v []*int64) *IntegerListConfigurationOptions {
	s.DefaultValue = v
	return s
}

// SetMax sets the Max field's value.
func (s *IntegerListConfigurationOptions) SetMax(v int64) *IntegerListConfigurationOptions {
	s.Max = &v
	return s
}

// SetMaxItems sets the MaxItems field's value.
func (s *IntegerListConfigurationOptions) SetMaxItems(v int64) *IntegerListConfigurationOptions {
	s.MaxItems = &v
	return s
}

// SetMin sets the Min field's value.
func (s *IntegerListConfigurationOptions) SetMin(v int64) *IntegerListConfigurationOptions {
	s.Min = &v
	return s
}

// Internal server error.
type InternalException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Code_ *string `locationName:"Code" type:"string"`

	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 InternalException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InternalException) GoString() string {
	return s.String()
}

func newErrorInternalException(v protocol.ResponseMetadata) error {
	return &InternalException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InternalException) Code() string {
	return "InternalException"
}

// Message returns the exception's message.
func (s *InternalException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InternalException) OrigErr() error {
	return nil
}

func (s *InternalException) Error() string {
	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
}

// Status code returns the HTTP status code for the request's response error.
func (s *InternalException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InternalException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The account doesn't have permission to perform this action.
type InvalidAccessException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Code_ *string `locationName:"Code" type:"string"`

	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 InvalidAccessException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidAccessException) GoString() string {
	return s.String()
}

func newErrorInvalidAccessException(v protocol.ResponseMetadata) error {
	return &InvalidAccessException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InvalidAccessException) Code() string {
	return "InvalidAccessException"
}

// Message returns the exception's message.
func (s *InvalidAccessException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InvalidAccessException) OrigErr() error {
	return nil
}

func (s *InvalidAccessException) Error() string {
	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
}

// Status code returns the HTTP status code for the request's response error.
func (s *InvalidAccessException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InvalidAccessException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The request was rejected because you supplied an invalid or out-of-range
// value for an input parameter.
type InvalidInputException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Code_ *string `locationName:"Code" type:"string"`

	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidInputException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidInputException) GoString() string {
	return s.String()
}

func newErrorInvalidInputException(v protocol.ResponseMetadata) error {
	return &InvalidInputException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InvalidInputException) Code() string {
	return "InvalidInputException"
}

// Message returns the exception's message.
func (s *InvalidInputException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InvalidInputException) OrigErr() error {
	return nil
}

func (s *InvalidInputException) Error() string {
	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
}

// Status code returns the HTTP status code for the request's response error.
func (s *InvalidInputException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InvalidInputException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Details about an invitation.
type Invitation struct {
	_ struct{} `type:"structure"`

	// The account ID of the Security Hub administrator account that the invitation
	// was sent from.
	AccountId *string `type:"string"`

	// The ID of the invitation sent to the member account.
	InvitationId *string `type:"string"`

	// The timestamp of when the invitation was sent.
	InvitedAt *time.Time `type:"timestamp" timestampFormat:"iso8601"`

	// The current status of the association between the member and administrator
	// accounts.
	MemberStatus *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Invitation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Invitation) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *Invitation) SetAccountId(v string) *Invitation {
	s.AccountId = &v
	return s
}

// SetInvitationId sets the InvitationId field's value.
func (s *Invitation) SetInvitationId(v string) *Invitation {
	s.InvitationId = &v
	return s
}

// SetInvitedAt sets the InvitedAt field's value.
func (s *Invitation) SetInvitedAt(v time.Time) *Invitation {
	s.InvitedAt = &v
	return s
}

// SetMemberStatus sets the MemberStatus field's value.
func (s *Invitation) SetMemberStatus(v string) *Invitation {
	s.MemberStatus = &v
	return s
}

type InviteMembersInput struct {
	_ struct{} `type:"structure"`

	// The list of account IDs of the Amazon Web Services accounts to invite to
	// Security Hub as members.
	//
	// AccountIds is a required field
	AccountIds []*string `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 InviteMembersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InviteMembersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *InviteMembersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "InviteMembersInput"}
	if s.AccountIds == nil {
		invalidParams.Add(request.NewErrParamRequired("AccountIds"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccountIds sets the AccountIds field's value.
func (s *InviteMembersInput) SetAccountIds(v []*string) *InviteMembersInput {
	s.AccountIds = v
	return s
}

type InviteMembersOutput struct {
	_ struct{} `type:"structure"`

	// The list of Amazon Web Services accounts that could not be processed. For
	// each account, the list includes the account ID and the email address.
	UnprocessedAccounts []*Result `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 InviteMembersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InviteMembersOutput) GoString() string {
	return s.String()
}

// SetUnprocessedAccounts sets the UnprocessedAccounts field's value.
func (s *InviteMembersOutput) SetUnprocessedAccounts(v []*Result) *InviteMembersOutput {
	s.UnprocessedAccounts = v
	return s
}

// The IP filter for querying findings.
type IpFilter struct {
	_ struct{} `type:"structure"`

	// A finding's CIDR value.
	Cidr *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IpFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IpFilter) GoString() string {
	return s.String()
}

// SetCidr sets the Cidr field's value.
func (s *IpFilter) SetCidr(v string) *IpFilter {
	s.Cidr = &v
	return s
}

// Provides information about an internet provider.
type IpOrganizationDetails struct {
	_ struct{} `type:"structure"`

	// The Autonomous System Number (ASN) of the internet provider
	Asn *int64 `type:"integer"`

	// The name of the organization that registered the ASN.
	AsnOrg *string `type:"string"`

	// The ISP information for the internet provider.
	Isp *string `type:"string"`

	// The name of the internet provider.
	Org *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IpOrganizationDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IpOrganizationDetails) GoString() string {
	return s.String()
}

// SetAsn sets the Asn field's value.
func (s *IpOrganizationDetails) SetAsn(v int64) *IpOrganizationDetails {
	s.Asn = &v
	return s
}

// SetAsnOrg sets the AsnOrg field's value.
func (s *IpOrganizationDetails) SetAsnOrg(v string) *IpOrganizationDetails {
	s.AsnOrg = &v
	return s
}

// SetIsp sets the Isp field's value.
func (s *IpOrganizationDetails) SetIsp(v string) *IpOrganizationDetails {
	s.Isp = &v
	return s
}

// SetOrg sets the Org field's value.
func (s *IpOrganizationDetails) SetOrg(v string) *IpOrganizationDetails {
	s.Org = &v
	return s
}

// An IPV6 CIDR block association.
type Ipv6CidrBlockAssociation struct {
	_ struct{} `type:"structure"`

	// The association ID for the IPv6 CIDR block.
	AssociationId *string `type:"string"`

	// Information about the state of the CIDR block. Valid values are as follows:
	//
	//    * associating
	//
	//    * associated
	//
	//    * disassociating
	//
	//    * disassociated
	//
	//    * failed
	//
	//    * failing
	CidrBlockState *string `type:"string"`

	// The IPv6 CIDR block.
	Ipv6CidrBlock *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Ipv6CidrBlockAssociation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Ipv6CidrBlockAssociation) GoString() string {
	return s.String()
}

// SetAssociationId sets the AssociationId field's value.
func (s *Ipv6CidrBlockAssociation) SetAssociationId(v string) *Ipv6CidrBlockAssociation {
	s.AssociationId = &v
	return s
}

// SetCidrBlockState sets the CidrBlockState field's value.
func (s *Ipv6CidrBlockAssociation) SetCidrBlockState(v string) *Ipv6CidrBlockAssociation {
	s.CidrBlockState = &v
	return s
}

// SetIpv6CidrBlock sets the Ipv6CidrBlock field's value.
func (s *Ipv6CidrBlockAssociation) SetIpv6CidrBlock(v string) *Ipv6CidrBlockAssociation {
	s.Ipv6CidrBlock = &v
	return s
}

// A keyword filter for querying findings.
type KeywordFilter struct {
	_ struct{} `type:"structure"`

	// A value for the keyword.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s KeywordFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s KeywordFilter) GoString() string {
	return s.String()
}

// SetValue sets the Value field's value.
func (s *KeywordFilter) SetValue(v string) *KeywordFilter {
	s.Value = &v
	return s
}

// The request was rejected because it attempted to create resources beyond
// the current Amazon Web Services account or throttling limits. The error code
// describes the limit exceeded.
type LimitExceededException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Code_ *string `locationName:"Code" type:"string"`

	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LimitExceededException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LimitExceededException) GoString() string {
	return s.String()
}

func newErrorLimitExceededException(v protocol.ResponseMetadata) error {
	return &LimitExceededException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *LimitExceededException) Code() string {
	return "LimitExceededException"
}

// Message returns the exception's message.
func (s *LimitExceededException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *LimitExceededException) OrigErr() error {
	return nil
}

func (s *LimitExceededException) Error() string {
	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
}

// Status code returns the HTTP status code for the request's response error.
func (s *LimitExceededException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *LimitExceededException) RequestID() string {
	return s.RespMetadata.RequestID
}

type ListAutomationRulesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The maximum number of rules to return in the response. This currently ranges
	// from 1 to 100.
	MaxResults *int64 `location:"querystring" locationName:"MaxResults" min:"1" type:"integer"`

	// A token to specify where to start paginating the response. This is the NextToken
	// from a previously truncated response. On your first call to the ListAutomationRules
	// API, set the value of this parameter to NULL.
	NextToken *string `location:"querystring" locationName:"NextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListAutomationRulesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListAutomationRulesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListAutomationRulesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListAutomationRulesInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListAutomationRulesInput) SetMaxResults(v int64) *ListAutomationRulesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAutomationRulesInput) SetNextToken(v string) *ListAutomationRulesInput {
	s.NextToken = &v
	return s
}

type ListAutomationRulesOutput struct {
	_ struct{} `type:"structure"`

	// Metadata for rules in the calling account. The response includes rules with
	// a RuleStatus of ENABLED and DISABLED.
	AutomationRulesMetadata []*AutomationRulesMetadata `type:"list"`

	// A pagination token for the response.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListAutomationRulesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListAutomationRulesOutput) GoString() string {
	return s.String()
}

// SetAutomationRulesMetadata sets the AutomationRulesMetadata field's value.
func (s *ListAutomationRulesOutput) SetAutomationRulesMetadata(v []*AutomationRulesMetadata) *ListAutomationRulesOutput {
	s.AutomationRulesMetadata = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAutomationRulesOutput) SetNextToken(v string) *ListAutomationRulesOutput {
	s.NextToken = &v
	return s
}

type ListConfigurationPoliciesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The maximum number of results that's returned by ListConfigurationPolicies
	// in each page of the response. When this parameter is used, ListConfigurationPolicies
	// returns the specified number of results in a single page and a NextToken
	// response element. You can see the remaining results of the initial request
	// by sending another ListConfigurationPolicies request with the returned NextToken
	// value. A valid range for MaxResults is between 1 and 100.
	MaxResults *int64 `location:"querystring" locationName:"MaxResults" min:"1" type:"integer"`

	// The NextToken value that's returned from a previous paginated ListConfigurationPolicies
	// request where MaxResults was used but the results exceeded the value of that
	// parameter. Pagination continues from the MaxResults was used but the results
	// exceeded the value of that parameter. Pagination continues from the end of
	// the previous response that returned the NextToken value. This value is null
	// when there are no more results to return.
	NextToken *string `location:"querystring" locationName:"NextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListConfigurationPoliciesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListConfigurationPoliciesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListConfigurationPoliciesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListConfigurationPoliciesInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListConfigurationPoliciesInput) SetMaxResults(v int64) *ListConfigurationPoliciesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListConfigurationPoliciesInput) SetNextToken(v string) *ListConfigurationPoliciesInput {
	s.NextToken = &v
	return s
}

type ListConfigurationPoliciesOutput struct {
	_ struct{} `type:"structure"`

	// Provides metadata for each of your configuration policies.
	ConfigurationPolicySummaries []*ConfigurationPolicySummary `type:"list"`

	// The NextToken value to include in the next ListConfigurationPolicies request.
	// When the results of a ListConfigurationPolicies request exceed MaxResults,
	// this value can be used to retrieve the next page of results. This value is
	// null when there are no more results to return.
	NextToken *string `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 ListConfigurationPoliciesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListConfigurationPoliciesOutput) GoString() string {
	return s.String()
}

// SetConfigurationPolicySummaries sets the ConfigurationPolicySummaries field's value.
func (s *ListConfigurationPoliciesOutput) SetConfigurationPolicySummaries(v []*ConfigurationPolicySummary) *ListConfigurationPoliciesOutput {
	s.ConfigurationPolicySummaries = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListConfigurationPoliciesOutput) SetNextToken(v string) *ListConfigurationPoliciesOutput {
	s.NextToken = &v
	return s
}

type ListConfigurationPolicyAssociationsInput struct {
	_ struct{} `type:"structure"`

	// Options for filtering the ListConfigurationPolicyAssociations response. You
	// can filter by the Amazon Resource Name (ARN) or universally unique identifier
	// (UUID) of a configuration, AssociationType, or AssociationStatus.
	Filters *AssociationFilters `type:"structure"`

	// The maximum number of results that's returned by ListConfigurationPolicies
	// in each page of the response. When this parameter is used, ListConfigurationPolicyAssociations
	// returns the specified number of results in a single page and a NextToken
	// response element. You can see the remaining results of the initial request
	// by sending another ListConfigurationPolicyAssociations request with the returned
	// NextToken value. A valid range for MaxResults is between 1 and 100.
	MaxResults *int64 `min:"1" type:"integer"`

	// The NextToken value that's returned from a previous paginated ListConfigurationPolicyAssociations
	// request where MaxResults was used but the results exceeded the value of that
	// parameter. Pagination continues from the end of the previous response that
	// returned the NextToken value. This value is null when there are no more results
	// to return.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListConfigurationPolicyAssociationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListConfigurationPolicyAssociationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListConfigurationPolicyAssociationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListConfigurationPolicyAssociationsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *ListConfigurationPolicyAssociationsInput) SetFilters(v *AssociationFilters) *ListConfigurationPolicyAssociationsInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListConfigurationPolicyAssociationsInput) SetMaxResults(v int64) *ListConfigurationPolicyAssociationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListConfigurationPolicyAssociationsInput) SetNextToken(v string) *ListConfigurationPolicyAssociationsInput {
	s.NextToken = &v
	return s
}

type ListConfigurationPolicyAssociationsOutput struct {
	_ struct{} `type:"structure"`

	// An object that contains the details of each configuration policy association
	// that’s returned in a ListConfigurationPolicyAssociations request.
	ConfigurationPolicyAssociationSummaries []*ConfigurationPolicyAssociationSummary `type:"list"`

	// The NextToken value to include in the next ListConfigurationPolicyAssociations
	// request. When the results of a ListConfigurationPolicyAssociations request
	// exceed MaxResults, this value can be used to retrieve the next page of results.
	// This value is null when there are no more results to return.
	NextToken *string `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 ListConfigurationPolicyAssociationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListConfigurationPolicyAssociationsOutput) GoString() string {
	return s.String()
}

// SetConfigurationPolicyAssociationSummaries sets the ConfigurationPolicyAssociationSummaries field's value.
func (s *ListConfigurationPolicyAssociationsOutput) SetConfigurationPolicyAssociationSummaries(v []*ConfigurationPolicyAssociationSummary) *ListConfigurationPolicyAssociationsOutput {
	s.ConfigurationPolicyAssociationSummaries = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListConfigurationPolicyAssociationsOutput) SetNextToken(v string) *ListConfigurationPolicyAssociationsOutput {
	s.NextToken = &v
	return s
}

type ListEnabledProductsForImportInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The maximum number of items to return in the response.
	MaxResults *int64 `location:"querystring" locationName:"MaxResults" min:"1" type:"integer"`

	// The token that is required for pagination. On your first call to the ListEnabledProductsForImport
	// operation, set the value of this parameter to NULL.
	//
	// For subsequent calls to the operation, to continue listing data, set the
	// value of this parameter to the value returned from the previous response.
	NextToken *string `location:"querystring" locationName:"NextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEnabledProductsForImportInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEnabledProductsForImportInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListEnabledProductsForImportInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListEnabledProductsForImportInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListEnabledProductsForImportInput) SetMaxResults(v int64) *ListEnabledProductsForImportInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListEnabledProductsForImportInput) SetNextToken(v string) *ListEnabledProductsForImportInput {
	s.NextToken = &v
	return s
}

type ListEnabledProductsForImportOutput struct {
	_ struct{} `type:"structure"`

	// The pagination token to use to request the next page of results.
	NextToken *string `type:"string"`

	// The list of ARNs for the resources that represent your subscriptions to products.
	ProductSubscriptions []*string `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 ListEnabledProductsForImportOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEnabledProductsForImportOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListEnabledProductsForImportOutput) SetNextToken(v string) *ListEnabledProductsForImportOutput {
	s.NextToken = &v
	return s
}

// SetProductSubscriptions sets the ProductSubscriptions field's value.
func (s *ListEnabledProductsForImportOutput) SetProductSubscriptions(v []*string) *ListEnabledProductsForImportOutput {
	s.ProductSubscriptions = v
	return s
}

type ListFindingAggregatorsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The maximum number of results to return. This operation currently only returns
	// a single result.
	MaxResults *int64 `location:"querystring" locationName:"MaxResults" min:"1" type:"integer"`

	// The token returned with the previous set of results. Identifies the next
	// set of results to return.
	NextToken *string `location:"querystring" locationName:"NextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListFindingAggregatorsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListFindingAggregatorsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListFindingAggregatorsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListFindingAggregatorsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListFindingAggregatorsInput) SetMaxResults(v int64) *ListFindingAggregatorsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListFindingAggregatorsInput) SetNextToken(v string) *ListFindingAggregatorsInput {
	s.NextToken = &v
	return s
}

type ListFindingAggregatorsOutput struct {
	_ struct{} `type:"structure"`

	// The list of finding aggregators. This operation currently only returns a
	// single result.
	FindingAggregators []*FindingAggregator `type:"list"`

	// If there are more results, this is the token to provide in the next call
	// to ListFindingAggregators.
	//
	// This operation currently only returns a single result.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListFindingAggregatorsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListFindingAggregatorsOutput) GoString() string {
	return s.String()
}

// SetFindingAggregators sets the FindingAggregators field's value.
func (s *ListFindingAggregatorsOutput) SetFindingAggregators(v []*FindingAggregator) *ListFindingAggregatorsOutput {
	s.FindingAggregators = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListFindingAggregatorsOutput) SetNextToken(v string) *ListFindingAggregatorsOutput {
	s.NextToken = &v
	return s
}

type ListInvitationsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The maximum number of items to return in the response.
	MaxResults *int64 `location:"querystring" locationName:"MaxResults" min:"1" type:"integer"`

	// The token that is required for pagination. On your first call to the ListInvitations
	// operation, set the value of this parameter to NULL.
	//
	// For subsequent calls to the operation, to continue listing data, set the
	// value of this parameter to the value returned from the previous response.
	NextToken *string `location:"querystring" locationName:"NextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListInvitationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListInvitationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListInvitationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListInvitationsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListInvitationsInput) SetMaxResults(v int64) *ListInvitationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListInvitationsInput) SetNextToken(v string) *ListInvitationsInput {
	s.NextToken = &v
	return s
}

type ListInvitationsOutput struct {
	_ struct{} `type:"structure"`

	// The details of the invitations returned by the operation.
	Invitations []*Invitation `type:"list"`

	// The pagination token to use to request the next page of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListInvitationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListInvitationsOutput) GoString() string {
	return s.String()
}

// SetInvitations sets the Invitations field's value.
func (s *ListInvitationsOutput) SetInvitations(v []*Invitation) *ListInvitationsOutput {
	s.Invitations = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListInvitationsOutput) SetNextToken(v string) *ListInvitationsOutput {
	s.NextToken = &v
	return s
}

type ListMembersInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The maximum number of items to return in the response.
	MaxResults *int64 `location:"querystring" locationName:"MaxResults" min:"1" type:"integer"`

	// The token that is required for pagination. On your first call to the ListMembers
	// operation, set the value of this parameter to NULL.
	//
	// For subsequent calls to the operation, to continue listing data, set the
	// value of this parameter to the value returned from the previous response.
	NextToken *string `location:"querystring" locationName:"NextToken" type:"string"`

	// Specifies which member accounts to include in the response based on their
	// relationship status with the administrator account. The default value is
	// TRUE.
	//
	// If OnlyAssociated is set to TRUE, the response includes member accounts whose
	// relationship status with the administrator account is set to ENABLED.
	//
	// If OnlyAssociated is set to FALSE, the response includes all existing member
	// accounts.
	OnlyAssociated *bool `location:"querystring" locationName:"OnlyAssociated" 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 ListMembersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListMembersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListMembersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListMembersInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListMembersInput) SetMaxResults(v int64) *ListMembersInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListMembersInput) SetNextToken(v string) *ListMembersInput {
	s.NextToken = &v
	return s
}

// SetOnlyAssociated sets the OnlyAssociated field's value.
func (s *ListMembersInput) SetOnlyAssociated(v bool) *ListMembersInput {
	s.OnlyAssociated = &v
	return s
}

type ListMembersOutput struct {
	_ struct{} `type:"structure"`

	// Member details returned by the operation.
	Members []*Member `type:"list"`

	// The pagination token to use to request the next page of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListMembersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListMembersOutput) GoString() string {
	return s.String()
}

// SetMembers sets the Members field's value.
func (s *ListMembersOutput) SetMembers(v []*Member) *ListMembersOutput {
	s.Members = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListMembersOutput) SetNextToken(v string) *ListMembersOutput {
	s.NextToken = &v
	return s
}

type ListOrganizationAdminAccountsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The maximum number of items to return in the response.
	MaxResults *int64 `location:"querystring" locationName:"MaxResults" min:"1" type:"integer"`

	// The token that is required for pagination. On your first call to the ListOrganizationAdminAccounts
	// operation, set the value of this parameter to NULL. For subsequent calls
	// to the operation, to continue listing data, set the value of this parameter
	// to the value returned from the previous response.
	NextToken *string `location:"querystring" locationName:"NextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListOrganizationAdminAccountsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListOrganizationAdminAccountsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListOrganizationAdminAccountsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListOrganizationAdminAccountsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListOrganizationAdminAccountsInput) SetMaxResults(v int64) *ListOrganizationAdminAccountsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListOrganizationAdminAccountsInput) SetNextToken(v string) *ListOrganizationAdminAccountsInput {
	s.NextToken = &v
	return s
}

type ListOrganizationAdminAccountsOutput struct {
	_ struct{} `type:"structure"`

	// The list of Security Hub administrator accounts.
	AdminAccounts []*AdminAccount `type:"list"`

	// The pagination token to use to request the next page of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListOrganizationAdminAccountsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListOrganizationAdminAccountsOutput) GoString() string {
	return s.String()
}

// SetAdminAccounts sets the AdminAccounts field's value.
func (s *ListOrganizationAdminAccountsOutput) SetAdminAccounts(v []*AdminAccount) *ListOrganizationAdminAccountsOutput {
	s.AdminAccounts = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListOrganizationAdminAccountsOutput) SetNextToken(v string) *ListOrganizationAdminAccountsOutput {
	s.NextToken = &v
	return s
}

type ListSecurityControlDefinitionsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// An optional parameter that limits the total results of the API response to
	// the specified number. If this parameter isn't provided in the request, the
	// results include the first 25 security controls that apply to the specified
	// standard. The results also include a NextToken parameter that you can use
	// in a subsequent API call to get the next 25 controls. This repeats until
	// all controls for the standard are returned.
	MaxResults *int64 `location:"querystring" locationName:"MaxResults" min:"1" type:"integer"`

	// Optional pagination parameter.
	NextToken *string `location:"querystring" locationName:"NextToken" type:"string"`

	// The Amazon Resource Name (ARN) of the standard that you want to view controls
	// for.
	StandardsArn *string `location:"querystring" locationName:"StandardsArn" 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 ListSecurityControlDefinitionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSecurityControlDefinitionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListSecurityControlDefinitionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListSecurityControlDefinitionsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListSecurityControlDefinitionsInput) SetMaxResults(v int64) *ListSecurityControlDefinitionsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListSecurityControlDefinitionsInput) SetNextToken(v string) *ListSecurityControlDefinitionsInput {
	s.NextToken = &v
	return s
}

// SetStandardsArn sets the StandardsArn field's value.
func (s *ListSecurityControlDefinitionsInput) SetStandardsArn(v string) *ListSecurityControlDefinitionsInput {
	s.StandardsArn = &v
	return s
}

type ListSecurityControlDefinitionsOutput struct {
	_ struct{} `type:"structure"`

	// A pagination parameter that's included in the response only if it was included
	// in the request.
	NextToken *string `type:"string"`

	// An array of controls that apply to the specified standard.
	//
	// SecurityControlDefinitions is a required field
	SecurityControlDefinitions []*SecurityControlDefinition `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 ListSecurityControlDefinitionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSecurityControlDefinitionsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListSecurityControlDefinitionsOutput) SetNextToken(v string) *ListSecurityControlDefinitionsOutput {
	s.NextToken = &v
	return s
}

// SetSecurityControlDefinitions sets the SecurityControlDefinitions field's value.
func (s *ListSecurityControlDefinitionsOutput) SetSecurityControlDefinitions(v []*SecurityControlDefinition) *ListSecurityControlDefinitionsOutput {
	s.SecurityControlDefinitions = v
	return s
}

type ListStandardsControlAssociationsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// An optional parameter that limits the total results of the API response to
	// the specified number. If this parameter isn't provided in the request, the
	// results include the first 25 standard and control associations. The results
	// also include a NextToken parameter that you can use in a subsequent API call
	// to get the next 25 associations. This repeats until all associations for
	// the specified control are returned. The number of results is limited by the
	// number of supported Security Hub standards that you've enabled in the calling
	// account.
	MaxResults *int64 `location:"querystring" locationName:"MaxResults" min:"1" type:"integer"`

	// Optional pagination parameter.
	NextToken *string `location:"querystring" locationName:"NextToken" type:"string"`

	// The identifier of the control (identified with SecurityControlId, SecurityControlArn,
	// or a mix of both parameters) that you want to determine the enablement status
	// of in each enabled standard.
	//
	// SecurityControlId is a required field
	SecurityControlId *string `location:"querystring" locationName:"SecurityControlId" 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 ListStandardsControlAssociationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListStandardsControlAssociationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListStandardsControlAssociationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListStandardsControlAssociationsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.SecurityControlId == nil {
		invalidParams.Add(request.NewErrParamRequired("SecurityControlId"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListStandardsControlAssociationsInput) SetMaxResults(v int64) *ListStandardsControlAssociationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListStandardsControlAssociationsInput) SetNextToken(v string) *ListStandardsControlAssociationsInput {
	s.NextToken = &v
	return s
}

// SetSecurityControlId sets the SecurityControlId field's value.
func (s *ListStandardsControlAssociationsInput) SetSecurityControlId(v string) *ListStandardsControlAssociationsInput {
	s.SecurityControlId = &v
	return s
}

type ListStandardsControlAssociationsOutput struct {
	_ struct{} `type:"structure"`

	// A pagination parameter that's included in the response only if it was included
	// in the request.
	NextToken *string `type:"string"`

	// An array that provides the enablement status and other details for each security
	// control that applies to each enabled standard.
	//
	// StandardsControlAssociationSummaries is a required field
	StandardsControlAssociationSummaries []*StandardsControlAssociationSummary `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 ListStandardsControlAssociationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListStandardsControlAssociationsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListStandardsControlAssociationsOutput) SetNextToken(v string) *ListStandardsControlAssociationsOutput {
	s.NextToken = &v
	return s
}

// SetStandardsControlAssociationSummaries sets the StandardsControlAssociationSummaries field's value.
func (s *ListStandardsControlAssociationsOutput) SetStandardsControlAssociationSummaries(v []*StandardsControlAssociationSummary) *ListStandardsControlAssociationsOutput {
	s.StandardsControlAssociationSummaries = v
	return s
}

type ListTagsForResourceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ARN of the resource to retrieve tags for.
	//
	// 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 associated with a resource.
	Tags map[string]*string `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
}

// Information about the state of the load balancer.
type LoadBalancerState struct {
	_ struct{} `type:"structure"`

	// The state code. The initial state of the load balancer is provisioning.
	//
	// After the load balancer is fully set up and ready to route traffic, its state
	// is active.
	//
	// If the load balancer could not be set up, its state is failed.
	Code *string `type:"string"`

	// A description of the state.
	Reason *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LoadBalancerState) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LoadBalancerState) GoString() string {
	return s.String()
}

// SetCode sets the Code field's value.
func (s *LoadBalancerState) SetCode(v string) *LoadBalancerState {
	s.Code = &v
	return s
}

// SetReason sets the Reason field's value.
func (s *LoadBalancerState) SetReason(v string) *LoadBalancerState {
	s.Reason = &v
	return s
}

// A list of malware related to a finding.
type Malware struct {
	_ struct{} `type:"structure"`

	// The name of the malware that was observed.
	//
	// Length Constraints: Minimum of 1. Maximum of 64.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The file system path of the malware that was observed.
	//
	// Length Constraints: Minimum of 1. Maximum of 512.
	Path *string `type:"string"`

	// The state of the malware that was observed.
	State *string `type:"string" enum:"MalwareState"`

	// The type of the malware that was observed.
	Type *string `type:"string" enum:"MalwareType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Malware) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Malware) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Malware) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Malware"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *Malware) SetName(v string) *Malware {
	s.Name = &v
	return s
}

// SetPath sets the Path field's value.
func (s *Malware) SetPath(v string) *Malware {
	s.Path = &v
	return s
}

// SetState sets the State field's value.
func (s *Malware) SetState(v string) *Malware {
	s.State = &v
	return s
}

// SetType sets the Type field's value.
func (s *Malware) SetType(v string) *Malware {
	s.Type = &v
	return s
}

// A map filter for filtering Security Hub findings. Each map filter provides
// the field to check for, the value to check for, and the comparison operator.
type MapFilter struct {
	_ struct{} `type:"structure"`

	// The condition to apply to the key value when filtering Security Hub findings
	// with a map filter.
	//
	// To search for values that have the filter value, use one of the following
	// comparison operators:
	//
	//    * To search for values that include the filter value, use CONTAINS. For
	//    example, for the ResourceTags field, the filter Department CONTAINS Security
	//    matches findings that include the value Security for the Department tag.
	//    In the same example, a finding with a value of Security team for the Department
	//    tag is a match.
	//
	//    * To search for values that exactly match the filter value, use EQUALS.
	//    For example, for the ResourceTags field, the filter Department EQUALS
	//    Security matches findings that have the value Security for the Department
	//    tag.
	//
	// CONTAINS and EQUALS filters on the same field are joined by OR. A finding
	// matches if it matches any one of those filters. For example, the filters
	// Department CONTAINS Security OR Department CONTAINS Finance match a finding
	// that includes either Security, Finance, or both values.
	//
	// To search for values that don't have the filter value, use one of the following
	// comparison operators:
	//
	//    * To search for values that exclude the filter value, use NOT_CONTAINS.
	//    For example, for the ResourceTags field, the filter Department NOT_CONTAINS
	//    Finance matches findings that exclude the value Finance for the Department
	//    tag.
	//
	//    * To search for values other than the filter value, use NOT_EQUALS. For
	//    example, for the ResourceTags field, the filter Department NOT_EQUALS
	//    Finance matches findings that don’t have the value Finance for the Department
	//    tag.
	//
	// NOT_CONTAINS and NOT_EQUALS filters on the same field are joined by AND.
	// A finding matches only if it matches all of those filters. For example, the
	// filters Department NOT_CONTAINS Security AND Department NOT_CONTAINS Finance
	// match a finding that excludes both the Security and Finance values.
	//
	// CONTAINS filters can only be used with other CONTAINS filters. NOT_CONTAINS
	// filters can only be used with other NOT_CONTAINS filters.
	//
	// You can’t have both a CONTAINS filter and a NOT_CONTAINS filter on the
	// same field. Similarly, you can’t have both an EQUALS filter and a NOT_EQUALS
	// filter on the same field. Combining filters in this way returns an error.
	//
	// CONTAINS and NOT_CONTAINS operators can be used only with automation rules.
	// For more information, see Automation rules (https://docs.aws.amazon.com/securityhub/latest/userguide/automation-rules.html)
	// in the Security Hub User Guide.
	Comparison *string `type:"string" enum:"MapFilterComparison"`

	// The key of the map filter. For example, for ResourceTags, Key identifies
	// the name of the tag. For UserDefinedFields, Key is the name of the field.
	Key *string `type:"string"`

	// The value for the key in the map filter. Filter values are case sensitive.
	// For example, one of the values for a tag called Department might be Security.
	// If you provide security as the filter value, then there's no match.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MapFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MapFilter) GoString() string {
	return s.String()
}

// SetComparison sets the Comparison field's value.
func (s *MapFilter) SetComparison(v string) *MapFilter {
	s.Comparison = &v
	return s
}

// SetKey sets the Key field's value.
func (s *MapFilter) SetKey(v string) *MapFilter {
	s.Key = &v
	return s
}

// SetValue sets the Value field's value.
func (s *MapFilter) SetValue(v string) *MapFilter {
	s.Value = &v
	return s
}

// The details about a member account.
type Member struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID of the member account.
	AccountId *string `type:"string"`

	// The Amazon Web Services account ID of the Security Hub administrator account
	// associated with this member account.
	AdministratorId *string `type:"string"`

	// The email address of the member account.
	Email *string `type:"string"`

	// A timestamp for the date and time when the invitation was sent to the member
	// account.
	InvitedAt *time.Time `type:"timestamp" timestampFormat:"iso8601"`

	// This is replaced by AdministratorID.
	//
	// The Amazon Web Services account ID of the Security Hub administrator account
	// associated with this member account.
	//
	// Deprecated: This field is deprecated, use AdministratorId instead.
	MasterId *string `deprecated:"true" type:"string"`

	// The status of the relationship between the member account and its administrator
	// account.
	//
	// The status can have one of the following values:
	//
	//    * Created - Indicates that the administrator account added the member
	//    account, but has not yet invited the member account.
	//
	//    * Invited - Indicates that the administrator account invited the member
	//    account. The member account has not yet responded to the invitation.
	//
	//    * Enabled - Indicates that the member account is currently active. For
	//    manually invited member accounts, indicates that the member account accepted
	//    the invitation.
	//
	//    * Removed - Indicates that the administrator account disassociated the
	//    member account.
	//
	//    * Resigned - Indicates that the member account disassociated themselves
	//    from the administrator account.
	//
	//    * Deleted - Indicates that the administrator account deleted the member
	//    account.
	//
	//    * AccountSuspended - Indicates that an organization account was suspended
	//    from Amazon Web Services at the same time that the administrator account
	//    tried to enable the organization account as a member account.
	MemberStatus *string `type:"string"`

	// The timestamp for the date and time when the member account was updated.
	UpdatedAt *time.Time `type:"timestamp" timestampFormat:"iso8601"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Member) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Member) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *Member) SetAccountId(v string) *Member {
	s.AccountId = &v
	return s
}

// SetAdministratorId sets the AdministratorId field's value.
func (s *Member) SetAdministratorId(v string) *Member {
	s.AdministratorId = &v
	return s
}

// SetEmail sets the Email field's value.
func (s *Member) SetEmail(v string) *Member {
	s.Email = &v
	return s
}

// SetInvitedAt sets the InvitedAt field's value.
func (s *Member) SetInvitedAt(v time.Time) *Member {
	s.InvitedAt = &v
	return s
}

// SetMasterId sets the MasterId field's value.
func (s *Member) SetMasterId(v string) *Member {
	s.MasterId = &v
	return s
}

// SetMemberStatus sets the MemberStatus field's value.
func (s *Member) SetMemberStatus(v string) *Member {
	s.MemberStatus = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *Member) SetUpdatedAt(v time.Time) *Member {
	s.UpdatedAt = &v
	return s
}

// The details of network-related information about a finding.
type Network struct {
	_ struct{} `type:"structure"`

	// The destination domain of network-related information about a finding.
	//
	// Length Constraints: Minimum of 1. Maximum of 128.
	DestinationDomain *string `type:"string"`

	// The destination IPv4 address of network-related information about a finding.
	DestinationIpV4 *string `type:"string"`

	// The destination IPv6 address of network-related information about a finding.
	DestinationIpV6 *string `type:"string"`

	// The destination port of network-related information about a finding.
	DestinationPort *int64 `type:"integer"`

	// The direction of network traffic associated with a finding.
	Direction *string `type:"string" enum:"NetworkDirection"`

	// The range of open ports that is present on the network.
	OpenPortRange *PortRange `type:"structure"`

	// The protocol of network-related information about a finding.
	//
	// Length Constraints: Minimum of 1. Maximum of 16.
	Protocol *string `type:"string"`

	// The source domain of network-related information about a finding.
	//
	// Length Constraints: Minimum of 1. Maximum of 128.
	SourceDomain *string `type:"string"`

	// The source IPv4 address of network-related information about a finding.
	SourceIpV4 *string `type:"string"`

	// The source IPv6 address of network-related information about a finding.
	SourceIpV6 *string `type:"string"`

	// The source media access control (MAC) address of network-related information
	// about a finding.
	SourceMac *string `type:"string"`

	// The source port of network-related information about a finding.
	SourcePort *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Network) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Network) GoString() string {
	return s.String()
}

// SetDestinationDomain sets the DestinationDomain field's value.
func (s *Network) SetDestinationDomain(v string) *Network {
	s.DestinationDomain = &v
	return s
}

// SetDestinationIpV4 sets the DestinationIpV4 field's value.
func (s *Network) SetDestinationIpV4(v string) *Network {
	s.DestinationIpV4 = &v
	return s
}

// SetDestinationIpV6 sets the DestinationIpV6 field's value.
func (s *Network) SetDestinationIpV6(v string) *Network {
	s.DestinationIpV6 = &v
	return s
}

// SetDestinationPort sets the DestinationPort field's value.
func (s *Network) SetDestinationPort(v int64) *Network {
	s.DestinationPort = &v
	return s
}

// SetDirection sets the Direction field's value.
func (s *Network) SetDirection(v string) *Network {
	s.Direction = &v
	return s
}

// SetOpenPortRange sets the OpenPortRange field's value.
func (s *Network) SetOpenPortRange(v *PortRange) *Network {
	s.OpenPortRange = v
	return s
}

// SetProtocol sets the Protocol field's value.
func (s *Network) SetProtocol(v string) *Network {
	s.Protocol = &v
	return s
}

// SetSourceDomain sets the SourceDomain field's value.
func (s *Network) SetSourceDomain(v string) *Network {
	s.SourceDomain = &v
	return s
}

// SetSourceIpV4 sets the SourceIpV4 field's value.
func (s *Network) SetSourceIpV4(v string) *Network {
	s.SourceIpV4 = &v
	return s
}

// SetSourceIpV6 sets the SourceIpV6 field's value.
func (s *Network) SetSourceIpV6(v string) *Network {
	s.SourceIpV6 = &v
	return s
}

// SetSourceMac sets the SourceMac field's value.
func (s *Network) SetSourceMac(v string) *Network {
	s.SourceMac = &v
	return s
}

// SetSourcePort sets the SourcePort field's value.
func (s *Network) SetSourcePort(v int64) *Network {
	s.SourcePort = &v
	return s
}

// Provided if ActionType is NETWORK_CONNECTION. It provides details about the
// attempted network connection that was detected.
type NetworkConnectionAction struct {
	_ struct{} `type:"structure"`

	// Indicates whether the network connection attempt was blocked.
	Blocked *bool `type:"boolean"`

	// The direction of the network connection request (IN or OUT).
	ConnectionDirection *string `type:"string"`

	// Information about the port on the EC2 instance.
	LocalPortDetails *ActionLocalPortDetails `type:"structure"`

	// The protocol used to make the network connection request.
	//
	// Length Constraints: Minimum length of 1. Maximum length of 64.
	Protocol *string `type:"string"`

	// Information about the remote IP address that issued the network connection
	// request.
	RemoteIpDetails *ActionRemoteIpDetails `type:"structure"`

	// Information about the port on the remote IP address.
	RemotePortDetails *ActionRemotePortDetails `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 NetworkConnectionAction) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NetworkConnectionAction) GoString() string {
	return s.String()
}

// SetBlocked sets the Blocked field's value.
func (s *NetworkConnectionAction) SetBlocked(v bool) *NetworkConnectionAction {
	s.Blocked = &v
	return s
}

// SetConnectionDirection sets the ConnectionDirection field's value.
func (s *NetworkConnectionAction) SetConnectionDirection(v string) *NetworkConnectionAction {
	s.ConnectionDirection = &v
	return s
}

// SetLocalPortDetails sets the LocalPortDetails field's value.
func (s *NetworkConnectionAction) SetLocalPortDetails(v *ActionLocalPortDetails) *NetworkConnectionAction {
	s.LocalPortDetails = v
	return s
}

// SetProtocol sets the Protocol field's value.
func (s *NetworkConnectionAction) SetProtocol(v string) *NetworkConnectionAction {
	s.Protocol = &v
	return s
}

// SetRemoteIpDetails sets the RemoteIpDetails field's value.
func (s *NetworkConnectionAction) SetRemoteIpDetails(v *ActionRemoteIpDetails) *NetworkConnectionAction {
	s.RemoteIpDetails = v
	return s
}

// SetRemotePortDetails sets the RemotePortDetails field's value.
func (s *NetworkConnectionAction) SetRemotePortDetails(v *ActionRemotePortDetails) *NetworkConnectionAction {
	s.RemotePortDetails = v
	return s
}

// Details about a network path component that occurs before or after the current
// component.
type NetworkHeader struct {
	_ struct{} `type:"structure"`

	// Information about the destination of the component.
	Destination *NetworkPathComponentDetails `type:"structure"`

	// The protocol used for the component.
	//
	// Length Constraints: Minimum of 1. Maximum of 16.
	Protocol *string `type:"string"`

	// Information about the origin of the component.
	Source *NetworkPathComponentDetails `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 NetworkHeader) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NetworkHeader) GoString() string {
	return s.String()
}

// SetDestination sets the Destination field's value.
func (s *NetworkHeader) SetDestination(v *NetworkPathComponentDetails) *NetworkHeader {
	s.Destination = v
	return s
}

// SetProtocol sets the Protocol field's value.
func (s *NetworkHeader) SetProtocol(v string) *NetworkHeader {
	s.Protocol = &v
	return s
}

// SetSource sets the Source field's value.
func (s *NetworkHeader) SetSource(v *NetworkPathComponentDetails) *NetworkHeader {
	s.Source = v
	return s
}

// Information about a network path component.
type NetworkPathComponent struct {
	_ struct{} `type:"structure"`

	// The identifier of a component in the network path.
	//
	// Length Constraints: Minimum of 1. Maximum of 32.
	ComponentId *string `type:"string"`

	// The type of component.
	//
	// Length Constraints: Minimum of 1. Maximum of 32.
	ComponentType *string `type:"string"`

	// Information about the component that comes after the current component in
	// the network path.
	Egress *NetworkHeader `type:"structure"`

	// Information about the component that comes before the current node in the
	// network path.
	Ingress *NetworkHeader `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 NetworkPathComponent) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NetworkPathComponent) GoString() string {
	return s.String()
}

// SetComponentId sets the ComponentId field's value.
func (s *NetworkPathComponent) SetComponentId(v string) *NetworkPathComponent {
	s.ComponentId = &v
	return s
}

// SetComponentType sets the ComponentType field's value.
func (s *NetworkPathComponent) SetComponentType(v string) *NetworkPathComponent {
	s.ComponentType = &v
	return s
}

// SetEgress sets the Egress field's value.
func (s *NetworkPathComponent) SetEgress(v *NetworkHeader) *NetworkPathComponent {
	s.Egress = v
	return s
}

// SetIngress sets the Ingress field's value.
func (s *NetworkPathComponent) SetIngress(v *NetworkHeader) *NetworkPathComponent {
	s.Ingress = v
	return s
}

// Information about the destination of the next component in the network path.
type NetworkPathComponentDetails struct {
	_ struct{} `type:"structure"`

	// The IP addresses of the destination.
	Address []*string `type:"list"`

	// A list of port ranges for the destination.
	PortRanges []*PortRange `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 NetworkPathComponentDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NetworkPathComponentDetails) GoString() string {
	return s.String()
}

// SetAddress sets the Address field's value.
func (s *NetworkPathComponentDetails) SetAddress(v []*string) *NetworkPathComponentDetails {
	s.Address = v
	return s
}

// SetPortRanges sets the PortRanges field's value.
func (s *NetworkPathComponentDetails) SetPortRanges(v []*PortRange) *NetworkPathComponentDetails {
	s.PortRanges = v
	return s
}

// A user-defined note added to a finding.
type Note struct {
	_ struct{} `type:"structure"`

	// The text of a note.
	//
	// Length Constraints: Minimum of 1. Maximum of 512.
	//
	// Text is a required field
	Text *string `type:"string" required:"true"`

	// A timestamp that indicates when the note was updated.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	//
	// UpdatedAt is a required field
	UpdatedAt *string `type:"string" required:"true"`

	// The principal that created a note.
	//
	// UpdatedBy is a required field
	UpdatedBy *string `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 Note) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Note) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Note) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Note"}
	if s.Text == nil {
		invalidParams.Add(request.NewErrParamRequired("Text"))
	}
	if s.UpdatedAt == nil {
		invalidParams.Add(request.NewErrParamRequired("UpdatedAt"))
	}
	if s.UpdatedBy == nil {
		invalidParams.Add(request.NewErrParamRequired("UpdatedBy"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetText sets the Text field's value.
func (s *Note) SetText(v string) *Note {
	s.Text = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *Note) SetUpdatedAt(v string) *Note {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *Note) SetUpdatedBy(v string) *Note {
	s.UpdatedBy = &v
	return s
}

// The updated note.
type NoteUpdate struct {
	_ struct{} `type:"structure"`

	// The updated note text.
	//
	// Text is a required field
	Text *string `type:"string" required:"true"`

	// The principal that updated the note.
	//
	// UpdatedBy is a required field
	UpdatedBy *string `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 NoteUpdate) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NoteUpdate) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *NoteUpdate) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "NoteUpdate"}
	if s.Text == nil {
		invalidParams.Add(request.NewErrParamRequired("Text"))
	}
	if s.UpdatedBy == nil {
		invalidParams.Add(request.NewErrParamRequired("UpdatedBy"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetText sets the Text field's value.
func (s *NoteUpdate) SetText(v string) *NoteUpdate {
	s.Text = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *NoteUpdate) SetUpdatedBy(v string) *NoteUpdate {
	s.UpdatedBy = &v
	return s
}

// A number filter for querying findings.
type NumberFilter struct {
	_ struct{} `type:"structure"`

	// The equal-to condition to be applied to a single field when querying for
	// findings.
	Eq *float64 `type:"double"`

	// The greater-than condition to be applied to a single field when querying
	// for findings.
	Gt *float64 `type:"double"`

	// The greater-than-equal condition to be applied to a single field when querying
	// for findings.
	Gte *float64 `type:"double"`

	// The less-than condition to be applied to a single field when querying for
	// findings.
	Lt *float64 `type:"double"`

	// The less-than-equal condition to be applied to a single field when querying
	// for findings.
	Lte *float64 `type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NumberFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NumberFilter) GoString() string {
	return s.String()
}

// SetEq sets the Eq field's value.
func (s *NumberFilter) SetEq(v float64) *NumberFilter {
	s.Eq = &v
	return s
}

// SetGt sets the Gt field's value.
func (s *NumberFilter) SetGt(v float64) *NumberFilter {
	s.Gt = &v
	return s
}

// SetGte sets the Gte field's value.
func (s *NumberFilter) SetGte(v float64) *NumberFilter {
	s.Gte = &v
	return s
}

// SetLt sets the Lt field's value.
func (s *NumberFilter) SetLt(v float64) *NumberFilter {
	s.Lt = &v
	return s
}

// SetLte sets the Lte field's value.
func (s *NumberFilter) SetLte(v float64) *NumberFilter {
	s.Lte = &v
	return s
}

// The detected occurrences of sensitive data.
type Occurrences struct {
	_ struct{} `type:"structure"`

	// Occurrences of sensitive data detected in Microsoft Excel workbooks, comma-separated
	// value (CSV) files, or tab-separated value (TSV) files.
	Cells []*Cell `type:"list"`

	// Occurrences of sensitive data detected in a non-binary text file or a Microsoft
	// Word file. Non-binary text files include files such as HTML, XML, JSON, and
	// TXT files.
	LineRanges []*Range `type:"list"`

	// Occurrences of sensitive data detected in a binary text file.
	OffsetRanges []*Range `type:"list"`

	// Occurrences of sensitive data in an Adobe Portable Document Format (PDF)
	// file.
	Pages []*Page `type:"list"`

	// Occurrences of sensitive data in an Apache Avro object container or an Apache
	// Parquet file.
	Records []*Record `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 Occurrences) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Occurrences) GoString() string {
	return s.String()
}

// SetCells sets the Cells field's value.
func (s *Occurrences) SetCells(v []*Cell) *Occurrences {
	s.Cells = v
	return s
}

// SetLineRanges sets the LineRanges field's value.
func (s *Occurrences) SetLineRanges(v []*Range) *Occurrences {
	s.LineRanges = v
	return s
}

// SetOffsetRanges sets the OffsetRanges field's value.
func (s *Occurrences) SetOffsetRanges(v []*Range) *Occurrences {
	s.OffsetRanges = v
	return s
}

// SetPages sets the Pages field's value.
func (s *Occurrences) SetPages(v []*Page) *Occurrences {
	s.Pages = v
	return s
}

// SetRecords sets the Records field's value.
func (s *Occurrences) SetRecords(v []*Record) *Occurrences {
	s.Records = v
	return s
}

// Provides information about the way an organization is configured in Security
// Hub.
type OrganizationConfiguration struct {
	_ struct{} `type:"structure"`

	// Indicates whether the organization uses local or central configuration.
	//
	// If you use local configuration, the Security Hub delegated administrator
	// can set AutoEnable to true and AutoEnableStandards to DEFAULT. This automatically
	// enables Security Hub and default security standards in new organization accounts.
	// These new account settings must be set separately in each Amazon Web Services
	// Region, and settings may be different in each Region.
	//
	// If you use central configuration, the delegated administrator can create
	// configuration policies. Configuration policies can be used to configure Security
	// Hub, security standards, and security controls in multiple accounts and Regions.
	// If you want new organization accounts to use a specific configuration, you
	// can create a configuration policy and associate it with the root or specific
	// organizational units (OUs). New accounts will inherit the policy from the
	// root or their assigned OU.
	ConfigurationType *string `type:"string" enum:"OrganizationConfigurationConfigurationType"`

	// Describes whether central configuration could be enabled as the ConfigurationType
	// for the organization. If your ConfigurationType is local configuration, then
	// the value of Status is always ENABLED.
	Status *string `type:"string" enum:"OrganizationConfigurationStatus"`

	// Provides an explanation if the value of Status is equal to FAILED when ConfigurationType
	// is equal to CENTRAL.
	StatusMessage *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationConfiguration) GoString() string {
	return s.String()
}

// SetConfigurationType sets the ConfigurationType field's value.
func (s *OrganizationConfiguration) SetConfigurationType(v string) *OrganizationConfiguration {
	s.ConfigurationType = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *OrganizationConfiguration) SetStatus(v string) *OrganizationConfiguration {
	s.Status = &v
	return s
}

// SetStatusMessage sets the StatusMessage field's value.
func (s *OrganizationConfiguration) SetStatusMessage(v string) *OrganizationConfiguration {
	s.StatusMessage = &v
	return s
}

// An occurrence of sensitive data in an Adobe Portable Document Format (PDF)
// file.
type Page struct {
	_ struct{} `type:"structure"`

	// An occurrence of sensitive data detected in a non-binary text file or a Microsoft
	// Word file. Non-binary text files include files such as HTML, XML, JSON, and
	// TXT files.
	LineRange *Range `type:"structure"`

	// An occurrence of sensitive data detected in a binary text file.
	OffsetRange *Range `type:"structure"`

	// The page number of the page that contains the sensitive data.
	PageNumber *int64 `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 Page) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Page) GoString() string {
	return s.String()
}

// SetLineRange sets the LineRange field's value.
func (s *Page) SetLineRange(v *Range) *Page {
	s.LineRange = v
	return s
}

// SetOffsetRange sets the OffsetRange field's value.
func (s *Page) SetOffsetRange(v *Range) *Page {
	s.OffsetRange = v
	return s
}

// SetPageNumber sets the PageNumber field's value.
func (s *Page) SetPageNumber(v int64) *Page {
	s.PageNumber = &v
	return s
}

// An object that provides the current value of a security control parameter
// and identifies whether it has been customized.
type ParameterConfiguration struct {
	_ struct{} `type:"structure"`

	// The current value of a control parameter.
	Value *ParameterValue `type:"structure"`

	// Identifies whether a control parameter uses a custom user-defined value or
	// subscribes to the default Security Hub behavior.
	//
	// When ValueType is set equal to DEFAULT, the default behavior can be a specific
	// Security Hub default value, or the default behavior can be to ignore a specific
	// parameter. When ValueType is set equal to DEFAULT, Security Hub ignores user-provided
	// input for the Value field.
	//
	// When ValueType is set equal to CUSTOM, the Value field can't be empty.
	//
	// ValueType is a required field
	ValueType *string `type:"string" required:"true" enum:"ParameterValueType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ParameterConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ParameterConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ParameterConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ParameterConfiguration"}
	if s.ValueType == nil {
		invalidParams.Add(request.NewErrParamRequired("ValueType"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetValue sets the Value field's value.
func (s *ParameterConfiguration) SetValue(v *ParameterValue) *ParameterConfiguration {
	s.Value = v
	return s
}

// SetValueType sets the ValueType field's value.
func (s *ParameterConfiguration) SetValueType(v string) *ParameterConfiguration {
	s.ValueType = &v
	return s
}

// An object that describes a security control parameter and the options for
// customizing it.
type ParameterDefinition struct {
	_ struct{} `type:"structure"`

	// The options for customizing a control parameter. Customization options vary
	// based on the data type of the parameter.
	//
	// ConfigurationOptions is a required field
	ConfigurationOptions *ConfigurationOptions `type:"structure" required:"true"`

	// Description of a control parameter.
	//
	// Description is a required field
	Description *string `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 ParameterDefinition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ParameterDefinition) GoString() string {
	return s.String()
}

// SetConfigurationOptions sets the ConfigurationOptions field's value.
func (s *ParameterDefinition) SetConfigurationOptions(v *ConfigurationOptions) *ParameterDefinition {
	s.ConfigurationOptions = v
	return s
}

// SetDescription sets the Description field's value.
func (s *ParameterDefinition) SetDescription(v string) *ParameterDefinition {
	s.Description = &v
	return s
}

// An object that includes the data type of a security control parameter and
// its current value.
type ParameterValue struct {
	_ struct{} `type:"structure"`

	// A control parameter that is a boolean.
	Boolean *bool `type:"boolean"`

	// A control parameter that is a double.
	Double *float64 `type:"double"`

	// A control parameter that is an enum.
	Enum *string `type:"string"`

	// A control parameter that is a list of enums.
	EnumList []*string `type:"list"`

	// A control parameter that is an integer.
	Integer *int64 `type:"integer"`

	// A control parameter that is a list of integers.
	IntegerList []*int64 `type:"list"`

	// A control parameter that is a list of strings.
	StringList []*string `type:"list"`

	// A control parameter that is a string.
	String_ *string `locationName:"String" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ParameterValue) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ParameterValue) GoString() string {
	return s.String()
}

// SetBoolean sets the Boolean field's value.
func (s *ParameterValue) SetBoolean(v bool) *ParameterValue {
	s.Boolean = &v
	return s
}

// SetDouble sets the Double field's value.
func (s *ParameterValue) SetDouble(v float64) *ParameterValue {
	s.Double = &v
	return s
}

// SetEnum sets the Enum field's value.
func (s *ParameterValue) SetEnum(v string) *ParameterValue {
	s.Enum = &v
	return s
}

// SetEnumList sets the EnumList field's value.
func (s *ParameterValue) SetEnumList(v []*string) *ParameterValue {
	s.EnumList = v
	return s
}

// SetInteger sets the Integer field's value.
func (s *ParameterValue) SetInteger(v int64) *ParameterValue {
	s.Integer = &v
	return s
}

// SetIntegerList sets the IntegerList field's value.
func (s *ParameterValue) SetIntegerList(v []*int64) *ParameterValue {
	s.IntegerList = v
	return s
}

// SetStringList sets the StringList field's value.
func (s *ParameterValue) SetStringList(v []*string) *ParameterValue {
	s.StringList = v
	return s
}

// SetString_ sets the String_ field's value.
func (s *ParameterValue) SetString_(v string) *ParameterValue {
	s.String_ = &v
	return s
}

// Provides an overview of the patch compliance status for an instance against
// a selected compliance standard.
type PatchSummary struct {
	_ struct{} `type:"structure"`

	// The number of patches from the compliance standard that failed to install.
	//
	// The value can be an integer from 0 to 100000.
	FailedCount *int64 `type:"integer"`

	// The identifier of the compliance standard that was used to determine the
	// patch compliance status.
	//
	// Length Constraints: Minimum length of 1. Maximum length of 256.
	//
	// Id is a required field
	Id *string `type:"string" required:"true"`

	// The number of patches from the compliance standard that were installed successfully.
	//
	// The value can be an integer from 0 to 100000.
	InstalledCount *int64 `type:"integer"`

	// The number of installed patches that are not part of the compliance standard.
	//
	// The value can be an integer from 0 to 100000.
	InstalledOtherCount *int64 `type:"integer"`

	// The number of patches that were applied, but that require the instance to
	// be rebooted in order to be marked as installed.
	//
	// The value can be an integer from 0 to 100000.
	InstalledPendingReboot *int64 `type:"integer"`

	// The number of patches that are installed but are also on a list of patches
	// that the customer rejected.
	//
	// The value can be an integer from 0 to 100000.
	InstalledRejectedCount *int64 `type:"integer"`

	// The number of patches that are part of the compliance standard but are not
	// installed. The count includes patches that failed to install.
	//
	// The value can be an integer from 0 to 100000.
	MissingCount *int64 `type:"integer"`

	// The type of patch operation performed. For Patch Manager, the values are
	// SCAN and INSTALL.
	//
	// Length Constraints: Minimum length of 1. Maximum length of 256.
	Operation *string `type:"string"`

	// Indicates when the operation completed.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	OperationEndTime *string `type:"string"`

	// Indicates when the operation started.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	OperationStartTime *string `type:"string"`

	// The reboot option specified for the instance.
	//
	// Length Constraints: Minimum length of 1. Maximum length of 256.
	RebootOption *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PatchSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PatchSummary) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PatchSummary) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PatchSummary"}
	if s.Id == nil {
		invalidParams.Add(request.NewErrParamRequired("Id"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFailedCount sets the FailedCount field's value.
func (s *PatchSummary) SetFailedCount(v int64) *PatchSummary {
	s.FailedCount = &v
	return s
}

// SetId sets the Id field's value.
func (s *PatchSummary) SetId(v string) *PatchSummary {
	s.Id = &v
	return s
}

// SetInstalledCount sets the InstalledCount field's value.
func (s *PatchSummary) SetInstalledCount(v int64) *PatchSummary {
	s.InstalledCount = &v
	return s
}

// SetInstalledOtherCount sets the InstalledOtherCount field's value.
func (s *PatchSummary) SetInstalledOtherCount(v int64) *PatchSummary {
	s.InstalledOtherCount = &v
	return s
}

// SetInstalledPendingReboot sets the InstalledPendingReboot field's value.
func (s *PatchSummary) SetInstalledPendingReboot(v int64) *PatchSummary {
	s.InstalledPendingReboot = &v
	return s
}

// SetInstalledRejectedCount sets the InstalledRejectedCount field's value.
func (s *PatchSummary) SetInstalledRejectedCount(v int64) *PatchSummary {
	s.InstalledRejectedCount = &v
	return s
}

// SetMissingCount sets the MissingCount field's value.
func (s *PatchSummary) SetMissingCount(v int64) *PatchSummary {
	s.MissingCount = &v
	return s
}

// SetOperation sets the Operation field's value.
func (s *PatchSummary) SetOperation(v string) *PatchSummary {
	s.Operation = &v
	return s
}

// SetOperationEndTime sets the OperationEndTime field's value.
func (s *PatchSummary) SetOperationEndTime(v string) *PatchSummary {
	s.OperationEndTime = &v
	return s
}

// SetOperationStartTime sets the OperationStartTime field's value.
func (s *PatchSummary) SetOperationStartTime(v string) *PatchSummary {
	s.OperationStartTime = &v
	return s
}

// SetRebootOption sets the RebootOption field's value.
func (s *PatchSummary) SetRebootOption(v string) *PatchSummary {
	s.RebootOption = &v
	return s
}

// An object that defines how Security Hub is configured. It includes whether
// Security Hub is enabled or disabled, a list of enabled security standards,
// a list of enabled or disabled security controls, and a list of custom parameter
// values for specified controls. If you provide a list of security controls
// that are enabled in the configuration policy, Security Hub disables all other
// controls (including newly released controls). If you provide a list of security
// controls that are disabled in the configuration policy, Security Hub enables
// all other controls (including newly released controls).
type Policy struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Service that the configuration policy applies to.
	SecurityHub *SecurityHubPolicy `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 Policy) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Policy) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Policy) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Policy"}
	if s.SecurityHub != nil {
		if err := s.SecurityHub.Validate(); err != nil {
			invalidParams.AddNested("SecurityHub", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSecurityHub sets the SecurityHub field's value.
func (s *Policy) SetSecurityHub(v *SecurityHubPolicy) *Policy {
	s.SecurityHub = v
	return s
}

// Provided if ActionType is PORT_PROBE. It provides details about the attempted
// port probe that was detected.
type PortProbeAction struct {
	_ struct{} `type:"structure"`

	// Indicates whether the port probe was blocked.
	Blocked *bool `type:"boolean"`

	// Information about the ports affected by the port probe.
	PortProbeDetails []*PortProbeDetail `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 PortProbeAction) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PortProbeAction) GoString() string {
	return s.String()
}

// SetBlocked sets the Blocked field's value.
func (s *PortProbeAction) SetBlocked(v bool) *PortProbeAction {
	s.Blocked = &v
	return s
}

// SetPortProbeDetails sets the PortProbeDetails field's value.
func (s *PortProbeAction) SetPortProbeDetails(v []*PortProbeDetail) *PortProbeAction {
	s.PortProbeDetails = v
	return s
}

// A port scan that was part of the port probe. For each scan, PortProbeDetails
// provides information about the local IP address and port that were scanned,
// and the remote IP address that the scan originated from.
type PortProbeDetail struct {
	_ struct{} `type:"structure"`

	// Provides information about the IP address where the scanned port is located.
	LocalIpDetails *ActionLocalIpDetails `type:"structure"`

	// Provides information about the port that was scanned.
	LocalPortDetails *ActionLocalPortDetails `type:"structure"`

	// Provides information about the remote IP address that performed the scan.
	RemoteIpDetails *ActionRemoteIpDetails `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 PortProbeDetail) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PortProbeDetail) GoString() string {
	return s.String()
}

// SetLocalIpDetails sets the LocalIpDetails field's value.
func (s *PortProbeDetail) SetLocalIpDetails(v *ActionLocalIpDetails) *PortProbeDetail {
	s.LocalIpDetails = v
	return s
}

// SetLocalPortDetails sets the LocalPortDetails field's value.
func (s *PortProbeDetail) SetLocalPortDetails(v *ActionLocalPortDetails) *PortProbeDetail {
	s.LocalPortDetails = v
	return s
}

// SetRemoteIpDetails sets the RemoteIpDetails field's value.
func (s *PortProbeDetail) SetRemoteIpDetails(v *ActionRemoteIpDetails) *PortProbeDetail {
	s.RemoteIpDetails = v
	return s
}

// A range of ports.
type PortRange struct {
	_ struct{} `type:"structure"`

	// The first port in the port range.
	Begin *int64 `type:"integer"`

	// The last port in the port range.
	End *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PortRange) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PortRange) GoString() string {
	return s.String()
}

// SetBegin sets the Begin field's value.
func (s *PortRange) SetBegin(v int64) *PortRange {
	s.Begin = &v
	return s
}

// SetEnd sets the End field's value.
func (s *PortRange) SetEnd(v int64) *PortRange {
	s.End = &v
	return s
}

// A range of ports.
type PortRangeFromTo struct {
	_ struct{} `type:"structure"`

	// The first port in the port range.
	From *int64 `type:"integer"`

	// The last port in the port range.
	To *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PortRangeFromTo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PortRangeFromTo) GoString() string {
	return s.String()
}

// SetFrom sets the From field's value.
func (s *PortRangeFromTo) SetFrom(v int64) *PortRangeFromTo {
	s.From = &v
	return s
}

// SetTo sets the To field's value.
func (s *PortRangeFromTo) SetTo(v int64) *PortRangeFromTo {
	s.To = &v
	return s
}

// The details of process-related information about a finding.
type ProcessDetails struct {
	_ struct{} `type:"structure"`

	// Indicates when the process was launched.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	LaunchedAt *string `type:"string"`

	// The name of the process.
	//
	// Length Constraints: Minimum of 1. Maximum of 64.
	Name *string `type:"string"`

	// The parent process ID. This field accepts positive integers between O and
	// 2147483647.
	ParentPid *int64 `type:"integer"`

	// The path to the process executable.
	//
	// Length Constraints: Minimum of 1. Maximum of 512.
	Path *string `type:"string"`

	// The process ID.
	Pid *int64 `type:"integer"`

	// Indicates when the process was terminated.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	TerminatedAt *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ProcessDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ProcessDetails) GoString() string {
	return s.String()
}

// SetLaunchedAt sets the LaunchedAt field's value.
func (s *ProcessDetails) SetLaunchedAt(v string) *ProcessDetails {
	s.LaunchedAt = &v
	return s
}

// SetName sets the Name field's value.
func (s *ProcessDetails) SetName(v string) *ProcessDetails {
	s.Name = &v
	return s
}

// SetParentPid sets the ParentPid field's value.
func (s *ProcessDetails) SetParentPid(v int64) *ProcessDetails {
	s.ParentPid = &v
	return s
}

// SetPath sets the Path field's value.
func (s *ProcessDetails) SetPath(v string) *ProcessDetails {
	s.Path = &v
	return s
}

// SetPid sets the Pid field's value.
func (s *ProcessDetails) SetPid(v int64) *ProcessDetails {
	s.Pid = &v
	return s
}

// SetTerminatedAt sets the TerminatedAt field's value.
func (s *ProcessDetails) SetTerminatedAt(v string) *ProcessDetails {
	s.TerminatedAt = &v
	return s
}

// Contains details about a product.
type Product struct {
	_ struct{} `type:"structure"`

	// The URL to the service or product documentation about the integration with
	// Security Hub, including how to activate the integration.
	ActivationUrl *string `type:"string"`

	// The categories assigned to the product.
	Categories []*string `type:"list"`

	// The name of the company that provides the product.
	CompanyName *string `type:"string"`

	// A description of the product.
	Description *string `type:"string"`

	// The types of integration that the product supports. Available values are
	// the following.
	//
	//    * SEND_FINDINGS_TO_SECURITY_HUB - The integration sends findings to Security
	//    Hub.
	//
	//    * RECEIVE_FINDINGS_FROM_SECURITY_HUB - The integration receives findings
	//    from Security Hub.
	//
	//    * UPDATE_FINDINGS_IN_SECURITY_HUB - The integration does not send new
	//    findings to Security Hub, but does make updates to the findings that it
	//    receives from Security Hub.
	IntegrationTypes []*string `type:"list" enum:"IntegrationType"`

	// For integrations with Amazon Web Services services, the Amazon Web Services
	// Console URL from which to activate the service.
	//
	// For integrations with third-party products, the Amazon Web Services Marketplace
	// URL from which to subscribe to or purchase the product.
	MarketplaceUrl *string `type:"string"`

	// The ARN assigned to the product.
	//
	// ProductArn is a required field
	ProductArn *string `type:"string" required:"true"`

	// The name of the product.
	ProductName *string `type:"string"`

	// The resource policy associated with the product.
	ProductSubscriptionResourcePolicy *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Product) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Product) GoString() string {
	return s.String()
}

// SetActivationUrl sets the ActivationUrl field's value.
func (s *Product) SetActivationUrl(v string) *Product {
	s.ActivationUrl = &v
	return s
}

// SetCategories sets the Categories field's value.
func (s *Product) SetCategories(v []*string) *Product {
	s.Categories = v
	return s
}

// SetCompanyName sets the CompanyName field's value.
func (s *Product) SetCompanyName(v string) *Product {
	s.CompanyName = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *Product) SetDescription(v string) *Product {
	s.Description = &v
	return s
}

// SetIntegrationTypes sets the IntegrationTypes field's value.
func (s *Product) SetIntegrationTypes(v []*string) *Product {
	s.IntegrationTypes = v
	return s
}

// SetMarketplaceUrl sets the MarketplaceUrl field's value.
func (s *Product) SetMarketplaceUrl(v string) *Product {
	s.MarketplaceUrl = &v
	return s
}

// SetProductArn sets the ProductArn field's value.
func (s *Product) SetProductArn(v string) *Product {
	s.ProductArn = &v
	return s
}

// SetProductName sets the ProductName field's value.
func (s *Product) SetProductName(v string) *Product {
	s.ProductName = &v
	return s
}

// SetProductSubscriptionResourcePolicy sets the ProductSubscriptionResourcePolicy field's value.
func (s *Product) SetProductSubscriptionResourcePolicy(v string) *Product {
	s.ProductSubscriptionResourcePolicy = &v
	return s
}

// Describes a virtual private gateway propagating route.
type PropagatingVgwSetDetails struct {
	_ struct{} `type:"structure"`

	// The ID of the virtual private gateway.
	GatewayId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PropagatingVgwSetDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PropagatingVgwSetDetails) GoString() string {
	return s.String()
}

// SetGatewayId sets the GatewayId field's value.
func (s *PropagatingVgwSetDetails) SetGatewayId(v string) *PropagatingVgwSetDetails {
	s.GatewayId = &v
	return s
}

// Identifies where the sensitive data begins and ends.
type Range struct {
	_ struct{} `type:"structure"`

	// The number of lines (for a line range) or characters (for an offset range)
	// from the beginning of the file to the end of the sensitive data.
	End *int64 `type:"long"`

	// The number of lines (for a line range) or characters (for an offset range)
	// from the beginning of the file to the end of the sensitive data.
	Start *int64 `type:"long"`

	// In the line where the sensitive data starts, the column within the line where
	// the sensitive data starts.
	StartColumn *int64 `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 Range) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Range) GoString() string {
	return s.String()
}

// SetEnd sets the End field's value.
func (s *Range) SetEnd(v int64) *Range {
	s.End = &v
	return s
}

// SetStart sets the Start field's value.
func (s *Range) SetStart(v int64) *Range {
	s.Start = &v
	return s
}

// SetStartColumn sets the StartColumn field's value.
func (s *Range) SetStartColumn(v int64) *Range {
	s.StartColumn = &v
	return s
}

// A recommendation on how to remediate the issue identified in a finding.
type Recommendation struct {
	_ struct{} `type:"structure"`

	// Describes the recommended steps to take to remediate an issue identified
	// in a finding.
	//
	// Length Constraints: Minimum of 1 length. Maximum of 512 length.
	Text *string `type:"string"`

	// A URL to a page or site that contains information about how to remediate
	// a finding.
	Url *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Recommendation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Recommendation) GoString() string {
	return s.String()
}

// SetText sets the Text field's value.
func (s *Recommendation) SetText(v string) *Recommendation {
	s.Text = &v
	return s
}

// SetUrl sets the Url field's value.
func (s *Recommendation) SetUrl(v string) *Recommendation {
	s.Url = &v
	return s
}

// An occurrence of sensitive data in an Apache Avro object container or an
// Apache Parquet file.
type Record struct {
	_ struct{} `type:"structure"`

	// The path, as a JSONPath expression, to the field in the record that contains
	// the data. If the field name is longer than 20 characters, it is truncated.
	// If the path is longer than 250 characters, it is truncated.
	JsonPath *string `type:"string"`

	// The record index, starting from 0, for the record that contains the data.
	RecordIndex *int64 `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 Record) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Record) GoString() string {
	return s.String()
}

// SetJsonPath sets the JsonPath field's value.
func (s *Record) SetJsonPath(v string) *Record {
	s.JsonPath = &v
	return s
}

// SetRecordIndex sets the RecordIndex field's value.
func (s *Record) SetRecordIndex(v int64) *Record {
	s.RecordIndex = &v
	return s
}

// Details about a related finding.
type RelatedFinding struct {
	_ struct{} `type:"structure"`

	// The product-generated identifier for a related finding.
	//
	// Id is a required field
	Id *string `type:"string" required:"true"`

	// The ARN of the product that generated a related finding.
	//
	// ProductArn is a required field
	ProductArn *string `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 RelatedFinding) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RelatedFinding) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RelatedFinding) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RelatedFinding"}
	if s.Id == nil {
		invalidParams.Add(request.NewErrParamRequired("Id"))
	}
	if s.ProductArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ProductArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetId sets the Id field's value.
func (s *RelatedFinding) SetId(v string) *RelatedFinding {
	s.Id = &v
	return s
}

// SetProductArn sets the ProductArn field's value.
func (s *RelatedFinding) SetProductArn(v string) *RelatedFinding {
	s.ProductArn = &v
	return s
}

// Details about the remediation steps for a finding.
type Remediation struct {
	_ struct{} `type:"structure"`

	// A recommendation on the steps to take to remediate the issue identified by
	// a finding.
	Recommendation *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 *Recommendation) *Remediation {
	s.Recommendation = v
	return s
}

// A resource related to a finding.
type Resource struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the application that is related to a finding.
	ApplicationArn *string `type:"string"`

	// The name of the application that is related to a finding.
	ApplicationName *string `type:"string"`

	// Contains information about sensitive data that was detected on the resource.
	DataClassification *DataClassificationDetails `type:"structure"`

	// Additional details about the resource related to a finding.
	Details *ResourceDetails `type:"structure"`

	// The canonical identifier for the given resource type.
	//
	// Id is a required field
	Id *string `type:"string" required:"true"`

	// The canonical Amazon Web Services partition name that the Region is assigned
	// to.
	Partition *string `type:"string" enum:"Partition"`

	// The canonical Amazon Web Services external Region name where this resource
	// is located.
	//
	// Length Constraints: Minimum length of 1. Maximum length of 16.
	Region *string `type:"string"`

	// Identifies the role of the resource in the finding. A resource is either
	// the actor or target of the finding activity,
	ResourceRole *string `type:"string"`

	// A list of Amazon Web Services tags associated with a resource at the time
	// the finding was processed. Tags must follow Amazon Web Services tag naming
	// limits and requirements (https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html#tag-conventions).
	Tags map[string]*string `type:"map"`

	// The type of the resource that details are provided for. If possible, set
	// Type to one of the supported resource types. For example, if the resource
	// is an EC2 instance, then set Type to AwsEc2Instance.
	//
	// If the resource does not match any of the provided types, then set Type to
	// Other.
	//
	// Length Constraints: Minimum length of 1. Maximum length of 256.
	//
	// Type is a required field
	Type *string `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 Resource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Resource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Resource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Resource"}
	if s.Id == nil {
		invalidParams.Add(request.NewErrParamRequired("Id"))
	}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}
	if s.Details != nil {
		if err := s.Details.Validate(); err != nil {
			invalidParams.AddNested("Details", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetApplicationArn sets the ApplicationArn field's value.
func (s *Resource) SetApplicationArn(v string) *Resource {
	s.ApplicationArn = &v
	return s
}

// SetApplicationName sets the ApplicationName field's value.
func (s *Resource) SetApplicationName(v string) *Resource {
	s.ApplicationName = &v
	return s
}

// SetDataClassification sets the DataClassification field's value.
func (s *Resource) SetDataClassification(v *DataClassificationDetails) *Resource {
	s.DataClassification = v
	return s
}

// SetDetails sets the Details field's value.
func (s *Resource) SetDetails(v *ResourceDetails) *Resource {
	s.Details = v
	return s
}

// SetId sets the Id field's value.
func (s *Resource) SetId(v string) *Resource {
	s.Id = &v
	return s
}

// SetPartition sets the Partition field's value.
func (s *Resource) SetPartition(v string) *Resource {
	s.Partition = &v
	return s
}

// SetRegion sets the Region field's value.
func (s *Resource) SetRegion(v string) *Resource {
	s.Region = &v
	return s
}

// SetResourceRole sets the ResourceRole field's value.
func (s *Resource) SetResourceRole(v string) *Resource {
	s.ResourceRole = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *Resource) SetTags(v map[string]*string) *Resource {
	s.Tags = v
	return s
}

// SetType sets the Type field's value.
func (s *Resource) SetType(v string) *Resource {
	s.Type = &v
	return s
}

// The resource specified in the request conflicts with an existing resource.
type ResourceConflictException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Code_ *string `locationName:"Code" type:"string"`

	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 ResourceConflictException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceConflictException) GoString() string {
	return s.String()
}

func newErrorResourceConflictException(v protocol.ResponseMetadata) error {
	return &ResourceConflictException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ResourceConflictException) Code() string {
	return "ResourceConflictException"
}

// Message returns the exception's message.
func (s *ResourceConflictException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ResourceConflictException) OrigErr() error {
	return nil
}

func (s *ResourceConflictException) Error() string {
	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ResourceConflictException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ResourceConflictException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Additional details about a resource related to a finding.
//
// To provide the details, use the object that corresponds to the resource type.
// For example, if the resource type is AwsEc2Instance, then you use the AwsEc2Instance
// object to provide the details.
//
// If the type-specific object does not contain all of the fields you want to
// populate, then you use the Other object to populate those additional fields.
//
// You also use the Other object to populate the details when the selected type
// does not have a corresponding object.
type ResourceDetails struct {
	_ struct{} `type:"structure"`

	// Provides details about AppSync message broker. A message broker allows software
	// applications and components to communicate using various programming languages,
	// operating systems, and formal messaging protocols.
	AwsAmazonMqBroker *AwsAmazonMqBrokerDetails `type:"structure"`

	// Provides information about a REST API in version 1 of Amazon API Gateway.
	AwsApiGatewayRestApi *AwsApiGatewayRestApiDetails `type:"structure"`

	// Provides information about a version 1 Amazon API Gateway stage.
	AwsApiGatewayStage *AwsApiGatewayStageDetails `type:"structure"`

	// Provides information about a version 2 API in Amazon API Gateway.
	AwsApiGatewayV2Api *AwsApiGatewayV2ApiDetails `type:"structure"`

	// Provides information about a version 2 stage for Amazon API Gateway.
	AwsApiGatewayV2Stage *AwsApiGatewayV2StageDetails `type:"structure"`

	// Provides details about an AppSync Graph QL API, which lets you query multiple
	// databases, microservices, and APIs from a single GraphQL endpoint.
	AwsAppSyncGraphQlApi *AwsAppSyncGraphQlApiDetails `type:"structure"`

	// Provides information about an Amazon Athena workgroup. A workgroup helps
	// you separate users, teams, applications, or workloads. It also helps you
	// set limits on data processing and track costs.
	AwsAthenaWorkGroup *AwsAthenaWorkGroupDetails `type:"structure"`

	// Details for an autoscaling group.
	AwsAutoScalingAutoScalingGroup *AwsAutoScalingAutoScalingGroupDetails `type:"structure"`

	// Provides details about a launch configuration.
	AwsAutoScalingLaunchConfiguration *AwsAutoScalingLaunchConfigurationDetails `type:"structure"`

	// Provides details about an Backup backup plan.
	AwsBackupBackupPlan *AwsBackupBackupPlanDetails `type:"structure"`

	// Provides details about an Backup backup vault.
	AwsBackupBackupVault *AwsBackupBackupVaultDetails `type:"structure"`

	// Provides details about an Backup backup, or recovery point.
	AwsBackupRecoveryPoint *AwsBackupRecoveryPointDetails `type:"structure"`

	// Provides details about an Certificate Manager certificate.
	AwsCertificateManagerCertificate *AwsCertificateManagerCertificateDetails `type:"structure"`

	// Details about an CloudFormation stack. A stack is a collection of Amazon
	// Web Services resources that you can manage as a single unit.
	AwsCloudFormationStack *AwsCloudFormationStackDetails `type:"structure"`

	// Details about a CloudFront distribution.
	AwsCloudFrontDistribution *AwsCloudFrontDistributionDetails `type:"structure"`

	// Provides details about a CloudTrail trail.
	AwsCloudTrailTrail *AwsCloudTrailTrailDetails `type:"structure"`

	// Details about an Amazon CloudWatch alarm. An alarm allows you to monitor
	// and receive alerts about your Amazon Web Services resources and applications
	// across multiple Regions.
	AwsCloudWatchAlarm *AwsCloudWatchAlarmDetails `type:"structure"`

	// Details for an CodeBuild project.
	AwsCodeBuildProject *AwsCodeBuildProjectDetails `type:"structure"`

	// Provides details about an Database Migration Service (DMS) endpoint. An endpoint
	// provides connection, data store type, and location information about your
	// data store.
	AwsDmsEndpoint *AwsDmsEndpointDetails `type:"structure"`

	// Provides details about an DMS replication instance. DMS uses a replication
	// instance to connect to your source data store, read the source data, and
	// format the data for consumption by the target data store.
	AwsDmsReplicationInstance *AwsDmsReplicationInstanceDetails `type:"structure"`

	// Provides details about an DMS replication task. A replication task moves
	// a set of data from the source endpoint to the target endpoint.
	AwsDmsReplicationTask *AwsDmsReplicationTaskDetails `type:"structure"`

	// Details about a DynamoDB table.
	AwsDynamoDbTable *AwsDynamoDbTableDetails `type:"structure"`

	// Provides details about an Client VPN endpoint. A Client VPN endpoint is the
	// resource that you create and configure to enable and manage client VPN sessions.
	// It's the termination point for all client VPN sessions.
	AwsEc2ClientVpnEndpoint *AwsEc2ClientVpnEndpointDetails `type:"structure"`

	// Details about an Elastic IP address.
	AwsEc2Eip *AwsEc2EipDetails `type:"structure"`

	// Details about an EC2 instance related to a finding.
	AwsEc2Instance *AwsEc2InstanceDetails `type:"structure"`

	// Specifies the properties for creating an Amazon Elastic Compute Cloud (Amazon
	// EC2) launch template.
	AwsEc2LaunchTemplate *AwsEc2LaunchTemplateDetails `type:"structure"`

	// Details about an EC2 network access control list (ACL).
	AwsEc2NetworkAcl *AwsEc2NetworkAclDetails `type:"structure"`

	// Details for an EC2 network interface.
	AwsEc2NetworkInterface *AwsEc2NetworkInterfaceDetails `type:"structure"`

	// Provides details about a route table. A route table contains a set of rules,
	// called routes, that determine where to direct network traffic from your subnet
	// or gateway.
	AwsEc2RouteTable *AwsEc2RouteTableDetails `type:"structure"`

	// Details for an EC2 security group.
	AwsEc2SecurityGroup *AwsEc2SecurityGroupDetails `type:"structure"`

	// Details about a subnet in Amazon EC2.
	AwsEc2Subnet *AwsEc2SubnetDetails `type:"structure"`

	// Details about an Amazon EC2 transit gateway that interconnects your virtual
	// private clouds (VPC) and on-premises networks.
	AwsEc2TransitGateway *AwsEc2TransitGatewayDetails `type:"structure"`

	// Details for an Amazon EC2 volume.
	AwsEc2Volume *AwsEc2VolumeDetails `type:"structure"`

	// Details for an Amazon EC2 VPC.
	AwsEc2Vpc *AwsEc2VpcDetails `type:"structure"`

	// Details about the service configuration for a VPC endpoint service.
	AwsEc2VpcEndpointService *AwsEc2VpcEndpointServiceDetails `type:"structure"`

	// Details about an Amazon EC2 VPC peering connection. A VPC peering connection
	// is a networking connection between two VPCs that enables you to route traffic
	// between them privately.
	AwsEc2VpcPeeringConnection *AwsEc2VpcPeeringConnectionDetails `type:"structure"`

	// Details about an Amazon EC2 VPN connection.
	AwsEc2VpnConnection *AwsEc2VpnConnectionDetails `type:"structure"`

	// Information about an Amazon ECR image.
	AwsEcrContainerImage *AwsEcrContainerImageDetails `type:"structure"`

	// Information about an Amazon Elastic Container Registry repository.
	AwsEcrRepository *AwsEcrRepositoryDetails `type:"structure"`

	// Details about an Amazon ECS cluster.
	AwsEcsCluster *AwsEcsClusterDetails `type:"structure"`

	// Provides information about a Docker container that's part of a task.
	AwsEcsContainer *AwsEcsContainerDetails `type:"structure"`

	// Details about a service within an ECS cluster.
	AwsEcsService *AwsEcsServiceDetails `type:"structure"`

	// Details about a task in a cluster.
	AwsEcsTask *AwsEcsTaskDetails `type:"structure"`

	// Details about a task definition. A task definition describes the container
	// and volume definitions of an Amazon Elastic Container Service task.
	AwsEcsTaskDefinition *AwsEcsTaskDefinitionDetails `type:"structure"`

	// Details about an Amazon EFS access point. An access point is an application-specific
	// view into an EFS file system that applies an operating system user and group,
	// and a file system path, to any file system request made through the access
	// point.
	AwsEfsAccessPoint *AwsEfsAccessPointDetails `type:"structure"`

	// Details about an Amazon EKS cluster.
	AwsEksCluster *AwsEksClusterDetails `type:"structure"`

	// Details about an Elastic Beanstalk environment.
	AwsElasticBeanstalkEnvironment *AwsElasticBeanstalkEnvironmentDetails `type:"structure"`

	// Details for an Elasticsearch domain.
	AwsElasticsearchDomain *AwsElasticsearchDomainDetails `type:"structure"`

	// Contains details about a Classic Load Balancer.
	AwsElbLoadBalancer *AwsElbLoadBalancerDetails `type:"structure"`

	// Details about a load balancer.
	AwsElbv2LoadBalancer *AwsElbv2LoadBalancerDetails `type:"structure"`

	// A schema defines the structure of events that are sent to Amazon EventBridge.
	// Schema registries are containers for schemas. They collect and organize schemas
	// so that your schemas are in logical groups.
	AwsEventSchemasRegistry *AwsEventSchemasRegistryDetails `type:"structure"`

	// Provides details about an Amazon EventBridge global endpoint. The endpoint
	// can improve your application’s availability by making it Regional-fault
	// tolerant.
	AwsEventsEndpoint *AwsEventsEndpointDetails `type:"structure"`

	// Provides details about Amazon EventBridge event bus for an endpoint. An event
	// bus is a router that receives events and delivers them to zero or more destinations,
	// or targets.
	AwsEventsEventbus *AwsEventsEventbusDetails `type:"structure"`

	// Provides details about an Amazon GuardDuty detector. A detector is an object
	// that represents the GuardDuty service. A detector is required for GuardDuty
	// to become operational.
	AwsGuardDutyDetector *AwsGuardDutyDetectorDetails `type:"structure"`

	// Details about an IAM access key related to a finding.
	AwsIamAccessKey *AwsIamAccessKeyDetails `type:"structure"`

	// Contains details about an IAM group.
	AwsIamGroup *AwsIamGroupDetails `type:"structure"`

	// Details about an IAM permissions policy.
	AwsIamPolicy *AwsIamPolicyDetails `type:"structure"`

	// Details about an IAM role.
	AwsIamRole *AwsIamRoleDetails `type:"structure"`

	// Details about an IAM user.
	AwsIamUser *AwsIamUserDetails `type:"structure"`

	// Details about an Amazon Kinesis data stream.
	AwsKinesisStream *AwsKinesisStreamDetails `type:"structure"`

	// Details about an KMS key.
	AwsKmsKey *AwsKmsKeyDetails `type:"structure"`

	// Details about a Lambda function.
	AwsLambdaFunction *AwsLambdaFunctionDetails `type:"structure"`

	// Details for a Lambda layer version.
	AwsLambdaLayerVersion *AwsLambdaLayerVersionDetails `type:"structure"`

	// Provides details about an Amazon Managed Streaming for Apache Kafka (Amazon
	// MSK) cluster.
	AwsMskCluster *AwsMskClusterDetails `type:"structure"`

	// Details about an Network Firewall firewall.
	AwsNetworkFirewallFirewall *AwsNetworkFirewallFirewallDetails `type:"structure"`

	// Details about an Network Firewall firewall policy.
	AwsNetworkFirewallFirewallPolicy *AwsNetworkFirewallFirewallPolicyDetails `type:"structure"`

	// Details about an Network Firewall rule group.
	AwsNetworkFirewallRuleGroup *AwsNetworkFirewallRuleGroupDetails `type:"structure"`

	// Details about an Amazon OpenSearch Service domain.
	AwsOpenSearchServiceDomain *AwsOpenSearchServiceDomainDetails `type:"structure"`

	// Details about an Amazon RDS database cluster.
	AwsRdsDbCluster *AwsRdsDbClusterDetails `type:"structure"`

	// Details about an Amazon RDS database cluster snapshot.
	AwsRdsDbClusterSnapshot *AwsRdsDbClusterSnapshotDetails `type:"structure"`

	// Details about an Amazon RDS database instance.
	AwsRdsDbInstance *AwsRdsDbInstanceDetails `type:"structure"`

	// Details about an Amazon RDS DB security group.
	AwsRdsDbSecurityGroup *AwsRdsDbSecurityGroupDetails `type:"structure"`

	// Details about an Amazon RDS database snapshot.
	AwsRdsDbSnapshot *AwsRdsDbSnapshotDetails `type:"structure"`

	// Details about an RDS event notification subscription.
	AwsRdsEventSubscription *AwsRdsEventSubscriptionDetails `type:"structure"`

	// Contains details about an Amazon Redshift cluster.
	AwsRedshiftCluster *AwsRedshiftClusterDetails `type:"structure"`

	// Provides details about an Amazon Route 53 hosted zone, including the four
	// name servers assigned to the hosted zone. A hosted zone represents a collection
	// of records that can be managed together, belonging to a single parent domain
	// name.
	AwsRoute53HostedZone *AwsRoute53HostedZoneDetails `type:"structure"`

	// Provides details about an Amazon Simple Storage Service (Amazon S3) access
	// point. S3 access points are named network endpoints that are attached to
	// S3 buckets that you can use to perform S3 object operations.
	AwsS3AccessPoint *AwsS3AccessPointDetails `type:"structure"`

	// Details about the Amazon S3 Public Access Block configuration for an account.
	AwsS3AccountPublicAccessBlock *AwsS3AccountPublicAccessBlockDetails `type:"structure"`

	// Details about an S3 bucket related to a finding.
	AwsS3Bucket *AwsS3BucketDetails `type:"structure"`

	// Details about an S3 object related to a finding.
	AwsS3Object *AwsS3ObjectDetails `type:"structure"`

	// Provides details about an Amazon SageMaker notebook instance.
	AwsSageMakerNotebookInstance *AwsSageMakerNotebookInstanceDetails `type:"structure"`

	// Details about a Secrets Manager secret.
	AwsSecretsManagerSecret *AwsSecretsManagerSecretDetails `type:"structure"`

	// Details about an SNS topic.
	AwsSnsTopic *AwsSnsTopicDetails `type:"structure"`

	// Details about an SQS queue.
	AwsSqsQueue *AwsSqsQueueDetails `type:"structure"`

	// Provides information about the state of a patch on an instance based on the
	// patch baseline that was used to patch the instance.
	AwsSsmPatchCompliance *AwsSsmPatchComplianceDetails `type:"structure"`

	// Provides details about an Step Functions state machine, which is a workflow
	// consisting of a series of event-driven steps.
	AwsStepFunctionStateMachine *AwsStepFunctionStateMachineDetails `type:"structure"`

	// Details about a rate-based rule for global resources.
	AwsWafRateBasedRule *AwsWafRateBasedRuleDetails `type:"structure"`

	// Details about a rate-based rule for Regional resources.
	AwsWafRegionalRateBasedRule *AwsWafRegionalRateBasedRuleDetails `type:"structure"`

	// Details about an WAF rule for Regional resources.
	AwsWafRegionalRule *AwsWafRegionalRuleDetails `type:"structure"`

	// Details about an WAF rule group for Regional resources.
	AwsWafRegionalRuleGroup *AwsWafRegionalRuleGroupDetails `type:"structure"`

	// Details about an WAF web access control list (web ACL) for Regional resources.
	AwsWafRegionalWebAcl *AwsWafRegionalWebAclDetails `type:"structure"`

	// Details about an WAF rule for global resources.
	AwsWafRule *AwsWafRuleDetails `type:"structure"`

	// Details about an WAF rule group for global resources.
	AwsWafRuleGroup *AwsWafRuleGroupDetails `type:"structure"`

	// Details for an WAF web ACL.
	AwsWafWebAcl *AwsWafWebAclDetails `type:"structure"`

	// Details about an WAFv2 rule group.
	AwsWafv2RuleGroup *AwsWafv2RuleGroupDetails `type:"structure"`

	// Details about an WAFv2 web Access Control List (ACL).
	AwsWafv2WebAcl *AwsWafv2WebAclDetails `type:"structure"`

	// Information about the encryption configuration for X-Ray.
	AwsXrayEncryptionConfig *AwsXrayEncryptionConfigDetails `type:"structure"`

	// Details about a container resource related to a finding.
	Container *ContainerDetails `type:"structure"`

	// Details about a resource that are not available in a type-specific details
	// object. Use the Other object in the following cases.
	//
	//    * The type-specific object does not contain all of the fields that you
	//    want to populate. In this case, first use the type-specific object to
	//    populate those fields. Use the Other object to populate the fields that
	//    are missing from the type-specific object.
	//
	//    * The resource type does not have a corresponding object. This includes
	//    resources for which the type is Other.
	Other map[string]*string `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 ResourceDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceDetails) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ResourceDetails) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ResourceDetails"}
	if s.AwsIamRole != nil {
		if err := s.AwsIamRole.Validate(); err != nil {
			invalidParams.AddNested("AwsIamRole", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAmazonMqBroker sets the AwsAmazonMqBroker field's value.
func (s *ResourceDetails) SetAwsAmazonMqBroker(v *AwsAmazonMqBrokerDetails) *ResourceDetails {
	s.AwsAmazonMqBroker = v
	return s
}

// SetAwsApiGatewayRestApi sets the AwsApiGatewayRestApi field's value.
func (s *ResourceDetails) SetAwsApiGatewayRestApi(v *AwsApiGatewayRestApiDetails) *ResourceDetails {
	s.AwsApiGatewayRestApi = v
	return s
}

// SetAwsApiGatewayStage sets the AwsApiGatewayStage field's value.
func (s *ResourceDetails) SetAwsApiGatewayStage(v *AwsApiGatewayStageDetails) *ResourceDetails {
	s.AwsApiGatewayStage = v
	return s
}

// SetAwsApiGatewayV2Api sets the AwsApiGatewayV2Api field's value.
func (s *ResourceDetails) SetAwsApiGatewayV2Api(v *AwsApiGatewayV2ApiDetails) *ResourceDetails {
	s.AwsApiGatewayV2Api = v
	return s
}

// SetAwsApiGatewayV2Stage sets the AwsApiGatewayV2Stage field's value.
func (s *ResourceDetails) SetAwsApiGatewayV2Stage(v *AwsApiGatewayV2StageDetails) *ResourceDetails {
	s.AwsApiGatewayV2Stage = v
	return s
}

// SetAwsAppSyncGraphQlApi sets the AwsAppSyncGraphQlApi field's value.
func (s *ResourceDetails) SetAwsAppSyncGraphQlApi(v *AwsAppSyncGraphQlApiDetails) *ResourceDetails {
	s.AwsAppSyncGraphQlApi = v
	return s
}

// SetAwsAthenaWorkGroup sets the AwsAthenaWorkGroup field's value.
func (s *ResourceDetails) SetAwsAthenaWorkGroup(v *AwsAthenaWorkGroupDetails) *ResourceDetails {
	s.AwsAthenaWorkGroup = v
	return s
}

// SetAwsAutoScalingAutoScalingGroup sets the AwsAutoScalingAutoScalingGroup field's value.
func (s *ResourceDetails) SetAwsAutoScalingAutoScalingGroup(v *AwsAutoScalingAutoScalingGroupDetails) *ResourceDetails {
	s.AwsAutoScalingAutoScalingGroup = v
	return s
}

// SetAwsAutoScalingLaunchConfiguration sets the AwsAutoScalingLaunchConfiguration field's value.
func (s *ResourceDetails) SetAwsAutoScalingLaunchConfiguration(v *AwsAutoScalingLaunchConfigurationDetails) *ResourceDetails {
	s.AwsAutoScalingLaunchConfiguration = v
	return s
}

// SetAwsBackupBackupPlan sets the AwsBackupBackupPlan field's value.
func (s *ResourceDetails) SetAwsBackupBackupPlan(v *AwsBackupBackupPlanDetails) *ResourceDetails {
	s.AwsBackupBackupPlan = v
	return s
}

// SetAwsBackupBackupVault sets the AwsBackupBackupVault field's value.
func (s *ResourceDetails) SetAwsBackupBackupVault(v *AwsBackupBackupVaultDetails) *ResourceDetails {
	s.AwsBackupBackupVault = v
	return s
}

// SetAwsBackupRecoveryPoint sets the AwsBackupRecoveryPoint field's value.
func (s *ResourceDetails) SetAwsBackupRecoveryPoint(v *AwsBackupRecoveryPointDetails) *ResourceDetails {
	s.AwsBackupRecoveryPoint = v
	return s
}

// SetAwsCertificateManagerCertificate sets the AwsCertificateManagerCertificate field's value.
func (s *ResourceDetails) SetAwsCertificateManagerCertificate(v *AwsCertificateManagerCertificateDetails) *ResourceDetails {
	s.AwsCertificateManagerCertificate = v
	return s
}

// SetAwsCloudFormationStack sets the AwsCloudFormationStack field's value.
func (s *ResourceDetails) SetAwsCloudFormationStack(v *AwsCloudFormationStackDetails) *ResourceDetails {
	s.AwsCloudFormationStack = v
	return s
}

// SetAwsCloudFrontDistribution sets the AwsCloudFrontDistribution field's value.
func (s *ResourceDetails) SetAwsCloudFrontDistribution(v *AwsCloudFrontDistributionDetails) *ResourceDetails {
	s.AwsCloudFrontDistribution = v
	return s
}

// SetAwsCloudTrailTrail sets the AwsCloudTrailTrail field's value.
func (s *ResourceDetails) SetAwsCloudTrailTrail(v *AwsCloudTrailTrailDetails) *ResourceDetails {
	s.AwsCloudTrailTrail = v
	return s
}

// SetAwsCloudWatchAlarm sets the AwsCloudWatchAlarm field's value.
func (s *ResourceDetails) SetAwsCloudWatchAlarm(v *AwsCloudWatchAlarmDetails) *ResourceDetails {
	s.AwsCloudWatchAlarm = v
	return s
}

// SetAwsCodeBuildProject sets the AwsCodeBuildProject field's value.
func (s *ResourceDetails) SetAwsCodeBuildProject(v *AwsCodeBuildProjectDetails) *ResourceDetails {
	s.AwsCodeBuildProject = v
	return s
}

// SetAwsDmsEndpoint sets the AwsDmsEndpoint field's value.
func (s *ResourceDetails) SetAwsDmsEndpoint(v *AwsDmsEndpointDetails) *ResourceDetails {
	s.AwsDmsEndpoint = v
	return s
}

// SetAwsDmsReplicationInstance sets the AwsDmsReplicationInstance field's value.
func (s *ResourceDetails) SetAwsDmsReplicationInstance(v *AwsDmsReplicationInstanceDetails) *ResourceDetails {
	s.AwsDmsReplicationInstance = v
	return s
}

// SetAwsDmsReplicationTask sets the AwsDmsReplicationTask field's value.
func (s *ResourceDetails) SetAwsDmsReplicationTask(v *AwsDmsReplicationTaskDetails) *ResourceDetails {
	s.AwsDmsReplicationTask = v
	return s
}

// SetAwsDynamoDbTable sets the AwsDynamoDbTable field's value.
func (s *ResourceDetails) SetAwsDynamoDbTable(v *AwsDynamoDbTableDetails) *ResourceDetails {
	s.AwsDynamoDbTable = v
	return s
}

// SetAwsEc2ClientVpnEndpoint sets the AwsEc2ClientVpnEndpoint field's value.
func (s *ResourceDetails) SetAwsEc2ClientVpnEndpoint(v *AwsEc2ClientVpnEndpointDetails) *ResourceDetails {
	s.AwsEc2ClientVpnEndpoint = v
	return s
}

// SetAwsEc2Eip sets the AwsEc2Eip field's value.
func (s *ResourceDetails) SetAwsEc2Eip(v *AwsEc2EipDetails) *ResourceDetails {
	s.AwsEc2Eip = v
	return s
}

// SetAwsEc2Instance sets the AwsEc2Instance field's value.
func (s *ResourceDetails) SetAwsEc2Instance(v *AwsEc2InstanceDetails) *ResourceDetails {
	s.AwsEc2Instance = v
	return s
}

// SetAwsEc2LaunchTemplate sets the AwsEc2LaunchTemplate field's value.
func (s *ResourceDetails) SetAwsEc2LaunchTemplate(v *AwsEc2LaunchTemplateDetails) *ResourceDetails {
	s.AwsEc2LaunchTemplate = v
	return s
}

// SetAwsEc2NetworkAcl sets the AwsEc2NetworkAcl field's value.
func (s *ResourceDetails) SetAwsEc2NetworkAcl(v *AwsEc2NetworkAclDetails) *ResourceDetails {
	s.AwsEc2NetworkAcl = v
	return s
}

// SetAwsEc2NetworkInterface sets the AwsEc2NetworkInterface field's value.
func (s *ResourceDetails) SetAwsEc2NetworkInterface(v *AwsEc2NetworkInterfaceDetails) *ResourceDetails {
	s.AwsEc2NetworkInterface = v
	return s
}

// SetAwsEc2RouteTable sets the AwsEc2RouteTable field's value.
func (s *ResourceDetails) SetAwsEc2RouteTable(v *AwsEc2RouteTableDetails) *ResourceDetails {
	s.AwsEc2RouteTable = v
	return s
}

// SetAwsEc2SecurityGroup sets the AwsEc2SecurityGroup field's value.
func (s *ResourceDetails) SetAwsEc2SecurityGroup(v *AwsEc2SecurityGroupDetails) *ResourceDetails {
	s.AwsEc2SecurityGroup = v
	return s
}

// SetAwsEc2Subnet sets the AwsEc2Subnet field's value.
func (s *ResourceDetails) SetAwsEc2Subnet(v *AwsEc2SubnetDetails) *ResourceDetails {
	s.AwsEc2Subnet = v
	return s
}

// SetAwsEc2TransitGateway sets the AwsEc2TransitGateway field's value.
func (s *ResourceDetails) SetAwsEc2TransitGateway(v *AwsEc2TransitGatewayDetails) *ResourceDetails {
	s.AwsEc2TransitGateway = v
	return s
}

// SetAwsEc2Volume sets the AwsEc2Volume field's value.
func (s *ResourceDetails) SetAwsEc2Volume(v *AwsEc2VolumeDetails) *ResourceDetails {
	s.AwsEc2Volume = v
	return s
}

// SetAwsEc2Vpc sets the AwsEc2Vpc field's value.
func (s *ResourceDetails) SetAwsEc2Vpc(v *AwsEc2VpcDetails) *ResourceDetails {
	s.AwsEc2Vpc = v
	return s
}

// SetAwsEc2VpcEndpointService sets the AwsEc2VpcEndpointService field's value.
func (s *ResourceDetails) SetAwsEc2VpcEndpointService(v *AwsEc2VpcEndpointServiceDetails) *ResourceDetails {
	s.AwsEc2VpcEndpointService = v
	return s
}

// SetAwsEc2VpcPeeringConnection sets the AwsEc2VpcPeeringConnection field's value.
func (s *ResourceDetails) SetAwsEc2VpcPeeringConnection(v *AwsEc2VpcPeeringConnectionDetails) *ResourceDetails {
	s.AwsEc2VpcPeeringConnection = v
	return s
}

// SetAwsEc2VpnConnection sets the AwsEc2VpnConnection field's value.
func (s *ResourceDetails) SetAwsEc2VpnConnection(v *AwsEc2VpnConnectionDetails) *ResourceDetails {
	s.AwsEc2VpnConnection = v
	return s
}

// SetAwsEcrContainerImage sets the AwsEcrContainerImage field's value.
func (s *ResourceDetails) SetAwsEcrContainerImage(v *AwsEcrContainerImageDetails) *ResourceDetails {
	s.AwsEcrContainerImage = v
	return s
}

// SetAwsEcrRepository sets the AwsEcrRepository field's value.
func (s *ResourceDetails) SetAwsEcrRepository(v *AwsEcrRepositoryDetails) *ResourceDetails {
	s.AwsEcrRepository = v
	return s
}

// SetAwsEcsCluster sets the AwsEcsCluster field's value.
func (s *ResourceDetails) SetAwsEcsCluster(v *AwsEcsClusterDetails) *ResourceDetails {
	s.AwsEcsCluster = v
	return s
}

// SetAwsEcsContainer sets the AwsEcsContainer field's value.
func (s *ResourceDetails) SetAwsEcsContainer(v *AwsEcsContainerDetails) *ResourceDetails {
	s.AwsEcsContainer = v
	return s
}

// SetAwsEcsService sets the AwsEcsService field's value.
func (s *ResourceDetails) SetAwsEcsService(v *AwsEcsServiceDetails) *ResourceDetails {
	s.AwsEcsService = v
	return s
}

// SetAwsEcsTask sets the AwsEcsTask field's value.
func (s *ResourceDetails) SetAwsEcsTask(v *AwsEcsTaskDetails) *ResourceDetails {
	s.AwsEcsTask = v
	return s
}

// SetAwsEcsTaskDefinition sets the AwsEcsTaskDefinition field's value.
func (s *ResourceDetails) SetAwsEcsTaskDefinition(v *AwsEcsTaskDefinitionDetails) *ResourceDetails {
	s.AwsEcsTaskDefinition = v
	return s
}

// SetAwsEfsAccessPoint sets the AwsEfsAccessPoint field's value.
func (s *ResourceDetails) SetAwsEfsAccessPoint(v *AwsEfsAccessPointDetails) *ResourceDetails {
	s.AwsEfsAccessPoint = v
	return s
}

// SetAwsEksCluster sets the AwsEksCluster field's value.
func (s *ResourceDetails) SetAwsEksCluster(v *AwsEksClusterDetails) *ResourceDetails {
	s.AwsEksCluster = v
	return s
}

// SetAwsElasticBeanstalkEnvironment sets the AwsElasticBeanstalkEnvironment field's value.
func (s *ResourceDetails) SetAwsElasticBeanstalkEnvironment(v *AwsElasticBeanstalkEnvironmentDetails) *ResourceDetails {
	s.AwsElasticBeanstalkEnvironment = v
	return s
}

// SetAwsElasticsearchDomain sets the AwsElasticsearchDomain field's value.
func (s *ResourceDetails) SetAwsElasticsearchDomain(v *AwsElasticsearchDomainDetails) *ResourceDetails {
	s.AwsElasticsearchDomain = v
	return s
}

// SetAwsElbLoadBalancer sets the AwsElbLoadBalancer field's value.
func (s *ResourceDetails) SetAwsElbLoadBalancer(v *AwsElbLoadBalancerDetails) *ResourceDetails {
	s.AwsElbLoadBalancer = v
	return s
}

// SetAwsElbv2LoadBalancer sets the AwsElbv2LoadBalancer field's value.
func (s *ResourceDetails) SetAwsElbv2LoadBalancer(v *AwsElbv2LoadBalancerDetails) *ResourceDetails {
	s.AwsElbv2LoadBalancer = v
	return s
}

// SetAwsEventSchemasRegistry sets the AwsEventSchemasRegistry field's value.
func (s *ResourceDetails) SetAwsEventSchemasRegistry(v *AwsEventSchemasRegistryDetails) *ResourceDetails {
	s.AwsEventSchemasRegistry = v
	return s
}

// SetAwsEventsEndpoint sets the AwsEventsEndpoint field's value.
func (s *ResourceDetails) SetAwsEventsEndpoint(v *AwsEventsEndpointDetails) *ResourceDetails {
	s.AwsEventsEndpoint = v
	return s
}

// SetAwsEventsEventbus sets the AwsEventsEventbus field's value.
func (s *ResourceDetails) SetAwsEventsEventbus(v *AwsEventsEventbusDetails) *ResourceDetails {
	s.AwsEventsEventbus = v
	return s
}

// SetAwsGuardDutyDetector sets the AwsGuardDutyDetector field's value.
func (s *ResourceDetails) SetAwsGuardDutyDetector(v *AwsGuardDutyDetectorDetails) *ResourceDetails {
	s.AwsGuardDutyDetector = v
	return s
}

// SetAwsIamAccessKey sets the AwsIamAccessKey field's value.
func (s *ResourceDetails) SetAwsIamAccessKey(v *AwsIamAccessKeyDetails) *ResourceDetails {
	s.AwsIamAccessKey = v
	return s
}

// SetAwsIamGroup sets the AwsIamGroup field's value.
func (s *ResourceDetails) SetAwsIamGroup(v *AwsIamGroupDetails) *ResourceDetails {
	s.AwsIamGroup = v
	return s
}

// SetAwsIamPolicy sets the AwsIamPolicy field's value.
func (s *ResourceDetails) SetAwsIamPolicy(v *AwsIamPolicyDetails) *ResourceDetails {
	s.AwsIamPolicy = v
	return s
}

// SetAwsIamRole sets the AwsIamRole field's value.
func (s *ResourceDetails) SetAwsIamRole(v *AwsIamRoleDetails) *ResourceDetails {
	s.AwsIamRole = v
	return s
}

// SetAwsIamUser sets the AwsIamUser field's value.
func (s *ResourceDetails) SetAwsIamUser(v *AwsIamUserDetails) *ResourceDetails {
	s.AwsIamUser = v
	return s
}

// SetAwsKinesisStream sets the AwsKinesisStream field's value.
func (s *ResourceDetails) SetAwsKinesisStream(v *AwsKinesisStreamDetails) *ResourceDetails {
	s.AwsKinesisStream = v
	return s
}

// SetAwsKmsKey sets the AwsKmsKey field's value.
func (s *ResourceDetails) SetAwsKmsKey(v *AwsKmsKeyDetails) *ResourceDetails {
	s.AwsKmsKey = v
	return s
}

// SetAwsLambdaFunction sets the AwsLambdaFunction field's value.
func (s *ResourceDetails) SetAwsLambdaFunction(v *AwsLambdaFunctionDetails) *ResourceDetails {
	s.AwsLambdaFunction = v
	return s
}

// SetAwsLambdaLayerVersion sets the AwsLambdaLayerVersion field's value.
func (s *ResourceDetails) SetAwsLambdaLayerVersion(v *AwsLambdaLayerVersionDetails) *ResourceDetails {
	s.AwsLambdaLayerVersion = v
	return s
}

// SetAwsMskCluster sets the AwsMskCluster field's value.
func (s *ResourceDetails) SetAwsMskCluster(v *AwsMskClusterDetails) *ResourceDetails {
	s.AwsMskCluster = v
	return s
}

// SetAwsNetworkFirewallFirewall sets the AwsNetworkFirewallFirewall field's value.
func (s *ResourceDetails) SetAwsNetworkFirewallFirewall(v *AwsNetworkFirewallFirewallDetails) *ResourceDetails {
	s.AwsNetworkFirewallFirewall = v
	return s
}

// SetAwsNetworkFirewallFirewallPolicy sets the AwsNetworkFirewallFirewallPolicy field's value.
func (s *ResourceDetails) SetAwsNetworkFirewallFirewallPolicy(v *AwsNetworkFirewallFirewallPolicyDetails) *ResourceDetails {
	s.AwsNetworkFirewallFirewallPolicy = v
	return s
}

// SetAwsNetworkFirewallRuleGroup sets the AwsNetworkFirewallRuleGroup field's value.
func (s *ResourceDetails) SetAwsNetworkFirewallRuleGroup(v *AwsNetworkFirewallRuleGroupDetails) *ResourceDetails {
	s.AwsNetworkFirewallRuleGroup = v
	return s
}

// SetAwsOpenSearchServiceDomain sets the AwsOpenSearchServiceDomain field's value.
func (s *ResourceDetails) SetAwsOpenSearchServiceDomain(v *AwsOpenSearchServiceDomainDetails) *ResourceDetails {
	s.AwsOpenSearchServiceDomain = v
	return s
}

// SetAwsRdsDbCluster sets the AwsRdsDbCluster field's value.
func (s *ResourceDetails) SetAwsRdsDbCluster(v *AwsRdsDbClusterDetails) *ResourceDetails {
	s.AwsRdsDbCluster = v
	return s
}

// SetAwsRdsDbClusterSnapshot sets the AwsRdsDbClusterSnapshot field's value.
func (s *ResourceDetails) SetAwsRdsDbClusterSnapshot(v *AwsRdsDbClusterSnapshotDetails) *ResourceDetails {
	s.AwsRdsDbClusterSnapshot = v
	return s
}

// SetAwsRdsDbInstance sets the AwsRdsDbInstance field's value.
func (s *ResourceDetails) SetAwsRdsDbInstance(v *AwsRdsDbInstanceDetails) *ResourceDetails {
	s.AwsRdsDbInstance = v
	return s
}

// SetAwsRdsDbSecurityGroup sets the AwsRdsDbSecurityGroup field's value.
func (s *ResourceDetails) SetAwsRdsDbSecurityGroup(v *AwsRdsDbSecurityGroupDetails) *ResourceDetails {
	s.AwsRdsDbSecurityGroup = v
	return s
}

// SetAwsRdsDbSnapshot sets the AwsRdsDbSnapshot field's value.
func (s *ResourceDetails) SetAwsRdsDbSnapshot(v *AwsRdsDbSnapshotDetails) *ResourceDetails {
	s.AwsRdsDbSnapshot = v
	return s
}

// SetAwsRdsEventSubscription sets the AwsRdsEventSubscription field's value.
func (s *ResourceDetails) SetAwsRdsEventSubscription(v *AwsRdsEventSubscriptionDetails) *ResourceDetails {
	s.AwsRdsEventSubscription = v
	return s
}

// SetAwsRedshiftCluster sets the AwsRedshiftCluster field's value.
func (s *ResourceDetails) SetAwsRedshiftCluster(v *AwsRedshiftClusterDetails) *ResourceDetails {
	s.AwsRedshiftCluster = v
	return s
}

// SetAwsRoute53HostedZone sets the AwsRoute53HostedZone field's value.
func (s *ResourceDetails) SetAwsRoute53HostedZone(v *AwsRoute53HostedZoneDetails) *ResourceDetails {
	s.AwsRoute53HostedZone = v
	return s
}

// SetAwsS3AccessPoint sets the AwsS3AccessPoint field's value.
func (s *ResourceDetails) SetAwsS3AccessPoint(v *AwsS3AccessPointDetails) *ResourceDetails {
	s.AwsS3AccessPoint = v
	return s
}

// SetAwsS3AccountPublicAccessBlock sets the AwsS3AccountPublicAccessBlock field's value.
func (s *ResourceDetails) SetAwsS3AccountPublicAccessBlock(v *AwsS3AccountPublicAccessBlockDetails) *ResourceDetails {
	s.AwsS3AccountPublicAccessBlock = v
	return s
}

// SetAwsS3Bucket sets the AwsS3Bucket field's value.
func (s *ResourceDetails) SetAwsS3Bucket(v *AwsS3BucketDetails) *ResourceDetails {
	s.AwsS3Bucket = v
	return s
}

// SetAwsS3Object sets the AwsS3Object field's value.
func (s *ResourceDetails) SetAwsS3Object(v *AwsS3ObjectDetails) *ResourceDetails {
	s.AwsS3Object = v
	return s
}

// SetAwsSageMakerNotebookInstance sets the AwsSageMakerNotebookInstance field's value.
func (s *ResourceDetails) SetAwsSageMakerNotebookInstance(v *AwsSageMakerNotebookInstanceDetails) *ResourceDetails {
	s.AwsSageMakerNotebookInstance = v
	return s
}

// SetAwsSecretsManagerSecret sets the AwsSecretsManagerSecret field's value.
func (s *ResourceDetails) SetAwsSecretsManagerSecret(v *AwsSecretsManagerSecretDetails) *ResourceDetails {
	s.AwsSecretsManagerSecret = v
	return s
}

// SetAwsSnsTopic sets the AwsSnsTopic field's value.
func (s *ResourceDetails) SetAwsSnsTopic(v *AwsSnsTopicDetails) *ResourceDetails {
	s.AwsSnsTopic = v
	return s
}

// SetAwsSqsQueue sets the AwsSqsQueue field's value.
func (s *ResourceDetails) SetAwsSqsQueue(v *AwsSqsQueueDetails) *ResourceDetails {
	s.AwsSqsQueue = v
	return s
}

// SetAwsSsmPatchCompliance sets the AwsSsmPatchCompliance field's value.
func (s *ResourceDetails) SetAwsSsmPatchCompliance(v *AwsSsmPatchComplianceDetails) *ResourceDetails {
	s.AwsSsmPatchCompliance = v
	return s
}

// SetAwsStepFunctionStateMachine sets the AwsStepFunctionStateMachine field's value.
func (s *ResourceDetails) SetAwsStepFunctionStateMachine(v *AwsStepFunctionStateMachineDetails) *ResourceDetails {
	s.AwsStepFunctionStateMachine = v
	return s
}

// SetAwsWafRateBasedRule sets the AwsWafRateBasedRule field's value.
func (s *ResourceDetails) SetAwsWafRateBasedRule(v *AwsWafRateBasedRuleDetails) *ResourceDetails {
	s.AwsWafRateBasedRule = v
	return s
}

// SetAwsWafRegionalRateBasedRule sets the AwsWafRegionalRateBasedRule field's value.
func (s *ResourceDetails) SetAwsWafRegionalRateBasedRule(v *AwsWafRegionalRateBasedRuleDetails) *ResourceDetails {
	s.AwsWafRegionalRateBasedRule = v
	return s
}

// SetAwsWafRegionalRule sets the AwsWafRegionalRule field's value.
func (s *ResourceDetails) SetAwsWafRegionalRule(v *AwsWafRegionalRuleDetails) *ResourceDetails {
	s.AwsWafRegionalRule = v
	return s
}

// SetAwsWafRegionalRuleGroup sets the AwsWafRegionalRuleGroup field's value.
func (s *ResourceDetails) SetAwsWafRegionalRuleGroup(v *AwsWafRegionalRuleGroupDetails) *ResourceDetails {
	s.AwsWafRegionalRuleGroup = v
	return s
}

// SetAwsWafRegionalWebAcl sets the AwsWafRegionalWebAcl field's value.
func (s *ResourceDetails) SetAwsWafRegionalWebAcl(v *AwsWafRegionalWebAclDetails) *ResourceDetails {
	s.AwsWafRegionalWebAcl = v
	return s
}

// SetAwsWafRule sets the AwsWafRule field's value.
func (s *ResourceDetails) SetAwsWafRule(v *AwsWafRuleDetails) *ResourceDetails {
	s.AwsWafRule = v
	return s
}

// SetAwsWafRuleGroup sets the AwsWafRuleGroup field's value.
func (s *ResourceDetails) SetAwsWafRuleGroup(v *AwsWafRuleGroupDetails) *ResourceDetails {
	s.AwsWafRuleGroup = v
	return s
}

// SetAwsWafWebAcl sets the AwsWafWebAcl field's value.
func (s *ResourceDetails) SetAwsWafWebAcl(v *AwsWafWebAclDetails) *ResourceDetails {
	s.AwsWafWebAcl = v
	return s
}

// SetAwsWafv2RuleGroup sets the AwsWafv2RuleGroup field's value.
func (s *ResourceDetails) SetAwsWafv2RuleGroup(v *AwsWafv2RuleGroupDetails) *ResourceDetails {
	s.AwsWafv2RuleGroup = v
	return s
}

// SetAwsWafv2WebAcl sets the AwsWafv2WebAcl field's value.
func (s *ResourceDetails) SetAwsWafv2WebAcl(v *AwsWafv2WebAclDetails) *ResourceDetails {
	s.AwsWafv2WebAcl = v
	return s
}

// SetAwsXrayEncryptionConfig sets the AwsXrayEncryptionConfig field's value.
func (s *ResourceDetails) SetAwsXrayEncryptionConfig(v *AwsXrayEncryptionConfigDetails) *ResourceDetails {
	s.AwsXrayEncryptionConfig = v
	return s
}

// SetContainer sets the Container field's value.
func (s *ResourceDetails) SetContainer(v *ContainerDetails) *ResourceDetails {
	s.Container = v
	return s
}

// SetOther sets the Other field's value.
func (s *ResourceDetails) SetOther(v map[string]*string) *ResourceDetails {
	s.Other = v
	return s
}

// The request was rejected because it conflicts with the resource's availability.
// For example, you tried to update a security control that's currently in the
// UPDATING state.
type ResourceInUseException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Code_ *string `locationName:"Code" type:"string"`

	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\n%s", s.Code(), s.Message(), s.String())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ResourceInUseException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ResourceInUseException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The request was rejected because we can't find the specified resource.
type ResourceNotFoundException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Code_ *string `locationName:"Code" type:"string"`

	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\n%s", s.Code(), s.Message(), s.String())
}

// 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
}

// Details about the account that was not processed.
type Result struct {
	_ struct{} `type:"structure"`

	// An Amazon Web Services account ID of the account that was not processed.
	AccountId *string `type:"string"`

	// The reason that the account was not processed.
	ProcessingResult *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Result) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Result) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *Result) SetAccountId(v string) *Result {
	s.AccountId = &v
	return s
}

// SetProcessingResult sets the ProcessingResult field's value.
func (s *Result) SetProcessingResult(v string) *Result {
	s.ProcessingResult = &v
	return s
}

// Provides details about the routes in the route table.
type RouteSetDetails struct {
	_ struct{} `type:"structure"`

	// The ID of the carrier gateway.
	CarrierGatewayId *string `type:"string"`

	// The Amazon Resource Name (ARN) of the core network.
	CoreNetworkArn *string `type:"string"`

	// The IPv4 CIDR block used for the destination match.
	DestinationCidrBlock *string `type:"string"`

	// The IPv6 CIDR block used for the destination match.
	DestinationIpv6CidrBlock *string `type:"string"`

	// The prefix of the destination Amazon Web Service.
	DestinationPrefixListId *string `type:"string"`

	// The ID of the egress-only internet gateway.
	EgressOnlyInternetGatewayId *string `type:"string"`

	// The ID of a gateway attached to your VPC.
	GatewayId *string `type:"string"`

	// The ID of a NAT instance in your VPC.
	InstanceId *string `type:"string"`

	// The ID of the Amazon Web Services account that owns the instance.
	InstanceOwnerId *string `type:"string"`

	// The ID of the local gateway.
	LocalGatewayId *string `type:"string"`

	// The ID of a NAT gateway.
	NatGatewayId *string `type:"string"`

	// The ID of the network interface.
	NetworkInterfaceId *string `type:"string"`

	// Describes how the route was created.
	Origin *string `type:"string"`

	// The state of the route.
	State *string `type:"string"`

	// The ID of a transit gateway.
	TransitGatewayId *string `type:"string"`

	// The ID of a VPC peering connection.
	VpcPeeringConnectionId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RouteSetDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RouteSetDetails) GoString() string {
	return s.String()
}

// SetCarrierGatewayId sets the CarrierGatewayId field's value.
func (s *RouteSetDetails) SetCarrierGatewayId(v string) *RouteSetDetails {
	s.CarrierGatewayId = &v
	return s
}

// SetCoreNetworkArn sets the CoreNetworkArn field's value.
func (s *RouteSetDetails) SetCoreNetworkArn(v string) *RouteSetDetails {
	s.CoreNetworkArn = &v
	return s
}

// SetDestinationCidrBlock sets the DestinationCidrBlock field's value.
func (s *RouteSetDetails) SetDestinationCidrBlock(v string) *RouteSetDetails {
	s.DestinationCidrBlock = &v
	return s
}

// SetDestinationIpv6CidrBlock sets the DestinationIpv6CidrBlock field's value.
func (s *RouteSetDetails) SetDestinationIpv6CidrBlock(v string) *RouteSetDetails {
	s.DestinationIpv6CidrBlock = &v
	return s
}

// SetDestinationPrefixListId sets the DestinationPrefixListId field's value.
func (s *RouteSetDetails) SetDestinationPrefixListId(v string) *RouteSetDetails {
	s.DestinationPrefixListId = &v
	return s
}

// SetEgressOnlyInternetGatewayId sets the EgressOnlyInternetGatewayId field's value.
func (s *RouteSetDetails) SetEgressOnlyInternetGatewayId(v string) *RouteSetDetails {
	s.EgressOnlyInternetGatewayId = &v
	return s
}

// SetGatewayId sets the GatewayId field's value.
func (s *RouteSetDetails) SetGatewayId(v string) *RouteSetDetails {
	s.GatewayId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *RouteSetDetails) SetInstanceId(v string) *RouteSetDetails {
	s.InstanceId = &v
	return s
}

// SetInstanceOwnerId sets the InstanceOwnerId field's value.
func (s *RouteSetDetails) SetInstanceOwnerId(v string) *RouteSetDetails {
	s.InstanceOwnerId = &v
	return s
}

// SetLocalGatewayId sets the LocalGatewayId field's value.
func (s *RouteSetDetails) SetLocalGatewayId(v string) *RouteSetDetails {
	s.LocalGatewayId = &v
	return s
}

// SetNatGatewayId sets the NatGatewayId field's value.
func (s *RouteSetDetails) SetNatGatewayId(v string) *RouteSetDetails {
	s.NatGatewayId = &v
	return s
}

// SetNetworkInterfaceId sets the NetworkInterfaceId field's value.
func (s *RouteSetDetails) SetNetworkInterfaceId(v string) *RouteSetDetails {
	s.NetworkInterfaceId = &v
	return s
}

// SetOrigin sets the Origin field's value.
func (s *RouteSetDetails) SetOrigin(v string) *RouteSetDetails {
	s.Origin = &v
	return s
}

// SetState sets the State field's value.
func (s *RouteSetDetails) SetState(v string) *RouteSetDetails {
	s.State = &v
	return s
}

// SetTransitGatewayId sets the TransitGatewayId field's value.
func (s *RouteSetDetails) SetTransitGatewayId(v string) *RouteSetDetails {
	s.TransitGatewayId = &v
	return s
}

// SetVpcPeeringConnectionId sets the VpcPeeringConnectionId field's value.
func (s *RouteSetDetails) SetVpcPeeringConnectionId(v string) *RouteSetDetails {
	s.VpcPeeringConnectionId = &v
	return s
}

// Details about the rule group.
type RuleGroupDetails struct {
	_ struct{} `type:"structure"`

	// Additional settings to use in the specified rules.
	RuleVariables *RuleGroupVariables `type:"structure"`

	// The rules and actions for the rule group.
	//
	// For stateful rule groups, can contain RulesString, RulesSourceList, or StatefulRules.
	//
	// For stateless rule groups, contains StatelessRulesAndCustomActions.
	RulesSource *RuleGroupSource `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 RuleGroupDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupDetails) GoString() string {
	return s.String()
}

// SetRuleVariables sets the RuleVariables field's value.
func (s *RuleGroupDetails) SetRuleVariables(v *RuleGroupVariables) *RuleGroupDetails {
	s.RuleVariables = v
	return s
}

// SetRulesSource sets the RulesSource field's value.
func (s *RuleGroupDetails) SetRulesSource(v *RuleGroupSource) *RuleGroupDetails {
	s.RulesSource = v
	return s
}

// The rules and actions for the rule group.
type RuleGroupSource struct {
	_ struct{} `type:"structure"`

	// Stateful inspection criteria for a domain list rule group. A domain list
	// rule group determines access by specific protocols to specific domains.
	RulesSourceList *RuleGroupSourceListDetails `type:"structure"`

	// Stateful inspection criteria, provided in Suricata compatible intrusion prevention
	// system (IPS) rules.
	RulesString *string `type:"string"`

	// Suricata rule specifications.
	StatefulRules []*RuleGroupSourceStatefulRulesDetails `type:"list"`

	// The stateless rules and custom actions used by a stateless rule group.
	StatelessRulesAndCustomActions *RuleGroupSourceStatelessRulesAndCustomActionsDetails `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 RuleGroupSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupSource) GoString() string {
	return s.String()
}

// SetRulesSourceList sets the RulesSourceList field's value.
func (s *RuleGroupSource) SetRulesSourceList(v *RuleGroupSourceListDetails) *RuleGroupSource {
	s.RulesSourceList = v
	return s
}

// SetRulesString sets the RulesString field's value.
func (s *RuleGroupSource) SetRulesString(v string) *RuleGroupSource {
	s.RulesString = &v
	return s
}

// SetStatefulRules sets the StatefulRules field's value.
func (s *RuleGroupSource) SetStatefulRules(v []*RuleGroupSourceStatefulRulesDetails) *RuleGroupSource {
	s.StatefulRules = v
	return s
}

// SetStatelessRulesAndCustomActions sets the StatelessRulesAndCustomActions field's value.
func (s *RuleGroupSource) SetStatelessRulesAndCustomActions(v *RuleGroupSourceStatelessRulesAndCustomActionsDetails) *RuleGroupSource {
	s.StatelessRulesAndCustomActions = v
	return s
}

// A custom action definition. A custom action is an optional, non-standard
// action to use for stateless packet handling.
type RuleGroupSourceCustomActionsDetails struct {
	_ struct{} `type:"structure"`

	// The definition of a custom action.
	ActionDefinition *StatelessCustomActionDefinition `type:"structure"`

	// A descriptive name of the custom action.
	ActionName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupSourceCustomActionsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupSourceCustomActionsDetails) GoString() string {
	return s.String()
}

// SetActionDefinition sets the ActionDefinition field's value.
func (s *RuleGroupSourceCustomActionsDetails) SetActionDefinition(v *StatelessCustomActionDefinition) *RuleGroupSourceCustomActionsDetails {
	s.ActionDefinition = v
	return s
}

// SetActionName sets the ActionName field's value.
func (s *RuleGroupSourceCustomActionsDetails) SetActionName(v string) *RuleGroupSourceCustomActionsDetails {
	s.ActionName = &v
	return s
}

// Stateful inspection criteria for a domain list rule group.
type RuleGroupSourceListDetails struct {
	_ struct{} `type:"structure"`

	// Indicates whether to allow or deny access to the domains listed in Targets.
	GeneratedRulesType *string `type:"string"`

	// The protocols that you want to inspect. Specify LS_SNI for HTTPS. Specify
	// HTTP_HOST for HTTP. You can specify either or both.
	TargetTypes []*string `type:"list"`

	// The domains that you want to inspect for in your traffic flows. You can provide
	// full domain names, or use the '.' prefix as a wildcard. For example, .example.com
	// matches all domains that end with example.com.
	Targets []*string `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 RuleGroupSourceListDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupSourceListDetails) GoString() string {
	return s.String()
}

// SetGeneratedRulesType sets the GeneratedRulesType field's value.
func (s *RuleGroupSourceListDetails) SetGeneratedRulesType(v string) *RuleGroupSourceListDetails {
	s.GeneratedRulesType = &v
	return s
}

// SetTargetTypes sets the TargetTypes field's value.
func (s *RuleGroupSourceListDetails) SetTargetTypes(v []*string) *RuleGroupSourceListDetails {
	s.TargetTypes = v
	return s
}

// SetTargets sets the Targets field's value.
func (s *RuleGroupSourceListDetails) SetTargets(v []*string) *RuleGroupSourceListDetails {
	s.Targets = v
	return s
}

// A Suricata rule specification.
type RuleGroupSourceStatefulRulesDetails struct {
	_ struct{} `type:"structure"`

	// Defines what Network Firewall should do with the packets in a traffic flow
	// when the flow matches the stateful rule criteria.
	Action *string `type:"string"`

	// The stateful inspection criteria for the rule.
	Header *RuleGroupSourceStatefulRulesHeaderDetails `type:"structure"`

	// Additional options for the rule.
	RuleOptions []*RuleGroupSourceStatefulRulesOptionsDetails `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 RuleGroupSourceStatefulRulesDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupSourceStatefulRulesDetails) GoString() string {
	return s.String()
}

// SetAction sets the Action field's value.
func (s *RuleGroupSourceStatefulRulesDetails) SetAction(v string) *RuleGroupSourceStatefulRulesDetails {
	s.Action = &v
	return s
}

// SetHeader sets the Header field's value.
func (s *RuleGroupSourceStatefulRulesDetails) SetHeader(v *RuleGroupSourceStatefulRulesHeaderDetails) *RuleGroupSourceStatefulRulesDetails {
	s.Header = v
	return s
}

// SetRuleOptions sets the RuleOptions field's value.
func (s *RuleGroupSourceStatefulRulesDetails) SetRuleOptions(v []*RuleGroupSourceStatefulRulesOptionsDetails) *RuleGroupSourceStatefulRulesDetails {
	s.RuleOptions = v
	return s
}

// The inspection criteria for a stateful rule.
type RuleGroupSourceStatefulRulesHeaderDetails struct {
	_ struct{} `type:"structure"`

	// The destination IP address or address range to inspect for, in CIDR notation.
	// To match with any address, specify ANY.
	Destination *string `type:"string"`

	// The destination port to inspect for. You can specify an individual port,
	// such as 1994. You also can specify a port range, such as 1990:1994. To match
	// with any port, specify ANY.
	DestinationPort *string `type:"string"`

	// The direction of traffic flow to inspect. If set to ANY, the inspection matches
	// bidirectional traffic, both from the source to the destination and from the
	// destination to the source. If set to FORWARD, the inspection only matches
	// traffic going from the source to the destination.
	Direction *string `type:"string"`

	// The protocol to inspect for. To inspector for all protocols, use IP.
	Protocol *string `type:"string"`

	// The source IP address or address range to inspect for, in CIDR notation.
	// To match with any address, specify ANY.
	Source *string `type:"string"`

	// The source port to inspect for. You can specify an individual port, such
	// as 1994. You also can specify a port range, such as 1990:1994. To match with
	// any port, specify ANY.
	SourcePort *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupSourceStatefulRulesHeaderDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupSourceStatefulRulesHeaderDetails) GoString() string {
	return s.String()
}

// SetDestination sets the Destination field's value.
func (s *RuleGroupSourceStatefulRulesHeaderDetails) SetDestination(v string) *RuleGroupSourceStatefulRulesHeaderDetails {
	s.Destination = &v
	return s
}

// SetDestinationPort sets the DestinationPort field's value.
func (s *RuleGroupSourceStatefulRulesHeaderDetails) SetDestinationPort(v string) *RuleGroupSourceStatefulRulesHeaderDetails {
	s.DestinationPort = &v
	return s
}

// SetDirection sets the Direction field's value.
func (s *RuleGroupSourceStatefulRulesHeaderDetails) SetDirection(v string) *RuleGroupSourceStatefulRulesHeaderDetails {
	s.Direction = &v
	return s
}

// SetProtocol sets the Protocol field's value.
func (s *RuleGroupSourceStatefulRulesHeaderDetails) SetProtocol(v string) *RuleGroupSourceStatefulRulesHeaderDetails {
	s.Protocol = &v
	return s
}

// SetSource sets the Source field's value.
func (s *RuleGroupSourceStatefulRulesHeaderDetails) SetSource(v string) *RuleGroupSourceStatefulRulesHeaderDetails {
	s.Source = &v
	return s
}

// SetSourcePort sets the SourcePort field's value.
func (s *RuleGroupSourceStatefulRulesHeaderDetails) SetSourcePort(v string) *RuleGroupSourceStatefulRulesHeaderDetails {
	s.SourcePort = &v
	return s
}

// A rule option for a stateful rule.
type RuleGroupSourceStatefulRulesOptionsDetails struct {
	_ struct{} `type:"structure"`

	// A keyword to look for.
	Keyword *string `type:"string"`

	// A list of settings.
	Settings []*string `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 RuleGroupSourceStatefulRulesOptionsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupSourceStatefulRulesOptionsDetails) GoString() string {
	return s.String()
}

// SetKeyword sets the Keyword field's value.
func (s *RuleGroupSourceStatefulRulesOptionsDetails) SetKeyword(v string) *RuleGroupSourceStatefulRulesOptionsDetails {
	s.Keyword = &v
	return s
}

// SetSettings sets the Settings field's value.
func (s *RuleGroupSourceStatefulRulesOptionsDetails) SetSettings(v []*string) *RuleGroupSourceStatefulRulesOptionsDetails {
	s.Settings = v
	return s
}

// The definition of the stateless rule.
type RuleGroupSourceStatelessRuleDefinition struct {
	_ struct{} `type:"structure"`

	// The actions to take on a packet that matches one of the stateless rule definition's
	// match attributes. You must specify a standard action (aws:pass, aws:drop,
	// or aws:forward_to_sfe). You can then add custom actions.
	Actions []*string `type:"list"`

	// The criteria for Network Firewall to use to inspect an individual packet
	// in a stateless rule inspection.
	MatchAttributes *RuleGroupSourceStatelessRuleMatchAttributes `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 RuleGroupSourceStatelessRuleDefinition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupSourceStatelessRuleDefinition) GoString() string {
	return s.String()
}

// SetActions sets the Actions field's value.
func (s *RuleGroupSourceStatelessRuleDefinition) SetActions(v []*string) *RuleGroupSourceStatelessRuleDefinition {
	s.Actions = v
	return s
}

// SetMatchAttributes sets the MatchAttributes field's value.
func (s *RuleGroupSourceStatelessRuleDefinition) SetMatchAttributes(v *RuleGroupSourceStatelessRuleMatchAttributes) *RuleGroupSourceStatelessRuleDefinition {
	s.MatchAttributes = v
	return s
}

// Criteria for the stateless rule.
type RuleGroupSourceStatelessRuleMatchAttributes struct {
	_ struct{} `type:"structure"`

	// A list of port ranges to specify the destination ports to inspect for.
	DestinationPorts []*RuleGroupSourceStatelessRuleMatchAttributesDestinationPorts `type:"list"`

	// The destination IP addresses and address ranges to inspect for, in CIDR notation.
	Destinations []*RuleGroupSourceStatelessRuleMatchAttributesDestinations `type:"list"`

	// The protocols to inspect for.
	Protocols []*int64 `type:"list"`

	// A list of port ranges to specify the source ports to inspect for.
	SourcePorts []*RuleGroupSourceStatelessRuleMatchAttributesSourcePorts `type:"list"`

	// The source IP addresses and address ranges to inspect for, in CIDR notation.
	Sources []*RuleGroupSourceStatelessRuleMatchAttributesSources `type:"list"`

	// The TCP flags and masks to inspect for.
	TcpFlags []*RuleGroupSourceStatelessRuleMatchAttributesTcpFlags `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 RuleGroupSourceStatelessRuleMatchAttributes) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupSourceStatelessRuleMatchAttributes) GoString() string {
	return s.String()
}

// SetDestinationPorts sets the DestinationPorts field's value.
func (s *RuleGroupSourceStatelessRuleMatchAttributes) SetDestinationPorts(v []*RuleGroupSourceStatelessRuleMatchAttributesDestinationPorts) *RuleGroupSourceStatelessRuleMatchAttributes {
	s.DestinationPorts = v
	return s
}

// SetDestinations sets the Destinations field's value.
func (s *RuleGroupSourceStatelessRuleMatchAttributes) SetDestinations(v []*RuleGroupSourceStatelessRuleMatchAttributesDestinations) *RuleGroupSourceStatelessRuleMatchAttributes {
	s.Destinations = v
	return s
}

// SetProtocols sets the Protocols field's value.
func (s *RuleGroupSourceStatelessRuleMatchAttributes) SetProtocols(v []*int64) *RuleGroupSourceStatelessRuleMatchAttributes {
	s.Protocols = v
	return s
}

// SetSourcePorts sets the SourcePorts field's value.
func (s *RuleGroupSourceStatelessRuleMatchAttributes) SetSourcePorts(v []*RuleGroupSourceStatelessRuleMatchAttributesSourcePorts) *RuleGroupSourceStatelessRuleMatchAttributes {
	s.SourcePorts = v
	return s
}

// SetSources sets the Sources field's value.
func (s *RuleGroupSourceStatelessRuleMatchAttributes) SetSources(v []*RuleGroupSourceStatelessRuleMatchAttributesSources) *RuleGroupSourceStatelessRuleMatchAttributes {
	s.Sources = v
	return s
}

// SetTcpFlags sets the TcpFlags field's value.
func (s *RuleGroupSourceStatelessRuleMatchAttributes) SetTcpFlags(v []*RuleGroupSourceStatelessRuleMatchAttributesTcpFlags) *RuleGroupSourceStatelessRuleMatchAttributes {
	s.TcpFlags = v
	return s
}

// A port range to specify the destination ports to inspect for.
type RuleGroupSourceStatelessRuleMatchAttributesDestinationPorts struct {
	_ struct{} `type:"structure"`

	// The starting port value for the port range.
	FromPort *int64 `type:"integer"`

	// The ending port value for the port range.
	ToPort *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupSourceStatelessRuleMatchAttributesDestinationPorts) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupSourceStatelessRuleMatchAttributesDestinationPorts) GoString() string {
	return s.String()
}

// SetFromPort sets the FromPort field's value.
func (s *RuleGroupSourceStatelessRuleMatchAttributesDestinationPorts) SetFromPort(v int64) *RuleGroupSourceStatelessRuleMatchAttributesDestinationPorts {
	s.FromPort = &v
	return s
}

// SetToPort sets the ToPort field's value.
func (s *RuleGroupSourceStatelessRuleMatchAttributesDestinationPorts) SetToPort(v int64) *RuleGroupSourceStatelessRuleMatchAttributesDestinationPorts {
	s.ToPort = &v
	return s
}

// A destination IP address or range.
type RuleGroupSourceStatelessRuleMatchAttributesDestinations struct {
	_ struct{} `type:"structure"`

	// An IP address or a block of IP addresses.
	AddressDefinition *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupSourceStatelessRuleMatchAttributesDestinations) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupSourceStatelessRuleMatchAttributesDestinations) GoString() string {
	return s.String()
}

// SetAddressDefinition sets the AddressDefinition field's value.
func (s *RuleGroupSourceStatelessRuleMatchAttributesDestinations) SetAddressDefinition(v string) *RuleGroupSourceStatelessRuleMatchAttributesDestinations {
	s.AddressDefinition = &v
	return s
}

// A port range to specify the source ports to inspect for.
type RuleGroupSourceStatelessRuleMatchAttributesSourcePorts struct {
	_ struct{} `type:"structure"`

	// The starting port value for the port range.
	FromPort *int64 `type:"integer"`

	// The ending port value for the port range.
	ToPort *int64 `type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupSourceStatelessRuleMatchAttributesSourcePorts) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupSourceStatelessRuleMatchAttributesSourcePorts) GoString() string {
	return s.String()
}

// SetFromPort sets the FromPort field's value.
func (s *RuleGroupSourceStatelessRuleMatchAttributesSourcePorts) SetFromPort(v int64) *RuleGroupSourceStatelessRuleMatchAttributesSourcePorts {
	s.FromPort = &v
	return s
}

// SetToPort sets the ToPort field's value.
func (s *RuleGroupSourceStatelessRuleMatchAttributesSourcePorts) SetToPort(v int64) *RuleGroupSourceStatelessRuleMatchAttributesSourcePorts {
	s.ToPort = &v
	return s
}

// A source IP addresses and address range to inspect for.
type RuleGroupSourceStatelessRuleMatchAttributesSources struct {
	_ struct{} `type:"structure"`

	// An IP address or a block of IP addresses.
	AddressDefinition *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupSourceStatelessRuleMatchAttributesSources) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupSourceStatelessRuleMatchAttributesSources) GoString() string {
	return s.String()
}

// SetAddressDefinition sets the AddressDefinition field's value.
func (s *RuleGroupSourceStatelessRuleMatchAttributesSources) SetAddressDefinition(v string) *RuleGroupSourceStatelessRuleMatchAttributesSources {
	s.AddressDefinition = &v
	return s
}

// A set of TCP flags and masks to inspect for.
type RuleGroupSourceStatelessRuleMatchAttributesTcpFlags struct {
	_ struct{} `type:"structure"`

	// Defines the flags from the Masks setting that must be set in order for the
	// packet to match. Flags that are listed must be set. Flags that are not listed
	// must not be set.
	Flags []*string `type:"list"`

	// The set of flags to consider in the inspection. If not specified, then all
	// flags are inspected.
	Masks []*string `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 RuleGroupSourceStatelessRuleMatchAttributesTcpFlags) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupSourceStatelessRuleMatchAttributesTcpFlags) GoString() string {
	return s.String()
}

// SetFlags sets the Flags field's value.
func (s *RuleGroupSourceStatelessRuleMatchAttributesTcpFlags) SetFlags(v []*string) *RuleGroupSourceStatelessRuleMatchAttributesTcpFlags {
	s.Flags = v
	return s
}

// SetMasks sets the Masks field's value.
func (s *RuleGroupSourceStatelessRuleMatchAttributesTcpFlags) SetMasks(v []*string) *RuleGroupSourceStatelessRuleMatchAttributesTcpFlags {
	s.Masks = v
	return s
}

// Stateless rules and custom actions for a stateless rule group.
type RuleGroupSourceStatelessRulesAndCustomActionsDetails struct {
	_ struct{} `type:"structure"`

	// Custom actions for the rule group.
	CustomActions []*RuleGroupSourceCustomActionsDetails `type:"list"`

	// Stateless rules for the rule group.
	StatelessRules []*RuleGroupSourceStatelessRulesDetails `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 RuleGroupSourceStatelessRulesAndCustomActionsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupSourceStatelessRulesAndCustomActionsDetails) GoString() string {
	return s.String()
}

// SetCustomActions sets the CustomActions field's value.
func (s *RuleGroupSourceStatelessRulesAndCustomActionsDetails) SetCustomActions(v []*RuleGroupSourceCustomActionsDetails) *RuleGroupSourceStatelessRulesAndCustomActionsDetails {
	s.CustomActions = v
	return s
}

// SetStatelessRules sets the StatelessRules field's value.
func (s *RuleGroupSourceStatelessRulesAndCustomActionsDetails) SetStatelessRules(v []*RuleGroupSourceStatelessRulesDetails) *RuleGroupSourceStatelessRulesAndCustomActionsDetails {
	s.StatelessRules = v
	return s
}

// A stateless rule in the rule group.
type RuleGroupSourceStatelessRulesDetails struct {
	_ struct{} `type:"structure"`

	// Indicates the order in which to run this rule relative to all of the rules
	// in the stateless rule group.
	Priority *int64 `type:"integer"`

	// Provides the definition of the stateless rule.
	RuleDefinition *RuleGroupSourceStatelessRuleDefinition `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 RuleGroupSourceStatelessRulesDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupSourceStatelessRulesDetails) GoString() string {
	return s.String()
}

// SetPriority sets the Priority field's value.
func (s *RuleGroupSourceStatelessRulesDetails) SetPriority(v int64) *RuleGroupSourceStatelessRulesDetails {
	s.Priority = &v
	return s
}

// SetRuleDefinition sets the RuleDefinition field's value.
func (s *RuleGroupSourceStatelessRulesDetails) SetRuleDefinition(v *RuleGroupSourceStatelessRuleDefinition) *RuleGroupSourceStatelessRulesDetails {
	s.RuleDefinition = v
	return s
}

// Additional settings to use in the specified rules.
type RuleGroupVariables struct {
	_ struct{} `type:"structure"`

	// A list of IP addresses and address ranges, in CIDR notation.
	IpSets *RuleGroupVariablesIpSetsDetails `type:"structure"`

	// A list of port ranges.
	PortSets *RuleGroupVariablesPortSetsDetails `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 RuleGroupVariables) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupVariables) GoString() string {
	return s.String()
}

// SetIpSets sets the IpSets field's value.
func (s *RuleGroupVariables) SetIpSets(v *RuleGroupVariablesIpSetsDetails) *RuleGroupVariables {
	s.IpSets = v
	return s
}

// SetPortSets sets the PortSets field's value.
func (s *RuleGroupVariables) SetPortSets(v *RuleGroupVariablesPortSetsDetails) *RuleGroupVariables {
	s.PortSets = v
	return s
}

// A list of IP addresses and address ranges, in CIDR notation.
type RuleGroupVariablesIpSetsDetails struct {
	_ struct{} `type:"structure"`

	// The list of IP addresses and ranges.
	Definition []*string `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 RuleGroupVariablesIpSetsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupVariablesIpSetsDetails) GoString() string {
	return s.String()
}

// SetDefinition sets the Definition field's value.
func (s *RuleGroupVariablesIpSetsDetails) SetDefinition(v []*string) *RuleGroupVariablesIpSetsDetails {
	s.Definition = v
	return s
}

// A list of port ranges.
type RuleGroupVariablesPortSetsDetails struct {
	_ struct{} `type:"structure"`

	// The list of port ranges.
	Definition []*string `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 RuleGroupVariablesPortSetsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleGroupVariablesPortSetsDetails) GoString() string {
	return s.String()
}

// SetDefinition sets the Definition field's value.
func (s *RuleGroupVariablesPortSetsDetails) SetDefinition(v []*string) *RuleGroupVariablesPortSetsDetails {
	s.Definition = v
	return s
}

// A security control in Security Hub describes a security best practice related
// to a specific resource.
type SecurityControl struct {
	_ struct{} `type:"structure"`

	// The description of a security control across standards. This typically summarizes
	// how Security Hub evaluates the control and the conditions under which it
	// produces a failed finding. This parameter doesn't reference a specific standard.
	//
	// Description is a required field
	Description *string `type:"string" required:"true"`

	// The most recent reason for updating the customizable properties of a security
	// control. This differs from the UpdateReason field of the BatchUpdateStandardsControlAssociations
	// (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_BatchUpdateStandardsControlAssociations.html)
	// API, which tracks the reason for updating the enablement status of a control.
	// This field accepts alphanumeric characters in addition to white spaces, dashes,
	// and underscores.
	LastUpdateReason *string `type:"string"`

	// An object that identifies the name of a control parameter, its current value,
	// and whether it has been customized.
	Parameters map[string]*ParameterConfiguration `type:"map"`

	// A link to Security Hub documentation that explains how to remediate a failed
	// finding for a security control.
	//
	// RemediationUrl is a required field
	RemediationUrl *string `type:"string" required:"true"`

	// The Amazon Resource Name (ARN) for a security control across standards, such
	// as arn:aws:securityhub:eu-central-1:123456789012:security-control/S3.1. This
	// parameter doesn't mention a specific standard.
	//
	// SecurityControlArn is a required field
	SecurityControlArn *string `type:"string" required:"true"`

	// The unique identifier of a security control across standards. Values for
	// this field typically consist of an Amazon Web Service name and a number,
	// such as APIGateway.3.
	//
	// SecurityControlId is a required field
	SecurityControlId *string `type:"string" required:"true"`

	// The enablement status of a security control in a specific standard.
	//
	// SecurityControlStatus is a required field
	SecurityControlStatus *string `type:"string" required:"true" enum:"ControlStatus"`

	// The severity of a security control. For more information about how Security
	// Hub determines control severity, see Assigning severity to control findings
	// (https://docs.aws.amazon.com/securityhub/latest/userguide/controls-findings-create-update.html#control-findings-severity)
	// in the Security Hub User Guide.
	//
	// SeverityRating is a required field
	SeverityRating *string `type:"string" required:"true" enum:"SeverityRating"`

	// The title of a security control.
	//
	// Title is a required field
	Title *string `type:"string" required:"true"`

	// Identifies whether customizable properties of a security control are reflected
	// in Security Hub findings. A status of READY indicates findings include the
	// current parameter values. A status of UPDATING indicates that all findings
	// may not include the current parameter values.
	UpdateStatus *string `type:"string" enum:"UpdateStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SecurityControl) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SecurityControl) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *SecurityControl) SetDescription(v string) *SecurityControl {
	s.Description = &v
	return s
}

// SetLastUpdateReason sets the LastUpdateReason field's value.
func (s *SecurityControl) SetLastUpdateReason(v string) *SecurityControl {
	s.LastUpdateReason = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *SecurityControl) SetParameters(v map[string]*ParameterConfiguration) *SecurityControl {
	s.Parameters = v
	return s
}

// SetRemediationUrl sets the RemediationUrl field's value.
func (s *SecurityControl) SetRemediationUrl(v string) *SecurityControl {
	s.RemediationUrl = &v
	return s
}

// SetSecurityControlArn sets the SecurityControlArn field's value.
func (s *SecurityControl) SetSecurityControlArn(v string) *SecurityControl {
	s.SecurityControlArn = &v
	return s
}

// SetSecurityControlId sets the SecurityControlId field's value.
func (s *SecurityControl) SetSecurityControlId(v string) *SecurityControl {
	s.SecurityControlId = &v
	return s
}

// SetSecurityControlStatus sets the SecurityControlStatus field's value.
func (s *SecurityControl) SetSecurityControlStatus(v string) *SecurityControl {
	s.SecurityControlStatus = &v
	return s
}

// SetSeverityRating sets the SeverityRating field's value.
func (s *SecurityControl) SetSeverityRating(v string) *SecurityControl {
	s.SeverityRating = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *SecurityControl) SetTitle(v string) *SecurityControl {
	s.Title = &v
	return s
}

// SetUpdateStatus sets the UpdateStatus field's value.
func (s *SecurityControl) SetUpdateStatus(v string) *SecurityControl {
	s.UpdateStatus = &v
	return s
}

// A list of security controls and control parameter values that are included
// in a configuration policy.
type SecurityControlCustomParameter struct {
	_ struct{} `type:"structure"`

	// An object that specifies parameter values for a control in a configuration
	// policy.
	Parameters map[string]*ParameterConfiguration `type:"map"`

	// The ID of the security control.
	SecurityControlId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SecurityControlCustomParameter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SecurityControlCustomParameter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SecurityControlCustomParameter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SecurityControlCustomParameter"}
	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
}

// SetParameters sets the Parameters field's value.
func (s *SecurityControlCustomParameter) SetParameters(v map[string]*ParameterConfiguration) *SecurityControlCustomParameter {
	s.Parameters = v
	return s
}

// SetSecurityControlId sets the SecurityControlId field's value.
func (s *SecurityControlCustomParameter) SetSecurityControlId(v string) *SecurityControlCustomParameter {
	s.SecurityControlId = &v
	return s
}

// Provides metadata for a security control, including its unique standard-agnostic
// identifier, title, description, severity, availability in Amazon Web Services
// Regions, and a link to remediation steps.
type SecurityControlDefinition struct {
	_ struct{} `type:"structure"`

	// Specifies whether a security control is available in the current Amazon Web
	// Services Region.
	//
	// CurrentRegionAvailability is a required field
	CurrentRegionAvailability *string `type:"string" required:"true" enum:"RegionAvailabilityStatus"`

	// Security control properties that you can customize. Currently, only parameter
	// customization is supported for select controls. An empty array is returned
	// for controls that don’t support custom properties.
	CustomizableProperties []*string `type:"list" enum:"SecurityControlProperty"`

	// The description of a security control across standards. This typically summarizes
	// how Security Hub evaluates the control and the conditions under which it
	// produces a failed finding. This parameter doesn't reference a specific standard.
	//
	// Description is a required field
	Description *string `type:"string" required:"true"`

	// An object that provides a security control parameter name, description, and
	// the options for customizing it. This object is excluded for a control that
	// doesn't support custom parameters.
	ParameterDefinitions map[string]*ParameterDefinition `type:"map"`

	// A link to Security Hub documentation that explains how to remediate a failed
	// finding for a security control.
	//
	// RemediationUrl is a required field
	RemediationUrl *string `type:"string" required:"true"`

	// The unique identifier of a security control across standards. Values for
	// this field typically consist of an Amazon Web Service name and a number (for
	// example, APIGateway.3). This parameter differs from SecurityControlArn, which
	// is a unique Amazon Resource Name (ARN) assigned to a control. The ARN references
	// the security control ID (for example, arn:aws:securityhub:eu-central-1:123456789012:security-control/APIGateway.3).
	//
	// SecurityControlId is a required field
	SecurityControlId *string `type:"string" required:"true"`

	// The severity of a security control. For more information about how Security
	// Hub determines control severity, see Assigning severity to control findings
	// (https://docs.aws.amazon.com/securityhub/latest/userguide/controls-findings-create-update.html#control-findings-severity)
	// in the Security Hub User Guide.
	//
	// SeverityRating is a required field
	SeverityRating *string `type:"string" required:"true" enum:"SeverityRating"`

	// The title of a security control.
	//
	// Title is a required field
	Title *string `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 SecurityControlDefinition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SecurityControlDefinition) GoString() string {
	return s.String()
}

// SetCurrentRegionAvailability sets the CurrentRegionAvailability field's value.
func (s *SecurityControlDefinition) SetCurrentRegionAvailability(v string) *SecurityControlDefinition {
	s.CurrentRegionAvailability = &v
	return s
}

// SetCustomizableProperties sets the CustomizableProperties field's value.
func (s *SecurityControlDefinition) SetCustomizableProperties(v []*string) *SecurityControlDefinition {
	s.CustomizableProperties = v
	return s
}

// SetDescription sets the Description field's value.
func (s *SecurityControlDefinition) SetDescription(v string) *SecurityControlDefinition {
	s.Description = &v
	return s
}

// SetParameterDefinitions sets the ParameterDefinitions field's value.
func (s *SecurityControlDefinition) SetParameterDefinitions(v map[string]*ParameterDefinition) *SecurityControlDefinition {
	s.ParameterDefinitions = v
	return s
}

// SetRemediationUrl sets the RemediationUrl field's value.
func (s *SecurityControlDefinition) SetRemediationUrl(v string) *SecurityControlDefinition {
	s.RemediationUrl = &v
	return s
}

// SetSecurityControlId sets the SecurityControlId field's value.
func (s *SecurityControlDefinition) SetSecurityControlId(v string) *SecurityControlDefinition {
	s.SecurityControlId = &v
	return s
}

// SetSeverityRating sets the SeverityRating field's value.
func (s *SecurityControlDefinition) SetSeverityRating(v string) *SecurityControlDefinition {
	s.SeverityRating = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *SecurityControlDefinition) SetTitle(v string) *SecurityControlDefinition {
	s.Title = &v
	return s
}

// A parameter that a security control accepts.
type SecurityControlParameter struct {
	_ struct{} `type:"structure"`

	// The name of a
	Name *string `type:"string"`

	// The current value of a control parameter.
	Value []*string `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 SecurityControlParameter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SecurityControlParameter) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *SecurityControlParameter) SetName(v string) *SecurityControlParameter {
	s.Name = &v
	return s
}

// SetValue sets the Value field's value.
func (s *SecurityControlParameter) SetValue(v []*string) *SecurityControlParameter {
	s.Value = v
	return s
}

// An object that defines which security controls are enabled in an Security
// Hub configuration policy. The enablement status of a control is aligned across
// all of the enabled standards in an account.
type SecurityControlsConfiguration struct {
	_ struct{} `type:"structure"`

	// A list of security controls that are disabled in the configuration policy.
	// Security Hub enables all other controls (including newly released controls)
	// other than the listed controls.
	DisabledSecurityControlIdentifiers []*string `type:"list"`

	// A list of security controls that are enabled in the configuration policy.
	// Security Hub disables all other controls (including newly released controls)
	// other than the listed controls.
	EnabledSecurityControlIdentifiers []*string `type:"list"`

	// A list of security controls and control parameter values that are included
	// in a configuration policy.
	SecurityControlCustomParameters []*SecurityControlCustomParameter `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 SecurityControlsConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SecurityControlsConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SecurityControlsConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SecurityControlsConfiguration"}
	if s.SecurityControlCustomParameters != nil {
		for i, v := range s.SecurityControlCustomParameters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SecurityControlCustomParameters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDisabledSecurityControlIdentifiers sets the DisabledSecurityControlIdentifiers field's value.
func (s *SecurityControlsConfiguration) SetDisabledSecurityControlIdentifiers(v []*string) *SecurityControlsConfiguration {
	s.DisabledSecurityControlIdentifiers = v
	return s
}

// SetEnabledSecurityControlIdentifiers sets the EnabledSecurityControlIdentifiers field's value.
func (s *SecurityControlsConfiguration) SetEnabledSecurityControlIdentifiers(v []*string) *SecurityControlsConfiguration {
	s.EnabledSecurityControlIdentifiers = v
	return s
}

// SetSecurityControlCustomParameters sets the SecurityControlCustomParameters field's value.
func (s *SecurityControlsConfiguration) SetSecurityControlCustomParameters(v []*SecurityControlCustomParameter) *SecurityControlsConfiguration {
	s.SecurityControlCustomParameters = v
	return s
}

// An object that defines how Security Hub is configured. The configuration
// policy includes whether Security Hub is enabled or disabled, a list of enabled
// security standards, a list of enabled or disabled security controls, and
// a list of custom parameter values for specified controls. If you provide
// a list of security controls that are enabled in the configuration policy,
// Security Hub disables all other controls (including newly released controls).
// If you provide a list of security controls that are disabled in the configuration
// policy, Security Hub enables all other controls (including newly released
// controls).
type SecurityHubPolicy struct {
	_ struct{} `type:"structure"`

	// A list that defines which security standards are enabled in the configuration
	// policy.
	EnabledStandardIdentifiers []*string `type:"list"`

	// An object that defines which security controls are enabled in the configuration
	// policy. The enablement status of a control is aligned across all of the enabled
	// standards in an account.
	SecurityControlsConfiguration *SecurityControlsConfiguration `type:"structure"`

	// Indicates whether Security Hub is enabled in the policy.
	ServiceEnabled *bool `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 SecurityHubPolicy) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SecurityHubPolicy) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SecurityHubPolicy) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SecurityHubPolicy"}
	if s.SecurityControlsConfiguration != nil {
		if err := s.SecurityControlsConfiguration.Validate(); err != nil {
			invalidParams.AddNested("SecurityControlsConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEnabledStandardIdentifiers sets the EnabledStandardIdentifiers field's value.
func (s *SecurityHubPolicy) SetEnabledStandardIdentifiers(v []*string) *SecurityHubPolicy {
	s.EnabledStandardIdentifiers = v
	return s
}

// SetSecurityControlsConfiguration sets the SecurityControlsConfiguration field's value.
func (s *SecurityHubPolicy) SetSecurityControlsConfiguration(v *SecurityControlsConfiguration) *SecurityHubPolicy {
	s.SecurityControlsConfiguration = v
	return s
}

// SetServiceEnabled sets the ServiceEnabled field's value.
func (s *SecurityHubPolicy) SetServiceEnabled(v bool) *SecurityHubPolicy {
	s.ServiceEnabled = &v
	return s
}

// The list of detected instances of sensitive data.
type SensitiveDataDetections struct {
	_ struct{} `type:"structure"`

	// The total number of occurrences of sensitive data that were detected.
	Count *int64 `type:"long"`

	// Details about the sensitive data that was detected.
	Occurrences *Occurrences `type:"structure"`

	// The type of sensitive data that was detected. For example, the type might
	// indicate that the data is an email address.
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SensitiveDataDetections) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SensitiveDataDetections) GoString() string {
	return s.String()
}

// SetCount sets the Count field's value.
func (s *SensitiveDataDetections) SetCount(v int64) *SensitiveDataDetections {
	s.Count = &v
	return s
}

// SetOccurrences sets the Occurrences field's value.
func (s *SensitiveDataDetections) SetOccurrences(v *Occurrences) *SensitiveDataDetections {
	s.Occurrences = v
	return s
}

// SetType sets the Type field's value.
func (s *SensitiveDataDetections) SetType(v string) *SensitiveDataDetections {
	s.Type = &v
	return s
}

// Contains a detected instance of sensitive data that are based on built-in
// identifiers.
type SensitiveDataResult struct {
	_ struct{} `type:"structure"`

	// The category of sensitive data that was detected. For example, the category
	// can indicate that the sensitive data involved credentials, financial information,
	// or personal information.
	Category *string `type:"string"`

	// The list of detected instances of sensitive data.
	Detections []*SensitiveDataDetections `type:"list"`

	// The total number of occurrences of sensitive data.
	TotalCount *int64 `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 SensitiveDataResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SensitiveDataResult) GoString() string {
	return s.String()
}

// SetCategory sets the Category field's value.
func (s *SensitiveDataResult) SetCategory(v string) *SensitiveDataResult {
	s.Category = &v
	return s
}

// SetDetections sets the Detections field's value.
func (s *SensitiveDataResult) SetDetections(v []*SensitiveDataDetections) *SensitiveDataResult {
	s.Detections = v
	return s
}

// SetTotalCount sets the TotalCount field's value.
func (s *SensitiveDataResult) SetTotalCount(v int64) *SensitiveDataResult {
	s.TotalCount = &v
	return s
}

// The severity of the finding.
//
// The finding provider can provide the initial severity. The finding provider
// can only update the severity if it hasn't been updated using BatchUpdateFindings.
//
// The finding must have either Label or Normalized populated. If only one of
// these attributes is populated, then Security Hub automatically populates
// the other one. If neither attribute is populated, then the finding is invalid.
// Label is the preferred attribute.
type Severity struct {
	_ struct{} `type:"structure"`

	// The severity value of the finding. The allowed values are the following.
	//
	//    * INFORMATIONAL - No issue was found.
	//
	//    * LOW - The issue does not require action on its own.
	//
	//    * MEDIUM - The issue must be addressed but not urgently.
	//
	//    * HIGH - The issue must be addressed as a priority.
	//
	//    * CRITICAL - The issue must be remediated immediately to avoid it escalating.
	//
	// If you provide Normalized and do not provide Label, then Label is set automatically
	// as follows.
	//
	//    * 0 - INFORMATIONAL
	//
	//    * 1–39 - LOW
	//
	//    * 40–69 - MEDIUM
	//
	//    * 70–89 - HIGH
	//
	//    * 90–100 - CRITICAL
	Label *string `type:"string" enum:"SeverityLabel"`

	// Deprecated. The normalized severity of a finding. Instead of providing Normalized,
	// provide Label.
	//
	// The value of Normalized can be an integer between 0 and 100.
	//
	// If you provide Label and do not provide Normalized, then Normalized is set
	// automatically as follows.
	//
	//    * INFORMATIONAL - 0
	//
	//    * LOW - 1
	//
	//    * MEDIUM - 40
	//
	//    * HIGH - 70
	//
	//    * CRITICAL - 90
	Normalized *int64 `type:"integer"`

	// The native severity from the finding product that generated the finding.
	//
	// Length Constraints: Minimum length of 1. Maximum length of 64.
	Original *string `type:"string"`

	// Deprecated. This attribute isn't included in findings. Instead of providing
	// Product, provide Original.
	//
	// The native severity as defined by the Amazon Web Services service or integrated
	// partner product that generated the finding.
	Product *float64 `type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Severity) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Severity) GoString() string {
	return s.String()
}

// SetLabel sets the Label field's value.
func (s *Severity) SetLabel(v string) *Severity {
	s.Label = &v
	return s
}

// SetNormalized sets the Normalized field's value.
func (s *Severity) SetNormalized(v int64) *Severity {
	s.Normalized = &v
	return s
}

// SetOriginal sets the Original field's value.
func (s *Severity) SetOriginal(v string) *Severity {
	s.Original = &v
	return s
}

// SetProduct sets the Product field's value.
func (s *Severity) SetProduct(v float64) *Severity {
	s.Product = &v
	return s
}

// Updates to the severity information for a finding.
type SeverityUpdate struct {
	_ struct{} `type:"structure"`

	// The severity value of the finding. The allowed values are the following.
	//
	//    * INFORMATIONAL - No issue was found.
	//
	//    * LOW - The issue does not require action on its own.
	//
	//    * MEDIUM - The issue must be addressed but not urgently.
	//
	//    * HIGH - The issue must be addressed as a priority.
	//
	//    * CRITICAL - The issue must be remediated immediately to avoid it escalating.
	Label *string `type:"string" enum:"SeverityLabel"`

	// The normalized severity for the finding. This attribute is to be deprecated
	// in favor of Label.
	//
	// If you provide Normalized and do not provide Label, Label is set automatically
	// as follows.
	//
	//    * 0 - INFORMATIONAL
	//
	//    * 1–39 - LOW
	//
	//    * 40–69 - MEDIUM
	//
	//    * 70–89 - HIGH
	//
	//    * 90–100 - CRITICAL
	Normalized *int64 `type:"integer"`

	// The native severity as defined by the Amazon Web Services service or integrated
	// partner product that generated the finding.
	Product *float64 `type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SeverityUpdate) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SeverityUpdate) GoString() string {
	return s.String()
}

// SetLabel sets the Label field's value.
func (s *SeverityUpdate) SetLabel(v string) *SeverityUpdate {
	s.Label = &v
	return s
}

// SetNormalized sets the Normalized field's value.
func (s *SeverityUpdate) SetNormalized(v int64) *SeverityUpdate {
	s.Normalized = &v
	return s
}

// SetProduct sets the Product field's value.
func (s *SeverityUpdate) SetProduct(v float64) *SeverityUpdate {
	s.Product = &v
	return s
}

// Information about a software package.
type SoftwarePackage struct {
	_ struct{} `type:"structure"`

	// The architecture used for the software package.
	Architecture *string `type:"string"`

	// The epoch of the software package.
	Epoch *string `type:"string"`

	// The file system path to the package manager inventory file.
	FilePath *string `type:"string"`

	// The version of the software package in which the vulnerability has been resolved.
	FixedInVersion *string `type:"string"`

	// The name of the software package.
	Name *string `type:"string"`

	// The source of the package.
	PackageManager *string `type:"string"`

	// The release of the software package.
	Release *string `type:"string"`

	// Describes the actions a customer can take to resolve the vulnerability in
	// the software package.
	Remediation *string `type:"string"`

	// The Amazon Resource Name (ARN) of the source layer.
	SourceLayerArn *string `type:"string"`

	// The source layer hash of the vulnerable package.
	SourceLayerHash *string `type:"string"`

	// The version of the software package.
	Version *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SoftwarePackage) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SoftwarePackage) GoString() string {
	return s.String()
}

// SetArchitecture sets the Architecture field's value.
func (s *SoftwarePackage) SetArchitecture(v string) *SoftwarePackage {
	s.Architecture = &v
	return s
}

// SetEpoch sets the Epoch field's value.
func (s *SoftwarePackage) SetEpoch(v string) *SoftwarePackage {
	s.Epoch = &v
	return s
}

// SetFilePath sets the FilePath field's value.
func (s *SoftwarePackage) SetFilePath(v string) *SoftwarePackage {
	s.FilePath = &v
	return s
}

// SetFixedInVersion sets the FixedInVersion field's value.
func (s *SoftwarePackage) SetFixedInVersion(v string) *SoftwarePackage {
	s.FixedInVersion = &v
	return s
}

// SetName sets the Name field's value.
func (s *SoftwarePackage) SetName(v string) *SoftwarePackage {
	s.Name = &v
	return s
}

// SetPackageManager sets the PackageManager field's value.
func (s *SoftwarePackage) SetPackageManager(v string) *SoftwarePackage {
	s.PackageManager = &v
	return s
}

// SetRelease sets the Release field's value.
func (s *SoftwarePackage) SetRelease(v string) *SoftwarePackage {
	s.Release = &v
	return s
}

// SetRemediation sets the Remediation field's value.
func (s *SoftwarePackage) SetRemediation(v string) *SoftwarePackage {
	s.Remediation = &v
	return s
}

// SetSourceLayerArn sets the SourceLayerArn field's value.
func (s *SoftwarePackage) SetSourceLayerArn(v string) *SoftwarePackage {
	s.SourceLayerArn = &v
	return s
}

// SetSourceLayerHash sets the SourceLayerHash field's value.
func (s *SoftwarePackage) SetSourceLayerHash(v string) *SoftwarePackage {
	s.SourceLayerHash = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *SoftwarePackage) SetVersion(v string) *SoftwarePackage {
	s.Version = &v
	return s
}

// A collection of finding attributes used to sort findings.
type SortCriterion struct {
	_ struct{} `type:"structure"`

	// The finding attribute used to sort findings.
	Field *string `type:"string"`

	// The order used to sort findings.
	SortOrder *string `type:"string" enum:"SortOrder"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SortCriterion) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SortCriterion) GoString() string {
	return s.String()
}

// SetField sets the Field field's value.
func (s *SortCriterion) SetField(v string) *SortCriterion {
	s.Field = &v
	return s
}

// SetSortOrder sets the SortOrder field's value.
func (s *SortCriterion) SetSortOrder(v string) *SortCriterion {
	s.SortOrder = &v
	return s
}

// Provides information about a specific security standard.
type Standard struct {
	_ struct{} `type:"structure"`

	// A description of the standard.
	Description *string `type:"string"`

	// Whether the standard is enabled by default. When Security Hub is enabled
	// from the console, if a standard is enabled by default, the check box for
	// that standard is selected by default.
	//
	// When Security Hub is enabled using the EnableSecurityHub API operation, the
	// standard is enabled by default unless EnableDefaultStandards is set to false.
	EnabledByDefault *bool `type:"boolean"`

	// The name of the standard.
	Name *string `type:"string"`

	// The ARN of a standard.
	StandardsArn *string `type:"string"`

	// Provides details about the management of a standard.
	StandardsManagedBy *StandardsManagedBy `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 Standard) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Standard) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *Standard) SetDescription(v string) *Standard {
	s.Description = &v
	return s
}

// SetEnabledByDefault sets the EnabledByDefault field's value.
func (s *Standard) SetEnabledByDefault(v bool) *Standard {
	s.EnabledByDefault = &v
	return s
}

// SetName sets the Name field's value.
func (s *Standard) SetName(v string) *Standard {
	s.Name = &v
	return s
}

// SetStandardsArn sets the StandardsArn field's value.
func (s *Standard) SetStandardsArn(v string) *Standard {
	s.StandardsArn = &v
	return s
}

// SetStandardsManagedBy sets the StandardsManagedBy field's value.
func (s *Standard) SetStandardsManagedBy(v *StandardsManagedBy) *Standard {
	s.StandardsManagedBy = v
	return s
}

// Details for an individual security standard control.
type StandardsControl struct {
	_ struct{} `type:"structure"`

	// The identifier of the security standard control.
	ControlId *string `type:"string"`

	// The current status of the security standard control. Indicates whether the
	// control is enabled or disabled. Security Hub does not check against disabled
	// controls.
	ControlStatus *string `type:"string" enum:"ControlStatus"`

	// The date and time that the status of the security standard control was most
	// recently updated.
	ControlStatusUpdatedAt *time.Time `type:"timestamp" timestampFormat:"iso8601"`

	// The longer description of the security standard control. Provides information
	// about what the control is checking for.
	Description *string `type:"string"`

	// The reason provided for the most recent change in status for the control.
	DisabledReason *string `type:"string"`

	// The list of requirements that are related to this control.
	RelatedRequirements []*string `type:"list"`

	// A link to remediation information for the control in the Security Hub user
	// documentation.
	RemediationUrl *string `type:"string"`

	// The severity of findings generated from this security standard control.
	//
	// The finding severity is based on an assessment of how easy it would be to
	// compromise Amazon Web Services resources if the issue is detected.
	SeverityRating *string `type:"string" enum:"SeverityRating"`

	// The ARN of the security standard control.
	StandardsControlArn *string `type:"string"`

	// The title of the security standard control.
	Title *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StandardsControl) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StandardsControl) GoString() string {
	return s.String()
}

// SetControlId sets the ControlId field's value.
func (s *StandardsControl) SetControlId(v string) *StandardsControl {
	s.ControlId = &v
	return s
}

// SetControlStatus sets the ControlStatus field's value.
func (s *StandardsControl) SetControlStatus(v string) *StandardsControl {
	s.ControlStatus = &v
	return s
}

// SetControlStatusUpdatedAt sets the ControlStatusUpdatedAt field's value.
func (s *StandardsControl) SetControlStatusUpdatedAt(v time.Time) *StandardsControl {
	s.ControlStatusUpdatedAt = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *StandardsControl) SetDescription(v string) *StandardsControl {
	s.Description = &v
	return s
}

// SetDisabledReason sets the DisabledReason field's value.
func (s *StandardsControl) SetDisabledReason(v string) *StandardsControl {
	s.DisabledReason = &v
	return s
}

// SetRelatedRequirements sets the RelatedRequirements field's value.
func (s *StandardsControl) SetRelatedRequirements(v []*string) *StandardsControl {
	s.RelatedRequirements = v
	return s
}

// SetRemediationUrl sets the RemediationUrl field's value.
func (s *StandardsControl) SetRemediationUrl(v string) *StandardsControl {
	s.RemediationUrl = &v
	return s
}

// SetSeverityRating sets the SeverityRating field's value.
func (s *StandardsControl) SetSeverityRating(v string) *StandardsControl {
	s.SeverityRating = &v
	return s
}

// SetStandardsControlArn sets the StandardsControlArn field's value.
func (s *StandardsControl) SetStandardsControlArn(v string) *StandardsControl {
	s.StandardsControlArn = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *StandardsControl) SetTitle(v string) *StandardsControl {
	s.Title = &v
	return s
}

// Provides details about a control's enablement status in a specified standard.
type StandardsControlAssociationDetail struct {
	_ struct{} `type:"structure"`

	// Specifies whether a control is enabled or disabled in a specified standard.
	//
	// AssociationStatus is a required field
	AssociationStatus *string `type:"string" required:"true" enum:"AssociationStatus"`

	// The requirement that underlies a control in the compliance framework related
	// to the standard.
	RelatedRequirements []*string `type:"list"`

	// The ARN of a security control across standards, such as arn:aws:securityhub:eu-central-1:123456789012:security-control/S3.1.
	// This parameter doesn't mention a specific standard.
	//
	// SecurityControlArn is a required field
	SecurityControlArn *string `type:"string" required:"true"`

	// The unique identifier of a security control across standards. Values for
	// this field typically consist of an Amazon Web Service name and a number,
	// such as APIGateway.3.
	//
	// SecurityControlId is a required field
	SecurityControlId *string `type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of a security standard.
	//
	// StandardsArn is a required field
	StandardsArn *string `type:"string" required:"true"`

	// Provides the input parameter that Security Hub uses to call the UpdateStandardsControl
	// (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_UpdateStandardsControl.html)
	// API. This API can be used to enable or disable a control in a specified standard.
	StandardsControlArns []*string `type:"list"`

	// The description of a control. This typically summarizes how Security Hub
	// evaluates the control and the conditions under which it produces a failed
	// finding. This parameter may reference a specific standard.
	StandardsControlDescription *string `type:"string"`

	// The title of a control. This field may reference a specific standard.
	StandardsControlTitle *string `type:"string"`

	// The time at which the enablement status of the control in the specified standard
	// was last updated.
	UpdatedAt *time.Time `type:"timestamp" timestampFormat:"iso8601"`

	// The reason for updating the enablement status of a control in a specified
	// standard.
	UpdatedReason *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StandardsControlAssociationDetail) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StandardsControlAssociationDetail) GoString() string {
	return s.String()
}

// SetAssociationStatus sets the AssociationStatus field's value.
func (s *StandardsControlAssociationDetail) SetAssociationStatus(v string) *StandardsControlAssociationDetail {
	s.AssociationStatus = &v
	return s
}

// SetRelatedRequirements sets the RelatedRequirements field's value.
func (s *StandardsControlAssociationDetail) SetRelatedRequirements(v []*string) *StandardsControlAssociationDetail {
	s.RelatedRequirements = v
	return s
}

// SetSecurityControlArn sets the SecurityControlArn field's value.
func (s *StandardsControlAssociationDetail) SetSecurityControlArn(v string) *StandardsControlAssociationDetail {
	s.SecurityControlArn = &v
	return s
}

// SetSecurityControlId sets the SecurityControlId field's value.
func (s *StandardsControlAssociationDetail) SetSecurityControlId(v string) *StandardsControlAssociationDetail {
	s.SecurityControlId = &v
	return s
}

// SetStandardsArn sets the StandardsArn field's value.
func (s *StandardsControlAssociationDetail) SetStandardsArn(v string) *StandardsControlAssociationDetail {
	s.StandardsArn = &v
	return s
}

// SetStandardsControlArns sets the StandardsControlArns field's value.
func (s *StandardsControlAssociationDetail) SetStandardsControlArns(v []*string) *StandardsControlAssociationDetail {
	s.StandardsControlArns = v
	return s
}

// SetStandardsControlDescription sets the StandardsControlDescription field's value.
func (s *StandardsControlAssociationDetail) SetStandardsControlDescription(v string) *StandardsControlAssociationDetail {
	s.StandardsControlDescription = &v
	return s
}

// SetStandardsControlTitle sets the StandardsControlTitle field's value.
func (s *StandardsControlAssociationDetail) SetStandardsControlTitle(v string) *StandardsControlAssociationDetail {
	s.StandardsControlTitle = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *StandardsControlAssociationDetail) SetUpdatedAt(v time.Time) *StandardsControlAssociationDetail {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedReason sets the UpdatedReason field's value.
func (s *StandardsControlAssociationDetail) SetUpdatedReason(v string) *StandardsControlAssociationDetail {
	s.UpdatedReason = &v
	return s
}

// An array with one or more objects that includes a security control (identified
// with SecurityControlId, SecurityControlArn, or a mix of both parameters)
// and the Amazon Resource Name (ARN) of a standard. The security control ID
// or ARN is the same across standards.
type StandardsControlAssociationId struct {
	_ struct{} `type:"structure"`

	// The unique identifier (identified with SecurityControlId, SecurityControlArn,
	// or a mix of both parameters) of a security control across standards.
	//
	// SecurityControlId is a required field
	SecurityControlId *string `type:"string" required:"true"`

	// The ARN of a standard.
	//
	// StandardsArn is a required field
	StandardsArn *string `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 StandardsControlAssociationId) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StandardsControlAssociationId) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StandardsControlAssociationId) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StandardsControlAssociationId"}
	if s.SecurityControlId == nil {
		invalidParams.Add(request.NewErrParamRequired("SecurityControlId"))
	}
	if s.StandardsArn == nil {
		invalidParams.Add(request.NewErrParamRequired("StandardsArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSecurityControlId sets the SecurityControlId field's value.
func (s *StandardsControlAssociationId) SetSecurityControlId(v string) *StandardsControlAssociationId {
	s.SecurityControlId = &v
	return s
}

// SetStandardsArn sets the StandardsArn field's value.
func (s *StandardsControlAssociationId) SetStandardsArn(v string) *StandardsControlAssociationId {
	s.StandardsArn = &v
	return s
}

// An array that provides the enablement status and other details for each control
// that applies to each enabled standard.
type StandardsControlAssociationSummary struct {
	_ struct{} `type:"structure"`

	// The enablement status of a control in a specific standard.
	//
	// AssociationStatus is a required field
	AssociationStatus *string `type:"string" required:"true" enum:"AssociationStatus"`

	// The requirement that underlies this control in the compliance framework related
	// to the standard.
	RelatedRequirements []*string `type:"list"`

	// The ARN of a control, such as arn:aws:securityhub:eu-central-1:123456789012:security-control/S3.1.
	// This parameter doesn't mention a specific standard.
	//
	// SecurityControlArn is a required field
	SecurityControlArn *string `type:"string" required:"true"`

	// A unique standard-agnostic identifier for a control. Values for this field
	// typically consist of an Amazon Web Service and a number, such as APIGateway.5.
	// This field doesn't reference a specific standard.
	//
	// SecurityControlId is a required field
	SecurityControlId *string `type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of a standard.
	//
	// StandardsArn is a required field
	StandardsArn *string `type:"string" required:"true"`

	// The description of a control. This typically summarizes how Security Hub
	// evaluates the control and the conditions under which it produces a failed
	// finding. The parameter may reference a specific standard.
	StandardsControlDescription *string `type:"string"`

	// The title of a control.
	StandardsControlTitle *string `type:"string"`

	// The last time that a control's enablement status in a specified standard
	// was updated.
	UpdatedAt *time.Time `type:"timestamp" timestampFormat:"iso8601"`

	// The reason for updating a control's enablement status in a specified standard.
	UpdatedReason *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StandardsControlAssociationSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StandardsControlAssociationSummary) GoString() string {
	return s.String()
}

// SetAssociationStatus sets the AssociationStatus field's value.
func (s *StandardsControlAssociationSummary) SetAssociationStatus(v string) *StandardsControlAssociationSummary {
	s.AssociationStatus = &v
	return s
}

// SetRelatedRequirements sets the RelatedRequirements field's value.
func (s *StandardsControlAssociationSummary) SetRelatedRequirements(v []*string) *StandardsControlAssociationSummary {
	s.RelatedRequirements = v
	return s
}

// SetSecurityControlArn sets the SecurityControlArn field's value.
func (s *StandardsControlAssociationSummary) SetSecurityControlArn(v string) *StandardsControlAssociationSummary {
	s.SecurityControlArn = &v
	return s
}

// SetSecurityControlId sets the SecurityControlId field's value.
func (s *StandardsControlAssociationSummary) SetSecurityControlId(v string) *StandardsControlAssociationSummary {
	s.SecurityControlId = &v
	return s
}

// SetStandardsArn sets the StandardsArn field's value.
func (s *StandardsControlAssociationSummary) SetStandardsArn(v string) *StandardsControlAssociationSummary {
	s.StandardsArn = &v
	return s
}

// SetStandardsControlDescription sets the StandardsControlDescription field's value.
func (s *StandardsControlAssociationSummary) SetStandardsControlDescription(v string) *StandardsControlAssociationSummary {
	s.StandardsControlDescription = &v
	return s
}

// SetStandardsControlTitle sets the StandardsControlTitle field's value.
func (s *StandardsControlAssociationSummary) SetStandardsControlTitle(v string) *StandardsControlAssociationSummary {
	s.StandardsControlTitle = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *StandardsControlAssociationSummary) SetUpdatedAt(v time.Time) *StandardsControlAssociationSummary {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedReason sets the UpdatedReason field's value.
func (s *StandardsControlAssociationSummary) SetUpdatedReason(v string) *StandardsControlAssociationSummary {
	s.UpdatedReason = &v
	return s
}

// An array of requested updates to the enablement status of controls in specified
// standards. The objects in the array include a security control ID, the Amazon
// Resource Name (ARN) of the standard, the requested enablement status, and
// the reason for updating the enablement status.
type StandardsControlAssociationUpdate struct {
	_ struct{} `type:"structure"`

	// The desired enablement status of the control in the standard.
	//
	// AssociationStatus is a required field
	AssociationStatus *string `type:"string" required:"true" enum:"AssociationStatus"`

	// The unique identifier for the security control whose enablement status you
	// want to update.
	//
	// SecurityControlId is a required field
	SecurityControlId *string `type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of the standard in which you want to update
	// the control's enablement status.
	//
	// StandardsArn is a required field
	StandardsArn *string `type:"string" required:"true"`

	// The reason for updating the control's enablement status in the standard.
	UpdatedReason *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StandardsControlAssociationUpdate) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StandardsControlAssociationUpdate) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StandardsControlAssociationUpdate) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StandardsControlAssociationUpdate"}
	if s.AssociationStatus == nil {
		invalidParams.Add(request.NewErrParamRequired("AssociationStatus"))
	}
	if s.SecurityControlId == nil {
		invalidParams.Add(request.NewErrParamRequired("SecurityControlId"))
	}
	if s.StandardsArn == nil {
		invalidParams.Add(request.NewErrParamRequired("StandardsArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssociationStatus sets the AssociationStatus field's value.
func (s *StandardsControlAssociationUpdate) SetAssociationStatus(v string) *StandardsControlAssociationUpdate {
	s.AssociationStatus = &v
	return s
}

// SetSecurityControlId sets the SecurityControlId field's value.
func (s *StandardsControlAssociationUpdate) SetSecurityControlId(v string) *StandardsControlAssociationUpdate {
	s.SecurityControlId = &v
	return s
}

// SetStandardsArn sets the StandardsArn field's value.
func (s *StandardsControlAssociationUpdate) SetStandardsArn(v string) *StandardsControlAssociationUpdate {
	s.StandardsArn = &v
	return s
}

// SetUpdatedReason sets the UpdatedReason field's value.
func (s *StandardsControlAssociationUpdate) SetUpdatedReason(v string) *StandardsControlAssociationUpdate {
	s.UpdatedReason = &v
	return s
}

// Provides details about the management of a security standard.
type StandardsManagedBy struct {
	_ struct{} `type:"structure"`

	// An identifier for the company that manages a specific security standard.
	// For existing standards, the value is equal to Amazon Web Services.
	Company *string `type:"string"`

	// An identifier for the product that manages a specific security standard.
	// For existing standards, the value is equal to the Amazon Web Services service
	// that manages the standard.
	Product *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StandardsManagedBy) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StandardsManagedBy) GoString() string {
	return s.String()
}

// SetCompany sets the Company field's value.
func (s *StandardsManagedBy) SetCompany(v string) *StandardsManagedBy {
	s.Company = &v
	return s
}

// SetProduct sets the Product field's value.
func (s *StandardsManagedBy) SetProduct(v string) *StandardsManagedBy {
	s.Product = &v
	return s
}

// The reason for the current status of a standard subscription.
type StandardsStatusReason struct {
	_ struct{} `type:"structure"`

	// The reason code that represents the reason for the current status of a standard
	// subscription.
	//
	// StatusReasonCode is a required field
	StatusReasonCode *string `type:"string" required:"true" enum:"StatusReasonCode"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StandardsStatusReason) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StandardsStatusReason) GoString() string {
	return s.String()
}

// SetStatusReasonCode sets the StatusReasonCode field's value.
func (s *StandardsStatusReason) SetStatusReasonCode(v string) *StandardsStatusReason {
	s.StatusReasonCode = &v
	return s
}

// A resource that represents your subscription to a supported standard.
type StandardsSubscription struct {
	_ struct{} `type:"structure"`

	// The ARN of a standard.
	//
	// StandardsArn is a required field
	StandardsArn *string `type:"string" required:"true"`

	// A key-value pair of input for the standard.
	//
	// StandardsInput is a required field
	StandardsInput map[string]*string `type:"map" required:"true"`

	// The status of the standard subscription.
	//
	// The status values are as follows:
	//
	//    * PENDING - Standard is in the process of being enabled.
	//
	//    * READY - Standard is enabled.
	//
	//    * INCOMPLETE - Standard could not be enabled completely. Some controls
	//    may not be available.
	//
	//    * DELETING - Standard is in the process of being disabled.
	//
	//    * FAILED - Standard could not be disabled.
	//
	// StandardsStatus is a required field
	StandardsStatus *string `type:"string" required:"true" enum:"StandardsStatus"`

	// The reason for the current status.
	StandardsStatusReason *StandardsStatusReason `type:"structure"`

	// The ARN of a resource that represents your subscription to a supported standard.
	//
	// StandardsSubscriptionArn is a required field
	StandardsSubscriptionArn *string `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 StandardsSubscription) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StandardsSubscription) GoString() string {
	return s.String()
}

// SetStandardsArn sets the StandardsArn field's value.
func (s *StandardsSubscription) SetStandardsArn(v string) *StandardsSubscription {
	s.StandardsArn = &v
	return s
}

// SetStandardsInput sets the StandardsInput field's value.
func (s *StandardsSubscription) SetStandardsInput(v map[string]*string) *StandardsSubscription {
	s.StandardsInput = v
	return s
}

// SetStandardsStatus sets the StandardsStatus field's value.
func (s *StandardsSubscription) SetStandardsStatus(v string) *StandardsSubscription {
	s.StandardsStatus = &v
	return s
}

// SetStandardsStatusReason sets the StandardsStatusReason field's value.
func (s *StandardsSubscription) SetStandardsStatusReason(v *StandardsStatusReason) *StandardsSubscription {
	s.StandardsStatusReason = v
	return s
}

// SetStandardsSubscriptionArn sets the StandardsSubscriptionArn field's value.
func (s *StandardsSubscription) SetStandardsSubscriptionArn(v string) *StandardsSubscription {
	s.StandardsSubscriptionArn = &v
	return s
}

// The standard that you want to enable.
type StandardsSubscriptionRequest struct {
	_ struct{} `type:"structure"`

	// The ARN of the standard that you want to enable. To view the list of available
	// standards and their ARNs, use the DescribeStandards operation.
	//
	// StandardsArn is a required field
	StandardsArn *string `type:"string" required:"true"`

	// A key-value pair of input for the standard.
	StandardsInput map[string]*string `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 StandardsSubscriptionRequest) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StandardsSubscriptionRequest) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StandardsSubscriptionRequest) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StandardsSubscriptionRequest"}
	if s.StandardsArn == nil {
		invalidParams.Add(request.NewErrParamRequired("StandardsArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetStandardsArn sets the StandardsArn field's value.
func (s *StandardsSubscriptionRequest) SetStandardsArn(v string) *StandardsSubscriptionRequest {
	s.StandardsArn = &v
	return s
}

// SetStandardsInput sets the StandardsInput field's value.
func (s *StandardsSubscriptionRequest) SetStandardsInput(v map[string]*string) *StandardsSubscriptionRequest {
	s.StandardsInput = v
	return s
}

type StartConfigurationPolicyAssociationInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of a configuration policy, the universally
	// unique identifier (UUID) of a configuration policy, or a value of SELF_MANAGED_SECURITY_HUB
	// for a self-managed configuration.
	//
	// ConfigurationPolicyIdentifier is a required field
	ConfigurationPolicyIdentifier *string `type:"string" required:"true"`

	// The identifier of the target account, organizational unit, or the root to
	// associate with the specified configuration.
	//
	// Target is a required field
	Target *Target `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 StartConfigurationPolicyAssociationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartConfigurationPolicyAssociationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartConfigurationPolicyAssociationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartConfigurationPolicyAssociationInput"}
	if s.ConfigurationPolicyIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("ConfigurationPolicyIdentifier"))
	}
	if s.Target == nil {
		invalidParams.Add(request.NewErrParamRequired("Target"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConfigurationPolicyIdentifier sets the ConfigurationPolicyIdentifier field's value.
func (s *StartConfigurationPolicyAssociationInput) SetConfigurationPolicyIdentifier(v string) *StartConfigurationPolicyAssociationInput {
	s.ConfigurationPolicyIdentifier = &v
	return s
}

// SetTarget sets the Target field's value.
func (s *StartConfigurationPolicyAssociationInput) SetTarget(v *Target) *StartConfigurationPolicyAssociationInput {
	s.Target = v
	return s
}

type StartConfigurationPolicyAssociationOutput struct {
	_ struct{} `type:"structure"`

	// The current status of the association between the specified target and the
	// configuration.
	AssociationStatus *string `type:"string" enum:"ConfigurationPolicyAssociationStatus"`

	// An explanation for a FAILED value for AssociationStatus.
	AssociationStatusMessage *string `type:"string"`

	// Indicates whether the association between the specified target and the configuration
	// was directly applied by the Security Hub delegated administrator or inherited
	// from a parent.
	AssociationType *string `type:"string" enum:"AssociationType"`

	// The UUID of the configuration policy.
	ConfigurationPolicyId *string `type:"string"`

	// The identifier of the target account, organizational unit, or the organization
	// root with which the configuration is associated.
	TargetId *string `type:"string"`

	// Indicates whether the target is an Amazon Web Services account, organizational
	// unit, or the organization root.
	TargetType *string `type:"string" enum:"TargetType"`

	// The date and time, in UTC and ISO 8601 format, that the configuration policy
	// association was last updated.
	UpdatedAt *time.Time `type:"timestamp" timestampFormat:"iso8601"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartConfigurationPolicyAssociationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartConfigurationPolicyAssociationOutput) GoString() string {
	return s.String()
}

// SetAssociationStatus sets the AssociationStatus field's value.
func (s *StartConfigurationPolicyAssociationOutput) SetAssociationStatus(v string) *StartConfigurationPolicyAssociationOutput {
	s.AssociationStatus = &v
	return s
}

// SetAssociationStatusMessage sets the AssociationStatusMessage field's value.
func (s *StartConfigurationPolicyAssociationOutput) SetAssociationStatusMessage(v string) *StartConfigurationPolicyAssociationOutput {
	s.AssociationStatusMessage = &v
	return s
}

// SetAssociationType sets the AssociationType field's value.
func (s *StartConfigurationPolicyAssociationOutput) SetAssociationType(v string) *StartConfigurationPolicyAssociationOutput {
	s.AssociationType = &v
	return s
}

// SetConfigurationPolicyId sets the ConfigurationPolicyId field's value.
func (s *StartConfigurationPolicyAssociationOutput) SetConfigurationPolicyId(v string) *StartConfigurationPolicyAssociationOutput {
	s.ConfigurationPolicyId = &v
	return s
}

// SetTargetId sets the TargetId field's value.
func (s *StartConfigurationPolicyAssociationOutput) SetTargetId(v string) *StartConfigurationPolicyAssociationOutput {
	s.TargetId = &v
	return s
}

// SetTargetType sets the TargetType field's value.
func (s *StartConfigurationPolicyAssociationOutput) SetTargetType(v string) *StartConfigurationPolicyAssociationOutput {
	s.TargetType = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *StartConfigurationPolicyAssociationOutput) SetUpdatedAt(v time.Time) *StartConfigurationPolicyAssociationOutput {
	s.UpdatedAt = &v
	return s
}

type StartConfigurationPolicyDisassociationInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of a configuration policy, the universally
	// unique identifier (UUID) of a configuration policy, or a value of SELF_MANAGED_SECURITY_HUB
	// for a self-managed configuration.
	//
	// ConfigurationPolicyIdentifier is a required field
	ConfigurationPolicyIdentifier *string `type:"string" required:"true"`

	// The identifier of the target account, organizational unit, or the root to
	// disassociate from the specified configuration.
	Target *Target `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 StartConfigurationPolicyDisassociationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartConfigurationPolicyDisassociationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartConfigurationPolicyDisassociationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartConfigurationPolicyDisassociationInput"}
	if s.ConfigurationPolicyIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("ConfigurationPolicyIdentifier"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConfigurationPolicyIdentifier sets the ConfigurationPolicyIdentifier field's value.
func (s *StartConfigurationPolicyDisassociationInput) SetConfigurationPolicyIdentifier(v string) *StartConfigurationPolicyDisassociationInput {
	s.ConfigurationPolicyIdentifier = &v
	return s
}

// SetTarget sets the Target field's value.
func (s *StartConfigurationPolicyDisassociationInput) SetTarget(v *Target) *StartConfigurationPolicyDisassociationInput {
	s.Target = v
	return s
}

type StartConfigurationPolicyDisassociationOutput 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 StartConfigurationPolicyDisassociationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartConfigurationPolicyDisassociationOutput) GoString() string {
	return s.String()
}

// The definition of a custom action that can be used for stateless packet handling.
type StatelessCustomActionDefinition struct {
	_ struct{} `type:"structure"`

	// Information about metrics to publish to CloudWatch.
	PublishMetricAction *StatelessCustomPublishMetricAction `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 StatelessCustomActionDefinition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StatelessCustomActionDefinition) GoString() string {
	return s.String()
}

// SetPublishMetricAction sets the PublishMetricAction field's value.
func (s *StatelessCustomActionDefinition) SetPublishMetricAction(v *StatelessCustomPublishMetricAction) *StatelessCustomActionDefinition {
	s.PublishMetricAction = v
	return s
}

// Information about metrics to publish to CloudWatch.
type StatelessCustomPublishMetricAction struct {
	_ struct{} `type:"structure"`

	// Defines CloudWatch dimension values to publish.
	Dimensions []*StatelessCustomPublishMetricActionDimension `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 StatelessCustomPublishMetricAction) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StatelessCustomPublishMetricAction) GoString() string {
	return s.String()
}

// SetDimensions sets the Dimensions field's value.
func (s *StatelessCustomPublishMetricAction) SetDimensions(v []*StatelessCustomPublishMetricActionDimension) *StatelessCustomPublishMetricAction {
	s.Dimensions = v
	return s
}

// Defines a CloudWatch dimension value to publish.
type StatelessCustomPublishMetricActionDimension struct {
	_ struct{} `type:"structure"`

	// The value to use for the custom metric dimension.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StatelessCustomPublishMetricActionDimension) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StatelessCustomPublishMetricActionDimension) GoString() string {
	return s.String()
}

// SetValue sets the Value field's value.
func (s *StatelessCustomPublishMetricActionDimension) SetValue(v string) *StatelessCustomPublishMetricActionDimension {
	s.Value = &v
	return s
}

// Provides additional context for the value of Compliance.Status.
type StatusReason struct {
	_ struct{} `type:"structure"`

	// The corresponding description for the status reason code.
	Description *string `type:"string"`

	// A code that represents a reason for the control status. For the list of status
	// reason codes and their meanings, see Standards-related information in the
	// ASFF (https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-standards-results.html#securityhub-standards-results-asff)
	// in the Security Hub User Guide.
	//
	// ReasonCode is a required field
	ReasonCode *string `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 StatusReason) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StatusReason) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StatusReason) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StatusReason"}
	if s.ReasonCode == nil {
		invalidParams.Add(request.NewErrParamRequired("ReasonCode"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *StatusReason) SetDescription(v string) *StatusReason {
	s.Description = &v
	return s
}

// SetReasonCode sets the ReasonCode field's value.
func (s *StatusReason) SetReasonCode(v string) *StatusReason {
	s.ReasonCode = &v
	return s
}

// The options for customizing a security control parameter that is a string.
type StringConfigurationOptions struct {
	_ struct{} `type:"structure"`

	// The Security Hub default value for a control parameter that is a string.
	DefaultValue *string `type:"string"`

	// The description of the RE2 regular expression.
	ExpressionDescription *string `type:"string"`

	// An RE2 regular expression that Security Hub uses to validate a user-provided
	// control parameter string.
	Re2Expression *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StringConfigurationOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StringConfigurationOptions) GoString() string {
	return s.String()
}

// SetDefaultValue sets the DefaultValue field's value.
func (s *StringConfigurationOptions) SetDefaultValue(v string) *StringConfigurationOptions {
	s.DefaultValue = &v
	return s
}

// SetExpressionDescription sets the ExpressionDescription field's value.
func (s *StringConfigurationOptions) SetExpressionDescription(v string) *StringConfigurationOptions {
	s.ExpressionDescription = &v
	return s
}

// SetRe2Expression sets the Re2Expression field's value.
func (s *StringConfigurationOptions) SetRe2Expression(v string) *StringConfigurationOptions {
	s.Re2Expression = &v
	return s
}

// A string filter for filtering Security Hub findings.
type StringFilter struct {
	_ struct{} `type:"structure"`

	// The condition to apply to a string value when filtering Security Hub findings.
	//
	// To search for values that have the filter value, use one of the following
	// comparison operators:
	//
	//    * To search for values that include the filter value, use CONTAINS. For
	//    example, the filter Title CONTAINS CloudFront matches findings that have
	//    a Title that includes the string CloudFront.
	//
	//    * To search for values that exactly match the filter value, use EQUALS.
	//    For example, the filter AwsAccountId EQUALS 123456789012 only matches
	//    findings that have an account ID of 123456789012.
	//
	//    * To search for values that start with the filter value, use PREFIX. For
	//    example, the filter ResourceRegion PREFIX us matches findings that have
	//    a ResourceRegion that starts with us. A ResourceRegion that starts with
	//    a different value, such as af, ap, or ca, doesn't match.
	//
	// CONTAINS, EQUALS, and PREFIX filters on the same field are joined by OR.
	// A finding matches if it matches any one of those filters. For example, the
	// filters Title CONTAINS CloudFront OR Title CONTAINS CloudWatch match a finding
	// that includes either CloudFront, CloudWatch, or both strings in the title.
	//
	// To search for values that don’t have the filter value, use one of the following
	// comparison operators:
	//
	//    * To search for values that exclude the filter value, use NOT_CONTAINS.
	//    For example, the filter Title NOT_CONTAINS CloudFront matches findings
	//    that have a Title that excludes the string CloudFront.
	//
	//    * To search for values other than the filter value, use NOT_EQUALS. For
	//    example, the filter AwsAccountId NOT_EQUALS 123456789012 only matches
	//    findings that have an account ID other than 123456789012.
	//
	//    * To search for values that don't start with the filter value, use PREFIX_NOT_EQUALS.
	//    For example, the filter ResourceRegion PREFIX_NOT_EQUALS us matches findings
	//    with a ResourceRegion that starts with a value other than us.
	//
	// NOT_CONTAINS, NOT_EQUALS, and PREFIX_NOT_EQUALS filters on the same field
	// are joined by AND. A finding matches only if it matches all of those filters.
	// For example, the filters Title NOT_CONTAINS CloudFront AND Title NOT_CONTAINS
	// CloudWatch match a finding that excludes both CloudFront and CloudWatch in
	// the title.
	//
	// You can’t have both a CONTAINS filter and a NOT_CONTAINS filter on the
	// same field. Similarly, you can't provide both an EQUALS filter and a NOT_EQUALS
	// or PREFIX_NOT_EQUALS filter on the same field. Combining filters in this
	// way returns an error. CONTAINS filters can only be used with other CONTAINS
	// filters. NOT_CONTAINS filters can only be used with other NOT_CONTAINS filters.
	//
	// You can combine PREFIX filters with NOT_EQUALS or PREFIX_NOT_EQUALS filters
	// for the same field. Security Hub first processes the PREFIX filters, and
	// then the NOT_EQUALS or PREFIX_NOT_EQUALS filters.
	//
	// For example, for the following filters, Security Hub first identifies findings
	// that have resource types that start with either AwsIam or AwsEc2. It then
	// excludes findings that have a resource type of AwsIamPolicy and findings
	// that have a resource type of AwsEc2NetworkInterface.
	//
	//    * ResourceType PREFIX AwsIam
	//
	//    * ResourceType PREFIX AwsEc2
	//
	//    * ResourceType NOT_EQUALS AwsIamPolicy
	//
	//    * ResourceType NOT_EQUALS AwsEc2NetworkInterface
	//
	// CONTAINS and NOT_CONTAINS operators can be used only with automation rules.
	// For more information, see Automation rules (https://docs.aws.amazon.com/securityhub/latest/userguide/automation-rules.html)
	// in the Security Hub User Guide.
	Comparison *string `type:"string" enum:"StringFilterComparison"`

	// The string filter value. Filter values are case sensitive. For example, the
	// product name for control-based findings is Security Hub. If you provide security
	// hub as the filter value, there's no match.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StringFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StringFilter) GoString() string {
	return s.String()
}

// SetComparison sets the Comparison field's value.
func (s *StringFilter) SetComparison(v string) *StringFilter {
	s.Comparison = &v
	return s
}

// SetValue sets the Value field's value.
func (s *StringFilter) SetValue(v string) *StringFilter {
	s.Value = &v
	return s
}

// The options for customizing a security control parameter that is a list of
// strings.
type StringListConfigurationOptions struct {
	_ struct{} `type:"structure"`

	// The Security Hub default value for a control parameter that is a list of
	// strings.
	DefaultValue []*string `type:"list"`

	// The description of the RE2 regular expression.
	ExpressionDescription *string `type:"string"`

	// The maximum number of list items that a string list control parameter can
	// accept.
	MaxItems *int64 `type:"integer"`

	// An RE2 regular expression that Security Hub uses to validate a user-provided
	// list of strings for a control parameter.
	Re2Expression *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StringListConfigurationOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StringListConfigurationOptions) GoString() string {
	return s.String()
}

// SetDefaultValue sets the DefaultValue field's value.
func (s *StringListConfigurationOptions) SetDefaultValue(v []*string) *StringListConfigurationOptions {
	s.DefaultValue = v
	return s
}

// SetExpressionDescription sets the ExpressionDescription field's value.
func (s *StringListConfigurationOptions) SetExpressionDescription(v string) *StringListConfigurationOptions {
	s.ExpressionDescription = &v
	return s
}

// SetMaxItems sets the MaxItems field's value.
func (s *StringListConfigurationOptions) SetMaxItems(v int64) *StringListConfigurationOptions {
	s.MaxItems = &v
	return s
}

// SetRe2Expression sets the Re2Expression field's value.
func (s *StringListConfigurationOptions) SetRe2Expression(v string) *StringListConfigurationOptions {
	s.Re2Expression = &v
	return s
}

type TagResourceInput struct {
	_ struct{} `type:"structure"`

	// The ARN of the resource to apply the tags to.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"ResourceArn" type:"string" required:"true"`

	// The tags to add to the resource. You can add up to 50 tags at a time. The
	// tag keys can be no longer than 128 characters. The tag values can be no longer
	// than 256 characters.
	//
	// Tags is a required field
	Tags map[string]*string `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 target account, organizational unit, or the root that is associated with
// an Security Hub configuration. The configuration can be a configuration policy
// or self-managed behavior.
type Target struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID of the target account.
	AccountId *string `type:"string"`

	// The organizational unit ID of the target organizational unit.
	OrganizationalUnitId *string `type:"string"`

	// The ID of the organization root.
	RootId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Target) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Target) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *Target) SetAccountId(v string) *Target {
	s.AccountId = &v
	return s
}

// SetOrganizationalUnitId sets the OrganizationalUnitId field's value.
func (s *Target) SetOrganizationalUnitId(v string) *Target {
	s.OrganizationalUnitId = &v
	return s
}

// SetRootId sets the RootId field's value.
func (s *Target) SetRootId(v string) *Target {
	s.RootId = &v
	return s
}

// Provides information about the threat detected in a security finding and
// the file paths that were affected by the threat.
type Threat struct {
	_ struct{} `type:"structure"`

	// Provides information about the file paths that were affected by the threat.
	//
	// Array Members: Minimum number of 1 item. Maximum number of 5 items.
	FilePaths []*FilePaths `type:"list"`

	// This total number of items in which the threat has been detected.
	ItemCount *int64 `type:"integer"`

	// The name of the threat.
	//
	// Length Constraints: Minimum of 1 length. Maximum of 128 length.
	Name *string `type:"string"`

	// The severity of the threat.
	//
	// Length Constraints: Minimum of 1 length. Maximum of 128 length.
	Severity *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Threat) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Threat) GoString() string {
	return s.String()
}

// SetFilePaths sets the FilePaths field's value.
func (s *Threat) SetFilePaths(v []*FilePaths) *Threat {
	s.FilePaths = v
	return s
}

// SetItemCount sets the ItemCount field's value.
func (s *Threat) SetItemCount(v int64) *Threat {
	s.ItemCount = &v
	return s
}

// SetName sets the Name field's value.
func (s *Threat) SetName(v string) *Threat {
	s.Name = &v
	return s
}

// SetSeverity sets the Severity field's value.
func (s *Threat) SetSeverity(v string) *Threat {
	s.Severity = &v
	return s
}

// Details about the threat intelligence related to a finding.
type ThreatIntelIndicator struct {
	_ struct{} `type:"structure"`

	// The category of a threat intelligence indicator.
	Category *string `type:"string" enum:"ThreatIntelIndicatorCategory"`

	// Indicates when the most recent instance of a threat intelligence indicator
	// was observed.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	LastObservedAt *string `type:"string"`

	// The source of the threat intelligence indicator.
	//
	// Length Constraints: Minimum of 1 length. Maximum of 64 length.
	Source *string `type:"string"`

	// The URL to the page or site where you can get more information about the
	// threat intelligence indicator.
	SourceUrl *string `type:"string"`

	// The type of threat intelligence indicator.
	Type *string `type:"string" enum:"ThreatIntelIndicatorType"`

	// The value of a threat intelligence indicator.
	//
	// Length Constraints: Minimum of 1 length. Maximum of 512 length.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ThreatIntelIndicator) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ThreatIntelIndicator) GoString() string {
	return s.String()
}

// SetCategory sets the Category field's value.
func (s *ThreatIntelIndicator) SetCategory(v string) *ThreatIntelIndicator {
	s.Category = &v
	return s
}

// SetLastObservedAt sets the LastObservedAt field's value.
func (s *ThreatIntelIndicator) SetLastObservedAt(v string) *ThreatIntelIndicator {
	s.LastObservedAt = &v
	return s
}

// SetSource sets the Source field's value.
func (s *ThreatIntelIndicator) SetSource(v string) *ThreatIntelIndicator {
	s.Source = &v
	return s
}

// SetSourceUrl sets the SourceUrl field's value.
func (s *ThreatIntelIndicator) SetSourceUrl(v string) *ThreatIntelIndicator {
	s.SourceUrl = &v
	return s
}

// SetType sets the Type field's value.
func (s *ThreatIntelIndicator) SetType(v string) *ThreatIntelIndicator {
	s.Type = &v
	return s
}

// SetValue sets the Value field's value.
func (s *ThreatIntelIndicator) SetValue(v string) *ThreatIntelIndicator {
	s.Value = &v
	return s
}

// A list of objects containing RuleArn, ErrorCode, and ErrorMessage. This parameter
// tells you which automation rules the request didn't process and why.
type UnprocessedAutomationRule struct {
	_ struct{} `type:"structure"`

	// The error code associated with the unprocessed automation rule.
	ErrorCode *int64 `type:"integer"`

	// An error message describing why a request didn't process a specific rule.
	ErrorMessage *string `type:"string"`

	// The Amazon Resource Name (ARN) for the unprocessed automation rule.
	RuleArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnprocessedAutomationRule) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnprocessedAutomationRule) GoString() string {
	return s.String()
}

// SetErrorCode sets the ErrorCode field's value.
func (s *UnprocessedAutomationRule) SetErrorCode(v int64) *UnprocessedAutomationRule {
	s.ErrorCode = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *UnprocessedAutomationRule) SetErrorMessage(v string) *UnprocessedAutomationRule {
	s.ErrorMessage = &v
	return s
}

// SetRuleArn sets the RuleArn field's value.
func (s *UnprocessedAutomationRule) SetRuleArn(v string) *UnprocessedAutomationRule {
	s.RuleArn = &v
	return s
}

// An array of configuration policy associations, one for each configuration
// policy association identifier, that was specified in a BatchGetConfigurationPolicyAssociations
// request but couldn’t be processed due to an error.
type UnprocessedConfigurationPolicyAssociation struct {
	_ struct{} `type:"structure"`

	// Configuration policy association identifiers that were specified in a BatchGetConfigurationPolicyAssociations
	// request but couldn’t be processed due to an error.
	ConfigurationPolicyAssociationIdentifiers *ConfigurationPolicyAssociation `type:"structure"`

	// An HTTP status code that identifies why the configuration policy association
	// failed.
	ErrorCode *string `type:"string"`

	// A string that identifies why the configuration policy association failed.
	ErrorReason *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnprocessedConfigurationPolicyAssociation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnprocessedConfigurationPolicyAssociation) GoString() string {
	return s.String()
}

// SetConfigurationPolicyAssociationIdentifiers sets the ConfigurationPolicyAssociationIdentifiers field's value.
func (s *UnprocessedConfigurationPolicyAssociation) SetConfigurationPolicyAssociationIdentifiers(v *ConfigurationPolicyAssociation) *UnprocessedConfigurationPolicyAssociation {
	s.ConfigurationPolicyAssociationIdentifiers = v
	return s
}

// SetErrorCode sets the ErrorCode field's value.
func (s *UnprocessedConfigurationPolicyAssociation) SetErrorCode(v string) *UnprocessedConfigurationPolicyAssociation {
	s.ErrorCode = &v
	return s
}

// SetErrorReason sets the ErrorReason field's value.
func (s *UnprocessedConfigurationPolicyAssociation) SetErrorReason(v string) *UnprocessedConfigurationPolicyAssociation {
	s.ErrorReason = &v
	return s
}

// Provides details about a security control for which a response couldn't be
// returned.
type UnprocessedSecurityControl struct {
	_ struct{} `type:"structure"`

	// The error code for the unprocessed security control.
	//
	// ErrorCode is a required field
	ErrorCode *string `type:"string" required:"true" enum:"UnprocessedErrorCode"`

	// The reason why the security control was unprocessed.
	ErrorReason *string `type:"string"`

	// The control (identified with SecurityControlId, SecurityControlArn, or a
	// mix of both parameters) for which a response couldn't be returned.
	//
	// SecurityControlId is a required field
	SecurityControlId *string `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 UnprocessedSecurityControl) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnprocessedSecurityControl) GoString() string {
	return s.String()
}

// SetErrorCode sets the ErrorCode field's value.
func (s *UnprocessedSecurityControl) SetErrorCode(v string) *UnprocessedSecurityControl {
	s.ErrorCode = &v
	return s
}

// SetErrorReason sets the ErrorReason field's value.
func (s *UnprocessedSecurityControl) SetErrorReason(v string) *UnprocessedSecurityControl {
	s.ErrorReason = &v
	return s
}

// SetSecurityControlId sets the SecurityControlId field's value.
func (s *UnprocessedSecurityControl) SetSecurityControlId(v string) *UnprocessedSecurityControl {
	s.SecurityControlId = &v
	return s
}

// Provides details about which control's enablement status couldn't be retrieved
// in a specified standard when calling BatchUpdateStandardsControlAssociations
// (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_BatchUpdateStandardsControlAssociations.html).
// This parameter also provides details about why the request was unprocessed.
type UnprocessedStandardsControlAssociation struct {
	_ struct{} `type:"structure"`

	// The error code for the unprocessed standard and control association.
	//
	// ErrorCode is a required field
	ErrorCode *string `type:"string" required:"true" enum:"UnprocessedErrorCode"`

	// The reason why the standard and control association was unprocessed.
	ErrorReason *string `type:"string"`

	// An array with one or more objects that includes a security control (identified
	// with SecurityControlId, SecurityControlArn, or a mix of both parameters)
	// and the Amazon Resource Name (ARN) of a standard. This parameter shows the
	// specific controls for which the enablement status couldn't be retrieved in
	// specified standards when calling BatchUpdateStandardsControlAssociations
	// (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_BatchUpdateStandardsControlAssociations.html).
	//
	// StandardsControlAssociationId is a required field
	StandardsControlAssociationId *StandardsControlAssociationId `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 UnprocessedStandardsControlAssociation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnprocessedStandardsControlAssociation) GoString() string {
	return s.String()
}

// SetErrorCode sets the ErrorCode field's value.
func (s *UnprocessedStandardsControlAssociation) SetErrorCode(v string) *UnprocessedStandardsControlAssociation {
	s.ErrorCode = &v
	return s
}

// SetErrorReason sets the ErrorReason field's value.
func (s *UnprocessedStandardsControlAssociation) SetErrorReason(v string) *UnprocessedStandardsControlAssociation {
	s.ErrorReason = &v
	return s
}

// SetStandardsControlAssociationId sets the StandardsControlAssociationId field's value.
func (s *UnprocessedStandardsControlAssociation) SetStandardsControlAssociationId(v *StandardsControlAssociationId) *UnprocessedStandardsControlAssociation {
	s.StandardsControlAssociationId = v
	return s
}

// Provides details about which control's enablement status could not be updated
// in a specified standard when calling the BatchUpdateStandardsControlAssociations
// (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_BatchUpdateStandardsControlAssociations.html)
// API. This parameter also provides details about why the request was unprocessed.
type UnprocessedStandardsControlAssociationUpdate struct {
	_ struct{} `type:"structure"`

	// The error code for the unprocessed update of the control's enablement status
	// in the specified standard.
	//
	// ErrorCode is a required field
	ErrorCode *string `type:"string" required:"true" enum:"UnprocessedErrorCode"`

	// The reason why a control's enablement status in the specified standard couldn't
	// be updated.
	ErrorReason *string `type:"string"`

	// An array of control and standard associations for which an update failed
	// when calling BatchUpdateStandardsControlAssociations (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_BatchUpdateStandardsControlAssociations.html).
	//
	// StandardsControlAssociationUpdate is a required field
	StandardsControlAssociationUpdate *StandardsControlAssociationUpdate `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 UnprocessedStandardsControlAssociationUpdate) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnprocessedStandardsControlAssociationUpdate) GoString() string {
	return s.String()
}

// SetErrorCode sets the ErrorCode field's value.
func (s *UnprocessedStandardsControlAssociationUpdate) SetErrorCode(v string) *UnprocessedStandardsControlAssociationUpdate {
	s.ErrorCode = &v
	return s
}

// SetErrorReason sets the ErrorReason field's value.
func (s *UnprocessedStandardsControlAssociationUpdate) SetErrorReason(v string) *UnprocessedStandardsControlAssociationUpdate {
	s.ErrorReason = &v
	return s
}

// SetStandardsControlAssociationUpdate sets the StandardsControlAssociationUpdate field's value.
func (s *UnprocessedStandardsControlAssociationUpdate) SetStandardsControlAssociationUpdate(v *StandardsControlAssociationUpdate) *UnprocessedStandardsControlAssociationUpdate {
	s.StandardsControlAssociationUpdate = v
	return s
}

type UntagResourceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ARN of the resource to remove the tags from.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"ResourceArn" type:"string" required:"true"`

	// The tag keys associated with the tags to remove from the resource. You can
	// remove up to 50 tags at a time.
	//
	// 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 UpdateActionTargetInput struct {
	_ struct{} `type:"structure"`

	// The ARN of the custom action target to update.
	//
	// ActionTargetArn is a required field
	ActionTargetArn *string `location:"uri" locationName:"ActionTargetArn" type:"string" required:"true"`

	// The updated description for the custom action target.
	Description *string `type:"string"`

	// The updated name of the custom action target.
	Name *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateActionTargetInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateActionTargetInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateActionTargetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateActionTargetInput"}
	if s.ActionTargetArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ActionTargetArn"))
	}
	if s.ActionTargetArn != nil && len(*s.ActionTargetArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ActionTargetArn", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActionTargetArn sets the ActionTargetArn field's value.
func (s *UpdateActionTargetInput) SetActionTargetArn(v string) *UpdateActionTargetInput {
	s.ActionTargetArn = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateActionTargetInput) SetDescription(v string) *UpdateActionTargetInput {
	s.Description = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateActionTargetInput) SetName(v string) *UpdateActionTargetInput {
	s.Name = &v
	return s
}

type UpdateActionTargetOutput 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 UpdateActionTargetOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateActionTargetOutput) GoString() string {
	return s.String()
}

// Specifies the parameters to update in an existing automation rule.
type UpdateAutomationRulesRequestItem struct {
	_ struct{} `type:"structure"`

	// One or more actions to update finding fields if a finding matches the conditions
	// specified in Criteria.
	Actions []*AutomationRulesAction `min:"1" type:"list"`

	// A set of ASFF finding field attributes and corresponding expected values
	// that Security Hub uses to filter findings. If a rule is enabled and a finding
	// matches the conditions specified in this parameter, Security Hub applies
	// the rule action to the finding.
	Criteria *AutomationRulesFindingFilters `type:"structure"`

	// A description of the rule.
	Description *string `type:"string"`

	// Specifies whether a rule is the last to be applied with respect to a finding
	// that matches the rule criteria. This is useful when a finding matches the
	// criteria for multiple rules, and each rule has different actions. If a rule
	// is terminal, Security Hub applies the rule action to a finding that matches
	// the rule criteria and doesn't evaluate other rules for the finding. By default,
	// a rule isn't terminal.
	IsTerminal *bool `type:"boolean"`

	// The Amazon Resource Name (ARN) for the rule.
	//
	// RuleArn is a required field
	RuleArn *string `type:"string" required:"true"`

	// The name of the rule.
	RuleName *string `type:"string"`

	// An integer ranging from 1 to 1000 that represents the order in which the
	// rule action is applied to findings. Security Hub applies rules with lower
	// values for this parameter first.
	RuleOrder *int64 `min:"1" type:"integer"`

	// Whether the rule is active after it is created. If this parameter is equal
	// to ENABLED, Security Hub starts applying the rule to findings and finding
	// updates after the rule is created. To change the value of this parameter
	// after creating a rule, use BatchUpdateAutomationRules (https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_BatchUpdateAutomationRules.html).
	RuleStatus *string `type:"string" enum:"RuleStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAutomationRulesRequestItem) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAutomationRulesRequestItem) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateAutomationRulesRequestItem) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateAutomationRulesRequestItem"}
	if s.Actions != nil && len(s.Actions) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Actions", 1))
	}
	if s.RuleArn == nil {
		invalidParams.Add(request.NewErrParamRequired("RuleArn"))
	}
	if s.RuleOrder != nil && *s.RuleOrder < 1 {
		invalidParams.Add(request.NewErrParamMinValue("RuleOrder", 1))
	}
	if s.Actions != nil {
		for i, v := range s.Actions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *UpdateAutomationRulesRequestItem) SetActions(v []*AutomationRulesAction) *UpdateAutomationRulesRequestItem {
	s.Actions = v
	return s
}

// SetCriteria sets the Criteria field's value.
func (s *UpdateAutomationRulesRequestItem) SetCriteria(v *AutomationRulesFindingFilters) *UpdateAutomationRulesRequestItem {
	s.Criteria = v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateAutomationRulesRequestItem) SetDescription(v string) *UpdateAutomationRulesRequestItem {
	s.Description = &v
	return s
}

// SetIsTerminal sets the IsTerminal field's value.
func (s *UpdateAutomationRulesRequestItem) SetIsTerminal(v bool) *UpdateAutomationRulesRequestItem {
	s.IsTerminal = &v
	return s
}

// SetRuleArn sets the RuleArn field's value.
func (s *UpdateAutomationRulesRequestItem) SetRuleArn(v string) *UpdateAutomationRulesRequestItem {
	s.RuleArn = &v
	return s
}

// SetRuleName sets the RuleName field's value.
func (s *UpdateAutomationRulesRequestItem) SetRuleName(v string) *UpdateAutomationRulesRequestItem {
	s.RuleName = &v
	return s
}

// SetRuleOrder sets the RuleOrder field's value.
func (s *UpdateAutomationRulesRequestItem) SetRuleOrder(v int64) *UpdateAutomationRulesRequestItem {
	s.RuleOrder = &v
	return s
}

// SetRuleStatus sets the RuleStatus field's value.
func (s *UpdateAutomationRulesRequestItem) SetRuleStatus(v string) *UpdateAutomationRulesRequestItem {
	s.RuleStatus = &v
	return s
}

type UpdateConfigurationPolicyInput struct {
	_ struct{} `type:"structure"`

	// An object that defines how Security Hub is configured. It includes whether
	// Security Hub is enabled or disabled, a list of enabled security standards,
	// a list of enabled or disabled security controls, and a list of custom parameter
	// values for specified controls. If you provide a list of security controls
	// that are enabled in the configuration policy, Security Hub disables all other
	// controls (including newly released controls). If you provide a list of security
	// controls that are disabled in the configuration policy, Security Hub enables
	// all other controls (including newly released controls).
	//
	// When updating a configuration policy, provide a complete list of standards
	// that you want to enable and a complete list of controls that you want to
	// enable or disable. The updated configuration replaces the current configuration.
	ConfigurationPolicy *Policy `type:"structure"`

	// The description of the configuration policy.
	Description *string `type:"string"`

	// The Amazon Resource Name (ARN) or universally unique identifier (UUID) of
	// the configuration policy.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"Identifier" type:"string" required:"true"`

	// The name of the configuration policy. Alphanumeric characters and the following
	// ASCII characters are permitted: -, ., !, *, /.
	Name *string `type:"string"`

	// The reason for updating the configuration policy.
	UpdatedReason *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateConfigurationPolicyInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateConfigurationPolicyInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateConfigurationPolicyInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateConfigurationPolicyInput"}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}
	if s.ConfigurationPolicy != nil {
		if err := s.ConfigurationPolicy.Validate(); err != nil {
			invalidParams.AddNested("ConfigurationPolicy", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConfigurationPolicy sets the ConfigurationPolicy field's value.
func (s *UpdateConfigurationPolicyInput) SetConfigurationPolicy(v *Policy) *UpdateConfigurationPolicyInput {
	s.ConfigurationPolicy = v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateConfigurationPolicyInput) SetDescription(v string) *UpdateConfigurationPolicyInput {
	s.Description = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *UpdateConfigurationPolicyInput) SetIdentifier(v string) *UpdateConfigurationPolicyInput {
	s.Identifier = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateConfigurationPolicyInput) SetName(v string) *UpdateConfigurationPolicyInput {
	s.Name = &v
	return s
}

// SetUpdatedReason sets the UpdatedReason field's value.
func (s *UpdateConfigurationPolicyInput) SetUpdatedReason(v string) *UpdateConfigurationPolicyInput {
	s.UpdatedReason = &v
	return s
}

type UpdateConfigurationPolicyOutput struct {
	_ struct{} `type:"structure"`

	// The ARN of the configuration policy.
	Arn *string `type:"string"`

	// An object that defines how Security Hub is configured. It includes whether
	// Security Hub is enabled or disabled, a list of enabled security standards,
	// a list of enabled or disabled security controls, and a list of custom parameter
	// values for specified controls. If the request included a list of security
	// controls that are enabled in the configuration policy, Security Hub disables
	// all other controls (including newly released controls). If the request included
	// a list of security controls that are disabled in the configuration policy,
	// Security Hub enables all other controls (including newly released controls).
	ConfigurationPolicy *Policy `type:"structure"`

	// The date and time, in UTC and ISO 8601 format, that the configuration policy
	// was created.
	CreatedAt *time.Time `type:"timestamp" timestampFormat:"iso8601"`

	// The description of the configuration policy.
	Description *string `type:"string"`

	// The UUID of the configuration policy.
	Id *string `type:"string"`

	// The name of the configuration policy.
	Name *string `type:"string"`

	// The date and time, in UTC and ISO 8601 format, that the configuration policy
	// was last updated.
	UpdatedAt *time.Time `type:"timestamp" timestampFormat:"iso8601"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateConfigurationPolicyOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateConfigurationPolicyOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *UpdateConfigurationPolicyOutput) SetArn(v string) *UpdateConfigurationPolicyOutput {
	s.Arn = &v
	return s
}

// SetConfigurationPolicy sets the ConfigurationPolicy field's value.
func (s *UpdateConfigurationPolicyOutput) SetConfigurationPolicy(v *Policy) *UpdateConfigurationPolicyOutput {
	s.ConfigurationPolicy = v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *UpdateConfigurationPolicyOutput) SetCreatedAt(v time.Time) *UpdateConfigurationPolicyOutput {
	s.CreatedAt = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateConfigurationPolicyOutput) SetDescription(v string) *UpdateConfigurationPolicyOutput {
	s.Description = &v
	return s
}

// SetId sets the Id field's value.
func (s *UpdateConfigurationPolicyOutput) SetId(v string) *UpdateConfigurationPolicyOutput {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateConfigurationPolicyOutput) SetName(v string) *UpdateConfigurationPolicyOutput {
	s.Name = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *UpdateConfigurationPolicyOutput) SetUpdatedAt(v time.Time) *UpdateConfigurationPolicyOutput {
	s.UpdatedAt = &v
	return s
}

type UpdateFindingAggregatorInput struct {
	_ struct{} `type:"structure"`

	// The ARN of the finding aggregator. To obtain the ARN, use ListFindingAggregators.
	//
	// FindingAggregatorArn is a required field
	FindingAggregatorArn *string `type:"string" required:"true"`

	// Indicates whether to aggregate findings from all of the available Regions
	// in the current partition. Also determines whether to automatically aggregate
	// findings from new Regions as Security Hub supports them and you opt into
	// them.
	//
	// The selected option also determines how to use the Regions provided in the
	// Regions list.
	//
	// The options are as follows:
	//
	//    * ALL_REGIONS - Indicates to aggregate findings from all of the Regions
	//    where Security Hub is enabled. When you choose this option, Security Hub
	//    also automatically aggregates findings from new Regions as Security Hub
	//    supports them and you opt into them.
	//
	//    * ALL_REGIONS_EXCEPT_SPECIFIED - Indicates to aggregate findings from
	//    all of the Regions where Security Hub is enabled, except for the Regions
	//    listed in the Regions parameter. When you choose this option, Security
	//    Hub also automatically aggregates findings from new Regions as Security
	//    Hub supports them and you opt into them.
	//
	//    * SPECIFIED_REGIONS - Indicates to aggregate findings only from the Regions
	//    listed in the Regions parameter. Security Hub does not automatically aggregate
	//    findings from new Regions.
	//
	// RegionLinkingMode is a required field
	RegionLinkingMode *string `type:"string" required:"true"`

	// If RegionLinkingMode is ALL_REGIONS_EXCEPT_SPECIFIED, then this is a space-separated
	// list of Regions that do not aggregate findings to the aggregation Region.
	//
	// If RegionLinkingMode is SPECIFIED_REGIONS, then this is a space-separated
	// list of Regions that do aggregate findings to the aggregation Region.
	Regions []*string `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 UpdateFindingAggregatorInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateFindingAggregatorInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateFindingAggregatorInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateFindingAggregatorInput"}
	if s.FindingAggregatorArn == nil {
		invalidParams.Add(request.NewErrParamRequired("FindingAggregatorArn"))
	}
	if s.RegionLinkingMode == nil {
		invalidParams.Add(request.NewErrParamRequired("RegionLinkingMode"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFindingAggregatorArn sets the FindingAggregatorArn field's value.
func (s *UpdateFindingAggregatorInput) SetFindingAggregatorArn(v string) *UpdateFindingAggregatorInput {
	s.FindingAggregatorArn = &v
	return s
}

// SetRegionLinkingMode sets the RegionLinkingMode field's value.
func (s *UpdateFindingAggregatorInput) SetRegionLinkingMode(v string) *UpdateFindingAggregatorInput {
	s.RegionLinkingMode = &v
	return s
}

// SetRegions sets the Regions field's value.
func (s *UpdateFindingAggregatorInput) SetRegions(v []*string) *UpdateFindingAggregatorInput {
	s.Regions = v
	return s
}

type UpdateFindingAggregatorOutput struct {
	_ struct{} `type:"structure"`

	// The aggregation Region.
	FindingAggregationRegion *string `type:"string"`

	// The ARN of the finding aggregator.
	FindingAggregatorArn *string `type:"string"`

	// Indicates whether to link all Regions, all Regions except for a list of excluded
	// Regions, or a list of included Regions.
	RegionLinkingMode *string `type:"string"`

	// The list of excluded Regions or included Regions.
	Regions []*string `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 UpdateFindingAggregatorOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateFindingAggregatorOutput) GoString() string {
	return s.String()
}

// SetFindingAggregationRegion sets the FindingAggregationRegion field's value.
func (s *UpdateFindingAggregatorOutput) SetFindingAggregationRegion(v string) *UpdateFindingAggregatorOutput {
	s.FindingAggregationRegion = &v
	return s
}

// SetFindingAggregatorArn sets the FindingAggregatorArn field's value.
func (s *UpdateFindingAggregatorOutput) SetFindingAggregatorArn(v string) *UpdateFindingAggregatorOutput {
	s.FindingAggregatorArn = &v
	return s
}

// SetRegionLinkingMode sets the RegionLinkingMode field's value.
func (s *UpdateFindingAggregatorOutput) SetRegionLinkingMode(v string) *UpdateFindingAggregatorOutput {
	s.RegionLinkingMode = &v
	return s
}

// SetRegions sets the Regions field's value.
func (s *UpdateFindingAggregatorOutput) SetRegions(v []*string) *UpdateFindingAggregatorOutput {
	s.Regions = v
	return s
}

type UpdateFindingsInput struct {
	_ struct{} `type:"structure"`

	// A collection of attributes that specify which findings you want to update.
	//
	// Filters is a required field
	Filters *AwsSecurityFindingFilters `type:"structure" required:"true"`

	// The updated note for the finding.
	Note *NoteUpdate `type:"structure"`

	// The updated record state for the finding.
	RecordState *string `type:"string" enum:"RecordState"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateFindingsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateFindingsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateFindingsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateFindingsInput"}
	if s.Filters == nil {
		invalidParams.Add(request.NewErrParamRequired("Filters"))
	}
	if s.Note != nil {
		if err := s.Note.Validate(); err != nil {
			invalidParams.AddNested("Note", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *UpdateFindingsInput) SetFilters(v *AwsSecurityFindingFilters) *UpdateFindingsInput {
	s.Filters = v
	return s
}

// SetNote sets the Note field's value.
func (s *UpdateFindingsInput) SetNote(v *NoteUpdate) *UpdateFindingsInput {
	s.Note = v
	return s
}

// SetRecordState sets the RecordState field's value.
func (s *UpdateFindingsInput) SetRecordState(v string) *UpdateFindingsInput {
	s.RecordState = &v
	return s
}

type UpdateFindingsOutput 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 UpdateFindingsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateFindingsOutput) GoString() string {
	return s.String()
}

type UpdateInsightInput struct {
	_ struct{} `type:"structure"`

	// The updated filters that define this insight.
	Filters *AwsSecurityFindingFilters `type:"structure"`

	// The updated GroupBy attribute that defines this insight.
	GroupByAttribute *string `type:"string"`

	// The ARN of the insight that you want to update.
	//
	// InsightArn is a required field
	InsightArn *string `location:"uri" locationName:"InsightArn" type:"string" required:"true"`

	// The updated name for the insight.
	Name *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateInsightInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateInsightInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateInsightInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateInsightInput"}
	if s.InsightArn == nil {
		invalidParams.Add(request.NewErrParamRequired("InsightArn"))
	}
	if s.InsightArn != nil && len(*s.InsightArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InsightArn", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *UpdateInsightInput) SetFilters(v *AwsSecurityFindingFilters) *UpdateInsightInput {
	s.Filters = v
	return s
}

// SetGroupByAttribute sets the GroupByAttribute field's value.
func (s *UpdateInsightInput) SetGroupByAttribute(v string) *UpdateInsightInput {
	s.GroupByAttribute = &v
	return s
}

// SetInsightArn sets the InsightArn field's value.
func (s *UpdateInsightInput) SetInsightArn(v string) *UpdateInsightInput {
	s.InsightArn = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateInsightInput) SetName(v string) *UpdateInsightInput {
	s.Name = &v
	return s
}

type UpdateInsightOutput 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 UpdateInsightOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateInsightOutput) GoString() string {
	return s.String()
}

type UpdateOrganizationConfigurationInput struct {
	_ struct{} `type:"structure"`

	// Whether to automatically enable Security Hub in new member accounts when
	// they join the organization.
	//
	// If set to true, then Security Hub is automatically enabled in new accounts.
	// If set to false, then Security Hub isn't enabled in new accounts automatically.
	// The default value is false.
	//
	// If the ConfigurationType of your organization is set to CENTRAL, then this
	// field is set to false and can't be changed in the home Region and linked
	// Regions. However, in that case, the delegated administrator can create a
	// configuration policy in which Security Hub is enabled and associate the policy
	// with new organization accounts.
	//
	// AutoEnable is a required field
	AutoEnable *bool `type:"boolean" required:"true"`

	// Whether to automatically enable Security Hub default standards (https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-standards-enable-disable.html)
	// in new member accounts when they join the organization.
	//
	// The default value of this parameter is equal to DEFAULT.
	//
	// If equal to DEFAULT, then Security Hub default standards are automatically
	// enabled for new member accounts. If equal to NONE, then default standards
	// are not automatically enabled for new member accounts.
	//
	// If the ConfigurationType of your organization is set to CENTRAL, then this
	// field is set to NONE and can't be changed in the home Region and linked Regions.
	// However, in that case, the delegated administrator can create a configuration
	// policy in which specific security standards are enabled and associate the
	// policy with new organization accounts.
	AutoEnableStandards *string `type:"string" enum:"AutoEnableStandards"`

	// Provides information about the way an organization is configured in Security
	// Hub.
	OrganizationConfiguration *OrganizationConfiguration `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 UpdateOrganizationConfigurationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateOrganizationConfigurationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateOrganizationConfigurationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateOrganizationConfigurationInput"}
	if s.AutoEnable == nil {
		invalidParams.Add(request.NewErrParamRequired("AutoEnable"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAutoEnable sets the AutoEnable field's value.
func (s *UpdateOrganizationConfigurationInput) SetAutoEnable(v bool) *UpdateOrganizationConfigurationInput {
	s.AutoEnable = &v
	return s
}

// SetAutoEnableStandards sets the AutoEnableStandards field's value.
func (s *UpdateOrganizationConfigurationInput) SetAutoEnableStandards(v string) *UpdateOrganizationConfigurationInput {
	s.AutoEnableStandards = &v
	return s
}

// SetOrganizationConfiguration sets the OrganizationConfiguration field's value.
func (s *UpdateOrganizationConfigurationInput) SetOrganizationConfiguration(v *OrganizationConfiguration) *UpdateOrganizationConfigurationInput {
	s.OrganizationConfiguration = v
	return s
}

type UpdateOrganizationConfigurationOutput 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 UpdateOrganizationConfigurationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateOrganizationConfigurationOutput) GoString() string {
	return s.String()
}

type UpdateSecurityControlInput struct {
	_ struct{} `type:"structure"`

	// The most recent reason for updating the properties of the security control.
	// This field accepts alphanumeric characters in addition to white spaces, dashes,
	// and underscores.
	LastUpdateReason *string `type:"string"`

	// An object that specifies which security control parameters to update.
	//
	// Parameters is a required field
	Parameters map[string]*ParameterConfiguration `type:"map" required:"true"`

	// The Amazon Resource Name (ARN) or ID of the control to update.
	//
	// SecurityControlId is a required field
	SecurityControlId *string `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 UpdateSecurityControlInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSecurityControlInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateSecurityControlInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateSecurityControlInput"}
	if s.Parameters == nil {
		invalidParams.Add(request.NewErrParamRequired("Parameters"))
	}
	if s.SecurityControlId == nil {
		invalidParams.Add(request.NewErrParamRequired("SecurityControlId"))
	}
	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
}

// SetLastUpdateReason sets the LastUpdateReason field's value.
func (s *UpdateSecurityControlInput) SetLastUpdateReason(v string) *UpdateSecurityControlInput {
	s.LastUpdateReason = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *UpdateSecurityControlInput) SetParameters(v map[string]*ParameterConfiguration) *UpdateSecurityControlInput {
	s.Parameters = v
	return s
}

// SetSecurityControlId sets the SecurityControlId field's value.
func (s *UpdateSecurityControlInput) SetSecurityControlId(v string) *UpdateSecurityControlInput {
	s.SecurityControlId = &v
	return s
}

type UpdateSecurityControlOutput 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 UpdateSecurityControlOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSecurityControlOutput) GoString() string {
	return s.String()
}

type UpdateSecurityHubConfigurationInput struct {
	_ struct{} `type:"structure"`

	// Whether to automatically enable new controls when they are added to standards
	// that are enabled.
	//
	// By default, this is set to true, and new controls are enabled automatically.
	// To not automatically enable new controls, set this to false.
	AutoEnableControls *bool `type:"boolean"`

	// Updates whether the calling account has consolidated control findings turned
	// on. If the value for this field is set to SECURITY_CONTROL, Security Hub
	// generates a single finding for a control check even when the check applies
	// to multiple enabled standards.
	//
	// If the value for this field is set to STANDARD_CONTROL, Security Hub generates
	// separate findings for a control check when the check applies to multiple
	// enabled standards.
	//
	// For accounts that are part of an organization, this value can only be updated
	// in the administrator account.
	ControlFindingGenerator *string `type:"string" enum:"ControlFindingGenerator"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSecurityHubConfigurationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSecurityHubConfigurationInput) GoString() string {
	return s.String()
}

// SetAutoEnableControls sets the AutoEnableControls field's value.
func (s *UpdateSecurityHubConfigurationInput) SetAutoEnableControls(v bool) *UpdateSecurityHubConfigurationInput {
	s.AutoEnableControls = &v
	return s
}

// SetControlFindingGenerator sets the ControlFindingGenerator field's value.
func (s *UpdateSecurityHubConfigurationInput) SetControlFindingGenerator(v string) *UpdateSecurityHubConfigurationInput {
	s.ControlFindingGenerator = &v
	return s
}

type UpdateSecurityHubConfigurationOutput 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 UpdateSecurityHubConfigurationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSecurityHubConfigurationOutput) GoString() string {
	return s.String()
}

type UpdateStandardsControlInput struct {
	_ struct{} `type:"structure"`

	// The updated status of the security standard control.
	ControlStatus *string `type:"string" enum:"ControlStatus"`

	// A description of the reason why you are disabling a security standard control.
	// If you are disabling a control, then this is required.
	DisabledReason *string `type:"string"`

	// The ARN of the security standard control to enable or disable.
	//
	// StandardsControlArn is a required field
	StandardsControlArn *string `location:"uri" locationName:"StandardsControlArn" 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 UpdateStandardsControlInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateStandardsControlInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateStandardsControlInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateStandardsControlInput"}
	if s.StandardsControlArn == nil {
		invalidParams.Add(request.NewErrParamRequired("StandardsControlArn"))
	}
	if s.StandardsControlArn != nil && len(*s.StandardsControlArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("StandardsControlArn", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetControlStatus sets the ControlStatus field's value.
func (s *UpdateStandardsControlInput) SetControlStatus(v string) *UpdateStandardsControlInput {
	s.ControlStatus = &v
	return s
}

// SetDisabledReason sets the DisabledReason field's value.
func (s *UpdateStandardsControlInput) SetDisabledReason(v string) *UpdateStandardsControlInput {
	s.DisabledReason = &v
	return s
}

// SetStandardsControlArn sets the StandardsControlArn field's value.
func (s *UpdateStandardsControlInput) SetStandardsControlArn(v string) *UpdateStandardsControlInput {
	s.StandardsControlArn = &v
	return s
}

type UpdateStandardsControlOutput 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 UpdateStandardsControlOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateStandardsControlOutput) GoString() string {
	return s.String()
}

// Describes the mounting of a volume in a container.
type VolumeMount struct {
	_ struct{} `type:"structure"`

	// The path in the container at which the volume should be mounted.
	MountPath *string `type:"string"`

	// The name of the volume.
	Name *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VolumeMount) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VolumeMount) GoString() string {
	return s.String()
}

// SetMountPath sets the MountPath field's value.
func (s *VolumeMount) SetMountPath(v string) *VolumeMount {
	s.MountPath = &v
	return s
}

// SetName sets the Name field's value.
func (s *VolumeMount) SetName(v string) *VolumeMount {
	s.Name = &v
	return s
}

// Provides details about the IPv4 CIDR blocks for the VPC.
type VpcInfoCidrBlockSetDetails struct {
	_ struct{} `type:"structure"`

	// The IPv4 CIDR block for the VPC.
	CidrBlock *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VpcInfoCidrBlockSetDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VpcInfoCidrBlockSetDetails) GoString() string {
	return s.String()
}

// SetCidrBlock sets the CidrBlock field's value.
func (s *VpcInfoCidrBlockSetDetails) SetCidrBlock(v string) *VpcInfoCidrBlockSetDetails {
	s.CidrBlock = &v
	return s
}

// Provides details about the IPv6 CIDR blocks for the VPC.
type VpcInfoIpv6CidrBlockSetDetails struct {
	_ struct{} `type:"structure"`

	// The IPv6 CIDR block for the VPC.
	Ipv6CidrBlock *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VpcInfoIpv6CidrBlockSetDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VpcInfoIpv6CidrBlockSetDetails) GoString() string {
	return s.String()
}

// SetIpv6CidrBlock sets the Ipv6CidrBlock field's value.
func (s *VpcInfoIpv6CidrBlockSetDetails) SetIpv6CidrBlock(v string) *VpcInfoIpv6CidrBlockSetDetails {
	s.Ipv6CidrBlock = &v
	return s
}

// Provides information about the VPC peering connection options for the accepter
// or requester VPC.
type VpcInfoPeeringOptionsDetails struct {
	_ struct{} `type:"structure"`

	// Indicates whether a local VPC can resolve public DNS hostnames to private
	// IP addresses when queried from instances in a peer VPC.
	AllowDnsResolutionFromRemoteVpc *bool `type:"boolean"`

	// Indicates whether a local ClassicLink connection can communicate with the
	// peer VPC over the VPC peering connection.
	AllowEgressFromLocalClassicLinkToRemoteVpc *bool `type:"boolean"`

	// Indicates whether a local VPC can communicate with a ClassicLink connection
	// in the peer VPC over the VPC peering connection.
	AllowEgressFromLocalVpcToRemoteClassicLink *bool `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 VpcInfoPeeringOptionsDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VpcInfoPeeringOptionsDetails) GoString() string {
	return s.String()
}

// SetAllowDnsResolutionFromRemoteVpc sets the AllowDnsResolutionFromRemoteVpc field's value.
func (s *VpcInfoPeeringOptionsDetails) SetAllowDnsResolutionFromRemoteVpc(v bool) *VpcInfoPeeringOptionsDetails {
	s.AllowDnsResolutionFromRemoteVpc = &v
	return s
}

// SetAllowEgressFromLocalClassicLinkToRemoteVpc sets the AllowEgressFromLocalClassicLinkToRemoteVpc field's value.
func (s *VpcInfoPeeringOptionsDetails) SetAllowEgressFromLocalClassicLinkToRemoteVpc(v bool) *VpcInfoPeeringOptionsDetails {
	s.AllowEgressFromLocalClassicLinkToRemoteVpc = &v
	return s
}

// SetAllowEgressFromLocalVpcToRemoteClassicLink sets the AllowEgressFromLocalVpcToRemoteClassicLink field's value.
func (s *VpcInfoPeeringOptionsDetails) SetAllowEgressFromLocalVpcToRemoteClassicLink(v bool) *VpcInfoPeeringOptionsDetails {
	s.AllowEgressFromLocalVpcToRemoteClassicLink = &v
	return s
}

// A vulnerability associated with a finding.
type Vulnerability struct {
	_ struct{} `type:"structure"`

	// The vulnerabilities found in your Lambda function code. This field pertains
	// to findings that Security Hub receives from Amazon Inspector.
	CodeVulnerabilities []*VulnerabilityCodeVulnerabilities `type:"list"`

	// CVSS scores from the advisory related to the vulnerability.
	Cvss []*Cvss `type:"list"`

	// The Exploit Prediction Scoring System (EPSS) score for a finding.
	EpssScore *float64 `type:"double"`

	// Whether an exploit is available for a finding.
	ExploitAvailable *string `type:"string" enum:"VulnerabilityExploitAvailable"`

	// Specifies if all vulnerable packages in a finding have a value for FixedInVersion
	// and Remediation. This field is evaluated for each vulnerability Id based
	// on the number of vulnerable packages that have a value for both FixedInVersion
	// and Remediation. Valid values are as follows:
	//
	//    * YES if all vulnerable packages have a value for both FixedInVersion
	//    and Remediation
	//
	//    * NO if no vulnerable packages have a value for FixedInVersion and Remediation
	//
	//    * PARTIAL otherwise
	FixAvailable *string `type:"string" enum:"VulnerabilityFixAvailable"`

	// The identifier of the vulnerability.
	//
	// Id is a required field
	Id *string `type:"string" required:"true"`

	// The date and time of the last exploit associated with a finding discovered
	// in your environment.
	LastKnownExploitAt *string `type:"string"`

	// A list of URLs that provide additional information about the vulnerability.
	ReferenceUrls []*string `type:"list"`

	// List of vulnerabilities that are related to this vulnerability.
	RelatedVulnerabilities []*string `type:"list"`

	// Information about the vendor that generates the vulnerability report.
	Vendor *VulnerabilityVendor `type:"structure"`

	// List of software packages that have the vulnerability.
	VulnerablePackages []*SoftwarePackage `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 Vulnerability) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Vulnerability) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Vulnerability) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Vulnerability"}
	if s.Id == nil {
		invalidParams.Add(request.NewErrParamRequired("Id"))
	}
	if s.Vendor != nil {
		if err := s.Vendor.Validate(); err != nil {
			invalidParams.AddNested("Vendor", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCodeVulnerabilities sets the CodeVulnerabilities field's value.
func (s *Vulnerability) SetCodeVulnerabilities(v []*VulnerabilityCodeVulnerabilities) *Vulnerability {
	s.CodeVulnerabilities = v
	return s
}

// SetCvss sets the Cvss field's value.
func (s *Vulnerability) SetCvss(v []*Cvss) *Vulnerability {
	s.Cvss = v
	return s
}

// SetEpssScore sets the EpssScore field's value.
func (s *Vulnerability) SetEpssScore(v float64) *Vulnerability {
	s.EpssScore = &v
	return s
}

// SetExploitAvailable sets the ExploitAvailable field's value.
func (s *Vulnerability) SetExploitAvailable(v string) *Vulnerability {
	s.ExploitAvailable = &v
	return s
}

// SetFixAvailable sets the FixAvailable field's value.
func (s *Vulnerability) SetFixAvailable(v string) *Vulnerability {
	s.FixAvailable = &v
	return s
}

// SetId sets the Id field's value.
func (s *Vulnerability) SetId(v string) *Vulnerability {
	s.Id = &v
	return s
}

// SetLastKnownExploitAt sets the LastKnownExploitAt field's value.
func (s *Vulnerability) SetLastKnownExploitAt(v string) *Vulnerability {
	s.LastKnownExploitAt = &v
	return s
}

// SetReferenceUrls sets the ReferenceUrls field's value.
func (s *Vulnerability) SetReferenceUrls(v []*string) *Vulnerability {
	s.ReferenceUrls = v
	return s
}

// SetRelatedVulnerabilities sets the RelatedVulnerabilities field's value.
func (s *Vulnerability) SetRelatedVulnerabilities(v []*string) *Vulnerability {
	s.RelatedVulnerabilities = v
	return s
}

// SetVendor sets the Vendor field's value.
func (s *Vulnerability) SetVendor(v *VulnerabilityVendor) *Vulnerability {
	s.Vendor = v
	return s
}

// SetVulnerablePackages sets the VulnerablePackages field's value.
func (s *Vulnerability) SetVulnerablePackages(v []*SoftwarePackage) *Vulnerability {
	s.VulnerablePackages = v
	return s
}

// Provides details about the vulnerabilities found in your Lambda function
// code. This field pertains to findings that Security Hub receives from Amazon
// Inspector.
type VulnerabilityCodeVulnerabilities struct {
	_ struct{} `type:"structure"`

	// The Common Weakness Enumeration (CWE) item associated with the detected code
	// vulnerability.
	Cwes []*string `type:"list"`

	// Provides details about where a code vulnerability is located in your Lambda
	// function.
	FilePath *CodeVulnerabilitiesFilePath `type:"structure"`

	// The Amazon Resource Name (ARN) of the Lambda layer in which the code vulnerability
	// is located.
	SourceArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VulnerabilityCodeVulnerabilities) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VulnerabilityCodeVulnerabilities) GoString() string {
	return s.String()
}

// SetCwes sets the Cwes field's value.
func (s *VulnerabilityCodeVulnerabilities) SetCwes(v []*string) *VulnerabilityCodeVulnerabilities {
	s.Cwes = v
	return s
}

// SetFilePath sets the FilePath field's value.
func (s *VulnerabilityCodeVulnerabilities) SetFilePath(v *CodeVulnerabilitiesFilePath) *VulnerabilityCodeVulnerabilities {
	s.FilePath = v
	return s
}

// SetSourceArn sets the SourceArn field's value.
func (s *VulnerabilityCodeVulnerabilities) SetSourceArn(v string) *VulnerabilityCodeVulnerabilities {
	s.SourceArn = &v
	return s
}

// A vendor that generates a vulnerability report.
type VulnerabilityVendor struct {
	_ struct{} `type:"structure"`

	// The name of the vendor.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The URL of the vulnerability advisory.
	Url *string `type:"string"`

	// Indicates when the vulnerability advisory was created.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	VendorCreatedAt *string `type:"string"`

	// The severity that the vendor assigned to the vulnerability.
	VendorSeverity *string `type:"string"`

	// Indicates when the vulnerability advisory was last updated.
	//
	// This field accepts only the specified formats. Timestamps can end with Z
	// or ("+" / "-") time-hour [":" time-minute]. The time-secfrac after seconds
	// is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here
	// are valid timestamp formats with examples:
	//
	//    * YYYY-MM-DDTHH:MM:SSZ (for example, 2019-01-31T23:00:00Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ (for example, 2019-01-31T23:00:00.123456789Z)
	//
	//    * YYYY-MM-DDTHH:MM:SS+HH:MM (for example, 2024-01-04T15:25:10+17:59)
	//
	//    * YYYY-MM-DDTHH:MM:SS-HHMM (for example, 2024-01-04T15:25:10-1759)
	//
	//    * YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM (for example, 2024-01-04T15:25:10.123456789+17:59)
	VendorUpdatedAt *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VulnerabilityVendor) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VulnerabilityVendor) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *VulnerabilityVendor) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "VulnerabilityVendor"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *VulnerabilityVendor) SetName(v string) *VulnerabilityVendor {
	s.Name = &v
	return s
}

// SetUrl sets the Url field's value.
func (s *VulnerabilityVendor) SetUrl(v string) *VulnerabilityVendor {
	s.Url = &v
	return s
}

// SetVendorCreatedAt sets the VendorCreatedAt field's value.
func (s *VulnerabilityVendor) SetVendorCreatedAt(v string) *VulnerabilityVendor {
	s.VendorCreatedAt = &v
	return s
}

// SetVendorSeverity sets the VendorSeverity field's value.
func (s *VulnerabilityVendor) SetVendorSeverity(v string) *VulnerabilityVendor {
	s.VendorSeverity = &v
	return s
}

// SetVendorUpdatedAt sets the VendorUpdatedAt field's value.
func (s *VulnerabilityVendor) SetVendorUpdatedAt(v string) *VulnerabilityVendor {
	s.VendorUpdatedAt = &v
	return s
}

// Details about the action that CloudFront or WAF takes when a web request
// matches the conditions in the rule.
type WafAction struct {
	_ struct{} `type:"structure"`

	// Specifies how you want WAF to respond to requests that match the settings
	// in a rule.
	//
	// Valid settings include the following:
	//
	//    * ALLOW - WAF allows requests
	//
	//    * BLOCK - WAF blocks requests
	//
	//    * COUNT - WAF increments a counter of the requests that match all of the
	//    conditions in the rule. WAF then continues to inspect the web request
	//    based on the remaining rules in the web ACL. You can't specify COUNT for
	//    the default action for a web ACL.
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s WafAction) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s WafAction) GoString() string {
	return s.String()
}

// SetType sets the Type field's value.
func (s *WafAction) SetType(v string) *WafAction {
	s.Type = &v
	return s
}

// Details about a rule to exclude from a rule group.
type WafExcludedRule struct {
	_ struct{} `type:"structure"`

	// The unique identifier for the rule to exclude from the rule group.
	RuleId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s WafExcludedRule) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s WafExcludedRule) GoString() string {
	return s.String()
}

// SetRuleId sets the RuleId field's value.
func (s *WafExcludedRule) SetRuleId(v string) *WafExcludedRule {
	s.RuleId = &v
	return s
}

// Details about an override action for a rule.
type WafOverrideAction struct {
	_ struct{} `type:"structure"`

	// COUNT overrides the action specified by the individual rule within a RuleGroup .
	//
	// If set to NONE, the rule's action takes place.
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s WafOverrideAction) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s WafOverrideAction) GoString() string {
	return s.String()
}

// SetType sets the Type field's value.
func (s *WafOverrideAction) SetType(v string) *WafOverrideAction {
	s.Type = &v
	return s
}

// Provides details about the status of the investigation into a finding.
type Workflow struct {
	_ struct{} `type:"structure"`

	// The status of the investigation into the finding. The workflow status is
	// specific to an individual finding. It does not affect the generation of new
	// findings. For example, setting the workflow status to SUPPRESSED or RESOLVED
	// does not prevent a new finding for the same issue.
	//
	// The allowed values are the following.
	//
	//    * NEW - The initial state of a finding, before it is reviewed. Security
	//    Hub also resets the workflow status from NOTIFIED or RESOLVED to NEW in
	//    the following cases: RecordState changes from ARCHIVED to ACTIVE. ComplianceStatus
	//    changes from PASSED to either WARNING, FAILED, or NOT_AVAILABLE.
	//
	//    * NOTIFIED - Indicates that you notified the resource owner about the
	//    security issue. Used when the initial reviewer is not the resource owner,
	//    and needs intervention from the resource owner.
	//
	//    * SUPPRESSED - Indicates that you reviewed the finding and do not believe
	//    that any action is needed. The finding is no longer updated.
	//
	//    * RESOLVED - The finding was reviewed and remediated and is now considered
	//    resolved.
	Status *string `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 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()
}

// SetStatus sets the Status field's value.
func (s *Workflow) SetStatus(v string) *Workflow {
	s.Status = &v
	return s
}

// Used to update information about the investigation into the finding.
type WorkflowUpdate struct {
	_ struct{} `type:"structure"`

	// The status of the investigation into the finding. The workflow status is
	// specific to an individual finding. It does not affect the generation of new
	// findings. For example, setting the workflow status to SUPPRESSED or RESOLVED
	// does not prevent a new finding for the same issue.
	//
	// The allowed values are the following.
	//
	//    * NEW - The initial state of a finding, before it is reviewed. Security
	//    Hub also resets WorkFlowStatus from NOTIFIED or RESOLVED to NEW in the
	//    following cases: The record state changes from ARCHIVED to ACTIVE. The
	//    compliance status changes from PASSED to either WARNING, FAILED, or NOT_AVAILABLE.
	//
	//    * NOTIFIED - Indicates that you notified the resource owner about the
	//    security issue. Used when the initial reviewer is not the resource owner,
	//    and needs intervention from the resource owner.
	//
	//    * RESOLVED - The finding was reviewed and remediated and is now considered
	//    resolved.
	//
	//    * SUPPRESSED - Indicates that you reviewed the finding and do not believe
	//    that any action is needed. The finding is no longer updated.
	Status *string `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 WorkflowUpdate) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s WorkflowUpdate) GoString() string {
	return s.String()
}

// SetStatus sets the Status field's value.
func (s *WorkflowUpdate) SetStatus(v string) *WorkflowUpdate {
	s.Status = &v
	return s
}

const (
	// AdminStatusEnabled is a AdminStatus enum value
	AdminStatusEnabled = "ENABLED"

	// AdminStatusDisableInProgress is a AdminStatus enum value
	AdminStatusDisableInProgress = "DISABLE_IN_PROGRESS"
)

// AdminStatus_Values returns all elements of the AdminStatus enum
func AdminStatus_Values() []string {
	return []string{
		AdminStatusEnabled,
		AdminStatusDisableInProgress,
	}
}

const (
	// AssociationStatusEnabled is a AssociationStatus enum value
	AssociationStatusEnabled = "ENABLED"

	// AssociationStatusDisabled is a AssociationStatus enum value
	AssociationStatusDisabled = "DISABLED"
)

// AssociationStatus_Values returns all elements of the AssociationStatus enum
func AssociationStatus_Values() []string {
	return []string{
		AssociationStatusEnabled,
		AssociationStatusDisabled,
	}
}

const (
	// AssociationTypeInherited is a AssociationType enum value
	AssociationTypeInherited = "INHERITED"

	// AssociationTypeApplied is a AssociationType enum value
	AssociationTypeApplied = "APPLIED"
)

// AssociationType_Values returns all elements of the AssociationType enum
func AssociationType_Values() []string {
	return []string{
		AssociationTypeInherited,
		AssociationTypeApplied,
	}
}

const (
	// AutoEnableStandardsNone is a AutoEnableStandards enum value
	AutoEnableStandardsNone = "NONE"

	// AutoEnableStandardsDefault is a AutoEnableStandards enum value
	AutoEnableStandardsDefault = "DEFAULT"
)

// AutoEnableStandards_Values returns all elements of the AutoEnableStandards enum
func AutoEnableStandards_Values() []string {
	return []string{
		AutoEnableStandardsNone,
		AutoEnableStandardsDefault,
	}
}

const (
	// AutomationRulesActionTypeFindingFieldsUpdate is a AutomationRulesActionType enum value
	AutomationRulesActionTypeFindingFieldsUpdate = "FINDING_FIELDS_UPDATE"
)

// AutomationRulesActionType_Values returns all elements of the AutomationRulesActionType enum
func AutomationRulesActionType_Values() []string {
	return []string{
		AutomationRulesActionTypeFindingFieldsUpdate,
	}
}

const (
	// AwsIamAccessKeyStatusActive is a AwsIamAccessKeyStatus enum value
	AwsIamAccessKeyStatusActive = "Active"

	// AwsIamAccessKeyStatusInactive is a AwsIamAccessKeyStatus enum value
	AwsIamAccessKeyStatusInactive = "Inactive"
)

// AwsIamAccessKeyStatus_Values returns all elements of the AwsIamAccessKeyStatus enum
func AwsIamAccessKeyStatus_Values() []string {
	return []string{
		AwsIamAccessKeyStatusActive,
		AwsIamAccessKeyStatusInactive,
	}
}

const (
	// AwsS3BucketNotificationConfigurationS3KeyFilterRuleNamePrefix is a AwsS3BucketNotificationConfigurationS3KeyFilterRuleName enum value
	AwsS3BucketNotificationConfigurationS3KeyFilterRuleNamePrefix = "Prefix"

	// AwsS3BucketNotificationConfigurationS3KeyFilterRuleNameSuffix is a AwsS3BucketNotificationConfigurationS3KeyFilterRuleName enum value
	AwsS3BucketNotificationConfigurationS3KeyFilterRuleNameSuffix = "Suffix"
)

// AwsS3BucketNotificationConfigurationS3KeyFilterRuleName_Values returns all elements of the AwsS3BucketNotificationConfigurationS3KeyFilterRuleName enum
func AwsS3BucketNotificationConfigurationS3KeyFilterRuleName_Values() []string {
	return []string{
		AwsS3BucketNotificationConfigurationS3KeyFilterRuleNamePrefix,
		AwsS3BucketNotificationConfigurationS3KeyFilterRuleNameSuffix,
	}
}

const (
	// ComplianceStatusPassed is a ComplianceStatus enum value
	ComplianceStatusPassed = "PASSED"

	// ComplianceStatusWarning is a ComplianceStatus enum value
	ComplianceStatusWarning = "WARNING"

	// ComplianceStatusFailed is a ComplianceStatus enum value
	ComplianceStatusFailed = "FAILED"

	// ComplianceStatusNotAvailable is a ComplianceStatus enum value
	ComplianceStatusNotAvailable = "NOT_AVAILABLE"
)

// ComplianceStatus_Values returns all elements of the ComplianceStatus enum
func ComplianceStatus_Values() []string {
	return []string{
		ComplianceStatusPassed,
		ComplianceStatusWarning,
		ComplianceStatusFailed,
		ComplianceStatusNotAvailable,
	}
}

const (
	// ConfigurationPolicyAssociationStatusPending is a ConfigurationPolicyAssociationStatus enum value
	ConfigurationPolicyAssociationStatusPending = "PENDING"

	// ConfigurationPolicyAssociationStatusSuccess is a ConfigurationPolicyAssociationStatus enum value
	ConfigurationPolicyAssociationStatusSuccess = "SUCCESS"

	// ConfigurationPolicyAssociationStatusFailed is a ConfigurationPolicyAssociationStatus enum value
	ConfigurationPolicyAssociationStatusFailed = "FAILED"
)

// ConfigurationPolicyAssociationStatus_Values returns all elements of the ConfigurationPolicyAssociationStatus enum
func ConfigurationPolicyAssociationStatus_Values() []string {
	return []string{
		ConfigurationPolicyAssociationStatusPending,
		ConfigurationPolicyAssociationStatusSuccess,
		ConfigurationPolicyAssociationStatusFailed,
	}
}

const (
	// ControlFindingGeneratorStandardControl is a ControlFindingGenerator enum value
	ControlFindingGeneratorStandardControl = "STANDARD_CONTROL"

	// ControlFindingGeneratorSecurityControl is a ControlFindingGenerator enum value
	ControlFindingGeneratorSecurityControl = "SECURITY_CONTROL"
)

// ControlFindingGenerator_Values returns all elements of the ControlFindingGenerator enum
func ControlFindingGenerator_Values() []string {
	return []string{
		ControlFindingGeneratorStandardControl,
		ControlFindingGeneratorSecurityControl,
	}
}

const (
	// ControlStatusEnabled is a ControlStatus enum value
	ControlStatusEnabled = "ENABLED"

	// ControlStatusDisabled is a ControlStatus enum value
	ControlStatusDisabled = "DISABLED"
)

// ControlStatus_Values returns all elements of the ControlStatus enum
func ControlStatus_Values() []string {
	return []string{
		ControlStatusEnabled,
		ControlStatusDisabled,
	}
}

const (
	// DateRangeUnitDays is a DateRangeUnit enum value
	DateRangeUnitDays = "DAYS"
)

// DateRangeUnit_Values returns all elements of the DateRangeUnit enum
func DateRangeUnit_Values() []string {
	return []string{
		DateRangeUnitDays,
	}
}

const (
	// FindingHistoryUpdateSourceTypeBatchUpdateFindings is a FindingHistoryUpdateSourceType enum value
	FindingHistoryUpdateSourceTypeBatchUpdateFindings = "BATCH_UPDATE_FINDINGS"

	// FindingHistoryUpdateSourceTypeBatchImportFindings is a FindingHistoryUpdateSourceType enum value
	FindingHistoryUpdateSourceTypeBatchImportFindings = "BATCH_IMPORT_FINDINGS"
)

// FindingHistoryUpdateSourceType_Values returns all elements of the FindingHistoryUpdateSourceType enum
func FindingHistoryUpdateSourceType_Values() []string {
	return []string{
		FindingHistoryUpdateSourceTypeBatchUpdateFindings,
		FindingHistoryUpdateSourceTypeBatchImportFindings,
	}
}

const (
	// IntegrationTypeSendFindingsToSecurityHub is a IntegrationType enum value
	IntegrationTypeSendFindingsToSecurityHub = "SEND_FINDINGS_TO_SECURITY_HUB"

	// IntegrationTypeReceiveFindingsFromSecurityHub is a IntegrationType enum value
	IntegrationTypeReceiveFindingsFromSecurityHub = "RECEIVE_FINDINGS_FROM_SECURITY_HUB"

	// IntegrationTypeUpdateFindingsInSecurityHub is a IntegrationType enum value
	IntegrationTypeUpdateFindingsInSecurityHub = "UPDATE_FINDINGS_IN_SECURITY_HUB"
)

// IntegrationType_Values returns all elements of the IntegrationType enum
func IntegrationType_Values() []string {
	return []string{
		IntegrationTypeSendFindingsToSecurityHub,
		IntegrationTypeReceiveFindingsFromSecurityHub,
		IntegrationTypeUpdateFindingsInSecurityHub,
	}
}

const (
	// MalwareStateObserved is a MalwareState enum value
	MalwareStateObserved = "OBSERVED"

	// MalwareStateRemovalFailed is a MalwareState enum value
	MalwareStateRemovalFailed = "REMOVAL_FAILED"

	// MalwareStateRemoved is a MalwareState enum value
	MalwareStateRemoved = "REMOVED"
)

// MalwareState_Values returns all elements of the MalwareState enum
func MalwareState_Values() []string {
	return []string{
		MalwareStateObserved,
		MalwareStateRemovalFailed,
		MalwareStateRemoved,
	}
}

const (
	// MalwareTypeAdware is a MalwareType enum value
	MalwareTypeAdware = "ADWARE"

	// MalwareTypeBlendedThreat is a MalwareType enum value
	MalwareTypeBlendedThreat = "BLENDED_THREAT"

	// MalwareTypeBotnetAgent is a MalwareType enum value
	MalwareTypeBotnetAgent = "BOTNET_AGENT"

	// MalwareTypeCoinMiner is a MalwareType enum value
	MalwareTypeCoinMiner = "COIN_MINER"

	// MalwareTypeExploitKit is a MalwareType enum value
	MalwareTypeExploitKit = "EXPLOIT_KIT"

	// MalwareTypeKeylogger is a MalwareType enum value
	MalwareTypeKeylogger = "KEYLOGGER"

	// MalwareTypeMacro is a MalwareType enum value
	MalwareTypeMacro = "MACRO"

	// MalwareTypePotentiallyUnwanted is a MalwareType enum value
	MalwareTypePotentiallyUnwanted = "POTENTIALLY_UNWANTED"

	// MalwareTypeSpyware is a MalwareType enum value
	MalwareTypeSpyware = "SPYWARE"

	// MalwareTypeRansomware is a MalwareType enum value
	MalwareTypeRansomware = "RANSOMWARE"

	// MalwareTypeRemoteAccess is a MalwareType enum value
	MalwareTypeRemoteAccess = "REMOTE_ACCESS"

	// MalwareTypeRootkit is a MalwareType enum value
	MalwareTypeRootkit = "ROOTKIT"

	// MalwareTypeTrojan is a MalwareType enum value
	MalwareTypeTrojan = "TROJAN"

	// MalwareTypeVirus is a MalwareType enum value
	MalwareTypeVirus = "VIRUS"

	// MalwareTypeWorm is a MalwareType enum value
	MalwareTypeWorm = "WORM"
)

// MalwareType_Values returns all elements of the MalwareType enum
func MalwareType_Values() []string {
	return []string{
		MalwareTypeAdware,
		MalwareTypeBlendedThreat,
		MalwareTypeBotnetAgent,
		MalwareTypeCoinMiner,
		MalwareTypeExploitKit,
		MalwareTypeKeylogger,
		MalwareTypeMacro,
		MalwareTypePotentiallyUnwanted,
		MalwareTypeSpyware,
		MalwareTypeRansomware,
		MalwareTypeRemoteAccess,
		MalwareTypeRootkit,
		MalwareTypeTrojan,
		MalwareTypeVirus,
		MalwareTypeWorm,
	}
}

const (
	// MapFilterComparisonEquals is a MapFilterComparison enum value
	MapFilterComparisonEquals = "EQUALS"

	// MapFilterComparisonNotEquals is a MapFilterComparison enum value
	MapFilterComparisonNotEquals = "NOT_EQUALS"

	// MapFilterComparisonContains is a MapFilterComparison enum value
	MapFilterComparisonContains = "CONTAINS"

	// MapFilterComparisonNotContains is a MapFilterComparison enum value
	MapFilterComparisonNotContains = "NOT_CONTAINS"
)

// MapFilterComparison_Values returns all elements of the MapFilterComparison enum
func MapFilterComparison_Values() []string {
	return []string{
		MapFilterComparisonEquals,
		MapFilterComparisonNotEquals,
		MapFilterComparisonContains,
		MapFilterComparisonNotContains,
	}
}

const (
	// NetworkDirectionIn is a NetworkDirection enum value
	NetworkDirectionIn = "IN"

	// NetworkDirectionOut is a NetworkDirection enum value
	NetworkDirectionOut = "OUT"
)

// NetworkDirection_Values returns all elements of the NetworkDirection enum
func NetworkDirection_Values() []string {
	return []string{
		NetworkDirectionIn,
		NetworkDirectionOut,
	}
}

const (
	// OrganizationConfigurationConfigurationTypeCentral is a OrganizationConfigurationConfigurationType enum value
	OrganizationConfigurationConfigurationTypeCentral = "CENTRAL"

	// OrganizationConfigurationConfigurationTypeLocal is a OrganizationConfigurationConfigurationType enum value
	OrganizationConfigurationConfigurationTypeLocal = "LOCAL"
)

// OrganizationConfigurationConfigurationType_Values returns all elements of the OrganizationConfigurationConfigurationType enum
func OrganizationConfigurationConfigurationType_Values() []string {
	return []string{
		OrganizationConfigurationConfigurationTypeCentral,
		OrganizationConfigurationConfigurationTypeLocal,
	}
}

const (
	// OrganizationConfigurationStatusPending is a OrganizationConfigurationStatus enum value
	OrganizationConfigurationStatusPending = "PENDING"

	// OrganizationConfigurationStatusEnabled is a OrganizationConfigurationStatus enum value
	OrganizationConfigurationStatusEnabled = "ENABLED"

	// OrganizationConfigurationStatusFailed is a OrganizationConfigurationStatus enum value
	OrganizationConfigurationStatusFailed = "FAILED"
)

// OrganizationConfigurationStatus_Values returns all elements of the OrganizationConfigurationStatus enum
func OrganizationConfigurationStatus_Values() []string {
	return []string{
		OrganizationConfigurationStatusPending,
		OrganizationConfigurationStatusEnabled,
		OrganizationConfigurationStatusFailed,
	}
}

const (
	// ParameterValueTypeDefault is a ParameterValueType enum value
	ParameterValueTypeDefault = "DEFAULT"

	// ParameterValueTypeCustom is a ParameterValueType enum value
	ParameterValueTypeCustom = "CUSTOM"
)

// ParameterValueType_Values returns all elements of the ParameterValueType enum
func ParameterValueType_Values() []string {
	return []string{
		ParameterValueTypeDefault,
		ParameterValueTypeCustom,
	}
}

const (
	// PartitionAws is a Partition enum value
	PartitionAws = "aws"

	// PartitionAwsCn is a Partition enum value
	PartitionAwsCn = "aws-cn"

	// PartitionAwsUsGov is a Partition enum value
	PartitionAwsUsGov = "aws-us-gov"
)

// Partition_Values returns all elements of the Partition enum
func Partition_Values() []string {
	return []string{
		PartitionAws,
		PartitionAwsCn,
		PartitionAwsUsGov,
	}
}

const (
	// RecordStateActive is a RecordState enum value
	RecordStateActive = "ACTIVE"

	// RecordStateArchived is a RecordState enum value
	RecordStateArchived = "ARCHIVED"
)

// RecordState_Values returns all elements of the RecordState enum
func RecordState_Values() []string {
	return []string{
		RecordStateActive,
		RecordStateArchived,
	}
}

const (
	// RegionAvailabilityStatusAvailable is a RegionAvailabilityStatus enum value
	RegionAvailabilityStatusAvailable = "AVAILABLE"

	// RegionAvailabilityStatusUnavailable is a RegionAvailabilityStatus enum value
	RegionAvailabilityStatusUnavailable = "UNAVAILABLE"
)

// RegionAvailabilityStatus_Values returns all elements of the RegionAvailabilityStatus enum
func RegionAvailabilityStatus_Values() []string {
	return []string{
		RegionAvailabilityStatusAvailable,
		RegionAvailabilityStatusUnavailable,
	}
}

const (
	// RuleStatusEnabled is a RuleStatus enum value
	RuleStatusEnabled = "ENABLED"

	// RuleStatusDisabled is a RuleStatus enum value
	RuleStatusDisabled = "DISABLED"
)

// RuleStatus_Values returns all elements of the RuleStatus enum
func RuleStatus_Values() []string {
	return []string{
		RuleStatusEnabled,
		RuleStatusDisabled,
	}
}

const (
	// SecurityControlPropertyParameters is a SecurityControlProperty enum value
	SecurityControlPropertyParameters = "Parameters"
)

// SecurityControlProperty_Values returns all elements of the SecurityControlProperty enum
func SecurityControlProperty_Values() []string {
	return []string{
		SecurityControlPropertyParameters,
	}
}

const (
	// SeverityLabelInformational is a SeverityLabel enum value
	SeverityLabelInformational = "INFORMATIONAL"

	// SeverityLabelLow is a SeverityLabel enum value
	SeverityLabelLow = "LOW"

	// SeverityLabelMedium is a SeverityLabel enum value
	SeverityLabelMedium = "MEDIUM"

	// SeverityLabelHigh is a SeverityLabel enum value
	SeverityLabelHigh = "HIGH"

	// SeverityLabelCritical is a SeverityLabel enum value
	SeverityLabelCritical = "CRITICAL"
)

// SeverityLabel_Values returns all elements of the SeverityLabel enum
func SeverityLabel_Values() []string {
	return []string{
		SeverityLabelInformational,
		SeverityLabelLow,
		SeverityLabelMedium,
		SeverityLabelHigh,
		SeverityLabelCritical,
	}
}

const (
	// SeverityRatingLow is a SeverityRating enum value
	SeverityRatingLow = "LOW"

	// SeverityRatingMedium is a SeverityRating enum value
	SeverityRatingMedium = "MEDIUM"

	// SeverityRatingHigh is a SeverityRating enum value
	SeverityRatingHigh = "HIGH"

	// SeverityRatingCritical is a SeverityRating enum value
	SeverityRatingCritical = "CRITICAL"
)

// SeverityRating_Values returns all elements of the SeverityRating enum
func SeverityRating_Values() []string {
	return []string{
		SeverityRatingLow,
		SeverityRatingMedium,
		SeverityRatingHigh,
		SeverityRatingCritical,
	}
}

const (
	// SortOrderAsc is a SortOrder enum value
	SortOrderAsc = "asc"

	// SortOrderDesc is a SortOrder enum value
	SortOrderDesc = "desc"
)

// SortOrder_Values returns all elements of the SortOrder enum
func SortOrder_Values() []string {
	return []string{
		SortOrderAsc,
		SortOrderDesc,
	}
}

const (
	// StandardsStatusPending is a StandardsStatus enum value
	StandardsStatusPending = "PENDING"

	// StandardsStatusReady is a StandardsStatus enum value
	StandardsStatusReady = "READY"

	// StandardsStatusFailed is a StandardsStatus enum value
	StandardsStatusFailed = "FAILED"

	// StandardsStatusDeleting is a StandardsStatus enum value
	StandardsStatusDeleting = "DELETING"

	// StandardsStatusIncomplete is a StandardsStatus enum value
	StandardsStatusIncomplete = "INCOMPLETE"
)

// StandardsStatus_Values returns all elements of the StandardsStatus enum
func StandardsStatus_Values() []string {
	return []string{
		StandardsStatusPending,
		StandardsStatusReady,
		StandardsStatusFailed,
		StandardsStatusDeleting,
		StandardsStatusIncomplete,
	}
}

const (
	// StatusReasonCodeNoAvailableConfigurationRecorder is a StatusReasonCode enum value
	StatusReasonCodeNoAvailableConfigurationRecorder = "NO_AVAILABLE_CONFIGURATION_RECORDER"

	// StatusReasonCodeInternalError is a StatusReasonCode enum value
	StatusReasonCodeInternalError = "INTERNAL_ERROR"
)

// StatusReasonCode_Values returns all elements of the StatusReasonCode enum
func StatusReasonCode_Values() []string {
	return []string{
		StatusReasonCodeNoAvailableConfigurationRecorder,
		StatusReasonCodeInternalError,
	}
}

const (
	// StringFilterComparisonEquals is a StringFilterComparison enum value
	StringFilterComparisonEquals = "EQUALS"

	// StringFilterComparisonPrefix is a StringFilterComparison enum value
	StringFilterComparisonPrefix = "PREFIX"

	// StringFilterComparisonNotEquals is a StringFilterComparison enum value
	StringFilterComparisonNotEquals = "NOT_EQUALS"

	// StringFilterComparisonPrefixNotEquals is a StringFilterComparison enum value
	StringFilterComparisonPrefixNotEquals = "PREFIX_NOT_EQUALS"

	// StringFilterComparisonContains is a StringFilterComparison enum value
	StringFilterComparisonContains = "CONTAINS"

	// StringFilterComparisonNotContains is a StringFilterComparison enum value
	StringFilterComparisonNotContains = "NOT_CONTAINS"
)

// StringFilterComparison_Values returns all elements of the StringFilterComparison enum
func StringFilterComparison_Values() []string {
	return []string{
		StringFilterComparisonEquals,
		StringFilterComparisonPrefix,
		StringFilterComparisonNotEquals,
		StringFilterComparisonPrefixNotEquals,
		StringFilterComparisonContains,
		StringFilterComparisonNotContains,
	}
}

const (
	// TargetTypeAccount is a TargetType enum value
	TargetTypeAccount = "ACCOUNT"

	// TargetTypeOrganizationalUnit is a TargetType enum value
	TargetTypeOrganizationalUnit = "ORGANIZATIONAL_UNIT"

	// TargetTypeRoot is a TargetType enum value
	TargetTypeRoot = "ROOT"
)

// TargetType_Values returns all elements of the TargetType enum
func TargetType_Values() []string {
	return []string{
		TargetTypeAccount,
		TargetTypeOrganizationalUnit,
		TargetTypeRoot,
	}
}

const (
	// ThreatIntelIndicatorCategoryBackdoor is a ThreatIntelIndicatorCategory enum value
	ThreatIntelIndicatorCategoryBackdoor = "BACKDOOR"

	// ThreatIntelIndicatorCategoryCardStealer is a ThreatIntelIndicatorCategory enum value
	ThreatIntelIndicatorCategoryCardStealer = "CARD_STEALER"

	// ThreatIntelIndicatorCategoryCommandAndControl is a ThreatIntelIndicatorCategory enum value
	ThreatIntelIndicatorCategoryCommandAndControl = "COMMAND_AND_CONTROL"

	// ThreatIntelIndicatorCategoryDropSite is a ThreatIntelIndicatorCategory enum value
	ThreatIntelIndicatorCategoryDropSite = "DROP_SITE"

	// ThreatIntelIndicatorCategoryExploitSite is a ThreatIntelIndicatorCategory enum value
	ThreatIntelIndicatorCategoryExploitSite = "EXPLOIT_SITE"

	// ThreatIntelIndicatorCategoryKeylogger is a ThreatIntelIndicatorCategory enum value
	ThreatIntelIndicatorCategoryKeylogger = "KEYLOGGER"
)

// ThreatIntelIndicatorCategory_Values returns all elements of the ThreatIntelIndicatorCategory enum
func ThreatIntelIndicatorCategory_Values() []string {
	return []string{
		ThreatIntelIndicatorCategoryBackdoor,
		ThreatIntelIndicatorCategoryCardStealer,
		ThreatIntelIndicatorCategoryCommandAndControl,
		ThreatIntelIndicatorCategoryDropSite,
		ThreatIntelIndicatorCategoryExploitSite,
		ThreatIntelIndicatorCategoryKeylogger,
	}
}

const (
	// ThreatIntelIndicatorTypeDomain is a ThreatIntelIndicatorType enum value
	ThreatIntelIndicatorTypeDomain = "DOMAIN"

	// ThreatIntelIndicatorTypeEmailAddress is a ThreatIntelIndicatorType enum value
	ThreatIntelIndicatorTypeEmailAddress = "EMAIL_ADDRESS"

	// ThreatIntelIndicatorTypeHashMd5 is a ThreatIntelIndicatorType enum value
	ThreatIntelIndicatorTypeHashMd5 = "HASH_MD5"

	// ThreatIntelIndicatorTypeHashSha1 is a ThreatIntelIndicatorType enum value
	ThreatIntelIndicatorTypeHashSha1 = "HASH_SHA1"

	// ThreatIntelIndicatorTypeHashSha256 is a ThreatIntelIndicatorType enum value
	ThreatIntelIndicatorTypeHashSha256 = "HASH_SHA256"

	// ThreatIntelIndicatorTypeHashSha512 is a ThreatIntelIndicatorType enum value
	ThreatIntelIndicatorTypeHashSha512 = "HASH_SHA512"

	// ThreatIntelIndicatorTypeIpv4Address is a ThreatIntelIndicatorType enum value
	ThreatIntelIndicatorTypeIpv4Address = "IPV4_ADDRESS"

	// ThreatIntelIndicatorTypeIpv6Address is a ThreatIntelIndicatorType enum value
	ThreatIntelIndicatorTypeIpv6Address = "IPV6_ADDRESS"

	// ThreatIntelIndicatorTypeMutex is a ThreatIntelIndicatorType enum value
	ThreatIntelIndicatorTypeMutex = "MUTEX"

	// ThreatIntelIndicatorTypeProcess is a ThreatIntelIndicatorType enum value
	ThreatIntelIndicatorTypeProcess = "PROCESS"

	// ThreatIntelIndicatorTypeUrl is a ThreatIntelIndicatorType enum value
	ThreatIntelIndicatorTypeUrl = "URL"
)

// ThreatIntelIndicatorType_Values returns all elements of the ThreatIntelIndicatorType enum
func ThreatIntelIndicatorType_Values() []string {
	return []string{
		ThreatIntelIndicatorTypeDomain,
		ThreatIntelIndicatorTypeEmailAddress,
		ThreatIntelIndicatorTypeHashMd5,
		ThreatIntelIndicatorTypeHashSha1,
		ThreatIntelIndicatorTypeHashSha256,
		ThreatIntelIndicatorTypeHashSha512,
		ThreatIntelIndicatorTypeIpv4Address,
		ThreatIntelIndicatorTypeIpv6Address,
		ThreatIntelIndicatorTypeMutex,
		ThreatIntelIndicatorTypeProcess,
		ThreatIntelIndicatorTypeUrl,
	}
}

const (
	// UnprocessedErrorCodeInvalidInput is a UnprocessedErrorCode enum value
	UnprocessedErrorCodeInvalidInput = "INVALID_INPUT"

	// UnprocessedErrorCodeAccessDenied is a UnprocessedErrorCode enum value
	UnprocessedErrorCodeAccessDenied = "ACCESS_DENIED"

	// UnprocessedErrorCodeNotFound is a UnprocessedErrorCode enum value
	UnprocessedErrorCodeNotFound = "NOT_FOUND"

	// UnprocessedErrorCodeLimitExceeded is a UnprocessedErrorCode enum value
	UnprocessedErrorCodeLimitExceeded = "LIMIT_EXCEEDED"
)

// UnprocessedErrorCode_Values returns all elements of the UnprocessedErrorCode enum
func UnprocessedErrorCode_Values() []string {
	return []string{
		UnprocessedErrorCodeInvalidInput,
		UnprocessedErrorCodeAccessDenied,
		UnprocessedErrorCodeNotFound,
		UnprocessedErrorCodeLimitExceeded,
	}
}

const (
	// UpdateStatusReady is a UpdateStatus enum value
	UpdateStatusReady = "READY"

	// UpdateStatusUpdating is a UpdateStatus enum value
	UpdateStatusUpdating = "UPDATING"
)

// UpdateStatus_Values returns all elements of the UpdateStatus enum
func UpdateStatus_Values() []string {
	return []string{
		UpdateStatusReady,
		UpdateStatusUpdating,
	}
}

const (
	// VerificationStateUnknown is a VerificationState enum value
	VerificationStateUnknown = "UNKNOWN"

	// VerificationStateTruePositive is a VerificationState enum value
	VerificationStateTruePositive = "TRUE_POSITIVE"

	// VerificationStateFalsePositive is a VerificationState enum value
	VerificationStateFalsePositive = "FALSE_POSITIVE"

	// VerificationStateBenignPositive is a VerificationState enum value
	VerificationStateBenignPositive = "BENIGN_POSITIVE"
)

// VerificationState_Values returns all elements of the VerificationState enum
func VerificationState_Values() []string {
	return []string{
		VerificationStateUnknown,
		VerificationStateTruePositive,
		VerificationStateFalsePositive,
		VerificationStateBenignPositive,
	}
}

const (
	// VulnerabilityExploitAvailableYes is a VulnerabilityExploitAvailable enum value
	VulnerabilityExploitAvailableYes = "YES"

	// VulnerabilityExploitAvailableNo is a VulnerabilityExploitAvailable enum value
	VulnerabilityExploitAvailableNo = "NO"
)

// VulnerabilityExploitAvailable_Values returns all elements of the VulnerabilityExploitAvailable enum
func VulnerabilityExploitAvailable_Values() []string {
	return []string{
		VulnerabilityExploitAvailableYes,
		VulnerabilityExploitAvailableNo,
	}
}

const (
	// VulnerabilityFixAvailableYes is a VulnerabilityFixAvailable enum value
	VulnerabilityFixAvailableYes = "YES"

	// VulnerabilityFixAvailableNo is a VulnerabilityFixAvailable enum value
	VulnerabilityFixAvailableNo = "NO"

	// VulnerabilityFixAvailablePartial is a VulnerabilityFixAvailable enum value
	VulnerabilityFixAvailablePartial = "PARTIAL"
)

// VulnerabilityFixAvailable_Values returns all elements of the VulnerabilityFixAvailable enum
func VulnerabilityFixAvailable_Values() []string {
	return []string{
		VulnerabilityFixAvailableYes,
		VulnerabilityFixAvailableNo,
		VulnerabilityFixAvailablePartial,
	}
}

const (
	// WorkflowStateNew is a WorkflowState enum value
	WorkflowStateNew = "NEW"

	// WorkflowStateAssigned is a WorkflowState enum value
	WorkflowStateAssigned = "ASSIGNED"

	// WorkflowStateInProgress is a WorkflowState enum value
	WorkflowStateInProgress = "IN_PROGRESS"

	// WorkflowStateDeferred is a WorkflowState enum value
	WorkflowStateDeferred = "DEFERRED"

	// WorkflowStateResolved is a WorkflowState enum value
	WorkflowStateResolved = "RESOLVED"
)

// WorkflowState_Values returns all elements of the WorkflowState enum
func WorkflowState_Values() []string {
	return []string{
		WorkflowStateNew,
		WorkflowStateAssigned,
		WorkflowStateInProgress,
		WorkflowStateDeferred,
		WorkflowStateResolved,
	}
}

const (
	// WorkflowStatusNew is a WorkflowStatus enum value
	WorkflowStatusNew = "NEW"

	// WorkflowStatusNotified is a WorkflowStatus enum value
	WorkflowStatusNotified = "NOTIFIED"

	// WorkflowStatusResolved is a WorkflowStatus enum value
	WorkflowStatusResolved = "RESOLVED"

	// WorkflowStatusSuppressed is a WorkflowStatus enum value
	WorkflowStatusSuppressed = "SUPPRESSED"
)

// WorkflowStatus_Values returns all elements of the WorkflowStatus enum
func WorkflowStatus_Values() []string {
	return []string{
		WorkflowStatusNew,
		WorkflowStatusNotified,
		WorkflowStatusResolved,
		WorkflowStatusSuppressed,
	}
}
