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

package inspector2

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 opAssociateMember = "AssociateMember"

// AssociateMemberRequest generates a "aws/request.Request" representing the
// client's request for the AssociateMember 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 AssociateMember for more information on using the AssociateMember
// 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 AssociateMemberRequest method.
//    req, resp := client.AssociateMemberRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/AssociateMember
func (c *Inspector2) AssociateMemberRequest(input *AssociateMemberInput) (req *request.Request, output *AssociateMemberOutput) {
	op := &request.Operation{
		Name:       opAssociateMember,
		HTTPMethod: "POST",
		HTTPPath:   "/members/associate",
	}

	if input == nil {
		input = &AssociateMemberInput{}
	}

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

// AssociateMember API operation for Inspector2.
//
// Associates an Amazon Web Services account with an Amazon Inspector delegated
// administrator.
//
// 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 Inspector2's
// API operation AssociateMember for usage and error information.
//
// Returned Error Types:
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * AccessDeniedException
//   You do not have sufficient access to perform this action.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/AssociateMember
func (c *Inspector2) AssociateMember(input *AssociateMemberInput) (*AssociateMemberOutput, error) {
	req, out := c.AssociateMemberRequest(input)
	return out, req.Send()
}

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

const opBatchGetAccountStatus = "BatchGetAccountStatus"

// BatchGetAccountStatusRequest generates a "aws/request.Request" representing the
// client's request for the BatchGetAccountStatus 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 BatchGetAccountStatus for more information on using the BatchGetAccountStatus
// 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 BatchGetAccountStatusRequest method.
//    req, resp := client.BatchGetAccountStatusRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/BatchGetAccountStatus
func (c *Inspector2) BatchGetAccountStatusRequest(input *BatchGetAccountStatusInput) (req *request.Request, output *BatchGetAccountStatusOutput) {
	op := &request.Operation{
		Name:       opBatchGetAccountStatus,
		HTTPMethod: "POST",
		HTTPPath:   "/status/batch/get",
	}

	if input == nil {
		input = &BatchGetAccountStatusInput{}
	}

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

// BatchGetAccountStatus API operation for Inspector2.
//
// Retrieves the Amazon Inspector status of multiple Amazon Web Services accounts
// within your environment.
//
// 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 Inspector2's
// API operation BatchGetAccountStatus for usage and error information.
//
// Returned Error Types:
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * AccessDeniedException
//   You do not have sufficient access to perform this action.
//
//   * ResourceNotFoundException
//   The operation tried to access an invalid resource. Make sure the resource
//   is specified correctly.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/BatchGetAccountStatus
func (c *Inspector2) BatchGetAccountStatus(input *BatchGetAccountStatusInput) (*BatchGetAccountStatusOutput, error) {
	req, out := c.BatchGetAccountStatusRequest(input)
	return out, req.Send()
}

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

const opBatchGetFreeTrialInfo = "BatchGetFreeTrialInfo"

// BatchGetFreeTrialInfoRequest generates a "aws/request.Request" representing the
// client's request for the BatchGetFreeTrialInfo 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 BatchGetFreeTrialInfo for more information on using the BatchGetFreeTrialInfo
// 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 BatchGetFreeTrialInfoRequest method.
//    req, resp := client.BatchGetFreeTrialInfoRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/BatchGetFreeTrialInfo
func (c *Inspector2) BatchGetFreeTrialInfoRequest(input *BatchGetFreeTrialInfoInput) (req *request.Request, output *BatchGetFreeTrialInfoOutput) {
	op := &request.Operation{
		Name:       opBatchGetFreeTrialInfo,
		HTTPMethod: "POST",
		HTTPPath:   "/freetrialinfo/batchget",
	}

	if input == nil {
		input = &BatchGetFreeTrialInfoInput{}
	}

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

// BatchGetFreeTrialInfo API operation for Inspector2.
//
// Gets free trial status for multiple Amazon Web Services accounts.
//
// 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 Inspector2's
// API operation BatchGetFreeTrialInfo for usage and error information.
//
// Returned Error Types:
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * AccessDeniedException
//   You do not have sufficient access to perform this action.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/BatchGetFreeTrialInfo
func (c *Inspector2) BatchGetFreeTrialInfo(input *BatchGetFreeTrialInfoInput) (*BatchGetFreeTrialInfoOutput, error) {
	req, out := c.BatchGetFreeTrialInfoRequest(input)
	return out, req.Send()
}

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

const opCancelFindingsReport = "CancelFindingsReport"

// CancelFindingsReportRequest generates a "aws/request.Request" representing the
// client's request for the CancelFindingsReport 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 CancelFindingsReport for more information on using the CancelFindingsReport
// 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 CancelFindingsReportRequest method.
//    req, resp := client.CancelFindingsReportRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/CancelFindingsReport
func (c *Inspector2) CancelFindingsReportRequest(input *CancelFindingsReportInput) (req *request.Request, output *CancelFindingsReportOutput) {
	op := &request.Operation{
		Name:       opCancelFindingsReport,
		HTTPMethod: "POST",
		HTTPPath:   "/reporting/cancel",
	}

	if input == nil {
		input = &CancelFindingsReportInput{}
	}

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

// CancelFindingsReport API operation for Inspector2.
//
// Cancels the given findings report.
//
// 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 Inspector2's
// API operation CancelFindingsReport for usage and error information.
//
// Returned Error Types:
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * AccessDeniedException
//   You do not have sufficient access to perform this action.
//
//   * ResourceNotFoundException
//   The operation tried to access an invalid resource. Make sure the resource
//   is specified correctly.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/CancelFindingsReport
func (c *Inspector2) CancelFindingsReport(input *CancelFindingsReportInput) (*CancelFindingsReportOutput, error) {
	req, out := c.CancelFindingsReportRequest(input)
	return out, req.Send()
}

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

const opCreateFilter = "CreateFilter"

// CreateFilterRequest generates a "aws/request.Request" representing the
// client's request for the CreateFilter 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 CreateFilter for more information on using the CreateFilter
// 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 CreateFilterRequest method.
//    req, resp := client.CreateFilterRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/CreateFilter
func (c *Inspector2) CreateFilterRequest(input *CreateFilterInput) (req *request.Request, output *CreateFilterOutput) {
	op := &request.Operation{
		Name:       opCreateFilter,
		HTTPMethod: "POST",
		HTTPPath:   "/filters/create",
	}

	if input == nil {
		input = &CreateFilterInput{}
	}

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

// CreateFilter API operation for Inspector2.
//
// Creates a filter resource using specified filter criteria.
//
// 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 Inspector2's
// API operation CreateFilter for usage and error information.
//
// Returned Error Types:
//   * ServiceQuotaExceededException
//   You have exceeded your service quota. To perform the requested action, remove
//   some of the relevant resources, or use Service Quotas to request a service
//   quota increase.
//
//   * BadRequestException
//   One or more tags submitted as part of the request is not valid.
//
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * AccessDeniedException
//   You do not have sufficient access to perform this action.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/CreateFilter
func (c *Inspector2) CreateFilter(input *CreateFilterInput) (*CreateFilterOutput, error) {
	req, out := c.CreateFilterRequest(input)
	return out, req.Send()
}

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

const opCreateFindingsReport = "CreateFindingsReport"

// CreateFindingsReportRequest generates a "aws/request.Request" representing the
// client's request for the CreateFindingsReport 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 CreateFindingsReport for more information on using the CreateFindingsReport
// 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 CreateFindingsReportRequest method.
//    req, resp := client.CreateFindingsReportRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/CreateFindingsReport
func (c *Inspector2) CreateFindingsReportRequest(input *CreateFindingsReportInput) (req *request.Request, output *CreateFindingsReportOutput) {
	op := &request.Operation{
		Name:       opCreateFindingsReport,
		HTTPMethod: "POST",
		HTTPPath:   "/reporting/create",
	}

	if input == nil {
		input = &CreateFindingsReportInput{}
	}

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

// CreateFindingsReport API operation for Inspector2.
//
// Creates a finding report.
//
// 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 Inspector2's
// API operation CreateFindingsReport for usage and error information.
//
// Returned Error Types:
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * AccessDeniedException
//   You do not have sufficient access to perform this action.
//
//   * ResourceNotFoundException
//   The operation tried to access an invalid resource. Make sure the resource
//   is specified correctly.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/CreateFindingsReport
func (c *Inspector2) CreateFindingsReport(input *CreateFindingsReportInput) (*CreateFindingsReportOutput, error) {
	req, out := c.CreateFindingsReportRequest(input)
	return out, req.Send()
}

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

const opDeleteFilter = "DeleteFilter"

// DeleteFilterRequest generates a "aws/request.Request" representing the
// client's request for the DeleteFilter 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 DeleteFilter for more information on using the DeleteFilter
// 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 DeleteFilterRequest method.
//    req, resp := client.DeleteFilterRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/DeleteFilter
func (c *Inspector2) DeleteFilterRequest(input *DeleteFilterInput) (req *request.Request, output *DeleteFilterOutput) {
	op := &request.Operation{
		Name:       opDeleteFilter,
		HTTPMethod: "POST",
		HTTPPath:   "/filters/delete",
	}

	if input == nil {
		input = &DeleteFilterInput{}
	}

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

// DeleteFilter API operation for Inspector2.
//
// Deletes a filter 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 Inspector2's
// API operation DeleteFilter for usage and error information.
//
// Returned Error Types:
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * AccessDeniedException
//   You do not have sufficient access to perform this action.
//
//   * ResourceNotFoundException
//   The operation tried to access an invalid resource. Make sure the resource
//   is specified correctly.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/DeleteFilter
func (c *Inspector2) DeleteFilter(input *DeleteFilterInput) (*DeleteFilterOutput, error) {
	req, out := c.DeleteFilterRequest(input)
	return out, req.Send()
}

// DeleteFilterWithContext is the same as DeleteFilter with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteFilter 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 *Inspector2) DeleteFilterWithContext(ctx aws.Context, input *DeleteFilterInput, opts ...request.Option) (*DeleteFilterOutput, error) {
	req, out := c.DeleteFilterRequest(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/inspector2-2020-06-08/DescribeOrganizationConfiguration
func (c *Inspector2) DescribeOrganizationConfigurationRequest(input *DescribeOrganizationConfigurationInput) (req *request.Request, output *DescribeOrganizationConfigurationOutput) {
	op := &request.Operation{
		Name:       opDescribeOrganizationConfiguration,
		HTTPMethod: "POST",
		HTTPPath:   "/organizationconfiguration/describe",
	}

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

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

// DescribeOrganizationConfiguration API operation for Inspector2.
//
// Describe Amazon Inspector configuration settings for an Amazon Web Services
// 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 Inspector2's
// API operation DescribeOrganizationConfiguration for usage and error information.
//
// Returned Error Types:
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * AccessDeniedException
//   You do not have sufficient access to perform this action.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/DescribeOrganizationConfiguration
func (c *Inspector2) 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 *Inspector2) 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 opDisable = "Disable"

// DisableRequest generates a "aws/request.Request" representing the
// client's request for the Disable 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 Disable for more information on using the Disable
// 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 DisableRequest method.
//    req, resp := client.DisableRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/Disable
func (c *Inspector2) DisableRequest(input *DisableInput) (req *request.Request, output *DisableOutput) {
	op := &request.Operation{
		Name:       opDisable,
		HTTPMethod: "POST",
		HTTPPath:   "/disable",
	}

	if input == nil {
		input = &DisableInput{}
	}

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

// Disable API operation for Inspector2.
//
// Disables Amazon Inspector scans for one or more Amazon Web Services accounts.
// Disabling all scan types in an account disables the Amazon Inspector service.
//
// 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 Inspector2's
// API operation Disable for usage and error information.
//
// Returned Error Types:
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * AccessDeniedException
//   You do not have sufficient access to perform this action.
//
//   * ResourceNotFoundException
//   The operation tried to access an invalid resource. Make sure the resource
//   is specified correctly.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/Disable
func (c *Inspector2) Disable(input *DisableInput) (*DisableOutput, error) {
	req, out := c.DisableRequest(input)
	return out, req.Send()
}

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

const opDisableDelegatedAdminAccount = "DisableDelegatedAdminAccount"

// DisableDelegatedAdminAccountRequest generates a "aws/request.Request" representing the
// client's request for the DisableDelegatedAdminAccount 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 DisableDelegatedAdminAccount for more information on using the DisableDelegatedAdminAccount
// 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 DisableDelegatedAdminAccountRequest method.
//    req, resp := client.DisableDelegatedAdminAccountRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/DisableDelegatedAdminAccount
func (c *Inspector2) DisableDelegatedAdminAccountRequest(input *DisableDelegatedAdminAccountInput) (req *request.Request, output *DisableDelegatedAdminAccountOutput) {
	op := &request.Operation{
		Name:       opDisableDelegatedAdminAccount,
		HTTPMethod: "POST",
		HTTPPath:   "/delegatedadminaccounts/disable",
	}

	if input == nil {
		input = &DisableDelegatedAdminAccountInput{}
	}

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

// DisableDelegatedAdminAccount API operation for Inspector2.
//
// Disables the Amazon Inspector delegated administrator for your 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 Inspector2's
// API operation DisableDelegatedAdminAccount for usage and error information.
//
// Returned Error Types:
//   * ConflictException
//   A conflict occurred.
//
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * AccessDeniedException
//   You do not have sufficient access to perform this action.
//
//   * ResourceNotFoundException
//   The operation tried to access an invalid resource. Make sure the resource
//   is specified correctly.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/DisableDelegatedAdminAccount
func (c *Inspector2) DisableDelegatedAdminAccount(input *DisableDelegatedAdminAccountInput) (*DisableDelegatedAdminAccountOutput, error) {
	req, out := c.DisableDelegatedAdminAccountRequest(input)
	return out, req.Send()
}

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

const opDisassociateMember = "DisassociateMember"

// DisassociateMemberRequest generates a "aws/request.Request" representing the
// client's request for the DisassociateMember 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 DisassociateMember for more information on using the DisassociateMember
// 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 DisassociateMemberRequest method.
//    req, resp := client.DisassociateMemberRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/DisassociateMember
func (c *Inspector2) DisassociateMemberRequest(input *DisassociateMemberInput) (req *request.Request, output *DisassociateMemberOutput) {
	op := &request.Operation{
		Name:       opDisassociateMember,
		HTTPMethod: "POST",
		HTTPPath:   "/members/disassociate",
	}

	if input == nil {
		input = &DisassociateMemberInput{}
	}

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

// DisassociateMember API operation for Inspector2.
//
// Disassociates a member account from an Amazon Inspector delegated administrator.
//
// 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 Inspector2's
// API operation DisassociateMember for usage and error information.
//
// Returned Error Types:
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * AccessDeniedException
//   You do not have sufficient access to perform this action.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/DisassociateMember
func (c *Inspector2) DisassociateMember(input *DisassociateMemberInput) (*DisassociateMemberOutput, error) {
	req, out := c.DisassociateMemberRequest(input)
	return out, req.Send()
}

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

const opEnable = "Enable"

// EnableRequest generates a "aws/request.Request" representing the
// client's request for the Enable 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 Enable for more information on using the Enable
// 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 EnableRequest method.
//    req, resp := client.EnableRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/Enable
func (c *Inspector2) EnableRequest(input *EnableInput) (req *request.Request, output *EnableOutput) {
	op := &request.Operation{
		Name:       opEnable,
		HTTPMethod: "POST",
		HTTPPath:   "/enable",
	}

	if input == nil {
		input = &EnableInput{}
	}

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

// Enable API operation for Inspector2.
//
// Enables Amazon Inspector scans for one or more Amazon Web Services accounts.
//
// 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 Inspector2's
// API operation Enable for usage and error information.
//
// Returned Error Types:
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * AccessDeniedException
//   You do not have sufficient access to perform this action.
//
//   * ResourceNotFoundException
//   The operation tried to access an invalid resource. Make sure the resource
//   is specified correctly.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/Enable
func (c *Inspector2) Enable(input *EnableInput) (*EnableOutput, error) {
	req, out := c.EnableRequest(input)
	return out, req.Send()
}

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

const opEnableDelegatedAdminAccount = "EnableDelegatedAdminAccount"

// EnableDelegatedAdminAccountRequest generates a "aws/request.Request" representing the
// client's request for the EnableDelegatedAdminAccount 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 EnableDelegatedAdminAccount for more information on using the EnableDelegatedAdminAccount
// 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 EnableDelegatedAdminAccountRequest method.
//    req, resp := client.EnableDelegatedAdminAccountRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/EnableDelegatedAdminAccount
func (c *Inspector2) EnableDelegatedAdminAccountRequest(input *EnableDelegatedAdminAccountInput) (req *request.Request, output *EnableDelegatedAdminAccountOutput) {
	op := &request.Operation{
		Name:       opEnableDelegatedAdminAccount,
		HTTPMethod: "POST",
		HTTPPath:   "/delegatedadminaccounts/enable",
	}

	if input == nil {
		input = &EnableDelegatedAdminAccountInput{}
	}

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

// EnableDelegatedAdminAccount API operation for Inspector2.
//
// Enables the Amazon Inspector delegated administrator for your 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 Inspector2's
// API operation EnableDelegatedAdminAccount for usage and error information.
//
// Returned Error Types:
//   * ConflictException
//   A conflict occurred.
//
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * AccessDeniedException
//   You do not have sufficient access to perform this action.
//
//   * ResourceNotFoundException
//   The operation tried to access an invalid resource. Make sure the resource
//   is specified correctly.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/EnableDelegatedAdminAccount
func (c *Inspector2) EnableDelegatedAdminAccount(input *EnableDelegatedAdminAccountInput) (*EnableDelegatedAdminAccountOutput, error) {
	req, out := c.EnableDelegatedAdminAccountRequest(input)
	return out, req.Send()
}

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

const opGetDelegatedAdminAccount = "GetDelegatedAdminAccount"

// GetDelegatedAdminAccountRequest generates a "aws/request.Request" representing the
// client's request for the GetDelegatedAdminAccount 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 GetDelegatedAdminAccount for more information on using the GetDelegatedAdminAccount
// 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 GetDelegatedAdminAccountRequest method.
//    req, resp := client.GetDelegatedAdminAccountRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/GetDelegatedAdminAccount
func (c *Inspector2) GetDelegatedAdminAccountRequest(input *GetDelegatedAdminAccountInput) (req *request.Request, output *GetDelegatedAdminAccountOutput) {
	op := &request.Operation{
		Name:       opGetDelegatedAdminAccount,
		HTTPMethod: "POST",
		HTTPPath:   "/delegatedadminaccounts/get",
	}

	if input == nil {
		input = &GetDelegatedAdminAccountInput{}
	}

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

// GetDelegatedAdminAccount API operation for Inspector2.
//
// Retrieves information about the Amazon Inspector delegated administrator
// for your 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 Inspector2's
// API operation GetDelegatedAdminAccount for usage and error information.
//
// Returned Error Types:
//   * AccessDeniedException
//   You do not have sufficient access to perform this action.
//
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * ResourceNotFoundException
//   The operation tried to access an invalid resource. Make sure the resource
//   is specified correctly.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/GetDelegatedAdminAccount
func (c *Inspector2) GetDelegatedAdminAccount(input *GetDelegatedAdminAccountInput) (*GetDelegatedAdminAccountOutput, error) {
	req, out := c.GetDelegatedAdminAccountRequest(input)
	return out, req.Send()
}

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

const opGetFindingsReportStatus = "GetFindingsReportStatus"

// GetFindingsReportStatusRequest generates a "aws/request.Request" representing the
// client's request for the GetFindingsReportStatus 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 GetFindingsReportStatus for more information on using the GetFindingsReportStatus
// 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 GetFindingsReportStatusRequest method.
//    req, resp := client.GetFindingsReportStatusRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/GetFindingsReportStatus
func (c *Inspector2) GetFindingsReportStatusRequest(input *GetFindingsReportStatusInput) (req *request.Request, output *GetFindingsReportStatusOutput) {
	op := &request.Operation{
		Name:       opGetFindingsReportStatus,
		HTTPMethod: "POST",
		HTTPPath:   "/reporting/status/get",
	}

	if input == nil {
		input = &GetFindingsReportStatusInput{}
	}

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

// GetFindingsReportStatus API operation for Inspector2.
//
// Gets the status of a findings report.
//
// 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 Inspector2's
// API operation GetFindingsReportStatus for usage and error information.
//
// Returned Error Types:
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * AccessDeniedException
//   You do not have sufficient access to perform this action.
//
//   * ResourceNotFoundException
//   The operation tried to access an invalid resource. Make sure the resource
//   is specified correctly.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/GetFindingsReportStatus
func (c *Inspector2) GetFindingsReportStatus(input *GetFindingsReportStatusInput) (*GetFindingsReportStatusOutput, error) {
	req, out := c.GetFindingsReportStatusRequest(input)
	return out, req.Send()
}

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

const opGetMember = "GetMember"

// GetMemberRequest generates a "aws/request.Request" representing the
// client's request for the GetMember 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 GetMember for more information on using the GetMember
// 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 GetMemberRequest method.
//    req, resp := client.GetMemberRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/GetMember
func (c *Inspector2) GetMemberRequest(input *GetMemberInput) (req *request.Request, output *GetMemberOutput) {
	op := &request.Operation{
		Name:       opGetMember,
		HTTPMethod: "POST",
		HTTPPath:   "/members/get",
	}

	if input == nil {
		input = &GetMemberInput{}
	}

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

// GetMember API operation for Inspector2.
//
// Gets member information for your 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 Inspector2's
// API operation GetMember for usage and error information.
//
// Returned Error Types:
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * AccessDeniedException
//   You do not have sufficient access to perform this action.
//
//   * ResourceNotFoundException
//   The operation tried to access an invalid resource. Make sure the resource
//   is specified correctly.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/GetMember
func (c *Inspector2) GetMember(input *GetMemberInput) (*GetMemberOutput, error) {
	req, out := c.GetMemberRequest(input)
	return out, req.Send()
}

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

const opListAccountPermissions = "ListAccountPermissions"

// ListAccountPermissionsRequest generates a "aws/request.Request" representing the
// client's request for the ListAccountPermissions 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 ListAccountPermissions for more information on using the ListAccountPermissions
// 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 ListAccountPermissionsRequest method.
//    req, resp := client.ListAccountPermissionsRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/ListAccountPermissions
func (c *Inspector2) ListAccountPermissionsRequest(input *ListAccountPermissionsInput) (req *request.Request, output *ListAccountPermissionsOutput) {
	op := &request.Operation{
		Name:       opListAccountPermissions,
		HTTPMethod: "POST",
		HTTPPath:   "/accountpermissions/list",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListAccountPermissionsInput{}
	}

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

// ListAccountPermissions API operation for Inspector2.
//
// Lists the permissions an account has to configure Amazon Inspector.
//
// 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 Inspector2's
// API operation ListAccountPermissions for usage and error information.
//
// Returned Error Types:
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * AccessDeniedException
//   You do not have sufficient access to perform this action.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/ListAccountPermissions
func (c *Inspector2) ListAccountPermissions(input *ListAccountPermissionsInput) (*ListAccountPermissionsOutput, error) {
	req, out := c.ListAccountPermissionsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListCoverage = "ListCoverage"

// ListCoverageRequest generates a "aws/request.Request" representing the
// client's request for the ListCoverage 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 ListCoverage for more information on using the ListCoverage
// 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 ListCoverageRequest method.
//    req, resp := client.ListCoverageRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/ListCoverage
func (c *Inspector2) ListCoverageRequest(input *ListCoverageInput) (req *request.Request, output *ListCoverageOutput) {
	op := &request.Operation{
		Name:       opListCoverage,
		HTTPMethod: "POST",
		HTTPPath:   "/coverage/list",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListCoverageInput{}
	}

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

// ListCoverage API operation for Inspector2.
//
// Lists coverage details for you environment.
//
// 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 Inspector2's
// API operation ListCoverage for usage and error information.
//
// Returned Error Types:
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/ListCoverage
func (c *Inspector2) ListCoverage(input *ListCoverageInput) (*ListCoverageOutput, error) {
	req, out := c.ListCoverageRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListCoverageStatistics = "ListCoverageStatistics"

// ListCoverageStatisticsRequest generates a "aws/request.Request" representing the
// client's request for the ListCoverageStatistics 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 ListCoverageStatistics for more information on using the ListCoverageStatistics
// 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 ListCoverageStatisticsRequest method.
//    req, resp := client.ListCoverageStatisticsRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/ListCoverageStatistics
func (c *Inspector2) ListCoverageStatisticsRequest(input *ListCoverageStatisticsInput) (req *request.Request, output *ListCoverageStatisticsOutput) {
	op := &request.Operation{
		Name:       opListCoverageStatistics,
		HTTPMethod: "POST",
		HTTPPath:   "/coverage/statistics/list",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListCoverageStatisticsInput{}
	}

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

// ListCoverageStatistics API operation for Inspector2.
//
// Lists Amazon Inspector coverage statistics for your environment.
//
// 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 Inspector2's
// API operation ListCoverageStatistics for usage and error information.
//
// Returned Error Types:
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/ListCoverageStatistics
func (c *Inspector2) ListCoverageStatistics(input *ListCoverageStatisticsInput) (*ListCoverageStatisticsOutput, error) {
	req, out := c.ListCoverageStatisticsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListDelegatedAdminAccounts = "ListDelegatedAdminAccounts"

// ListDelegatedAdminAccountsRequest generates a "aws/request.Request" representing the
// client's request for the ListDelegatedAdminAccounts 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 ListDelegatedAdminAccounts for more information on using the ListDelegatedAdminAccounts
// 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 ListDelegatedAdminAccountsRequest method.
//    req, resp := client.ListDelegatedAdminAccountsRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/ListDelegatedAdminAccounts
func (c *Inspector2) ListDelegatedAdminAccountsRequest(input *ListDelegatedAdminAccountsInput) (req *request.Request, output *ListDelegatedAdminAccountsOutput) {
	op := &request.Operation{
		Name:       opListDelegatedAdminAccounts,
		HTTPMethod: "POST",
		HTTPPath:   "/delegatedadminaccounts/list",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListDelegatedAdminAccountsInput{}
	}

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

// ListDelegatedAdminAccounts API operation for Inspector2.
//
// Lists information about the Amazon Inspector delegated administrator of your
// 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 Inspector2's
// API operation ListDelegatedAdminAccounts for usage and error information.
//
// Returned Error Types:
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * AccessDeniedException
//   You do not have sufficient access to perform this action.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/ListDelegatedAdminAccounts
func (c *Inspector2) ListDelegatedAdminAccounts(input *ListDelegatedAdminAccountsInput) (*ListDelegatedAdminAccountsOutput, error) {
	req, out := c.ListDelegatedAdminAccountsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListFilters = "ListFilters"

// ListFiltersRequest generates a "aws/request.Request" representing the
// client's request for the ListFilters 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 ListFilters for more information on using the ListFilters
// 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 ListFiltersRequest method.
//    req, resp := client.ListFiltersRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/ListFilters
func (c *Inspector2) ListFiltersRequest(input *ListFiltersInput) (req *request.Request, output *ListFiltersOutput) {
	op := &request.Operation{
		Name:       opListFilters,
		HTTPMethod: "POST",
		HTTPPath:   "/filters/list",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListFiltersInput{}
	}

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

// ListFilters API operation for Inspector2.
//
// Lists the filters associated with 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 Inspector2's
// API operation ListFilters for usage and error information.
//
// Returned Error Types:
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * AccessDeniedException
//   You do not have sufficient access to perform this action.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/ListFilters
func (c *Inspector2) ListFilters(input *ListFiltersInput) (*ListFiltersOutput, error) {
	req, out := c.ListFiltersRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListFindingAggregations = "ListFindingAggregations"

// ListFindingAggregationsRequest generates a "aws/request.Request" representing the
// client's request for the ListFindingAggregations 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 ListFindingAggregations for more information on using the ListFindingAggregations
// 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 ListFindingAggregationsRequest method.
//    req, resp := client.ListFindingAggregationsRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/ListFindingAggregations
func (c *Inspector2) ListFindingAggregationsRequest(input *ListFindingAggregationsInput) (req *request.Request, output *ListFindingAggregationsOutput) {
	op := &request.Operation{
		Name:       opListFindingAggregations,
		HTTPMethod: "POST",
		HTTPPath:   "/findings/aggregation/list",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListFindingAggregationsInput{}
	}

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

// ListFindingAggregations API operation for Inspector2.
//
// Lists aggregated finding data for your environment based on specific criteria.
//
// 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 Inspector2's
// API operation ListFindingAggregations for usage and error information.
//
// Returned Error Types:
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/ListFindingAggregations
func (c *Inspector2) ListFindingAggregations(input *ListFindingAggregationsInput) (*ListFindingAggregationsOutput, error) {
	req, out := c.ListFindingAggregationsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListFindings = "ListFindings"

// ListFindingsRequest generates a "aws/request.Request" representing the
// client's request for the ListFindings 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 ListFindings for more information on using the ListFindings
// 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 ListFindingsRequest method.
//    req, resp := client.ListFindingsRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/ListFindings
func (c *Inspector2) ListFindingsRequest(input *ListFindingsInput) (req *request.Request, output *ListFindingsOutput) {
	op := &request.Operation{
		Name:       opListFindings,
		HTTPMethod: "POST",
		HTTPPath:   "/findings/list",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListFindingsInput{}
	}

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

// ListFindings API operation for Inspector2.
//
// Lists findings for your environment.
//
// 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 Inspector2's
// API operation ListFindings for usage and error information.
//
// Returned Error Types:
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/ListFindings
func (c *Inspector2) ListFindings(input *ListFindingsInput) (*ListFindingsOutput, error) {
	req, out := c.ListFindingsRequest(input)
	return out, req.Send()
}

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

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

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

	for p.Next() {
		if !fn(p.Page().(*ListFindingsOutput), !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/inspector2-2020-06-08/ListMembers
func (c *Inspector2) ListMembersRequest(input *ListMembersInput) (req *request.Request, output *ListMembersOutput) {
	op := &request.Operation{
		Name:       opListMembers,
		HTTPMethod: "POST",
		HTTPPath:   "/members/list",
		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 Inspector2.
//
// List members associated with the Amazon Inspector delegated administrator
// for your 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 Inspector2's
// API operation ListMembers for usage and error information.
//
// Returned Error Types:
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * AccessDeniedException
//   You do not have sufficient access to perform this action.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/ListMembers
func (c *Inspector2) 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 *Inspector2) 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 *inspector2.ListMembersOutput, lastPage bool) bool {
//            pageNum++
//            fmt.Println(page)
//            return pageNum <= 3
//        })
//
func (c *Inspector2) 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 *Inspector2) 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 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/inspector2-2020-06-08/ListTagsForResource
func (c *Inspector2) 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 Inspector2.
//
// Lists all tags attached to a given 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 Inspector2's
// API operation ListTagsForResource for usage and error information.
//
// Returned Error Types:
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * ResourceNotFoundException
//   The operation tried to access an invalid resource. Make sure the resource
//   is specified correctly.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/ListTagsForResource
func (c *Inspector2) 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 *Inspector2) 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 opListUsageTotals = "ListUsageTotals"

// ListUsageTotalsRequest generates a "aws/request.Request" representing the
// client's request for the ListUsageTotals 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 ListUsageTotals for more information on using the ListUsageTotals
// 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 ListUsageTotalsRequest method.
//    req, resp := client.ListUsageTotalsRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/ListUsageTotals
func (c *Inspector2) ListUsageTotalsRequest(input *ListUsageTotalsInput) (req *request.Request, output *ListUsageTotalsOutput) {
	op := &request.Operation{
		Name:       opListUsageTotals,
		HTTPMethod: "POST",
		HTTPPath:   "/usage/list",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListUsageTotalsInput{}
	}

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

// ListUsageTotals API operation for Inspector2.
//
// Lists the Amazon Inspector usage totals over the last 30 days.
//
// 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 Inspector2's
// API operation ListUsageTotals for usage and error information.
//
// Returned Error Types:
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * AccessDeniedException
//   You do not have sufficient access to perform this action.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/ListUsageTotals
func (c *Inspector2) ListUsageTotals(input *ListUsageTotalsInput) (*ListUsageTotalsOutput, error) {
	req, out := c.ListUsageTotalsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

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/inspector2-2020-06-08/TagResource
func (c *Inspector2) 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 Inspector2.
//
// Adds 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 Inspector2's
// API operation TagResource for usage and error information.
//
// Returned Error Types:
//   * BadRequestException
//   One or more tags submitted as part of the request is not valid.
//
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * ResourceNotFoundException
//   The operation tried to access an invalid resource. Make sure the resource
//   is specified correctly.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/TagResource
func (c *Inspector2) 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 *Inspector2) 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/inspector2-2020-06-08/UntagResource
func (c *Inspector2) 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 Inspector2.
//
// Removes 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 Inspector2's
// API operation UntagResource for usage and error information.
//
// Returned Error Types:
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * ResourceNotFoundException
//   The operation tried to access an invalid resource. Make sure the resource
//   is specified correctly.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/UntagResource
func (c *Inspector2) 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 *Inspector2) 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 opUpdateFilter = "UpdateFilter"

// UpdateFilterRequest generates a "aws/request.Request" representing the
// client's request for the UpdateFilter 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 UpdateFilter for more information on using the UpdateFilter
// 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 UpdateFilterRequest method.
//    req, resp := client.UpdateFilterRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/UpdateFilter
func (c *Inspector2) UpdateFilterRequest(input *UpdateFilterInput) (req *request.Request, output *UpdateFilterOutput) {
	op := &request.Operation{
		Name:       opUpdateFilter,
		HTTPMethod: "POST",
		HTTPPath:   "/filters/update",
	}

	if input == nil {
		input = &UpdateFilterInput{}
	}

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

// UpdateFilter API operation for Inspector2.
//
// Specifies the action that is to be applied to the findings that match the
// filter.
//
// 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 Inspector2's
// API operation UpdateFilter for usage and error information.
//
// Returned Error Types:
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * AccessDeniedException
//   You do not have sufficient access to perform this action.
//
//   * ResourceNotFoundException
//   The operation tried to access an invalid resource. Make sure the resource
//   is specified correctly.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/UpdateFilter
func (c *Inspector2) UpdateFilter(input *UpdateFilterInput) (*UpdateFilterOutput, error) {
	req, out := c.UpdateFilterRequest(input)
	return out, req.Send()
}

// UpdateFilterWithContext is the same as UpdateFilter with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateFilter 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 *Inspector2) UpdateFilterWithContext(ctx aws.Context, input *UpdateFilterInput, opts ...request.Option) (*UpdateFilterOutput, error) {
	req, out := c.UpdateFilterRequest(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/inspector2-2020-06-08/UpdateOrganizationConfiguration
func (c *Inspector2) UpdateOrganizationConfigurationRequest(input *UpdateOrganizationConfigurationInput) (req *request.Request, output *UpdateOrganizationConfigurationOutput) {
	op := &request.Operation{
		Name:       opUpdateOrganizationConfiguration,
		HTTPMethod: "POST",
		HTTPPath:   "/organizationconfiguration/update",
	}

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

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

// UpdateOrganizationConfiguration API operation for Inspector2.
//
// Updates the configurations for your Amazon Inspector 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 Inspector2's
// API operation UpdateOrganizationConfiguration for usage and error information.
//
// Returned Error Types:
//   * AccessDeniedException
//   You do not have sufficient access to perform this action.
//
//   * ValidationException
//   The request has failed validation due to missing required fields or having
//   invalid inputs.
//
//   * ThrottlingException
//   The limit on the number of requests per second was exceeded.
//
//   * InternalServerException
//   The request has failed due to an internal failure of the Amazon Inspector
//   service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/UpdateOrganizationConfiguration
func (c *Inspector2) 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 *Inspector2) 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()
}

// You do not have sufficient access to perform this action.
type AccessDeniedException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

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

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

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

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

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

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

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

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

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

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

// An Amazon Web Services account within your environment that Amazon Inspector
// has been enabled for.
type Account struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account.
	//
	// AccountId is a required field
	AccountId *string `locationName:"accountId" min:"12" type:"string" required:"true"`

	// Details of the status of Amazon Inspector scans by resource type.
	//
	// ResourceStatus is a required field
	ResourceStatus *ResourceStatus `locationName:"resourceStatus" type:"structure" required:"true"`

	// The status of Amazon Inspector for the account.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"Status"`
}

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

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

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

// SetResourceStatus sets the ResourceStatus field's value.
func (s *Account) SetResourceStatus(v *ResourceStatus) *Account {
	s.ResourceStatus = v
	return s
}

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

// An object that contains details about an aggregation response based on Amazon
// Web Services accounts.
type AccountAggregation struct {
	_ struct{} `type:"structure"`

	// The type of finding.
	FindingType *string `locationName:"findingType" type:"string" enum:"AggregationFindingType"`

	// The type of resource.
	ResourceType *string `locationName:"resourceType" type:"string" enum:"AggregationResourceType"`

	// The value to sort by.
	SortBy *string `locationName:"sortBy" type:"string" enum:"AccountSortBy"`

	// The sort order (ascending or descending).
	SortOrder *string `locationName:"sortOrder" 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 AccountAggregation) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

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

// An aggregation of findings by Amazon Web Services account ID.
type AccountAggregationResponse struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID.
	AccountId *string `locationName:"accountId" min:"12" type:"string"`

	// The number of findings by severity.
	SeverityCounts *SeverityCounts `locationName:"severityCounts" type:"structure"`
}

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

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

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

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

// An object with details the status of an Amazon Web Services account within
// your Amazon Inspector environment
type AccountState struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID.
	//
	// AccountId is a required field
	AccountId *string `locationName:"accountId" min:"12" type:"string" required:"true"`

	// An object detailing which resources Amazon Inspector is enabled to scan for
	// the account.
	//
	// ResourceState is a required field
	ResourceState *ResourceState `locationName:"resourceState" type:"structure" required:"true"`

	// An object detailing the status of Amazon Inspector for the account.
	//
	// State is a required field
	State *State `locationName:"state" 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 AccountState) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetResourceState sets the ResourceState field's value.
func (s *AccountState) SetResourceState(v *ResourceState) *AccountState {
	s.ResourceState = v
	return s
}

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

// Contains details about an aggregation request.
type AggregationRequest struct {
	_ struct{} `type:"structure"`

	// An object that contains details about an aggregation request based on Amazon
	// Web Services account IDs.
	AccountAggregation *AccountAggregation `locationName:"accountAggregation" type:"structure"`

	// An object that contains details about an aggregation request based on Amazon
	// Machine Images (AMIs).
	AmiAggregation *AmiAggregation `locationName:"amiAggregation" type:"structure"`

	// An object that contains details about an aggregation request based on Amazon
	// ECR container images.
	AwsEcrContainerAggregation *AwsEcrContainerAggregation `locationName:"awsEcrContainerAggregation" type:"structure"`

	// An object that contains details about an aggregation request based on Amazon
	// EC2 instances.
	Ec2InstanceAggregation *Ec2InstanceAggregation `locationName:"ec2InstanceAggregation" type:"structure"`

	// An object that contains details about an aggregation request based on finding
	// types.
	FindingTypeAggregation *FindingTypeAggregation `locationName:"findingTypeAggregation" type:"structure"`

	// An object that contains details about an aggregation request based on container
	// image layers.
	ImageLayerAggregation *ImageLayerAggregation `locationName:"imageLayerAggregation" type:"structure"`

	// An object that contains details about an aggregation request based on operating
	// system package type.
	PackageAggregation *PackageAggregation `locationName:"packageAggregation" type:"structure"`

	// An object that contains details about an aggregation request based on Amazon
	// ECR repositories.
	RepositoryAggregation *RepositoryAggregation `locationName:"repositoryAggregation" type:"structure"`

	// An object that contains details about an aggregation request based on finding
	// title.
	TitleAggregation *TitleAggregation `locationName:"titleAggregation" 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 AggregationRequest) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *AggregationRequest) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AggregationRequest"}
	if s.AmiAggregation != nil {
		if err := s.AmiAggregation.Validate(); err != nil {
			invalidParams.AddNested("AmiAggregation", err.(request.ErrInvalidParams))
		}
	}
	if s.AwsEcrContainerAggregation != nil {
		if err := s.AwsEcrContainerAggregation.Validate(); err != nil {
			invalidParams.AddNested("AwsEcrContainerAggregation", err.(request.ErrInvalidParams))
		}
	}
	if s.Ec2InstanceAggregation != nil {
		if err := s.Ec2InstanceAggregation.Validate(); err != nil {
			invalidParams.AddNested("Ec2InstanceAggregation", err.(request.ErrInvalidParams))
		}
	}
	if s.ImageLayerAggregation != nil {
		if err := s.ImageLayerAggregation.Validate(); err != nil {
			invalidParams.AddNested("ImageLayerAggregation", err.(request.ErrInvalidParams))
		}
	}
	if s.PackageAggregation != nil {
		if err := s.PackageAggregation.Validate(); err != nil {
			invalidParams.AddNested("PackageAggregation", err.(request.ErrInvalidParams))
		}
	}
	if s.RepositoryAggregation != nil {
		if err := s.RepositoryAggregation.Validate(); err != nil {
			invalidParams.AddNested("RepositoryAggregation", err.(request.ErrInvalidParams))
		}
	}
	if s.TitleAggregation != nil {
		if err := s.TitleAggregation.Validate(); err != nil {
			invalidParams.AddNested("TitleAggregation", err.(request.ErrInvalidParams))
		}
	}

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

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

// SetAmiAggregation sets the AmiAggregation field's value.
func (s *AggregationRequest) SetAmiAggregation(v *AmiAggregation) *AggregationRequest {
	s.AmiAggregation = v
	return s
}

// SetAwsEcrContainerAggregation sets the AwsEcrContainerAggregation field's value.
func (s *AggregationRequest) SetAwsEcrContainerAggregation(v *AwsEcrContainerAggregation) *AggregationRequest {
	s.AwsEcrContainerAggregation = v
	return s
}

// SetEc2InstanceAggregation sets the Ec2InstanceAggregation field's value.
func (s *AggregationRequest) SetEc2InstanceAggregation(v *Ec2InstanceAggregation) *AggregationRequest {
	s.Ec2InstanceAggregation = v
	return s
}

// SetFindingTypeAggregation sets the FindingTypeAggregation field's value.
func (s *AggregationRequest) SetFindingTypeAggregation(v *FindingTypeAggregation) *AggregationRequest {
	s.FindingTypeAggregation = v
	return s
}

// SetImageLayerAggregation sets the ImageLayerAggregation field's value.
func (s *AggregationRequest) SetImageLayerAggregation(v *ImageLayerAggregation) *AggregationRequest {
	s.ImageLayerAggregation = v
	return s
}

// SetPackageAggregation sets the PackageAggregation field's value.
func (s *AggregationRequest) SetPackageAggregation(v *PackageAggregation) *AggregationRequest {
	s.PackageAggregation = v
	return s
}

// SetRepositoryAggregation sets the RepositoryAggregation field's value.
func (s *AggregationRequest) SetRepositoryAggregation(v *RepositoryAggregation) *AggregationRequest {
	s.RepositoryAggregation = v
	return s
}

// SetTitleAggregation sets the TitleAggregation field's value.
func (s *AggregationRequest) SetTitleAggregation(v *TitleAggregation) *AggregationRequest {
	s.TitleAggregation = v
	return s
}

// A structure that contains details about the results of an aggregation type.
type AggregationResponse struct {
	_ struct{} `type:"structure"`

	// An object that contains details about an aggregation response based on Amazon
	// Web Services account IDs.
	AccountAggregation *AccountAggregationResponse `locationName:"accountAggregation" type:"structure"`

	// An object that contains details about an aggregation response based on Amazon
	// Machine Images (AMIs).
	AmiAggregation *AmiAggregationResponse `locationName:"amiAggregation" type:"structure"`

	// An object that contains details about an aggregation response based on Amazon
	// ECR container images.
	AwsEcrContainerAggregation *AwsEcrContainerAggregationResponse `locationName:"awsEcrContainerAggregation" type:"structure"`

	// An object that contains details about an aggregation response based on Amazon
	// EC2 instances.
	Ec2InstanceAggregation *Ec2InstanceAggregationResponse `locationName:"ec2InstanceAggregation" type:"structure"`

	// An object that contains details about an aggregation response based on finding
	// types.
	FindingTypeAggregation *FindingTypeAggregationResponse `locationName:"findingTypeAggregation" type:"structure"`

	// An object that contains details about an aggregation response based on container
	// image layers.
	ImageLayerAggregation *ImageLayerAggregationResponse `locationName:"imageLayerAggregation" type:"structure"`

	// An object that contains details about an aggregation response based on operating
	// system package type.
	PackageAggregation *PackageAggregationResponse `locationName:"packageAggregation" type:"structure"`

	// An object that contains details about an aggregation response based on Amazon
	// ECR repositories.
	RepositoryAggregation *RepositoryAggregationResponse `locationName:"repositoryAggregation" type:"structure"`

	// An object that contains details about an aggregation response based on finding
	// title.
	TitleAggregation *TitleAggregationResponse `locationName:"titleAggregation" 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 AggregationResponse) String() string {
	return awsutil.Prettify(s)
}

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

// SetAccountAggregation sets the AccountAggregation field's value.
func (s *AggregationResponse) SetAccountAggregation(v *AccountAggregationResponse) *AggregationResponse {
	s.AccountAggregation = v
	return s
}

// SetAmiAggregation sets the AmiAggregation field's value.
func (s *AggregationResponse) SetAmiAggregation(v *AmiAggregationResponse) *AggregationResponse {
	s.AmiAggregation = v
	return s
}

// SetAwsEcrContainerAggregation sets the AwsEcrContainerAggregation field's value.
func (s *AggregationResponse) SetAwsEcrContainerAggregation(v *AwsEcrContainerAggregationResponse) *AggregationResponse {
	s.AwsEcrContainerAggregation = v
	return s
}

// SetEc2InstanceAggregation sets the Ec2InstanceAggregation field's value.
func (s *AggregationResponse) SetEc2InstanceAggregation(v *Ec2InstanceAggregationResponse) *AggregationResponse {
	s.Ec2InstanceAggregation = v
	return s
}

// SetFindingTypeAggregation sets the FindingTypeAggregation field's value.
func (s *AggregationResponse) SetFindingTypeAggregation(v *FindingTypeAggregationResponse) *AggregationResponse {
	s.FindingTypeAggregation = v
	return s
}

// SetImageLayerAggregation sets the ImageLayerAggregation field's value.
func (s *AggregationResponse) SetImageLayerAggregation(v *ImageLayerAggregationResponse) *AggregationResponse {
	s.ImageLayerAggregation = v
	return s
}

// SetPackageAggregation sets the PackageAggregation field's value.
func (s *AggregationResponse) SetPackageAggregation(v *PackageAggregationResponse) *AggregationResponse {
	s.PackageAggregation = v
	return s
}

// SetRepositoryAggregation sets the RepositoryAggregation field's value.
func (s *AggregationResponse) SetRepositoryAggregation(v *RepositoryAggregationResponse) *AggregationResponse {
	s.RepositoryAggregation = v
	return s
}

// SetTitleAggregation sets the TitleAggregation field's value.
func (s *AggregationResponse) SetTitleAggregation(v *TitleAggregationResponse) *AggregationResponse {
	s.TitleAggregation = v
	return s
}

// The details that define an aggregation based on Amazon machine images (AMIs).
type AmiAggregation struct {
	_ struct{} `type:"structure"`

	// The IDs of AMIs to aggregate findings for.
	Amis []*StringFilter `locationName:"amis" min:"1" type:"list"`

	// The value to sort results by.
	SortBy *string `locationName:"sortBy" type:"string" enum:"AmiSortBy"`

	// The order to sort results by.
	SortOrder *string `locationName:"sortOrder" 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 AmiAggregation) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAmis sets the Amis field's value.
func (s *AmiAggregation) SetAmis(v []*StringFilter) *AmiAggregation {
	s.Amis = v
	return s
}

// SetSortBy sets the SortBy field's value.
func (s *AmiAggregation) SetSortBy(v string) *AmiAggregation {
	s.SortBy = &v
	return s
}

// SetSortOrder sets the SortOrder field's value.
func (s *AmiAggregation) SetSortOrder(v string) *AmiAggregation {
	s.SortOrder = &v
	return s
}

// A response that contains the results of a finding aggregation by AMI.
type AmiAggregationResponse struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID that the AMI belongs.
	AccountId *string `locationName:"accountId" min:"12" type:"string"`

	// The IDs of Amazon EC2 instances using this AMI.
	AffectedInstances *int64 `locationName:"affectedInstances" type:"long"`

	// The ID of the AMI that findings were aggregated for.
	//
	// Ami is a required field
	Ami *string `locationName:"ami" type:"string" required:"true"`

	// An object that contains the count of matched findings per severity.
	SeverityCounts *SeverityCounts `locationName:"severityCounts" type:"structure"`
}

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

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

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

// SetAffectedInstances sets the AffectedInstances field's value.
func (s *AmiAggregationResponse) SetAffectedInstances(v int64) *AmiAggregationResponse {
	s.AffectedInstances = &v
	return s
}

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

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

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

	// The Amazon Web Services account ID of the member account to be associated.
	//
	// AccountId is a required field
	AccountId *string `locationName:"accountId" min:"12" 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 AssociateMemberInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

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

	// The Amazon Web Services account ID of the successfully associated member
	// account.
	//
	// AccountId is a required field
	AccountId *string `locationName:"accountId" min:"12" 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 AssociateMemberOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// Represents which scan types are automatically enabled for new members of
// your Amazon Inspector organization.
type AutoEnable struct {
	_ struct{} `type:"structure"`

	// Represents whether Amazon EC2 scans are automatically enabled for new members
	// of your Amazon Inspector organization.
	//
	// Ec2 is a required field
	Ec2 *bool `locationName:"ec2" type:"boolean" required:"true"`

	// Represents whether Amazon ECR scans are automatically enabled for new members
	// of your Amazon Inspector organization.
	//
	// Ecr is a required field
	Ecr *bool `locationName:"ecr" type:"boolean" 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 AutoEnable) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetEc2 sets the Ec2 field's value.
func (s *AutoEnable) SetEc2(v bool) *AutoEnable {
	s.Ec2 = &v
	return s
}

// SetEcr sets the Ecr field's value.
func (s *AutoEnable) SetEcr(v bool) *AutoEnable {
	s.Ecr = &v
	return s
}

// Details of the Amazon EC2 instance involved in a finding.
type AwsEc2InstanceDetails struct {
	_ struct{} `type:"structure"`

	// The IAM instance profile ARN of the Amazon EC2 instance.
	IamInstanceProfileArn *string `locationName:"iamInstanceProfileArn" min:"1" type:"string"`

	// The image ID of the Amazon EC2 instance.
	ImageId *string `locationName:"imageId" min:"1" type:"string"`

	// The IPv4 addresses of the Amazon EC2 instance.
	IpV4Addresses []*string `locationName:"ipV4Addresses" type:"list"`

	// The IPv6 addresses of the Amazon EC2 instance.
	IpV6Addresses []*string `locationName:"ipV6Addresses" type:"list"`

	// The name of the key pair used to launch the Amazon EC2 instance.
	KeyName *string `locationName:"keyName" min:"1" type:"string"`

	// The date and time the Amazon EC2 instance was launched at.
	LaunchedAt *time.Time `locationName:"launchedAt" type:"timestamp"`

	// The platform of the Amazon EC2 instance.
	Platform *string `locationName:"platform" min:"1" type:"string"`

	// The subnet ID of the Amazon EC2 instance.
	SubnetId *string `locationName:"subnetId" min:"1" type:"string"`

	// The type of the Amazon EC2 instance.
	Type *string `locationName:"type" min:"1" type:"string"`

	// The VPC ID of the Amazon EC2 instance.
	VpcId *string `locationName:"vpcId" min:"1" type:"string"`
}

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

// SetPlatform sets the Platform field's value.
func (s *AwsEc2InstanceDetails) SetPlatform(v string) *AwsEc2InstanceDetails {
	s.Platform = &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
}

// SetVpcId sets the VpcId field's value.
func (s *AwsEc2InstanceDetails) SetVpcId(v string) *AwsEc2InstanceDetails {
	s.VpcId = &v
	return s
}

// An aggregation of information about Amazon ECR containers.
type AwsEcrContainerAggregation struct {
	_ struct{} `type:"structure"`

	// The architecture of the containers.
	Architectures []*StringFilter `locationName:"architectures" min:"1" type:"list"`

	// The image SHA values.
	ImageShas []*StringFilter `locationName:"imageShas" min:"1" type:"list"`

	// The image tags.
	ImageTags []*StringFilter `locationName:"imageTags" min:"1" type:"list"`

	// The container repositories.
	Repositories []*StringFilter `locationName:"repositories" min:"1" type:"list"`

	// The container resource IDs.
	ResourceIds []*StringFilter `locationName:"resourceIds" min:"1" type:"list"`

	// The value to sort by.
	SortBy *string `locationName:"sortBy" type:"string" enum:"AwsEcrContainerSortBy"`

	// The sort order (ascending or descending).
	SortOrder *string `locationName:"sortOrder" 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 AwsEcrContainerAggregation) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetArchitectures sets the Architectures field's value.
func (s *AwsEcrContainerAggregation) SetArchitectures(v []*StringFilter) *AwsEcrContainerAggregation {
	s.Architectures = v
	return s
}

// SetImageShas sets the ImageShas field's value.
func (s *AwsEcrContainerAggregation) SetImageShas(v []*StringFilter) *AwsEcrContainerAggregation {
	s.ImageShas = v
	return s
}

// SetImageTags sets the ImageTags field's value.
func (s *AwsEcrContainerAggregation) SetImageTags(v []*StringFilter) *AwsEcrContainerAggregation {
	s.ImageTags = v
	return s
}

// SetRepositories sets the Repositories field's value.
func (s *AwsEcrContainerAggregation) SetRepositories(v []*StringFilter) *AwsEcrContainerAggregation {
	s.Repositories = v
	return s
}

// SetResourceIds sets the ResourceIds field's value.
func (s *AwsEcrContainerAggregation) SetResourceIds(v []*StringFilter) *AwsEcrContainerAggregation {
	s.ResourceIds = v
	return s
}

// SetSortBy sets the SortBy field's value.
func (s *AwsEcrContainerAggregation) SetSortBy(v string) *AwsEcrContainerAggregation {
	s.SortBy = &v
	return s
}

// SetSortOrder sets the SortOrder field's value.
func (s *AwsEcrContainerAggregation) SetSortOrder(v string) *AwsEcrContainerAggregation {
	s.SortOrder = &v
	return s
}

// An aggregation of information about Amazon ECR containers.
type AwsEcrContainerAggregationResponse struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID of the account that owns the container.
	AccountId *string `locationName:"accountId" min:"12" type:"string"`

	// The architecture of the container.
	Architecture *string `locationName:"architecture" type:"string"`

	// The SHA value of the container image.
	ImageSha *string `locationName:"imageSha" type:"string"`

	// The container image stags.
	ImageTags []*string `locationName:"imageTags" type:"list"`

	// The container repository.
	Repository *string `locationName:"repository" type:"string"`

	// The resource ID of the container.
	//
	// ResourceId is a required field
	ResourceId *string `locationName:"resourceId" min:"1" type:"string" required:"true"`

	// The number of finding by severity.
	SeverityCounts *SeverityCounts `locationName:"severityCounts" type:"structure"`
}

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

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

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

// SetArchitecture sets the Architecture field's value.
func (s *AwsEcrContainerAggregationResponse) SetArchitecture(v string) *AwsEcrContainerAggregationResponse {
	s.Architecture = &v
	return s
}

// SetImageSha sets the ImageSha field's value.
func (s *AwsEcrContainerAggregationResponse) SetImageSha(v string) *AwsEcrContainerAggregationResponse {
	s.ImageSha = &v
	return s
}

// SetImageTags sets the ImageTags field's value.
func (s *AwsEcrContainerAggregationResponse) SetImageTags(v []*string) *AwsEcrContainerAggregationResponse {
	s.ImageTags = v
	return s
}

// SetRepository sets the Repository field's value.
func (s *AwsEcrContainerAggregationResponse) SetRepository(v string) *AwsEcrContainerAggregationResponse {
	s.Repository = &v
	return s
}

// SetResourceId sets the ResourceId field's value.
func (s *AwsEcrContainerAggregationResponse) SetResourceId(v string) *AwsEcrContainerAggregationResponse {
	s.ResourceId = &v
	return s
}

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

// The image details of the Amazon ECR container image.
type AwsEcrContainerImageDetails struct {
	_ struct{} `type:"structure"`

	// The architecture of the Amazon ECR container image.
	Architecture *string `locationName:"architecture" min:"1" type:"string"`

	// The image author of the Amazon ECR container image.
	Author *string `locationName:"author" type:"string"`

	// The image hash of the Amazon ECR container image.
	//
	// ImageHash is a required field
	ImageHash *string `locationName:"imageHash" min:"71" type:"string" required:"true"`

	// The image tags attached to the Amazon ECR container image.
	ImageTags []*string `locationName:"imageTags" type:"list"`

	// The platform of the Amazon ECR container image.
	Platform *string `locationName:"platform" min:"1" type:"string"`

	// The date and time the Amazon ECR container image was pushed.
	PushedAt *time.Time `locationName:"pushedAt" type:"timestamp"`

	// The registry the Amazon ECR container image belongs to.
	//
	// Registry is a required field
	Registry *string `locationName:"registry" min:"1" type:"string" required:"true"`

	// The name of the repository the Amazon ECR container image resides in.
	//
	// RepositoryName is a required field
	RepositoryName *string `locationName:"repositoryName" min:"1" type:"string" required:"true"`
}

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

// SetAuthor sets the Author field's value.
func (s *AwsEcrContainerImageDetails) SetAuthor(v string) *AwsEcrContainerImageDetails {
	s.Author = &v
	return s
}

// SetImageHash sets the ImageHash field's value.
func (s *AwsEcrContainerImageDetails) SetImageHash(v string) *AwsEcrContainerImageDetails {
	s.ImageHash = &v
	return s
}

// SetImageTags sets the ImageTags field's value.
func (s *AwsEcrContainerImageDetails) SetImageTags(v []*string) *AwsEcrContainerImageDetails {
	s.ImageTags = v
	return s
}

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

// SetPushedAt sets the PushedAt field's value.
func (s *AwsEcrContainerImageDetails) SetPushedAt(v time.Time) *AwsEcrContainerImageDetails {
	s.PushedAt = &v
	return s
}

// SetRegistry sets the Registry field's value.
func (s *AwsEcrContainerImageDetails) SetRegistry(v string) *AwsEcrContainerImageDetails {
	s.Registry = &v
	return s
}

// SetRepositoryName sets the RepositoryName field's value.
func (s *AwsEcrContainerImageDetails) SetRepositoryName(v string) *AwsEcrContainerImageDetails {
	s.RepositoryName = &v
	return s
}

// One or more tags submitted as part of the request is not valid.
type BadRequestException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

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

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

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

func newErrorBadRequestException(v protocol.ResponseMetadata) error {
	return &BadRequestException{
		RespMetadata: v,
	}
}

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

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

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

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

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

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

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

	// The 12-digit Amazon Web Services account IDs of the accounts to retrieve
	// Amazon Inspector status for.
	AccountIds []*string `locationName:"accountIds" 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 BatchGetAccountStatusInput) String() string {
	return awsutil.Prettify(s)
}

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

// SetAccountIds sets the AccountIds field's value.
func (s *BatchGetAccountStatusInput) SetAccountIds(v []*string) *BatchGetAccountStatusInput {
	s.AccountIds = v
	return s
}

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

	// An array of objects that provide details on the status of Amazon Inspector
	// for each of the requested accounts.
	//
	// Accounts is a required field
	Accounts []*AccountState `locationName:"accounts" type:"list" required:"true"`

	// An array of objects detailing any accounts that failed to enable Amazon Inspector
	// and why.
	FailedAccounts []*FailedAccount `locationName:"failedAccounts" 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 BatchGetAccountStatusOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetAccounts sets the Accounts field's value.
func (s *BatchGetAccountStatusOutput) SetAccounts(v []*AccountState) *BatchGetAccountStatusOutput {
	s.Accounts = v
	return s
}

// SetFailedAccounts sets the FailedAccounts field's value.
func (s *BatchGetAccountStatusOutput) SetFailedAccounts(v []*FailedAccount) *BatchGetAccountStatusOutput {
	s.FailedAccounts = v
	return s
}

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

	// The account IDs to get free trial status for.
	//
	// AccountIds is a required field
	AccountIds []*string `locationName:"accountIds" 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 BatchGetFreeTrialInfoInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAccountIds sets the AccountIds field's value.
func (s *BatchGetFreeTrialInfoInput) SetAccountIds(v []*string) *BatchGetFreeTrialInfoInput {
	s.AccountIds = v
	return s
}

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

	// An array of objects that provide Amazon Inspector free trial details for
	// each of the requested accounts.
	//
	// Accounts is a required field
	Accounts []*FreeTrialAccountInfo `locationName:"accounts" type:"list" required:"true"`

	// An array of objects detailing any accounts that free trial data could not
	// be returned for.
	//
	// FailedAccounts is a required field
	FailedAccounts []*FreeTrialInfoError `locationName:"failedAccounts" 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 BatchGetFreeTrialInfoOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetAccounts sets the Accounts field's value.
func (s *BatchGetFreeTrialInfoOutput) SetAccounts(v []*FreeTrialAccountInfo) *BatchGetFreeTrialInfoOutput {
	s.Accounts = v
	return s
}

// SetFailedAccounts sets the FailedAccounts field's value.
func (s *BatchGetFreeTrialInfoOutput) SetFailedAccounts(v []*FreeTrialInfoError) *BatchGetFreeTrialInfoOutput {
	s.FailedAccounts = v
	return s
}

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

	// The ID of the report to be canceled.
	//
	// ReportId is a required field
	ReportId *string `locationName:"reportId" 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 CancelFindingsReportInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetReportId sets the ReportId field's value.
func (s *CancelFindingsReportInput) SetReportId(v string) *CancelFindingsReportInput {
	s.ReportId = &v
	return s
}

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

	// The ID of the canceled report.
	//
	// ReportId is a required field
	ReportId *string `locationName:"reportId" 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 CancelFindingsReportOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetReportId sets the ReportId field's value.
func (s *CancelFindingsReportOutput) SetReportId(v string) *CancelFindingsReportOutput {
	s.ReportId = &v
	return s
}

// A conflict occurred.
type ConflictException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

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

	// The ID of the conflicting resource.
	//
	// ResourceId is a required field
	ResourceId *string `locationName:"resourceId" type:"string" required:"true"`

	// The type of the conflicting resource.
	//
	// ResourceType is a required field
	ResourceType *string `locationName:"resourceType" 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 ConflictException) String() string {
	return awsutil.Prettify(s)
}

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

func newErrorConflictException(v protocol.ResponseMetadata) error {
	return &ConflictException{
		RespMetadata: v,
	}
}

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

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

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

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

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

// a structure that contains information on the count of resources within a
// group.
type Counts struct {
	_ struct{} `type:"structure"`

	// The number of resources.
	Count *int64 `locationName:"count" type:"long"`

	// The key associated with this group
	GroupKey *string `locationName:"groupKey" type:"string" enum:"GroupKey"`
}

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

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

// SetCount sets the Count field's value.
func (s *Counts) SetCount(v int64) *Counts {
	s.Count = &v
	return s
}

// SetGroupKey sets the GroupKey field's value.
func (s *Counts) SetGroupKey(v string) *Counts {
	s.GroupKey = &v
	return s
}

// A structure that identifies filter criteria for GetCoverageStatistics.
type CoverageFilterCriteria struct {
	_ struct{} `type:"structure"`

	// An array of Amazon Web Services account IDs to return coverage statistics
	// for.
	AccountId []*CoverageStringFilter `locationName:"accountId" min:"1" type:"list"`

	// The Amazon EC2 instance tags to filter on.
	Ec2InstanceTags []*CoverageMapFilter `locationName:"ec2InstanceTags" min:"1" type:"list"`

	// The Amazon ECR image tags to filter on.
	EcrImageTags []*CoverageStringFilter `locationName:"ecrImageTags" min:"1" type:"list"`

	// The Amazon ECR repository name to filter on.
	EcrRepositoryName []*CoverageStringFilter `locationName:"ecrRepositoryName" min:"1" type:"list"`

	// An array of Amazon Web Services resource IDs to return coverage statistics
	// for.
	ResourceId []*CoverageStringFilter `locationName:"resourceId" min:"1" type:"list"`

	// An array of Amazon Web Services resource types to return coverage statistics
	// for.
	ResourceType []*CoverageStringFilter `locationName:"resourceType" min:"1" type:"list"`

	// The scan status code to filter on.
	ScanStatusCode []*CoverageStringFilter `locationName:"scanStatusCode" min:"1" type:"list"`

	// The scan status reason to filter on.
	ScanStatusReason []*CoverageStringFilter `locationName:"scanStatusReason" min:"1" type:"list"`

	// An array of Amazon Inspector scan types to return coverage statistics for.
	ScanType []*CoverageStringFilter `locationName:"scanType" 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 CoverageFilterCriteria) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *CoverageFilterCriteria) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CoverageFilterCriteria"}
	if s.AccountId != nil && len(s.AccountId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AccountId", 1))
	}
	if s.Ec2InstanceTags != nil && len(s.Ec2InstanceTags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Ec2InstanceTags", 1))
	}
	if s.EcrImageTags != nil && len(s.EcrImageTags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EcrImageTags", 1))
	}
	if s.EcrRepositoryName != nil && len(s.EcrRepositoryName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EcrRepositoryName", 1))
	}
	if s.ResourceId != nil && len(s.ResourceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceId", 1))
	}
	if s.ResourceType != nil && len(s.ResourceType) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceType", 1))
	}
	if s.ScanStatusCode != nil && len(s.ScanStatusCode) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ScanStatusCode", 1))
	}
	if s.ScanStatusReason != nil && len(s.ScanStatusReason) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ScanStatusReason", 1))
	}
	if s.ScanType != nil && len(s.ScanType) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ScanType", 1))
	}
	if s.AccountId != nil {
		for i, v := range s.AccountId {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AccountId", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Ec2InstanceTags != nil {
		for i, v := range s.Ec2InstanceTags {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Ec2InstanceTags", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.EcrImageTags != nil {
		for i, v := range s.EcrImageTags {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "EcrImageTags", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.EcrRepositoryName != nil {
		for i, v := range s.EcrRepositoryName {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "EcrRepositoryName", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ResourceId != nil {
		for i, v := range s.ResourceId {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ResourceId", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ResourceType != nil {
		for i, v := range s.ResourceType {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ResourceType", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ScanStatusCode != nil {
		for i, v := range s.ScanStatusCode {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ScanStatusCode", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ScanStatusReason != nil {
		for i, v := range s.ScanStatusReason {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ScanStatusReason", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ScanType != nil {
		for i, v := range s.ScanType {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ScanType", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetAccountId sets the AccountId field's value.
func (s *CoverageFilterCriteria) SetAccountId(v []*CoverageStringFilter) *CoverageFilterCriteria {
	s.AccountId = v
	return s
}

// SetEc2InstanceTags sets the Ec2InstanceTags field's value.
func (s *CoverageFilterCriteria) SetEc2InstanceTags(v []*CoverageMapFilter) *CoverageFilterCriteria {
	s.Ec2InstanceTags = v
	return s
}

// SetEcrImageTags sets the EcrImageTags field's value.
func (s *CoverageFilterCriteria) SetEcrImageTags(v []*CoverageStringFilter) *CoverageFilterCriteria {
	s.EcrImageTags = v
	return s
}

// SetEcrRepositoryName sets the EcrRepositoryName field's value.
func (s *CoverageFilterCriteria) SetEcrRepositoryName(v []*CoverageStringFilter) *CoverageFilterCriteria {
	s.EcrRepositoryName = v
	return s
}

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

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

// SetScanStatusCode sets the ScanStatusCode field's value.
func (s *CoverageFilterCriteria) SetScanStatusCode(v []*CoverageStringFilter) *CoverageFilterCriteria {
	s.ScanStatusCode = v
	return s
}

// SetScanStatusReason sets the ScanStatusReason field's value.
func (s *CoverageFilterCriteria) SetScanStatusReason(v []*CoverageStringFilter) *CoverageFilterCriteria {
	s.ScanStatusReason = v
	return s
}

// SetScanType sets the ScanType field's value.
func (s *CoverageFilterCriteria) SetScanType(v []*CoverageStringFilter) *CoverageFilterCriteria {
	s.ScanType = v
	return s
}

// Contains details of a coverage map filter.
type CoverageMapFilter struct {
	_ struct{} `type:"structure"`

	// The operator to compare coverage on.
	//
	// Comparison is a required field
	Comparison *string `locationName:"comparison" type:"string" required:"true" enum:"CoverageMapComparison"`

	// The tag key associated with the coverage map filter.
	//
	// Key is a required field
	Key *string `locationName:"key" min:"1" type:"string" required:"true"`

	// The tag value associated with the coverage map filter.
	Value *string `locationName:"value" min:"1" type:"string"`
}

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

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

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

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

// SetComparison sets the Comparison field's value.
func (s *CoverageMapFilter) SetComparison(v string) *CoverageMapFilter {
	s.Comparison = &v
	return s
}

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

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

// Contains details of a coverage string filter.
type CoverageStringFilter struct {
	_ struct{} `type:"structure"`

	// The operator to compare strings on.
	//
	// Comparison is a required field
	Comparison *string `locationName:"comparison" type:"string" required:"true" enum:"CoverageStringComparison"`

	// The value to compare strings on.
	//
	// Value is a required field
	Value *string `locationName:"value" min:"1" type:"string" required:"true"`
}

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

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

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

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

// SetComparison sets the Comparison field's value.
func (s *CoverageStringFilter) SetComparison(v string) *CoverageStringFilter {
	s.Comparison = &v
	return s
}

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

// An object that contains details about a resource covered by Amazon Inspector.
type CoveredResource struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID of the covered resource.
	//
	// AccountId is a required field
	AccountId *string `locationName:"accountId" min:"12" type:"string" required:"true"`

	// The ID of the covered resource.
	//
	// ResourceId is a required field
	ResourceId *string `locationName:"resourceId" min:"10" type:"string" required:"true"`

	// An object that contains details about the metadata.
	ResourceMetadata *ResourceScanMetadata `locationName:"resourceMetadata" type:"structure"`

	// The type of the covered resource.
	//
	// ResourceType is a required field
	ResourceType *string `locationName:"resourceType" type:"string" required:"true" enum:"CoverageResourceType"`

	// The status of the scan covering the resource.
	ScanStatus *ScanStatus `locationName:"scanStatus" type:"structure"`

	// The Amazon Inspector scan type covering the resource.
	//
	// ScanType is a required field
	ScanType *string `locationName:"scanType" type:"string" required:"true" enum:"ScanType"`
}

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

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

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

// SetResourceId sets the ResourceId field's value.
func (s *CoveredResource) SetResourceId(v string) *CoveredResource {
	s.ResourceId = &v
	return s
}

// SetResourceMetadata sets the ResourceMetadata field's value.
func (s *CoveredResource) SetResourceMetadata(v *ResourceScanMetadata) *CoveredResource {
	s.ResourceMetadata = v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *CoveredResource) SetResourceType(v string) *CoveredResource {
	s.ResourceType = &v
	return s
}

// SetScanStatus sets the ScanStatus field's value.
func (s *CoveredResource) SetScanStatus(v *ScanStatus) *CoveredResource {
	s.ScanStatus = v
	return s
}

// SetScanType sets the ScanType field's value.
func (s *CoveredResource) SetScanType(v string) *CoveredResource {
	s.ScanType = &v
	return s
}

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

	// Defines the action that is to be applied to the findings that match the filter.
	//
	// Action is a required field
	Action *string `locationName:"action" type:"string" required:"true" enum:"FilterAction"`

	// A description of the filter.
	Description *string `locationName:"description" min:"1" type:"string"`

	// Defines the criteria to be used in the filter for querying findings.
	//
	// FilterCriteria is a required field
	FilterCriteria *FilterCriteria `locationName:"filterCriteria" type:"structure" required:"true"`

	// The name of the filter. Minimum length of 3. Maximum length of 64. Valid
	// characters include alphanumeric characters, dot (.), underscore (_), and
	// dash (-). Spaces are not allowed.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true"`

	// A list of tags for the filter.
	Tags map[string]*string `locationName:"tags" 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 CreateFilterInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

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

// SetFilterCriteria sets the FilterCriteria field's value.
func (s *CreateFilterInput) SetFilterCriteria(v *FilterCriteria) *CreateFilterInput {
	s.FilterCriteria = v
	return s
}

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

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

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

	// The Amazon Resource Number (ARN) of the successfully created filter.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"1" type:"string" required:"true"`
}

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

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

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

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

	// The filter criteria to apply to the results of the finding report.
	FilterCriteria *FilterCriteria `locationName:"filterCriteria" type:"structure"`

	// The format to generate the report in.
	//
	// ReportFormat is a required field
	ReportFormat *string `locationName:"reportFormat" type:"string" required:"true" enum:"ReportFormat"`

	// The Amazon S3 export destination for the report.
	//
	// S3Destination is a required field
	S3Destination *Destination `locationName:"s3Destination" 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 CreateFindingsReportInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetFilterCriteria sets the FilterCriteria field's value.
func (s *CreateFindingsReportInput) SetFilterCriteria(v *FilterCriteria) *CreateFindingsReportInput {
	s.FilterCriteria = v
	return s
}

// SetReportFormat sets the ReportFormat field's value.
func (s *CreateFindingsReportInput) SetReportFormat(v string) *CreateFindingsReportInput {
	s.ReportFormat = &v
	return s
}

// SetS3Destination sets the S3Destination field's value.
func (s *CreateFindingsReportInput) SetS3Destination(v *Destination) *CreateFindingsReportInput {
	s.S3Destination = v
	return s
}

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

	// The ID of the report.
	ReportId *string `locationName:"reportId" type:"string"`
}

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

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

// SetReportId sets the ReportId field's value.
func (s *CreateFindingsReportOutput) SetReportId(v string) *CreateFindingsReportOutput {
	s.ReportId = &v
	return s
}

// The CVSS score for a finding.
type CvssScore struct {
	_ struct{} `type:"structure"`

	// The base CVSS score used for the finding.
	//
	// BaseScore is a required field
	BaseScore *float64 `locationName:"baseScore" type:"double" required:"true"`

	// The vector string of the CVSS score.
	//
	// ScoringVector is a required field
	ScoringVector *string `locationName:"scoringVector" min:"1" type:"string" required:"true"`

	// The source of the CVSS score.
	//
	// Source is a required field
	Source *string `locationName:"source" min:"1" type:"string" required:"true"`

	// The version of CVSS used for the score.
	//
	// Version is a required field
	Version *string `locationName:"version" min:"1" type:"string" required:"true"`
}

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

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

// SetBaseScore sets the BaseScore field's value.
func (s *CvssScore) SetBaseScore(v float64) *CvssScore {
	s.BaseScore = &v
	return s
}

// SetScoringVector sets the ScoringVector field's value.
func (s *CvssScore) SetScoringVector(v string) *CvssScore {
	s.ScoringVector = &v
	return s
}

// SetSource sets the Source field's value.
func (s *CvssScore) SetSource(v string) *CvssScore {
	s.Source = &v
	return s
}

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

// Details on adjustments Amazon Inspector made to the CVSS score for a finding.
type CvssScoreAdjustment struct {
	_ struct{} `type:"structure"`

	// The metric used to adjust the CVSS score.
	//
	// Metric is a required field
	Metric *string `locationName:"metric" min:"1" type:"string" required:"true"`

	// The reason the CVSS score has been adjustment.
	//
	// Reason is a required field
	Reason *string `locationName:"reason" min:"1" type:"string" required:"true"`
}

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

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

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

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

// Information about the CVSS score.
type CvssScoreDetails struct {
	_ struct{} `type:"structure"`

	// An object that contains details about adjustment Amazon Inspector made to
	// the CVSS score.
	Adjustments []*CvssScoreAdjustment `locationName:"adjustments" type:"list"`

	// The source of the CVSS data.
	CvssSource *string `locationName:"cvssSource" min:"1" type:"string"`

	// The CVSS score.
	//
	// Score is a required field
	Score *float64 `locationName:"score" type:"double" required:"true"`

	// The source for the CVSS score.
	//
	// ScoreSource is a required field
	ScoreSource *string `locationName:"scoreSource" min:"1" type:"string" required:"true"`

	// The vector for the CVSS score.
	//
	// ScoringVector is a required field
	ScoringVector *string `locationName:"scoringVector" min:"1" type:"string" required:"true"`

	// The CVSS version used in scoring.
	//
	// Version is a required field
	Version *string `locationName:"version" min:"1" type:"string" required:"true"`
}

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

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

// SetAdjustments sets the Adjustments field's value.
func (s *CvssScoreDetails) SetAdjustments(v []*CvssScoreAdjustment) *CvssScoreDetails {
	s.Adjustments = v
	return s
}

// SetCvssSource sets the CvssSource field's value.
func (s *CvssScoreDetails) SetCvssSource(v string) *CvssScoreDetails {
	s.CvssSource = &v
	return s
}

// SetScore sets the Score field's value.
func (s *CvssScoreDetails) SetScore(v float64) *CvssScoreDetails {
	s.Score = &v
	return s
}

// SetScoreSource sets the ScoreSource field's value.
func (s *CvssScoreDetails) SetScoreSource(v string) *CvssScoreDetails {
	s.ScoreSource = &v
	return s
}

// SetScoringVector sets the ScoringVector field's value.
func (s *CvssScoreDetails) SetScoringVector(v string) *CvssScoreDetails {
	s.ScoringVector = &v
	return s
}

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

// Contains details on the time range used to filter findings.
type DateFilter struct {
	_ struct{} `type:"structure"`

	// A timestamp representing the end of the time period filtered on.
	EndInclusive *time.Time `locationName:"endInclusive" type:"timestamp"`

	// A timestamp representing the start of the time period filtered on.
	StartInclusive *time.Time `locationName:"startInclusive" type:"timestamp"`
}

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

// SetEndInclusive sets the EndInclusive field's value.
func (s *DateFilter) SetEndInclusive(v time.Time) *DateFilter {
	s.EndInclusive = &v
	return s
}

// SetStartInclusive sets the StartInclusive field's value.
func (s *DateFilter) SetStartInclusive(v time.Time) *DateFilter {
	s.StartInclusive = &v
	return s
}

// Details of the Amazon Inspector delegated administrator for your organization.
type DelegatedAdmin struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID of the Amazon Inspector delegated administrator
	// for your organization.
	AccountId *string `locationName:"accountId" min:"12" type:"string"`

	// The status of the Amazon Inspector delegated administrator.
	RelationshipStatus *string `locationName:"relationshipStatus" type:"string" enum:"RelationshipStatus"`
}

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

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

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

// SetRelationshipStatus sets the RelationshipStatus field's value.
func (s *DelegatedAdmin) SetRelationshipStatus(v string) *DelegatedAdmin {
	s.RelationshipStatus = &v
	return s
}

// Details of the Amazon Inspector delegated administrator for your organization.
type DelegatedAdminAccount struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID of the Amazon Inspector delegated administrator
	// for your organization.
	AccountId *string `locationName:"accountId" min:"12" type:"string"`

	// The status of the Amazon Inspector delegated administrator.
	Status *string `locationName:"status" type:"string" enum:"DelegatedAdminStatus"`
}

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

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

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

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

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

	// The Amazon Resource Number (ARN) of the filter to be deleted.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"1" type:"string" required:"true"`
}

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

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

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

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

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

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

	// The Amazon Resource Number (ARN) of the filter that has been deleted.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"1" type:"string" required:"true"`
}

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

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

// SetArn sets the Arn field's value.
func (s *DeleteFilterOutput) SetArn(v string) *DeleteFilterOutput {
	s.Arn = &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"`

	// The scan types are automatically enabled for new members of your organization.
	AutoEnable *AutoEnable `locationName:"autoEnable" type:"structure"`

	// Represents whether your organization has reached the maximum Amazon Web Services
	// account limit for Amazon Inspector.
	MaxAccountLimitReached *bool `locationName:"maxAccountLimitReached" 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 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 *AutoEnable) *DescribeOrganizationConfigurationOutput {
	s.AutoEnable = v
	return s
}

// SetMaxAccountLimitReached sets the MaxAccountLimitReached field's value.
func (s *DescribeOrganizationConfigurationOutput) SetMaxAccountLimitReached(v bool) *DescribeOrganizationConfigurationOutput {
	s.MaxAccountLimitReached = &v
	return s
}

// Contains details of the Amazon S3 bucket and KMS key used to export findings.
type Destination struct {
	_ struct{} `type:"structure"`

	// The name of the Amazon S3 bucket to export findings to.
	//
	// BucketName is a required field
	BucketName *string `locationName:"bucketName" type:"string" required:"true"`

	// The prefix of the KMS key used to export findings.
	KeyPrefix *string `locationName:"keyPrefix" type:"string"`

	// The ARN of the KMS key used to encrypt data when exporting findings.
	//
	// KmsKeyArn is a required field
	KmsKeyArn *string `locationName:"kmsKeyArn" 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 Destination) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetBucketName sets the BucketName field's value.
func (s *Destination) SetBucketName(v string) *Destination {
	s.BucketName = &v
	return s
}

// SetKeyPrefix sets the KeyPrefix field's value.
func (s *Destination) SetKeyPrefix(v string) *Destination {
	s.KeyPrefix = &v
	return s
}

// SetKmsKeyArn sets the KmsKeyArn field's value.
func (s *Destination) SetKmsKeyArn(v string) *Destination {
	s.KmsKeyArn = &v
	return s
}

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

	// The Amazon Web Services account ID of the current Amazon Inspector delegated
	// administrator.
	//
	// DelegatedAdminAccountId is a required field
	DelegatedAdminAccountId *string `locationName:"delegatedAdminAccountId" min:"12" 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 DisableDelegatedAdminAccountInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDelegatedAdminAccountId sets the DelegatedAdminAccountId field's value.
func (s *DisableDelegatedAdminAccountInput) SetDelegatedAdminAccountId(v string) *DisableDelegatedAdminAccountInput {
	s.DelegatedAdminAccountId = &v
	return s
}

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

	// The Amazon Web Services account ID of the successfully disabled delegated
	// administrator.
	//
	// DelegatedAdminAccountId is a required field
	DelegatedAdminAccountId *string `locationName:"delegatedAdminAccountId" min:"12" 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 DisableDelegatedAdminAccountOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetDelegatedAdminAccountId sets the DelegatedAdminAccountId field's value.
func (s *DisableDelegatedAdminAccountOutput) SetDelegatedAdminAccountId(v string) *DisableDelegatedAdminAccountOutput {
	s.DelegatedAdminAccountId = &v
	return s
}

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

	// An array of account IDs you want to disable Amazon Inspector scans for.
	AccountIds []*string `locationName:"accountIds" type:"list"`

	// The resource scan types you want to disable.
	ResourceTypes []*string `locationName:"resourceTypes" type:"list" enum:"ResourceScanType"`
}

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

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

// SetAccountIds sets the AccountIds field's value.
func (s *DisableInput) SetAccountIds(v []*string) *DisableInput {
	s.AccountIds = v
	return s
}

// SetResourceTypes sets the ResourceTypes field's value.
func (s *DisableInput) SetResourceTypes(v []*string) *DisableInput {
	s.ResourceTypes = v
	return s
}

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

	// Information on the accounts that have had Amazon Inspector scans successfully
	// disabled. Details are provided for each account.
	//
	// Accounts is a required field
	Accounts []*Account `locationName:"accounts" type:"list" required:"true"`

	// Information on any accounts for which Amazon Inspector scans could not be
	// disabled. Details are provided for each account.
	FailedAccounts []*FailedAccount `locationName:"failedAccounts" 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 DisableOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetAccounts sets the Accounts field's value.
func (s *DisableOutput) SetAccounts(v []*Account) *DisableOutput {
	s.Accounts = v
	return s
}

// SetFailedAccounts sets the FailedAccounts field's value.
func (s *DisableOutput) SetFailedAccounts(v []*FailedAccount) *DisableOutput {
	s.FailedAccounts = v
	return s
}

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

	// The Amazon Web Services account ID of the member account to disassociate.
	//
	// AccountId is a required field
	AccountId *string `locationName:"accountId" min:"12" 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 DisassociateMemberInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

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

	// The Amazon Web Services account ID of the successfully disassociated member.
	//
	// AccountId is a required field
	AccountId *string `locationName:"accountId" min:"12" 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 DisassociateMemberOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// The details that define an aggregation based on Amazon EC2 instances.
type Ec2InstanceAggregation struct {
	_ struct{} `type:"structure"`

	// The AMI IDs associated with the Amazon EC2 instances to aggregate findings
	// for.
	Amis []*StringFilter `locationName:"amis" min:"1" type:"list"`

	// The Amazon EC2 instance IDs to aggregate findings for.
	InstanceIds []*StringFilter `locationName:"instanceIds" min:"1" type:"list"`

	// The Amazon EC2 instance tags to aggregate findings for.
	InstanceTags []*MapFilter `locationName:"instanceTags" min:"1" type:"list"`

	// The operating system types to aggregate findings for. Valid values must be
	// uppercase and underscore separated, examples are ORACLE_LINUX_7 and ALPINE_LINUX_3_8.
	OperatingSystems []*StringFilter `locationName:"operatingSystems" min:"1" type:"list"`

	// The value to sort results by.
	SortBy *string `locationName:"sortBy" type:"string" enum:"Ec2InstanceSortBy"`

	// The order to sort results by.
	SortOrder *string `locationName:"sortOrder" 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 Ec2InstanceAggregation) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAmis sets the Amis field's value.
func (s *Ec2InstanceAggregation) SetAmis(v []*StringFilter) *Ec2InstanceAggregation {
	s.Amis = v
	return s
}

// SetInstanceIds sets the InstanceIds field's value.
func (s *Ec2InstanceAggregation) SetInstanceIds(v []*StringFilter) *Ec2InstanceAggregation {
	s.InstanceIds = v
	return s
}

// SetInstanceTags sets the InstanceTags field's value.
func (s *Ec2InstanceAggregation) SetInstanceTags(v []*MapFilter) *Ec2InstanceAggregation {
	s.InstanceTags = v
	return s
}

// SetOperatingSystems sets the OperatingSystems field's value.
func (s *Ec2InstanceAggregation) SetOperatingSystems(v []*StringFilter) *Ec2InstanceAggregation {
	s.OperatingSystems = v
	return s
}

// SetSortBy sets the SortBy field's value.
func (s *Ec2InstanceAggregation) SetSortBy(v string) *Ec2InstanceAggregation {
	s.SortBy = &v
	return s
}

// SetSortOrder sets the SortOrder field's value.
func (s *Ec2InstanceAggregation) SetSortOrder(v string) *Ec2InstanceAggregation {
	s.SortOrder = &v
	return s
}

// A response that contains the results of a finding aggregation by Amazon EC2
// instance.
type Ec2InstanceAggregationResponse struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account the Amazon EC2 instance belongs to.
	AccountId *string `locationName:"accountId" type:"string"`

	// The Amazon Machine Image (AMI) of the Amazon EC2 instance.
	Ami *string `locationName:"ami" type:"string"`

	// The Amazon EC2 instance ID.
	//
	// InstanceId is a required field
	InstanceId *string `locationName:"instanceId" min:"1" type:"string" required:"true"`

	// The tags attached to the instance.
	InstanceTags map[string]*string `locationName:"instanceTags" type:"map"`

	// The number of network findings for the Amazon EC2 instance.
	NetworkFindings *int64 `locationName:"networkFindings" type:"long"`

	// The operating system of the Amazon EC2 instance.
	OperatingSystem *string `locationName:"operatingSystem" type:"string"`

	// An object that contains the count of matched findings per severity.
	SeverityCounts *SeverityCounts `locationName:"severityCounts" type:"structure"`
}

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

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

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

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

// SetInstanceId sets the InstanceId field's value.
func (s *Ec2InstanceAggregationResponse) SetInstanceId(v string) *Ec2InstanceAggregationResponse {
	s.InstanceId = &v
	return s
}

// SetInstanceTags sets the InstanceTags field's value.
func (s *Ec2InstanceAggregationResponse) SetInstanceTags(v map[string]*string) *Ec2InstanceAggregationResponse {
	s.InstanceTags = v
	return s
}

// SetNetworkFindings sets the NetworkFindings field's value.
func (s *Ec2InstanceAggregationResponse) SetNetworkFindings(v int64) *Ec2InstanceAggregationResponse {
	s.NetworkFindings = &v
	return s
}

// SetOperatingSystem sets the OperatingSystem field's value.
func (s *Ec2InstanceAggregationResponse) SetOperatingSystem(v string) *Ec2InstanceAggregationResponse {
	s.OperatingSystem = &v
	return s
}

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

// Meta data details of an Amazon EC2 instance.
type Ec2Metadata struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Machine Image (AMI) used to launch the instance.
	AmiId *string `locationName:"amiId" type:"string"`

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

	// The tags attached to the instance.
	Tags map[string]*string `locationName:"tags" 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 Ec2Metadata) String() string {
	return awsutil.Prettify(s)
}

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

// SetAmiId sets the AmiId field's value.
func (s *Ec2Metadata) SetAmiId(v string) *Ec2Metadata {
	s.AmiId = &v
	return s
}

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

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

// Information on the Amazon ECR image metadata associated with a finding.
type EcrContainerImageMetadata struct {
	_ struct{} `type:"structure"`

	// Tags associated with the Amazon ECR image metadata.
	Tags []*string `locationName:"tags" type:"list"`
}

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

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

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

// Information on the Amazon ECR repository metadata associated with a finding.
type EcrRepositoryMetadata struct {
	_ struct{} `type:"structure"`

	// The name of the Amazon ECR repository.
	Name *string `locationName:"name" type:"string"`

	// The frequency of scans.
	ScanFrequency *string `locationName:"scanFrequency" type:"string" enum:"EcrScanFrequency"`
}

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

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

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

// SetScanFrequency sets the ScanFrequency field's value.
func (s *EcrRepositoryMetadata) SetScanFrequency(v string) *EcrRepositoryMetadata {
	s.ScanFrequency = &v
	return s
}

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

	// The idempotency token for the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The Amazon Web Services account ID of the Amazon Inspector delegated administrator.
	//
	// DelegatedAdminAccountId is a required field
	DelegatedAdminAccountId *string `locationName:"delegatedAdminAccountId" min:"12" 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 EnableDelegatedAdminAccountInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// SetDelegatedAdminAccountId sets the DelegatedAdminAccountId field's value.
func (s *EnableDelegatedAdminAccountInput) SetDelegatedAdminAccountId(v string) *EnableDelegatedAdminAccountInput {
	s.DelegatedAdminAccountId = &v
	return s
}

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

	// The Amazon Web Services account ID of the successfully Amazon Inspector delegated
	// administrator.
	//
	// DelegatedAdminAccountId is a required field
	DelegatedAdminAccountId *string `locationName:"delegatedAdminAccountId" min:"12" 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 EnableDelegatedAdminAccountOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetDelegatedAdminAccountId sets the DelegatedAdminAccountId field's value.
func (s *EnableDelegatedAdminAccountOutput) SetDelegatedAdminAccountId(v string) *EnableDelegatedAdminAccountOutput {
	s.DelegatedAdminAccountId = &v
	return s
}

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

	// A list of account IDs you want to enable Amazon Inspector scans for.
	AccountIds []*string `locationName:"accountIds" type:"list"`

	// The idempotency token for the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The resource scan types you want to enable.
	//
	// ResourceTypes is a required field
	ResourceTypes []*string `locationName:"resourceTypes" min:"1" type:"list" required:"true" enum:"ResourceScanType"`
}

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

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

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

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

// SetAccountIds sets the AccountIds field's value.
func (s *EnableInput) SetAccountIds(v []*string) *EnableInput {
	s.AccountIds = v
	return s
}

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

// SetResourceTypes sets the ResourceTypes field's value.
func (s *EnableInput) SetResourceTypes(v []*string) *EnableInput {
	s.ResourceTypes = v
	return s
}

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

	// Information on the accounts that have had Amazon Inspector scans successfully
	// enabled. Details are provided for each account.
	//
	// Accounts is a required field
	Accounts []*Account `locationName:"accounts" type:"list" required:"true"`

	// Information on any accounts for which Amazon Inspector scans could not be
	// enabled. Details are provided for each account.
	FailedAccounts []*FailedAccount `locationName:"failedAccounts" 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 EnableOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetAccounts sets the Accounts field's value.
func (s *EnableOutput) SetAccounts(v []*Account) *EnableOutput {
	s.Accounts = v
	return s
}

// SetFailedAccounts sets the FailedAccounts field's value.
func (s *EnableOutput) SetFailedAccounts(v []*FailedAccount) *EnableOutput {
	s.FailedAccounts = v
	return s
}

// An object with details on why an account failed to enable Amazon Inspector.
type FailedAccount struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID.
	//
	// AccountId is a required field
	AccountId *string `locationName:"accountId" min:"12" type:"string" required:"true"`

	// The error code explaining why the account failed to enable Amazon Inspector.
	//
	// ErrorCode is a required field
	ErrorCode *string `locationName:"errorCode" type:"string" required:"true" enum:"ErrorCode"`

	// The error message received when the account failed to enable Amazon Inspector.
	//
	// ErrorMessage is a required field
	ErrorMessage *string `locationName:"errorMessage" min:"1" type:"string" required:"true"`

	// An object detailing which resources Amazon Inspector is enabled to scan for
	// the account.
	ResourceStatus *ResourceStatus `locationName:"resourceStatus" type:"structure"`

	// The status of Amazon Inspector for the account.
	Status *string `locationName:"status" type:"string" enum:"Status"`
}

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

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

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

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

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

// SetResourceStatus sets the ResourceStatus field's value.
func (s *FailedAccount) SetResourceStatus(v *ResourceStatus) *FailedAccount {
	s.ResourceStatus = v
	return s
}

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

// Details about a filter.
type Filter struct {
	_ struct{} `type:"structure"`

	// The action that is to be applied to the findings that match the filter.
	//
	// Action is a required field
	Action *string `locationName:"action" type:"string" required:"true" enum:"FilterAction"`

	// The Amazon Resource Number (ARN) associated with this filter.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"1" type:"string" required:"true"`

	// The date and time this filter was created at.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`

	// Details on the filter criteria associated with this filter.
	//
	// Criteria is a required field
	Criteria *FilterCriteria `locationName:"criteria" type:"structure" required:"true"`

	// A description of the filter.
	Description *string `locationName:"description" min:"1" type:"string"`

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

	// The Amazon Web Services account ID of the account that created the filter.
	//
	// OwnerId is a required field
	OwnerId *string `locationName:"ownerId" min:"12" type:"string" required:"true"`

	// The reason for the filter.
	Reason *string `locationName:"reason" min:"1" type:"string"`

	// The tags attached to the filter.
	Tags map[string]*string `locationName:"tags" type:"map"`

	// The date and time the filter was last updated at.
	//
	// UpdatedAt is a required field
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" required:"true"`
}

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

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

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

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

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

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

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

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

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

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

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

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

// Details on the criteria used to define the filter.
type FilterCriteria struct {
	_ struct{} `type:"structure"`

	// Details of the Amazon Web Services account IDs used to filter findings.
	AwsAccountId []*StringFilter `locationName:"awsAccountId" min:"1" type:"list"`

	// Details of the component IDs used to filter findings.
	ComponentId []*StringFilter `locationName:"componentId" min:"1" type:"list"`

	// Details of the component types used to filter findings.
	ComponentType []*StringFilter `locationName:"componentType" min:"1" type:"list"`

	// Details of the Amazon EC2 instance image IDs used to filter findings.
	Ec2InstanceImageId []*StringFilter `locationName:"ec2InstanceImageId" min:"1" type:"list"`

	// Details of the Amazon EC2 instance subnet IDs used to filter findings.
	Ec2InstanceSubnetId []*StringFilter `locationName:"ec2InstanceSubnetId" min:"1" type:"list"`

	// Details of the Amazon EC2 instance VPC IDs used to filter findings.
	Ec2InstanceVpcId []*StringFilter `locationName:"ec2InstanceVpcId" min:"1" type:"list"`

	// Details of the Amazon ECR image architecture types used to filter findings.
	EcrImageArchitecture []*StringFilter `locationName:"ecrImageArchitecture" min:"1" type:"list"`

	// Details of the Amazon ECR image hashes used to filter findings.
	EcrImageHash []*StringFilter `locationName:"ecrImageHash" min:"1" type:"list"`

	// Details on the Amazon ECR image push date and time used to filter findings.
	EcrImagePushedAt []*DateFilter `locationName:"ecrImagePushedAt" min:"1" type:"list"`

	// Details on the Amazon ECR registry used to filter findings.
	EcrImageRegistry []*StringFilter `locationName:"ecrImageRegistry" min:"1" type:"list"`

	// Details on the name of the Amazon ECR repository used to filter findings.
	EcrImageRepositoryName []*StringFilter `locationName:"ecrImageRepositoryName" min:"1" type:"list"`

	// The tags attached to the Amazon ECR container image.
	EcrImageTags []*StringFilter `locationName:"ecrImageTags" min:"1" type:"list"`

	// Details on the finding ARNs used to filter findings.
	FindingArn []*StringFilter `locationName:"findingArn" min:"1" type:"list"`

	// Details on the finding status types used to filter findings.
	FindingStatus []*StringFilter `locationName:"findingStatus" min:"1" type:"list"`

	// Details on the finding types used to filter findings.
	FindingType []*StringFilter `locationName:"findingType" min:"1" type:"list"`

	// Details on the date and time a finding was first seen used to filter findings.
	FirstObservedAt []*DateFilter `locationName:"firstObservedAt" min:"1" type:"list"`

	// The Amazon Inspector score to filter on.
	InspectorScore []*NumberFilter `locationName:"inspectorScore" min:"1" type:"list"`

	// Details on the date and time a finding was last seen used to filter findings.
	LastObservedAt []*DateFilter `locationName:"lastObservedAt" min:"1" type:"list"`

	// Details on the ingress source addresses used to filter findings.
	NetworkProtocol []*StringFilter `locationName:"networkProtocol" min:"1" type:"list"`

	// Details on the port ranges used to filter findings.
	PortRange []*PortRangeFilter `locationName:"portRange" min:"1" type:"list"`

	// Details on the related vulnerabilities used to filter findings.
	RelatedVulnerabilities []*StringFilter `locationName:"relatedVulnerabilities" min:"1" type:"list"`

	// Details on the resource IDs used to filter findings.
	ResourceId []*StringFilter `locationName:"resourceId" min:"1" type:"list"`

	// Details on the resource tags used to filter findings.
	ResourceTags []*MapFilter `locationName:"resourceTags" min:"1" type:"list"`

	// Details on the resource types used to filter findings.
	ResourceType []*StringFilter `locationName:"resourceType" min:"1" type:"list"`

	// Details on the severity used to filter findings.
	Severity []*StringFilter `locationName:"severity" min:"1" type:"list"`

	// Details on the finding title used to filter findings.
	Title []*StringFilter `locationName:"title" min:"1" type:"list"`

	// Details on the date and time a finding was last updated at used to filter
	// findings.
	UpdatedAt []*DateFilter `locationName:"updatedAt" min:"1" type:"list"`

	// Details on the vendor severity used to filter findings.
	VendorSeverity []*StringFilter `locationName:"vendorSeverity" min:"1" type:"list"`

	// Details on the vulnerability ID used to filter findings.
	VulnerabilityId []*StringFilter `locationName:"vulnerabilityId" min:"1" type:"list"`

	// Details on the vulnerability type used to filter findings.
	VulnerabilitySource []*StringFilter `locationName:"vulnerabilitySource" min:"1" type:"list"`

	// Details on the vulnerable packages used to filter findings.
	VulnerablePackages []*PackageFilter `locationName:"vulnerablePackages" 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 FilterCriteria) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilterCriteria) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilterCriteria"}
	if s.AwsAccountId != nil && len(s.AwsAccountId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 1))
	}
	if s.ComponentId != nil && len(s.ComponentId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ComponentId", 1))
	}
	if s.ComponentType != nil && len(s.ComponentType) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ComponentType", 1))
	}
	if s.Ec2InstanceImageId != nil && len(s.Ec2InstanceImageId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Ec2InstanceImageId", 1))
	}
	if s.Ec2InstanceSubnetId != nil && len(s.Ec2InstanceSubnetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Ec2InstanceSubnetId", 1))
	}
	if s.Ec2InstanceVpcId != nil && len(s.Ec2InstanceVpcId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Ec2InstanceVpcId", 1))
	}
	if s.EcrImageArchitecture != nil && len(s.EcrImageArchitecture) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EcrImageArchitecture", 1))
	}
	if s.EcrImageHash != nil && len(s.EcrImageHash) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EcrImageHash", 1))
	}
	if s.EcrImagePushedAt != nil && len(s.EcrImagePushedAt) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EcrImagePushedAt", 1))
	}
	if s.EcrImageRegistry != nil && len(s.EcrImageRegistry) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EcrImageRegistry", 1))
	}
	if s.EcrImageRepositoryName != nil && len(s.EcrImageRepositoryName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EcrImageRepositoryName", 1))
	}
	if s.EcrImageTags != nil && len(s.EcrImageTags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EcrImageTags", 1))
	}
	if s.FindingArn != nil && len(s.FindingArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FindingArn", 1))
	}
	if s.FindingStatus != nil && len(s.FindingStatus) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FindingStatus", 1))
	}
	if s.FindingType != nil && len(s.FindingType) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FindingType", 1))
	}
	if s.FirstObservedAt != nil && len(s.FirstObservedAt) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FirstObservedAt", 1))
	}
	if s.InspectorScore != nil && len(s.InspectorScore) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InspectorScore", 1))
	}
	if s.LastObservedAt != nil && len(s.LastObservedAt) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("LastObservedAt", 1))
	}
	if s.NetworkProtocol != nil && len(s.NetworkProtocol) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NetworkProtocol", 1))
	}
	if s.PortRange != nil && len(s.PortRange) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PortRange", 1))
	}
	if s.RelatedVulnerabilities != nil && len(s.RelatedVulnerabilities) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RelatedVulnerabilities", 1))
	}
	if s.ResourceId != nil && len(s.ResourceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceId", 1))
	}
	if s.ResourceTags != nil && len(s.ResourceTags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceTags", 1))
	}
	if s.ResourceType != nil && len(s.ResourceType) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceType", 1))
	}
	if s.Severity != nil && len(s.Severity) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Severity", 1))
	}
	if s.Title != nil && len(s.Title) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Title", 1))
	}
	if s.UpdatedAt != nil && len(s.UpdatedAt) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UpdatedAt", 1))
	}
	if s.VendorSeverity != nil && len(s.VendorSeverity) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VendorSeverity", 1))
	}
	if s.VulnerabilityId != nil && len(s.VulnerabilityId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VulnerabilityId", 1))
	}
	if s.VulnerabilitySource != nil && len(s.VulnerabilitySource) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VulnerabilitySource", 1))
	}
	if s.VulnerablePackages != nil && len(s.VulnerablePackages) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VulnerablePackages", 1))
	}
	if s.AwsAccountId != nil {
		for i, v := range s.AwsAccountId {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AwsAccountId", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ComponentId != nil {
		for i, v := range s.ComponentId {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ComponentId", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ComponentType != nil {
		for i, v := range s.ComponentType {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ComponentType", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Ec2InstanceImageId != nil {
		for i, v := range s.Ec2InstanceImageId {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Ec2InstanceImageId", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Ec2InstanceSubnetId != nil {
		for i, v := range s.Ec2InstanceSubnetId {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Ec2InstanceSubnetId", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Ec2InstanceVpcId != nil {
		for i, v := range s.Ec2InstanceVpcId {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Ec2InstanceVpcId", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.EcrImageArchitecture != nil {
		for i, v := range s.EcrImageArchitecture {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "EcrImageArchitecture", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.EcrImageHash != nil {
		for i, v := range s.EcrImageHash {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "EcrImageHash", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.EcrImageRegistry != nil {
		for i, v := range s.EcrImageRegistry {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "EcrImageRegistry", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.EcrImageRepositoryName != nil {
		for i, v := range s.EcrImageRepositoryName {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "EcrImageRepositoryName", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.EcrImageTags != nil {
		for i, v := range s.EcrImageTags {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "EcrImageTags", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.FindingArn != nil {
		for i, v := range s.FindingArn {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "FindingArn", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.FindingStatus != nil {
		for i, v := range s.FindingStatus {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "FindingStatus", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.FindingType != nil {
		for i, v := range s.FindingType {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "FindingType", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.NetworkProtocol != nil {
		for i, v := range s.NetworkProtocol {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "NetworkProtocol", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.RelatedVulnerabilities != nil {
		for i, v := range s.RelatedVulnerabilities {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RelatedVulnerabilities", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ResourceId != nil {
		for i, v := range s.ResourceId {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ResourceId", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ResourceTags != nil {
		for i, v := range s.ResourceTags {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ResourceTags", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ResourceType != nil {
		for i, v := range s.ResourceType {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ResourceType", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Severity != nil {
		for i, v := range s.Severity {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Severity", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Title != nil {
		for i, v := range s.Title {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Title", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.VendorSeverity != nil {
		for i, v := range s.VendorSeverity {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "VendorSeverity", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.VulnerabilityId != nil {
		for i, v := range s.VulnerabilityId {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "VulnerabilityId", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.VulnerabilitySource != nil {
		for i, v := range s.VulnerabilitySource {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "VulnerabilitySource", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.VulnerablePackages != nil {
		for i, v := range s.VulnerablePackages {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "VulnerablePackages", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

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

// SetComponentId sets the ComponentId field's value.
func (s *FilterCriteria) SetComponentId(v []*StringFilter) *FilterCriteria {
	s.ComponentId = v
	return s
}

// SetComponentType sets the ComponentType field's value.
func (s *FilterCriteria) SetComponentType(v []*StringFilter) *FilterCriteria {
	s.ComponentType = v
	return s
}

// SetEc2InstanceImageId sets the Ec2InstanceImageId field's value.
func (s *FilterCriteria) SetEc2InstanceImageId(v []*StringFilter) *FilterCriteria {
	s.Ec2InstanceImageId = v
	return s
}

// SetEc2InstanceSubnetId sets the Ec2InstanceSubnetId field's value.
func (s *FilterCriteria) SetEc2InstanceSubnetId(v []*StringFilter) *FilterCriteria {
	s.Ec2InstanceSubnetId = v
	return s
}

// SetEc2InstanceVpcId sets the Ec2InstanceVpcId field's value.
func (s *FilterCriteria) SetEc2InstanceVpcId(v []*StringFilter) *FilterCriteria {
	s.Ec2InstanceVpcId = v
	return s
}

// SetEcrImageArchitecture sets the EcrImageArchitecture field's value.
func (s *FilterCriteria) SetEcrImageArchitecture(v []*StringFilter) *FilterCriteria {
	s.EcrImageArchitecture = v
	return s
}

// SetEcrImageHash sets the EcrImageHash field's value.
func (s *FilterCriteria) SetEcrImageHash(v []*StringFilter) *FilterCriteria {
	s.EcrImageHash = v
	return s
}

// SetEcrImagePushedAt sets the EcrImagePushedAt field's value.
func (s *FilterCriteria) SetEcrImagePushedAt(v []*DateFilter) *FilterCriteria {
	s.EcrImagePushedAt = v
	return s
}

// SetEcrImageRegistry sets the EcrImageRegistry field's value.
func (s *FilterCriteria) SetEcrImageRegistry(v []*StringFilter) *FilterCriteria {
	s.EcrImageRegistry = v
	return s
}

// SetEcrImageRepositoryName sets the EcrImageRepositoryName field's value.
func (s *FilterCriteria) SetEcrImageRepositoryName(v []*StringFilter) *FilterCriteria {
	s.EcrImageRepositoryName = v
	return s
}

// SetEcrImageTags sets the EcrImageTags field's value.
func (s *FilterCriteria) SetEcrImageTags(v []*StringFilter) *FilterCriteria {
	s.EcrImageTags = v
	return s
}

// SetFindingArn sets the FindingArn field's value.
func (s *FilterCriteria) SetFindingArn(v []*StringFilter) *FilterCriteria {
	s.FindingArn = v
	return s
}

// SetFindingStatus sets the FindingStatus field's value.
func (s *FilterCriteria) SetFindingStatus(v []*StringFilter) *FilterCriteria {
	s.FindingStatus = v
	return s
}

// SetFindingType sets the FindingType field's value.
func (s *FilterCriteria) SetFindingType(v []*StringFilter) *FilterCriteria {
	s.FindingType = v
	return s
}

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

// SetInspectorScore sets the InspectorScore field's value.
func (s *FilterCriteria) SetInspectorScore(v []*NumberFilter) *FilterCriteria {
	s.InspectorScore = v
	return s
}

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

// SetNetworkProtocol sets the NetworkProtocol field's value.
func (s *FilterCriteria) SetNetworkProtocol(v []*StringFilter) *FilterCriteria {
	s.NetworkProtocol = v
	return s
}

// SetPortRange sets the PortRange field's value.
func (s *FilterCriteria) SetPortRange(v []*PortRangeFilter) *FilterCriteria {
	s.PortRange = v
	return s
}

// SetRelatedVulnerabilities sets the RelatedVulnerabilities field's value.
func (s *FilterCriteria) SetRelatedVulnerabilities(v []*StringFilter) *FilterCriteria {
	s.RelatedVulnerabilities = v
	return s
}

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

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

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

// SetSeverity sets the Severity field's value.
func (s *FilterCriteria) SetSeverity(v []*StringFilter) *FilterCriteria {
	s.Severity = v
	return s
}

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

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

// SetVendorSeverity sets the VendorSeverity field's value.
func (s *FilterCriteria) SetVendorSeverity(v []*StringFilter) *FilterCriteria {
	s.VendorSeverity = v
	return s
}

// SetVulnerabilityId sets the VulnerabilityId field's value.
func (s *FilterCriteria) SetVulnerabilityId(v []*StringFilter) *FilterCriteria {
	s.VulnerabilityId = v
	return s
}

// SetVulnerabilitySource sets the VulnerabilitySource field's value.
func (s *FilterCriteria) SetVulnerabilitySource(v []*StringFilter) *FilterCriteria {
	s.VulnerabilitySource = v
	return s
}

// SetVulnerablePackages sets the VulnerablePackages field's value.
func (s *FilterCriteria) SetVulnerablePackages(v []*PackageFilter) *FilterCriteria {
	s.VulnerablePackages = v
	return s
}

// Details about an Amazon Inspector finding.
type Finding struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID associated with the finding.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `locationName:"awsAccountId" min:"12" type:"string" required:"true"`

	// The description of the finding.
	//
	// Description is a required field
	Description *string `locationName:"description" min:"1" type:"string" required:"true"`

	// The Amazon Resource Number (ARN) of the finding.
	//
	// FindingArn is a required field
	FindingArn *string `locationName:"findingArn" min:"1" type:"string" required:"true"`

	// The date and time that the finding was first observed.
	//
	// FirstObservedAt is a required field
	FirstObservedAt *time.Time `locationName:"firstObservedAt" type:"timestamp" required:"true"`

	// The Amazon Inspector score given to the finding.
	InspectorScore *float64 `locationName:"inspectorScore" type:"double"`

	// An object that contains details of the Amazon Inspector score.
	InspectorScoreDetails *InspectorScoreDetails `locationName:"inspectorScoreDetails" type:"structure"`

	// The date and time that the finding was last observed.
	//
	// LastObservedAt is a required field
	LastObservedAt *time.Time `locationName:"lastObservedAt" type:"timestamp" required:"true"`

	// An object that contains the details of a network reachability finding.
	NetworkReachabilityDetails *NetworkReachabilityDetails `locationName:"networkReachabilityDetails" type:"structure"`

	// An object that contains the details of a package vulnerability finding.
	PackageVulnerabilityDetails *PackageVulnerabilityDetails `locationName:"packageVulnerabilityDetails" type:"structure"`

	// An object that contains the details about how to remediate a finding.
	//
	// Remediation is a required field
	Remediation *Remediation `locationName:"remediation" type:"structure" required:"true"`

	// Contains information on the resources involved in a finding.
	//
	// Resources is a required field
	Resources []*Resource `locationName:"resources" min:"1" type:"list" required:"true"`

	// The severity of the finding.
	//
	// Severity is a required field
	Severity *string `locationName:"severity" type:"string" required:"true" enum:"Severity"`

	// The status of the finding.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"FindingStatus"`

	// The title of the finding.
	Title *string `locationName:"title" min:"1" type:"string"`

	// The type of the finding.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true" enum:"FindingType"`

	// The date and time the finding was last updated at.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp"`
}

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

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

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *Finding) SetAwsAccountId(v string) *Finding {
	s.AwsAccountId = &v
	return s
}

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

// SetFindingArn sets the FindingArn field's value.
func (s *Finding) SetFindingArn(v string) *Finding {
	s.FindingArn = &v
	return s
}

// SetFirstObservedAt sets the FirstObservedAt field's value.
func (s *Finding) SetFirstObservedAt(v time.Time) *Finding {
	s.FirstObservedAt = &v
	return s
}

// SetInspectorScore sets the InspectorScore field's value.
func (s *Finding) SetInspectorScore(v float64) *Finding {
	s.InspectorScore = &v
	return s
}

// SetInspectorScoreDetails sets the InspectorScoreDetails field's value.
func (s *Finding) SetInspectorScoreDetails(v *InspectorScoreDetails) *Finding {
	s.InspectorScoreDetails = v
	return s
}

// SetLastObservedAt sets the LastObservedAt field's value.
func (s *Finding) SetLastObservedAt(v time.Time) *Finding {
	s.LastObservedAt = &v
	return s
}

// SetNetworkReachabilityDetails sets the NetworkReachabilityDetails field's value.
func (s *Finding) SetNetworkReachabilityDetails(v *NetworkReachabilityDetails) *Finding {
	s.NetworkReachabilityDetails = v
	return s
}

// SetPackageVulnerabilityDetails sets the PackageVulnerabilityDetails field's value.
func (s *Finding) SetPackageVulnerabilityDetails(v *PackageVulnerabilityDetails) *Finding {
	s.PackageVulnerabilityDetails = v
	return s
}

// SetRemediation sets the Remediation field's value.
func (s *Finding) SetRemediation(v *Remediation) *Finding {
	s.Remediation = v
	return s
}

// SetResources sets the Resources field's value.
func (s *Finding) SetResources(v []*Resource) *Finding {
	s.Resources = v
	return s
}

// SetSeverity sets the Severity field's value.
func (s *Finding) SetSeverity(v string) *Finding {
	s.Severity = &v
	return s
}

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

// SetTitle sets the Title field's value.
func (s *Finding) SetTitle(v string) *Finding {
	s.Title = &v
	return s
}

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

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

// The details that define an aggregation based on finding type.
type FindingTypeAggregation struct {
	_ struct{} `type:"structure"`

	// The finding type to aggregate.
	FindingType *string `locationName:"findingType" type:"string" enum:"AggregationFindingType"`

	// The resource type to aggregate.
	ResourceType *string `locationName:"resourceType" type:"string" enum:"AggregationResourceType"`

	// The value to sort results by.
	SortBy *string `locationName:"sortBy" type:"string" enum:"FindingTypeSortBy"`

	// The order to sort results by.
	SortOrder *string `locationName:"sortOrder" 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 FindingTypeAggregation) String() string {
	return awsutil.Prettify(s)
}

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

// SetFindingType sets the FindingType field's value.
func (s *FindingTypeAggregation) SetFindingType(v string) *FindingTypeAggregation {
	s.FindingType = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *FindingTypeAggregation) SetResourceType(v string) *FindingTypeAggregation {
	s.ResourceType = &v
	return s
}

// SetSortBy sets the SortBy field's value.
func (s *FindingTypeAggregation) SetSortBy(v string) *FindingTypeAggregation {
	s.SortBy = &v
	return s
}

// SetSortOrder sets the SortOrder field's value.
func (s *FindingTypeAggregation) SetSortOrder(v string) *FindingTypeAggregation {
	s.SortOrder = &v
	return s
}

// A response that contains the results of a finding type aggregation.
type FindingTypeAggregationResponse struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account associated with the findings.
	AccountId *string `locationName:"accountId" min:"12" type:"string"`

	// The value to sort results by.
	SeverityCounts *SeverityCounts `locationName:"severityCounts" type:"structure"`
}

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

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

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

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

// Information about the Amazon Inspector free trial for an account.
type FreeTrialAccountInfo struct {
	_ struct{} `type:"structure"`

	// The account associated with the Amazon Inspector free trial information.
	//
	// AccountId is a required field
	AccountId *string `locationName:"accountId" type:"string" required:"true"`

	// Contains information about the Amazon Inspector free trial for an account.
	//
	// FreeTrialInfo is a required field
	FreeTrialInfo []*FreeTrialInfo `locationName:"freeTrialInfo" 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 FreeTrialAccountInfo) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetFreeTrialInfo sets the FreeTrialInfo field's value.
func (s *FreeTrialAccountInfo) SetFreeTrialInfo(v []*FreeTrialInfo) *FreeTrialAccountInfo {
	s.FreeTrialInfo = v
	return s
}

// An object that contains information about the Amazon Inspector free trial
// for an account.
type FreeTrialInfo struct {
	_ struct{} `type:"structure"`

	// The date and time that the Amazon Inspector free trail ends for a given account.
	//
	// End is a required field
	End *time.Time `locationName:"end" type:"timestamp" required:"true"`

	// The date and time that the Amazon Inspector free trail started for a given
	// account.
	//
	// Start is a required field
	Start *time.Time `locationName:"start" type:"timestamp" required:"true"`

	// The order to sort results by.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"FreeTrialStatus"`

	// The type of scan covered by the Amazon Inspector free trail.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true" enum:"FreeTrialType"`
}

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

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

// SetEnd sets the End field's value.
func (s *FreeTrialInfo) SetEnd(v time.Time) *FreeTrialInfo {
	s.End = &v
	return s
}

// SetStart sets the Start field's value.
func (s *FreeTrialInfo) SetStart(v time.Time) *FreeTrialInfo {
	s.Start = &v
	return s
}

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

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

// Information about an error received while accessing free trail data for an
// account.
type FreeTrialInfoError struct {
	_ struct{} `type:"structure"`

	// The account associated with the Amazon Inspector free trial information.
	//
	// AccountId is a required field
	AccountId *string `locationName:"accountId" type:"string" required:"true"`

	// The error code.
	//
	// Code is a required field
	Code *string `locationName:"code" type:"string" required:"true" enum:"FreeTrialInfoErrorCode"`

	// The error message returned.
	//
	// Message is a required field
	Message *string `locationName:"message" 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 FreeTrialInfoError) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetCode sets the Code field's value.
func (s *FreeTrialInfoError) SetCode(v string) *FreeTrialInfoError {
	s.Code = &v
	return s
}

// SetMessage sets the Message field's value.
func (s *FreeTrialInfoError) SetMessage(v string) *FreeTrialInfoError {
	s.Message = &v
	return s
}

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

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

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

	// The Amazon Web Services account ID of the Amazon Inspector delegated administrator.
	DelegatedAdmin *DelegatedAdmin `locationName:"delegatedAdmin" 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 GetDelegatedAdminAccountOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetDelegatedAdmin sets the DelegatedAdmin field's value.
func (s *GetDelegatedAdminAccountOutput) SetDelegatedAdmin(v *DelegatedAdmin) *GetDelegatedAdminAccountOutput {
	s.DelegatedAdmin = v
	return s
}

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

	// The ID of the report to retrieve the status of.
	ReportId *string `locationName:"reportId" type:"string"`
}

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

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

// SetReportId sets the ReportId field's value.
func (s *GetFindingsReportStatusInput) SetReportId(v string) *GetFindingsReportStatusInput {
	s.ReportId = &v
	return s
}

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

	// The destination of the report.
	Destination *Destination `locationName:"destination" type:"structure"`

	// The error code of the report.
	ErrorCode *string `locationName:"errorCode" type:"string" enum:"ReportingErrorCode"`

	// The error message of the report.
	ErrorMessage *string `locationName:"errorMessage" type:"string"`

	// The filter criteria associated with the report.
	FilterCriteria *FilterCriteria `locationName:"filterCriteria" type:"structure"`

	// The ID of the report.
	ReportId *string `locationName:"reportId" type:"string"`

	// The status of the report.
	Status *string `locationName:"status" type:"string" enum:"ExternalReportStatus"`
}

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

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

// SetDestination sets the Destination field's value.
func (s *GetFindingsReportStatusOutput) SetDestination(v *Destination) *GetFindingsReportStatusOutput {
	s.Destination = v
	return s
}

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

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

// SetFilterCriteria sets the FilterCriteria field's value.
func (s *GetFindingsReportStatusOutput) SetFilterCriteria(v *FilterCriteria) *GetFindingsReportStatusOutput {
	s.FilterCriteria = v
	return s
}

// SetReportId sets the ReportId field's value.
func (s *GetFindingsReportStatusOutput) SetReportId(v string) *GetFindingsReportStatusOutput {
	s.ReportId = &v
	return s
}

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

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

	// The Amazon Web Services account ID of the member account to retrieve information
	// on.
	//
	// AccountId is a required field
	AccountId *string `locationName:"accountId" min:"12" 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 GetMemberInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

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

	// Details of the retrieved member account.
	Member *Member `locationName:"member" 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 GetMemberOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetMember sets the Member field's value.
func (s *GetMemberOutput) SetMember(v *Member) *GetMemberOutput {
	s.Member = v
	return s
}

// The details that define an aggregation based on container image layers.
type ImageLayerAggregation struct {
	_ struct{} `type:"structure"`

	// The hashes associated with the layers.
	LayerHashes []*StringFilter `locationName:"layerHashes" min:"1" type:"list"`

	// The repository associated with the container image hosting the layers.
	Repositories []*StringFilter `locationName:"repositories" min:"1" type:"list"`

	// The ID of the container image layer.
	ResourceIds []*StringFilter `locationName:"resourceIds" min:"1" type:"list"`

	// The value to sort results by.
	SortBy *string `locationName:"sortBy" type:"string" enum:"ImageLayerSortBy"`

	// The order to sort results by.
	SortOrder *string `locationName:"sortOrder" 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 ImageLayerAggregation) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetLayerHashes sets the LayerHashes field's value.
func (s *ImageLayerAggregation) SetLayerHashes(v []*StringFilter) *ImageLayerAggregation {
	s.LayerHashes = v
	return s
}

// SetRepositories sets the Repositories field's value.
func (s *ImageLayerAggregation) SetRepositories(v []*StringFilter) *ImageLayerAggregation {
	s.Repositories = v
	return s
}

// SetResourceIds sets the ResourceIds field's value.
func (s *ImageLayerAggregation) SetResourceIds(v []*StringFilter) *ImageLayerAggregation {
	s.ResourceIds = v
	return s
}

// SetSortBy sets the SortBy field's value.
func (s *ImageLayerAggregation) SetSortBy(v string) *ImageLayerAggregation {
	s.SortBy = &v
	return s
}

// SetSortOrder sets the SortOrder field's value.
func (s *ImageLayerAggregation) SetSortOrder(v string) *ImageLayerAggregation {
	s.SortOrder = &v
	return s
}

// A response that contains the results of a finding aggregation by image layer.
type ImageLayerAggregationResponse struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account that owns the container image hosting
	// the layer image.
	//
	// AccountId is a required field
	AccountId *string `locationName:"accountId" min:"12" type:"string" required:"true"`

	// The layer hash.
	//
	// LayerHash is a required field
	LayerHash *string `locationName:"layerHash" min:"1" type:"string" required:"true"`

	// The repository the layer resides in.
	//
	// Repository is a required field
	Repository *string `locationName:"repository" min:"1" type:"string" required:"true"`

	// The resource ID of the container image layer.
	//
	// ResourceId is a required field
	ResourceId *string `locationName:"resourceId" min:"1" type:"string" required:"true"`

	// An object that represents the count of matched findings per severity.
	SeverityCounts *SeverityCounts `locationName:"severityCounts" type:"structure"`
}

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

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

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

// SetLayerHash sets the LayerHash field's value.
func (s *ImageLayerAggregationResponse) SetLayerHash(v string) *ImageLayerAggregationResponse {
	s.LayerHash = &v
	return s
}

// SetRepository sets the Repository field's value.
func (s *ImageLayerAggregationResponse) SetRepository(v string) *ImageLayerAggregationResponse {
	s.Repository = &v
	return s
}

// SetResourceId sets the ResourceId field's value.
func (s *ImageLayerAggregationResponse) SetResourceId(v string) *ImageLayerAggregationResponse {
	s.ResourceId = &v
	return s
}

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

// Information about the Amazon Inspector score given to a finding.
type InspectorScoreDetails struct {
	_ struct{} `type:"structure"`

	// An object that contains details about the CVSS score given to a finding.
	AdjustedCvss *CvssScoreDetails `locationName:"adjustedCvss" type:"structure"`
}

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

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

// SetAdjustedCvss sets the AdjustedCvss field's value.
func (s *InspectorScoreDetails) SetAdjustedCvss(v *CvssScoreDetails) *InspectorScoreDetails {
	s.AdjustedCvss = v
	return s
}

// The request has failed due to an internal failure of the Amazon Inspector
// service.
type InternalServerException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

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

	// The number of seconds to wait before retrying the request.
	RetryAfterSeconds *int64 `location:"header" locationName:"Retry-After" 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 InternalServerException) String() string {
	return awsutil.Prettify(s)
}

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

func newErrorInternalServerException(v protocol.ResponseMetadata) error {
	return &InternalServerException{
		RespMetadata: v,
	}
}

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

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

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

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

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

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

	// The maximum number of results to return in the response.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to use for paginating results that are returned in the response.
	// Set the value of this parameter to null for the first request to a list action.
	// For subsequent calls, use the NextToken value returned from the previous
	// request to continue listing results after the first page.
	NextToken *string `locationName:"nextToken" type:"string"`

	// The service scan type to check permissions for.
	Service *string `locationName:"service" type:"string" enum:"Service"`
}

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

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

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

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

// SetService sets the Service field's value.
func (s *ListAccountPermissionsInput) SetService(v string) *ListAccountPermissionsInput {
	s.Service = &v
	return s
}

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

	// A token to use for paginating results that are returned in the response.
	// Set the value of this parameter to null for the first request to a list action.
	// For subsequent calls, use the NextToken value returned from the previous
	// request to continue listing results after the first page.
	NextToken *string `locationName:"nextToken" type:"string"`

	// Contains details on the permissions an account has to configure Amazon Inspector.
	//
	// Permissions is a required field
	Permissions []*Permission `locationName:"permissions" 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 ListAccountPermissionsOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetPermissions sets the Permissions field's value.
func (s *ListAccountPermissionsOutput) SetPermissions(v []*Permission) *ListAccountPermissionsOutput {
	s.Permissions = v
	return s
}

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

	// An object that contains details on the filters to apply to the coverage data
	// for your environment.
	FilterCriteria *CoverageFilterCriteria `locationName:"filterCriteria" type:"structure"`

	// The maximum number of results to return in the response.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to use for paginating results that are returned in the response.
	// Set the value of this parameter to null for the first request to a list action.
	// For subsequent calls, use the NextToken value returned from the previous
	// request to continue listing results after the first page.
	NextToken *string `locationName:"nextToken" type:"string"`
}

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

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

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

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

// SetFilterCriteria sets the FilterCriteria field's value.
func (s *ListCoverageInput) SetFilterCriteria(v *CoverageFilterCriteria) *ListCoverageInput {
	s.FilterCriteria = v
	return s
}

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

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

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

	// An object that contains details on the covered resources in your environment.
	CoveredResources []*CoveredResource `locationName:"coveredResources" type:"list"`

	// A token to use for paginating results that are returned in the response.
	// Set the value of this parameter to null for the first request to a list action.
	// For subsequent calls, use the NextToken value returned from the previous
	// request to continue listing results after the first page.
	NextToken *string `locationName:"nextToken" type:"string"`
}

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

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

// SetCoveredResources sets the CoveredResources field's value.
func (s *ListCoverageOutput) SetCoveredResources(v []*CoveredResource) *ListCoverageOutput {
	s.CoveredResources = v
	return s
}

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

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

	// An object that contains details on the filters to apply to the coverage data
	// for your environment.
	FilterCriteria *CoverageFilterCriteria `locationName:"filterCriteria" type:"structure"`

	// The value to group the results by.
	GroupBy *string `locationName:"groupBy" type:"string" enum:"GroupKey"`

	// A token to use for paginating results that are returned in the response.
	// Set the value of this parameter to null for the first request to a list action.
	// For subsequent calls, use the NextToken value returned from the previous
	// request to continue listing results after the first page.
	NextToken *string `locationName:"nextToken" type:"string"`
}

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

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

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

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

// SetFilterCriteria sets the FilterCriteria field's value.
func (s *ListCoverageStatisticsInput) SetFilterCriteria(v *CoverageFilterCriteria) *ListCoverageStatisticsInput {
	s.FilterCriteria = v
	return s
}

// SetGroupBy sets the GroupBy field's value.
func (s *ListCoverageStatisticsInput) SetGroupBy(v string) *ListCoverageStatisticsInput {
	s.GroupBy = &v
	return s
}

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

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

	// An array with the number for each group.
	CountsByGroup []*Counts `locationName:"countsByGroup" min:"1" type:"list"`

	// A token to use for paginating results that are returned in the response.
	// Set the value of this parameter to null for the first request to a list action.
	// For subsequent calls, use the NextToken value returned from the previous
	// request to continue listing results after the first page.
	NextToken *string `locationName:"nextToken" type:"string"`

	// The total number for all groups.
	//
	// TotalCounts is a required field
	TotalCounts *int64 `locationName:"totalCounts" type:"long" 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 ListCoverageStatisticsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetCountsByGroup sets the CountsByGroup field's value.
func (s *ListCoverageStatisticsOutput) SetCountsByGroup(v []*Counts) *ListCoverageStatisticsOutput {
	s.CountsByGroup = v
	return s
}

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

// SetTotalCounts sets the TotalCounts field's value.
func (s *ListCoverageStatisticsOutput) SetTotalCounts(v int64) *ListCoverageStatisticsOutput {
	s.TotalCounts = &v
	return s
}

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

	// The maximum number of results to return in the response.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to use for paginating results that are returned in the response.
	// Set the value of this parameter to null for the first request to a list action.
	// For subsequent calls, use the NextToken value returned from the previous
	// request to continue listing results after the first page.
	NextToken *string `locationName:"nextToken" type:"string"`
}

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

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

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

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

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

	// Details of the Amazon Inspector delegated administrator of your organization.
	DelegatedAdminAccounts []*DelegatedAdminAccount `locationName:"delegatedAdminAccounts" type:"list"`

	// A token to use for paginating results that are returned in the response.
	// Set the value of this parameter to null for the first request to a list action.
	// For subsequent calls, use the NextToken value returned from the previous
	// request to continue listing results after the first page.
	NextToken *string `locationName:"nextToken" type:"string"`
}

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

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

// SetDelegatedAdminAccounts sets the DelegatedAdminAccounts field's value.
func (s *ListDelegatedAdminAccountsOutput) SetDelegatedAdminAccounts(v []*DelegatedAdminAccount) *ListDelegatedAdminAccountsOutput {
	s.DelegatedAdminAccounts = v
	return s
}

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

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

	// The action the filter applies to matched findings.
	Action *string `locationName:"action" type:"string" enum:"FilterAction"`

	// The Amazon resource number (ARN) of the filter.
	Arns []*string `locationName:"arns" type:"list"`

	// The maximum number of results to return in the response.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to use for paginating results that are returned in the response.
	// Set the value of this parameter to null for the first request to a list action.
	// For subsequent calls, use the NextToken value returned from the previous
	// request to continue listing results after the first page.
	NextToken *string `locationName:"nextToken" type:"string"`
}

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

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

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

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

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

// SetArns sets the Arns field's value.
func (s *ListFiltersInput) SetArns(v []*string) *ListFiltersInput {
	s.Arns = v
	return s
}

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

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

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

	// Contains details on the filters associated with your account.
	//
	// Filters is a required field
	Filters []*Filter `locationName:"filters" type:"list" required:"true"`

	// A token to use for paginating results that are returned in the response.
	// Set the value of this parameter to null for the first request to a list action.
	// For subsequent calls, use the NextToken value returned from the previous
	// request to continue listing results after the first page.
	NextToken *string `locationName:"nextToken" type:"string"`
}

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

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

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

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

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

	// The Amazon Web Services account IDs to retrieve finding aggregation data
	// for.
	AccountIds []*StringFilter `locationName:"accountIds" min:"1" type:"list"`

	// Details of the aggregation request that is used to filter your aggregation
	// results.
	AggregationRequest *AggregationRequest `locationName:"aggregationRequest" type:"structure"`

	// The type of the aggregation request.
	//
	// AggregationType is a required field
	AggregationType *string `locationName:"aggregationType" type:"string" required:"true" enum:"AggregationType"`

	// The maximum number of results to return in the response.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to use for paginating results that are returned in the response.
	// Set the value of this parameter to null for the first request to a list action.
	// For subsequent calls, use the NextToken value returned from the previous
	// request to continue listing results after the first page.
	NextToken *string `locationName:"nextToken" type:"string"`
}

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

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

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

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

// SetAccountIds sets the AccountIds field's value.
func (s *ListFindingAggregationsInput) SetAccountIds(v []*StringFilter) *ListFindingAggregationsInput {
	s.AccountIds = v
	return s
}

// SetAggregationRequest sets the AggregationRequest field's value.
func (s *ListFindingAggregationsInput) SetAggregationRequest(v *AggregationRequest) *ListFindingAggregationsInput {
	s.AggregationRequest = v
	return s
}

// SetAggregationType sets the AggregationType field's value.
func (s *ListFindingAggregationsInput) SetAggregationType(v string) *ListFindingAggregationsInput {
	s.AggregationType = &v
	return s
}

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

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

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

	// The type of aggregation to perform.
	//
	// AggregationType is a required field
	AggregationType *string `locationName:"aggregationType" type:"string" required:"true" enum:"AggregationType"`

	// A token to use for paginating results that are returned in the response.
	// Set the value of this parameter to null for the first request to a list action.
	// For subsequent calls, use the NextToken value returned from the previous
	// request to continue listing results after the first page.
	NextToken *string `locationName:"nextToken" type:"string"`

	// Objects that contain the results of an aggregation operation.
	Responses []*AggregationResponse `locationName:"responses" type:"list"`
}

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

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

// SetAggregationType sets the AggregationType field's value.
func (s *ListFindingAggregationsOutput) SetAggregationType(v string) *ListFindingAggregationsOutput {
	s.AggregationType = &v
	return s
}

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

// SetResponses sets the Responses field's value.
func (s *ListFindingAggregationsOutput) SetResponses(v []*AggregationResponse) *ListFindingAggregationsOutput {
	s.Responses = v
	return s
}

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

	// Details on the filters to apply to your finding results.
	FilterCriteria *FilterCriteria `locationName:"filterCriteria" type:"structure"`

	// The maximum number of results to return in the response.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to use for paginating results that are returned in the response.
	// Set the value of this parameter to null for the first request to a list action.
	// For subsequent calls, use the NextToken value returned from the previous
	// request to continue listing results after the first page.
	NextToken *string `locationName:"nextToken" type:"string"`

	// Details on the sort criteria to apply to your finding results.
	SortCriteria *SortCriteria `locationName:"sortCriteria" 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 ListFindingsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetFilterCriteria sets the FilterCriteria field's value.
func (s *ListFindingsInput) SetFilterCriteria(v *FilterCriteria) *ListFindingsInput {
	s.FilterCriteria = v
	return s
}

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

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

// SetSortCriteria sets the SortCriteria field's value.
func (s *ListFindingsInput) SetSortCriteria(v *SortCriteria) *ListFindingsInput {
	s.SortCriteria = v
	return s
}

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

	// Contains details on the findings in your environment.
	Findings []*Finding `locationName:"findings" type:"list"`

	// A token to use for paginating results that are returned in the response.
	// Set the value of this parameter to null for the first request to a list action.
	// For subsequent calls, use the NextToken value returned from the previous
	// request to continue listing results after the first page.
	NextToken *string `locationName:"nextToken" type:"string"`
}

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

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

// SetFindings sets the Findings field's value.
func (s *ListFindingsOutput) SetFindings(v []*Finding) *ListFindingsOutput {
	s.Findings = v
	return s
}

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

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

	// The maximum number of results to return in the response.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to use for paginating results that are returned in the response.
	// Set the value of this parameter to null for the first request to a list action.
	// For subsequent calls, use the NextToken value returned from the previous
	// request to continue listing results after the first page.
	NextToken *string `locationName:"nextToken" type:"string"`

	// Specifies whether to list only currently associated members if True or to
	// list all members within the organization if False.
	OnlyAssociated *bool `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"`

	// An object that contains details for each member account.
	Members []*Member `locationName:"members" type:"list"`

	// The pagination parameter to be used on the next list operation to retrieve
	// more items.
	NextToken *string `locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s 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 ListTagsForResourceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon resource number (ARN) of the resource to list tags of.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s 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 the resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

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

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

	// The Amazon Web Services account IDs to retrieve usage totals for.
	AccountIds []*string `locationName:"accountIds" min:"1" type:"list"`

	// The maximum number of results to return in the response.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// A token to use for paginating results that are returned in the response.
	// Set the value of this parameter to null for the first request to a list action.
	// For subsequent calls, use the NextToken value returned from the previous
	// request to continue listing results after the first page.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

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

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

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

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

// SetAccountIds sets the AccountIds field's value.
func (s *ListUsageTotalsInput) SetAccountIds(v []*string) *ListUsageTotalsInput {
	s.AccountIds = v
	return s
}

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

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

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

	// The pagination parameter to be used on the next list operation to retrieve
	// more items.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// An object with details on the total usage for the requested account.
	Totals []*UsageTotal `locationName:"totals" 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 ListUsageTotalsOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetTotals sets the Totals field's value.
func (s *ListUsageTotalsOutput) SetTotals(v []*UsageTotal) *ListUsageTotalsOutput {
	s.Totals = v
	return s
}

// An object that describes details of a map filter.
type MapFilter struct {
	_ struct{} `type:"structure"`

	// The operator to use when comparing values in the filter.
	//
	// Comparison is a required field
	Comparison *string `locationName:"comparison" type:"string" required:"true" enum:"MapComparison"`

	// The tag key used in the filter.
	//
	// Key is a required field
	Key *string `locationName:"key" min:"1" type:"string" required:"true"`

	// The tag value used in the filter.
	Value *string `locationName:"value" type:"string"`
}

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

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

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

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

// Details on a member account in your organization.
type Member struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID of the member account.
	AccountId *string `locationName:"accountId" min:"12" type:"string"`

	// The Amazon Web Services account ID of the Amazon Inspector delegated administrator
	// for this member account.
	DelegatedAdminAccountId *string `locationName:"delegatedAdminAccountId" min:"12" type:"string"`

	// The status of the member account.
	RelationshipStatus *string `locationName:"relationshipStatus" type:"string" enum:"RelationshipStatus"`

	// A timestamp showing when the status of this member was last updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp"`
}

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

// SetDelegatedAdminAccountId sets the DelegatedAdminAccountId field's value.
func (s *Member) SetDelegatedAdminAccountId(v string) *Member {
	s.DelegatedAdminAccountId = &v
	return s
}

// SetRelationshipStatus sets the RelationshipStatus field's value.
func (s *Member) SetRelationshipStatus(v string) *Member {
	s.RelationshipStatus = &v
	return s
}

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

// Information on the network path associated with a finding.
type NetworkPath struct {
	_ struct{} `type:"structure"`

	// The details on the steps in the network path.
	Steps []*Step `locationName:"steps" 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 NetworkPath) String() string {
	return awsutil.Prettify(s)
}

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

// SetSteps sets the Steps field's value.
func (s *NetworkPath) SetSteps(v []*Step) *NetworkPath {
	s.Steps = v
	return s
}

// Contains the details of a network reachability finding.
type NetworkReachabilityDetails struct {
	_ struct{} `type:"structure"`

	// An object that contains details about a network path associated with a finding.
	//
	// NetworkPath is a required field
	NetworkPath *NetworkPath `locationName:"networkPath" type:"structure" required:"true"`

	// An object that contains details about the open port range associated with
	// a finding.
	//
	// OpenPortRange is a required field
	OpenPortRange *PortRange `locationName:"openPortRange" type:"structure" required:"true"`

	// The protocol associated with a finding.
	//
	// Protocol is a required field
	Protocol *string `locationName:"protocol" type:"string" required:"true" enum:"NetworkProtocol"`
}

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

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

// SetNetworkPath sets the NetworkPath field's value.
func (s *NetworkReachabilityDetails) SetNetworkPath(v *NetworkPath) *NetworkReachabilityDetails {
	s.NetworkPath = v
	return s
}

// SetOpenPortRange sets the OpenPortRange field's value.
func (s *NetworkReachabilityDetails) SetOpenPortRange(v *PortRange) *NetworkReachabilityDetails {
	s.OpenPortRange = v
	return s
}

// SetProtocol sets the Protocol field's value.
func (s *NetworkReachabilityDetails) SetProtocol(v string) *NetworkReachabilityDetails {
	s.Protocol = &v
	return s
}

// An object that describes the details of a number filter.
type NumberFilter struct {
	_ struct{} `type:"structure"`

	// The lowest number to be included in the filter.
	LowerInclusive *float64 `locationName:"lowerInclusive" type:"double"`

	// The highest number to be included in the filter.
	UpperInclusive *float64 `locationName:"upperInclusive" 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()
}

// SetLowerInclusive sets the LowerInclusive field's value.
func (s *NumberFilter) SetLowerInclusive(v float64) *NumberFilter {
	s.LowerInclusive = &v
	return s
}

// SetUpperInclusive sets the UpperInclusive field's value.
func (s *NumberFilter) SetUpperInclusive(v float64) *NumberFilter {
	s.UpperInclusive = &v
	return s
}

// The details that define an aggregation based on operating system package
// type.
type PackageAggregation struct {
	_ struct{} `type:"structure"`

	// The names of packages to aggregate findings on.
	PackageNames []*StringFilter `locationName:"packageNames" min:"1" type:"list"`

	// The value to sort results by.
	SortBy *string `locationName:"sortBy" type:"string" enum:"PackageSortBy"`

	// The order to sort results by.
	SortOrder *string `locationName:"sortOrder" 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 PackageAggregation) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetPackageNames sets the PackageNames field's value.
func (s *PackageAggregation) SetPackageNames(v []*StringFilter) *PackageAggregation {
	s.PackageNames = v
	return s
}

// SetSortBy sets the SortBy field's value.
func (s *PackageAggregation) SetSortBy(v string) *PackageAggregation {
	s.SortBy = &v
	return s
}

// SetSortOrder sets the SortOrder field's value.
func (s *PackageAggregation) SetSortOrder(v string) *PackageAggregation {
	s.SortOrder = &v
	return s
}

// A response that contains the results of a finding aggregation by image layer.
type PackageAggregationResponse struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account associated with the findings.
	AccountId *string `locationName:"accountId" min:"12" type:"string"`

	// The name of the operating system package.
	//
	// PackageName is a required field
	PackageName *string `locationName:"packageName" min:"1" type:"string" required:"true"`

	// An object that contains the count of matched findings per severity.
	SeverityCounts *SeverityCounts `locationName:"severityCounts" type:"structure"`
}

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

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

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

// SetPackageName sets the PackageName field's value.
func (s *PackageAggregationResponse) SetPackageName(v string) *PackageAggregationResponse {
	s.PackageName = &v
	return s
}

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

// Contains information on the details of a package filter.
type PackageFilter struct {
	_ struct{} `type:"structure"`

	// An object that contains details on the package architecture type to filter
	// on.
	Architecture *StringFilter `locationName:"architecture" type:"structure"`

	// An object that contains details on the package epoch to filter on.
	Epoch *NumberFilter `locationName:"epoch" type:"structure"`

	// An object that contains details on the name of the package to filter on.
	Name *StringFilter `locationName:"name" type:"structure"`

	// An object that contains details on the package release to filter on.
	Release *StringFilter `locationName:"release" type:"structure"`

	// An object that contains details on the source layer hash to filter on.
	SourceLayerHash *StringFilter `locationName:"sourceLayerHash" type:"structure"`

	// The package version to filter on.
	Version *StringFilter `locationName:"version" 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 PackageFilter) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetArchitecture sets the Architecture field's value.
func (s *PackageFilter) SetArchitecture(v *StringFilter) *PackageFilter {
	s.Architecture = v
	return s
}

// SetEpoch sets the Epoch field's value.
func (s *PackageFilter) SetEpoch(v *NumberFilter) *PackageFilter {
	s.Epoch = v
	return s
}

// SetName sets the Name field's value.
func (s *PackageFilter) SetName(v *StringFilter) *PackageFilter {
	s.Name = v
	return s
}

// SetRelease sets the Release field's value.
func (s *PackageFilter) SetRelease(v *StringFilter) *PackageFilter {
	s.Release = v
	return s
}

// SetSourceLayerHash sets the SourceLayerHash field's value.
func (s *PackageFilter) SetSourceLayerHash(v *StringFilter) *PackageFilter {
	s.SourceLayerHash = v
	return s
}

// SetVersion sets the Version field's value.
func (s *PackageFilter) SetVersion(v *StringFilter) *PackageFilter {
	s.Version = v
	return s
}

// Information about a package vulnerability finding.
type PackageVulnerabilityDetails struct {
	_ struct{} `type:"structure"`

	// An object that contains details about the CVSS score of a finding.
	Cvss []*CvssScore `locationName:"cvss" type:"list"`

	// One or more URLs that contain details about this vulnerability type.
	ReferenceUrls []*string `locationName:"referenceUrls" type:"list"`

	// One or more vulnerabilities related to the one identified in this finding.
	RelatedVulnerabilities []*string `locationName:"relatedVulnerabilities" type:"list"`

	// The source of the vulnerability information.
	//
	// Source is a required field
	Source *string `locationName:"source" min:"1" type:"string" required:"true"`

	// A URL to the source of the vulnerability information.
	SourceUrl *string `locationName:"sourceUrl" min:"1" type:"string"`

	// The date and time that this vulnerability was first added to the vendor's
	// database.
	VendorCreatedAt *time.Time `locationName:"vendorCreatedAt" type:"timestamp"`

	// The severity the vendor has given to this vulnerability type.
	VendorSeverity *string `locationName:"vendorSeverity" min:"1" type:"string"`

	// The date and time the vendor last updated this vulnerability in their database.
	VendorUpdatedAt *time.Time `locationName:"vendorUpdatedAt" type:"timestamp"`

	// The ID given to this vulnerability.
	//
	// VulnerabilityId is a required field
	VulnerabilityId *string `locationName:"vulnerabilityId" min:"1" type:"string" required:"true"`

	// The packages impacted by this vulnerability.
	//
	// VulnerablePackages is a required field
	VulnerablePackages []*VulnerablePackage `locationName:"vulnerablePackages" 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 PackageVulnerabilityDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetCvss sets the Cvss field's value.
func (s *PackageVulnerabilityDetails) SetCvss(v []*CvssScore) *PackageVulnerabilityDetails {
	s.Cvss = v
	return s
}

// SetReferenceUrls sets the ReferenceUrls field's value.
func (s *PackageVulnerabilityDetails) SetReferenceUrls(v []*string) *PackageVulnerabilityDetails {
	s.ReferenceUrls = v
	return s
}

// SetRelatedVulnerabilities sets the RelatedVulnerabilities field's value.
func (s *PackageVulnerabilityDetails) SetRelatedVulnerabilities(v []*string) *PackageVulnerabilityDetails {
	s.RelatedVulnerabilities = v
	return s
}

// SetSource sets the Source field's value.
func (s *PackageVulnerabilityDetails) SetSource(v string) *PackageVulnerabilityDetails {
	s.Source = &v
	return s
}

// SetSourceUrl sets the SourceUrl field's value.
func (s *PackageVulnerabilityDetails) SetSourceUrl(v string) *PackageVulnerabilityDetails {
	s.SourceUrl = &v
	return s
}

// SetVendorCreatedAt sets the VendorCreatedAt field's value.
func (s *PackageVulnerabilityDetails) SetVendorCreatedAt(v time.Time) *PackageVulnerabilityDetails {
	s.VendorCreatedAt = &v
	return s
}

// SetVendorSeverity sets the VendorSeverity field's value.
func (s *PackageVulnerabilityDetails) SetVendorSeverity(v string) *PackageVulnerabilityDetails {
	s.VendorSeverity = &v
	return s
}

// SetVendorUpdatedAt sets the VendorUpdatedAt field's value.
func (s *PackageVulnerabilityDetails) SetVendorUpdatedAt(v time.Time) *PackageVulnerabilityDetails {
	s.VendorUpdatedAt = &v
	return s
}

// SetVulnerabilityId sets the VulnerabilityId field's value.
func (s *PackageVulnerabilityDetails) SetVulnerabilityId(v string) *PackageVulnerabilityDetails {
	s.VulnerabilityId = &v
	return s
}

// SetVulnerablePackages sets the VulnerablePackages field's value.
func (s *PackageVulnerabilityDetails) SetVulnerablePackages(v []*VulnerablePackage) *PackageVulnerabilityDetails {
	s.VulnerablePackages = v
	return s
}

// Contains information on the permissions an account has within Amazon Inspector.
type Permission struct {
	_ struct{} `type:"structure"`

	// The operations that can be performed with the given permissions.
	//
	// Operation is a required field
	Operation *string `locationName:"operation" type:"string" required:"true" enum:"Operation"`

	// The services that the permissions allow an account to perform the given operations
	// for.
	//
	// Service is a required field
	Service *string `locationName:"service" type:"string" required:"true" enum:"Service"`
}

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

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

// SetOperation sets the Operation field's value.
func (s *Permission) SetOperation(v string) *Permission {
	s.Operation = &v
	return s
}

// SetService sets the Service field's value.
func (s *Permission) SetService(v string) *Permission {
	s.Service = &v
	return s
}

// Details about the port range associated with a finding.
type PortRange struct {
	_ struct{} `type:"structure"`

	// The beginning port in a port range.
	//
	// Begin is a required field
	Begin *int64 `locationName:"begin" type:"integer" required:"true"`

	// The ending port in a port range.
	//
	// End is a required field
	End *int64 `locationName:"end" 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 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
}

// An object that describes the details of a port range filter.
type PortRangeFilter struct {
	_ struct{} `type:"structure"`

	// The port number the port range begins at.
	BeginInclusive *int64 `locationName:"beginInclusive" type:"integer"`

	// The port number the port range ends at.
	EndInclusive *int64 `locationName:"endInclusive" 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 PortRangeFilter) String() string {
	return awsutil.Prettify(s)
}

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

// SetBeginInclusive sets the BeginInclusive field's value.
func (s *PortRangeFilter) SetBeginInclusive(v int64) *PortRangeFilter {
	s.BeginInclusive = &v
	return s
}

// SetEndInclusive sets the EndInclusive field's value.
func (s *PortRangeFilter) SetEndInclusive(v int64) *PortRangeFilter {
	s.EndInclusive = &v
	return s
}

// Details about the recommended course of action to remediate the finding.
type Recommendation struct {
	_ struct{} `type:"structure"`

	// The recommended course of action to remediate the finding.
	Text *string `locationName:"text" min:"1" type:"string"`

	// The URL address to the CVE remediation recommendations.
	Url *string `min:"1" type:"string"`
}

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

// Information on how to remediate a finding.
type Remediation struct {
	_ struct{} `type:"structure"`

	// An object that contains information about the recommended course of action
	// to remediate the finding.
	Recommendation *Recommendation `locationName:"recommendation" type:"structure"`
}

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

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

// SetRecommendation sets the Recommendation field's value.
func (s *Remediation) SetRecommendation(v *Recommendation) *Remediation {
	s.Recommendation = v
	return s
}

// The details that define an aggregation based on repository.
type RepositoryAggregation struct {
	_ struct{} `type:"structure"`

	// The names of repositories to aggregate findings on.
	Repositories []*StringFilter `locationName:"repositories" min:"1" type:"list"`

	// The value to sort results by.
	SortBy *string `locationName:"sortBy" type:"string" enum:"RepositorySortBy"`

	// The order to sort results by.
	SortOrder *string `locationName:"sortOrder" 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 RepositoryAggregation) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetRepositories sets the Repositories field's value.
func (s *RepositoryAggregation) SetRepositories(v []*StringFilter) *RepositoryAggregation {
	s.Repositories = v
	return s
}

// SetSortBy sets the SortBy field's value.
func (s *RepositoryAggregation) SetSortBy(v string) *RepositoryAggregation {
	s.SortBy = &v
	return s
}

// SetSortOrder sets the SortOrder field's value.
func (s *RepositoryAggregation) SetSortOrder(v string) *RepositoryAggregation {
	s.SortOrder = &v
	return s
}

// A response that contains details on the results of a finding aggregation
// by repository.
type RepositoryAggregationResponse struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account associated with the findings.
	AccountId *string `locationName:"accountId" min:"12" type:"string"`

	// The number of container images impacted by the findings.
	AffectedImages *int64 `locationName:"affectedImages" type:"long"`

	// The name of the repository associated with the findings.
	//
	// Repository is a required field
	Repository *string `locationName:"repository" min:"1" type:"string" required:"true"`

	// An object that represent the count of matched findings per severity.
	SeverityCounts *SeverityCounts `locationName:"severityCounts" type:"structure"`
}

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

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

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

// SetAffectedImages sets the AffectedImages field's value.
func (s *RepositoryAggregationResponse) SetAffectedImages(v int64) *RepositoryAggregationResponse {
	s.AffectedImages = &v
	return s
}

// SetRepository sets the Repository field's value.
func (s *RepositoryAggregationResponse) SetRepository(v string) *RepositoryAggregationResponse {
	s.Repository = &v
	return s
}

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

// Details about the resource involved in a finding.
type Resource struct {
	_ struct{} `type:"structure"`

	// An object that contains details about the resource involved in a finding.
	Details *ResourceDetails `locationName:"details" type:"structure"`

	// The ID of the resource.
	//
	// Id is a required field
	Id *string `locationName:"id" min:"1" type:"string" required:"true"`

	// The partition of the resource.
	Partition *string `locationName:"partition" min:"1" type:"string"`

	// The Amazon Web Services Region the impacted resource is located in.
	Region *string `locationName:"region" min:"1" type:"string"`

	// The tags attached to the resource.
	Tags map[string]*string `locationName:"tags" type:"map"`

	// The type of resource.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true" enum:"ResourceType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API 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()
}

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

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

// Contains details about the resource involved in the finding.
type ResourceDetails struct {
	_ struct{} `type:"structure"`

	// An object that contains details about the Amazon EC2 instance involved in
	// the finding.
	AwsEc2Instance *AwsEc2InstanceDetails `locationName:"awsEc2Instance" type:"structure"`

	// An object that contains details about the Amazon ECR container image involved
	// in the finding.
	AwsEcrContainerImage *AwsEcrContainerImageDetails `locationName:"awsEcrContainerImage" 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 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()
}

// SetAwsEc2Instance sets the AwsEc2Instance field's value.
func (s *ResourceDetails) SetAwsEc2Instance(v *AwsEc2InstanceDetails) *ResourceDetails {
	s.AwsEc2Instance = v
	return s
}

// SetAwsEcrContainerImage sets the AwsEcrContainerImage field's value.
func (s *ResourceDetails) SetAwsEcrContainerImage(v *AwsEcrContainerImageDetails) *ResourceDetails {
	s.AwsEcrContainerImage = v
	return s
}

// The operation tried to access an invalid resource. Make sure the resource
// is specified correctly.
type ResourceNotFoundException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

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

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

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

func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {
	return &ResourceNotFoundException{
		RespMetadata: v,
	}
}

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

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

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

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

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

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

// An object that contains details about the metadata for an Amazon ECR resource.
type ResourceScanMetadata struct {
	_ struct{} `type:"structure"`

	// An object that contains metadata details for an Amazon EC2 instance.
	Ec2 *Ec2Metadata `locationName:"ec2" type:"structure"`

	// An object that contains details about the container metadata for an Amazon
	// ECR image.
	EcrImage *EcrContainerImageMetadata `locationName:"ecrImage" type:"structure"`

	// An object that contains details about the repository an Amazon ECR image
	// resides in.
	EcrRepository *EcrRepositoryMetadata `locationName:"ecrRepository" 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 ResourceScanMetadata) String() string {
	return awsutil.Prettify(s)
}

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

// SetEc2 sets the Ec2 field's value.
func (s *ResourceScanMetadata) SetEc2(v *Ec2Metadata) *ResourceScanMetadata {
	s.Ec2 = v
	return s
}

// SetEcrImage sets the EcrImage field's value.
func (s *ResourceScanMetadata) SetEcrImage(v *EcrContainerImageMetadata) *ResourceScanMetadata {
	s.EcrImage = v
	return s
}

// SetEcrRepository sets the EcrRepository field's value.
func (s *ResourceScanMetadata) SetEcrRepository(v *EcrRepositoryMetadata) *ResourceScanMetadata {
	s.EcrRepository = v
	return s
}

// Details the state of Amazon Inspector for each resource type Amazon Inspector
// scans.
type ResourceState struct {
	_ struct{} `type:"structure"`

	// An object detailing the state of Amazon Inspector scanning for Amazon EC2
	// resources.
	//
	// Ec2 is a required field
	Ec2 *State `locationName:"ec2" type:"structure" required:"true"`

	// An object detailing the state of Amazon Inspector scanning for Amazon ECR
	// resources.
	//
	// Ecr is a required field
	Ecr *State `locationName:"ecr" 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 ResourceState) String() string {
	return awsutil.Prettify(s)
}

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

// SetEc2 sets the Ec2 field's value.
func (s *ResourceState) SetEc2(v *State) *ResourceState {
	s.Ec2 = v
	return s
}

// SetEcr sets the Ecr field's value.
func (s *ResourceState) SetEcr(v *State) *ResourceState {
	s.Ecr = v
	return s
}

// Details the status of Amazon Inspector for each resource type Amazon Inspector
// scans.
type ResourceStatus struct {
	_ struct{} `type:"structure"`

	// The status of Amazon Inspector scanning for Amazon EC2 resources.
	//
	// Ec2 is a required field
	Ec2 *string `locationName:"ec2" type:"string" required:"true" enum:"Status"`

	// The status of Amazon Inspector scanning for Amazon ECR resources.
	//
	// Ecr is a required field
	Ecr *string `locationName:"ecr" type:"string" required:"true" enum:"Status"`
}

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

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

// SetEc2 sets the Ec2 field's value.
func (s *ResourceStatus) SetEc2(v string) *ResourceStatus {
	s.Ec2 = &v
	return s
}

// SetEcr sets the Ecr field's value.
func (s *ResourceStatus) SetEcr(v string) *ResourceStatus {
	s.Ecr = &v
	return s
}

// The status of the scan.
type ScanStatus struct {
	_ struct{} `type:"structure"`

	// The reason for the scan.
	//
	// Reason is a required field
	Reason *string `locationName:"reason" type:"string" required:"true" enum:"ScanStatusReason"`

	// The status code of the scan.
	//
	// StatusCode is a required field
	StatusCode *string `locationName:"statusCode" type:"string" required:"true" enum:"ScanStatusCode"`
}

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

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

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

// SetStatusCode sets the StatusCode field's value.
func (s *ScanStatus) SetStatusCode(v string) *ScanStatus {
	s.StatusCode = &v
	return s
}

// You have exceeded your service quota. To perform the requested action, remove
// some of the relevant resources, or use Service Quotas to request a service
// quota increase.
type ServiceQuotaExceededException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

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

	// The ID of the resource that exceeds a service quota.
	//
	// ResourceId is a required field
	ResourceId *string `locationName:"resourceId" 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 ServiceQuotaExceededException) String() string {
	return awsutil.Prettify(s)
}

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

func newErrorServiceQuotaExceededException(v protocol.ResponseMetadata) error {
	return &ServiceQuotaExceededException{
		RespMetadata: v,
	}
}

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

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

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

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

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

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

// An object that contains the counts of aggregated finding per severity.
type SeverityCounts struct {
	_ struct{} `type:"structure"`

	// The total count of findings from all severities.
	All *int64 `locationName:"all" type:"long"`

	// The total count of critical severity findings.
	Critical *int64 `locationName:"critical" type:"long"`

	// The total count of high severity findings.
	High *int64 `locationName:"high" type:"long"`

	// The total count of medium severity findings.
	Medium *int64 `locationName:"medium" type:"long"`
}

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

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

// SetAll sets the All field's value.
func (s *SeverityCounts) SetAll(v int64) *SeverityCounts {
	s.All = &v
	return s
}

// SetCritical sets the Critical field's value.
func (s *SeverityCounts) SetCritical(v int64) *SeverityCounts {
	s.Critical = &v
	return s
}

// SetHigh sets the High field's value.
func (s *SeverityCounts) SetHigh(v int64) *SeverityCounts {
	s.High = &v
	return s
}

// SetMedium sets the Medium field's value.
func (s *SeverityCounts) SetMedium(v int64) *SeverityCounts {
	s.Medium = &v
	return s
}

// Details about the criteria used to sort finding results.
type SortCriteria struct {
	_ struct{} `type:"structure"`

	// The finding detail field by which results are sorted.
	//
	// Field is a required field
	Field *string `locationName:"field" type:"string" required:"true" enum:"SortField"`

	// The order by which findings are sorted.
	//
	// SortOrder is a required field
	SortOrder *string `locationName:"sortOrder" type:"string" required:"true" 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 SortCriteria) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetField sets the Field field's value.
func (s *SortCriteria) SetField(v string) *SortCriteria {
	s.Field = &v
	return s
}

// SetSortOrder sets the SortOrder field's value.
func (s *SortCriteria) SetSortOrder(v string) *SortCriteria {
	s.SortOrder = &v
	return s
}

// An object that described the state of Amazon Inspector scans for an account.
type State struct {
	_ struct{} `type:"structure"`

	// The error code explaining why the account failed to enable Amazon Inspector.
	//
	// ErrorCode is a required field
	ErrorCode *string `locationName:"errorCode" type:"string" required:"true" enum:"ErrorCode"`

	// The error message received when the account failed to enable Amazon Inspector.
	//
	// ErrorMessage is a required field
	ErrorMessage *string `locationName:"errorMessage" min:"1" type:"string" required:"true"`

	// The status of Amazon Inspector for the account.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"Status"`
}

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

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

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

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

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

// Details about the step associated with a finding.
type Step struct {
	_ struct{} `type:"structure"`

	// The component ID.
	//
	// ComponentId is a required field
	ComponentId *string `locationName:"componentId" type:"string" required:"true"`

	// The component type.
	//
	// ComponentType is a required field
	ComponentType *string `locationName:"componentType" 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 Step) String() string {
	return awsutil.Prettify(s)
}

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

// SetComponentId sets the ComponentId field's value.
func (s *Step) SetComponentId(v string) *Step {
	s.ComponentId = &v
	return s
}

// SetComponentType sets the ComponentType field's value.
func (s *Step) SetComponentType(v string) *Step {
	s.ComponentType = &v
	return s
}

// An object that describes the details of a string filter.
type StringFilter struct {
	_ struct{} `type:"structure"`

	// The operator to use when comparing values in the filter
	//
	// Comparison is a required field
	Comparison *string `locationName:"comparison" type:"string" required:"true" enum:"StringComparison"`

	// The value to filter on.
	//
	// Value is a required field
	Value *string `locationName:"value" min:"1" type:"string" required:"true"`
}

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

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

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

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

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

	// The Amazon Resource Name (ARN) of the resource to apply a tag to.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" min:"1" type:"string" required:"true"`

	// The tags to be added to a resource.
	//
	// Tags is a required field
	Tags map[string]*string `locationName:"tags" 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 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 limit on the number of requests per second was exceeded.
type ThrottlingException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

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

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

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

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

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

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

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

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

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

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

// The details that define an aggregation based on finding title.
type TitleAggregation struct {
	_ struct{} `type:"structure"`

	// The resource type to aggregate on.
	ResourceType *string `locationName:"resourceType" type:"string" enum:"AggregationResourceType"`

	// The value to sort results by.
	SortBy *string `locationName:"sortBy" type:"string" enum:"TitleSortBy"`

	// The order to sort results by.
	SortOrder *string `locationName:"sortOrder" type:"string" enum:"SortOrder"`

	// The finding titles to aggregate on.
	Titles []*StringFilter `locationName:"titles" min:"1" type:"list"`

	// The vulnerability IDs of the findings.
	VulnerabilityIds []*StringFilter `locationName:"vulnerabilityIds" 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 TitleAggregation) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetResourceType sets the ResourceType field's value.
func (s *TitleAggregation) SetResourceType(v string) *TitleAggregation {
	s.ResourceType = &v
	return s
}

// SetSortBy sets the SortBy field's value.
func (s *TitleAggregation) SetSortBy(v string) *TitleAggregation {
	s.SortBy = &v
	return s
}

// SetSortOrder sets the SortOrder field's value.
func (s *TitleAggregation) SetSortOrder(v string) *TitleAggregation {
	s.SortOrder = &v
	return s
}

// SetTitles sets the Titles field's value.
func (s *TitleAggregation) SetTitles(v []*StringFilter) *TitleAggregation {
	s.Titles = v
	return s
}

// SetVulnerabilityIds sets the VulnerabilityIds field's value.
func (s *TitleAggregation) SetVulnerabilityIds(v []*StringFilter) *TitleAggregation {
	s.VulnerabilityIds = v
	return s
}

// A response that contains details on the results of a finding aggregation
// by title.
type TitleAggregationResponse struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account associated with the findings.
	AccountId *string `locationName:"accountId" min:"12" type:"string"`

	// An object that represent the count of matched findings per severity.
	SeverityCounts *SeverityCounts `locationName:"severityCounts" type:"structure"`

	// The title that the findings were aggregated on.
	//
	// Title is a required field
	Title *string `locationName:"title" min:"1" type:"string" required:"true"`

	// The vulnerability ID of the finding.
	VulnerabilityId *string `locationName:"vulnerabilityId" type:"string"`
}

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

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

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

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

// SetTitle sets the Title field's value.
func (s *TitleAggregationResponse) SetTitle(v string) *TitleAggregationResponse {
	s.Title = &v
	return s
}

// SetVulnerabilityId sets the VulnerabilityId field's value.
func (s *TitleAggregationResponse) SetVulnerabilityId(v string) *TitleAggregationResponse {
	s.VulnerabilityId = &v
	return s
}

type UntagResourceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) for the resource to remove tags from.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" min:"1" type:"string" required:"true"`

	// The tag keys to remove from the resource.
	//
	// TagKeys is a required field
	TagKeys []*string `location:"querystring" locationName:"tagKeys" 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 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 UpdateFilterInput struct {
	_ struct{} `type:"structure"`

	// Specifies the action that is to be applied to the findings that match the
	// filter.
	Action *string `locationName:"action" type:"string" enum:"FilterAction"`

	// A description of the filter.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The Amazon Resource Number (ARN) of the filter to update.
	//
	// FilterArn is a required field
	FilterArn *string `locationName:"filterArn" min:"1" type:"string" required:"true"`

	// Defines the criteria to be update in the filter.
	FilterCriteria *FilterCriteria `locationName:"filterCriteria" type:"structure"`

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

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

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

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

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

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

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

// SetFilterArn sets the FilterArn field's value.
func (s *UpdateFilterInput) SetFilterArn(v string) *UpdateFilterInput {
	s.FilterArn = &v
	return s
}

// SetFilterCriteria sets the FilterCriteria field's value.
func (s *UpdateFilterInput) SetFilterCriteria(v *FilterCriteria) *UpdateFilterInput {
	s.FilterCriteria = v
	return s
}

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

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

	// The Amazon Resource Number (ARN) of the successfully updated filter.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" min:"1" type:"string" required:"true"`
}

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

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

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

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

	// Defines which scan types are enabled automatically for new members of your
	// Amazon Inspector organization.
	//
	// AutoEnable is a required field
	AutoEnable *AutoEnable `locationName:"autoEnable" 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 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 s.AutoEnable != nil {
		if err := s.AutoEnable.Validate(); err != nil {
			invalidParams.AddNested("AutoEnable", err.(request.ErrInvalidParams))
		}
	}

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

// SetAutoEnable sets the AutoEnable field's value.
func (s *UpdateOrganizationConfigurationInput) SetAutoEnable(v *AutoEnable) *UpdateOrganizationConfigurationInput {
	s.AutoEnable = v
	return s
}

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

	// The updated status of scan types automatically enabled for new members of
	// your Amazon Inspector organization.
	//
	// AutoEnable is a required field
	AutoEnable *AutoEnable `locationName:"autoEnable" 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 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()
}

// SetAutoEnable sets the AutoEnable field's value.
func (s *UpdateOrganizationConfigurationOutput) SetAutoEnable(v *AutoEnable) *UpdateOrganizationConfigurationOutput {
	s.AutoEnable = v
	return s
}

// Contains usage information about the cost of Amazon Inspector operation.
type Usage struct {
	_ struct{} `type:"structure"`

	// The currency type used when calculating usage data.
	Currency *string `locationName:"currency" type:"string" enum:"Currency"`

	// The estimated monthly cost of Amazon Inspector.
	EstimatedMonthlyCost *float64 `locationName:"estimatedMonthlyCost" type:"double"`

	// The total of usage.
	Total *float64 `locationName:"total" type:"double"`

	// The type scan.
	Type *string `locationName:"type" type:"string" enum:"UsageType"`
}

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

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

// SetCurrency sets the Currency field's value.
func (s *Usage) SetCurrency(v string) *Usage {
	s.Currency = &v
	return s
}

// SetEstimatedMonthlyCost sets the EstimatedMonthlyCost field's value.
func (s *Usage) SetEstimatedMonthlyCost(v float64) *Usage {
	s.EstimatedMonthlyCost = &v
	return s
}

// SetTotal sets the Total field's value.
func (s *Usage) SetTotal(v float64) *Usage {
	s.Total = &v
	return s
}

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

// The total of usage for an account ID.
type UsageTotal struct {
	_ struct{} `type:"structure"`

	// The account ID of the account that usage data was retrieved for.
	AccountId *string `locationName:"accountId" type:"string"`

	// An object representing the total usage for an account.
	Usage []*Usage `locationName:"usage" 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 UsageTotal) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetUsage sets the Usage field's value.
func (s *UsageTotal) SetUsage(v []*Usage) *UsageTotal {
	s.Usage = v
	return s
}

// The request has failed validation due to missing required fields or having
// invalid inputs.
type ValidationException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The fields that failed validation.
	Fields []*ValidationExceptionField `locationName:"fields" type:"list"`

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

	// The reason for the validation failure.
	//
	// Reason is a required field
	Reason *string `locationName:"reason" type:"string" required:"true" enum:"ValidationExceptionReason"`
}

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

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

func newErrorValidationException(v protocol.ResponseMetadata) error {
	return &ValidationException{
		RespMetadata: v,
	}
}

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

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

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

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

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

// An object that describes a validation exception.
type ValidationExceptionField struct {
	_ struct{} `type:"structure"`

	// The validation exception message.
	//
	// Message is a required field
	Message *string `locationName:"message" type:"string" required:"true"`

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

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

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

// SetMessage sets the Message field's value.
func (s *ValidationExceptionField) SetMessage(v string) *ValidationExceptionField {
	s.Message = &v
	return s
}

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

// Information on the vulnerable package identified by a finding.
type VulnerablePackage struct {
	_ struct{} `type:"structure"`

	// The architecture of the vulnerable package.
	Arch *string `locationName:"arch" min:"1" type:"string"`

	// The epoch of the vulnerable package.
	Epoch *int64 `locationName:"epoch" type:"integer"`

	// The file path of the vulnerable package.
	FilePath *string `locationName:"filePath" min:"1" type:"string"`

	// The version of the package that contains the vulnerability fix.
	FixedInVersion *string `locationName:"fixedInVersion" min:"1" type:"string"`

	// The name of the vulnerable package.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true"`

	// The package manager of the vulnerable package.
	PackageManager *string `locationName:"packageManager" type:"string" enum:"PackageManager"`

	// The release of the vulnerable package.
	Release *string `locationName:"release" min:"1" type:"string"`

	// The source layer hash of the vulnerable package.
	SourceLayerHash *string `locationName:"sourceLayerHash" min:"71" type:"string"`

	// The version of the vulnerable package.
	//
	// Version is a required field
	Version *string `locationName:"version" min:"1" type:"string" required:"true"`
}

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

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

// SetArch sets the Arch field's value.
func (s *VulnerablePackage) SetArch(v string) *VulnerablePackage {
	s.Arch = &v
	return s
}

// SetEpoch sets the Epoch field's value.
func (s *VulnerablePackage) SetEpoch(v int64) *VulnerablePackage {
	s.Epoch = &v
	return s
}

// SetFilePath sets the FilePath field's value.
func (s *VulnerablePackage) SetFilePath(v string) *VulnerablePackage {
	s.FilePath = &v
	return s
}

// SetFixedInVersion sets the FixedInVersion field's value.
func (s *VulnerablePackage) SetFixedInVersion(v string) *VulnerablePackage {
	s.FixedInVersion = &v
	return s
}

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

// SetPackageManager sets the PackageManager field's value.
func (s *VulnerablePackage) SetPackageManager(v string) *VulnerablePackage {
	s.PackageManager = &v
	return s
}

// SetRelease sets the Release field's value.
func (s *VulnerablePackage) SetRelease(v string) *VulnerablePackage {
	s.Release = &v
	return s
}

// SetSourceLayerHash sets the SourceLayerHash field's value.
func (s *VulnerablePackage) SetSourceLayerHash(v string) *VulnerablePackage {
	s.SourceLayerHash = &v
	return s
}

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

const (
	// AccountSortByCritical is a AccountSortBy enum value
	AccountSortByCritical = "CRITICAL"

	// AccountSortByHigh is a AccountSortBy enum value
	AccountSortByHigh = "HIGH"

	// AccountSortByAll is a AccountSortBy enum value
	AccountSortByAll = "ALL"
)

// AccountSortBy_Values returns all elements of the AccountSortBy enum
func AccountSortBy_Values() []string {
	return []string{
		AccountSortByCritical,
		AccountSortByHigh,
		AccountSortByAll,
	}
}

const (
	// AggregationFindingTypeNetworkReachability is a AggregationFindingType enum value
	AggregationFindingTypeNetworkReachability = "NETWORK_REACHABILITY"

	// AggregationFindingTypePackageVulnerability is a AggregationFindingType enum value
	AggregationFindingTypePackageVulnerability = "PACKAGE_VULNERABILITY"
)

// AggregationFindingType_Values returns all elements of the AggregationFindingType enum
func AggregationFindingType_Values() []string {
	return []string{
		AggregationFindingTypeNetworkReachability,
		AggregationFindingTypePackageVulnerability,
	}
}

const (
	// AggregationResourceTypeAwsEc2Instance is a AggregationResourceType enum value
	AggregationResourceTypeAwsEc2Instance = "AWS_EC2_INSTANCE"

	// AggregationResourceTypeAwsEcrContainerImage is a AggregationResourceType enum value
	AggregationResourceTypeAwsEcrContainerImage = "AWS_ECR_CONTAINER_IMAGE"
)

// AggregationResourceType_Values returns all elements of the AggregationResourceType enum
func AggregationResourceType_Values() []string {
	return []string{
		AggregationResourceTypeAwsEc2Instance,
		AggregationResourceTypeAwsEcrContainerImage,
	}
}

const (
	// AggregationTypeFindingType is a AggregationType enum value
	AggregationTypeFindingType = "FINDING_TYPE"

	// AggregationTypePackage is a AggregationType enum value
	AggregationTypePackage = "PACKAGE"

	// AggregationTypeTitle is a AggregationType enum value
	AggregationTypeTitle = "TITLE"

	// AggregationTypeRepository is a AggregationType enum value
	AggregationTypeRepository = "REPOSITORY"

	// AggregationTypeAmi is a AggregationType enum value
	AggregationTypeAmi = "AMI"

	// AggregationTypeAwsEc2Instance is a AggregationType enum value
	AggregationTypeAwsEc2Instance = "AWS_EC2_INSTANCE"

	// AggregationTypeAwsEcrContainer is a AggregationType enum value
	AggregationTypeAwsEcrContainer = "AWS_ECR_CONTAINER"

	// AggregationTypeImageLayer is a AggregationType enum value
	AggregationTypeImageLayer = "IMAGE_LAYER"

	// AggregationTypeAccount is a AggregationType enum value
	AggregationTypeAccount = "ACCOUNT"
)

// AggregationType_Values returns all elements of the AggregationType enum
func AggregationType_Values() []string {
	return []string{
		AggregationTypeFindingType,
		AggregationTypePackage,
		AggregationTypeTitle,
		AggregationTypeRepository,
		AggregationTypeAmi,
		AggregationTypeAwsEc2Instance,
		AggregationTypeAwsEcrContainer,
		AggregationTypeImageLayer,
		AggregationTypeAccount,
	}
}

const (
	// AmiSortByCritical is a AmiSortBy enum value
	AmiSortByCritical = "CRITICAL"

	// AmiSortByHigh is a AmiSortBy enum value
	AmiSortByHigh = "HIGH"

	// AmiSortByAll is a AmiSortBy enum value
	AmiSortByAll = "ALL"

	// AmiSortByAffectedInstances is a AmiSortBy enum value
	AmiSortByAffectedInstances = "AFFECTED_INSTANCES"
)

// AmiSortBy_Values returns all elements of the AmiSortBy enum
func AmiSortBy_Values() []string {
	return []string{
		AmiSortByCritical,
		AmiSortByHigh,
		AmiSortByAll,
		AmiSortByAffectedInstances,
	}
}

const (
	// AwsEcrContainerSortByCritical is a AwsEcrContainerSortBy enum value
	AwsEcrContainerSortByCritical = "CRITICAL"

	// AwsEcrContainerSortByHigh is a AwsEcrContainerSortBy enum value
	AwsEcrContainerSortByHigh = "HIGH"

	// AwsEcrContainerSortByAll is a AwsEcrContainerSortBy enum value
	AwsEcrContainerSortByAll = "ALL"
)

// AwsEcrContainerSortBy_Values returns all elements of the AwsEcrContainerSortBy enum
func AwsEcrContainerSortBy_Values() []string {
	return []string{
		AwsEcrContainerSortByCritical,
		AwsEcrContainerSortByHigh,
		AwsEcrContainerSortByAll,
	}
}

const (
	// CoverageMapComparisonEquals is a CoverageMapComparison enum value
	CoverageMapComparisonEquals = "EQUALS"
)

// CoverageMapComparison_Values returns all elements of the CoverageMapComparison enum
func CoverageMapComparison_Values() []string {
	return []string{
		CoverageMapComparisonEquals,
	}
}

const (
	// CoverageResourceTypeAwsEc2Instance is a CoverageResourceType enum value
	CoverageResourceTypeAwsEc2Instance = "AWS_EC2_INSTANCE"

	// CoverageResourceTypeAwsEcrContainerImage is a CoverageResourceType enum value
	CoverageResourceTypeAwsEcrContainerImage = "AWS_ECR_CONTAINER_IMAGE"

	// CoverageResourceTypeAwsEcrRepository is a CoverageResourceType enum value
	CoverageResourceTypeAwsEcrRepository = "AWS_ECR_REPOSITORY"
)

// CoverageResourceType_Values returns all elements of the CoverageResourceType enum
func CoverageResourceType_Values() []string {
	return []string{
		CoverageResourceTypeAwsEc2Instance,
		CoverageResourceTypeAwsEcrContainerImage,
		CoverageResourceTypeAwsEcrRepository,
	}
}

const (
	// CoverageStringComparisonEquals is a CoverageStringComparison enum value
	CoverageStringComparisonEquals = "EQUALS"

	// CoverageStringComparisonNotEquals is a CoverageStringComparison enum value
	CoverageStringComparisonNotEquals = "NOT_EQUALS"
)

// CoverageStringComparison_Values returns all elements of the CoverageStringComparison enum
func CoverageStringComparison_Values() []string {
	return []string{
		CoverageStringComparisonEquals,
		CoverageStringComparisonNotEquals,
	}
}

const (
	// CurrencyUsd is a Currency enum value
	CurrencyUsd = "USD"
)

// Currency_Values returns all elements of the Currency enum
func Currency_Values() []string {
	return []string{
		CurrencyUsd,
	}
}

const (
	// DelegatedAdminStatusEnabled is a DelegatedAdminStatus enum value
	DelegatedAdminStatusEnabled = "ENABLED"

	// DelegatedAdminStatusDisableInProgress is a DelegatedAdminStatus enum value
	DelegatedAdminStatusDisableInProgress = "DISABLE_IN_PROGRESS"
)

// DelegatedAdminStatus_Values returns all elements of the DelegatedAdminStatus enum
func DelegatedAdminStatus_Values() []string {
	return []string{
		DelegatedAdminStatusEnabled,
		DelegatedAdminStatusDisableInProgress,
	}
}

const (
	// Ec2InstanceSortByNetworkFindings is a Ec2InstanceSortBy enum value
	Ec2InstanceSortByNetworkFindings = "NETWORK_FINDINGS"

	// Ec2InstanceSortByCritical is a Ec2InstanceSortBy enum value
	Ec2InstanceSortByCritical = "CRITICAL"

	// Ec2InstanceSortByHigh is a Ec2InstanceSortBy enum value
	Ec2InstanceSortByHigh = "HIGH"

	// Ec2InstanceSortByAll is a Ec2InstanceSortBy enum value
	Ec2InstanceSortByAll = "ALL"
)

// Ec2InstanceSortBy_Values returns all elements of the Ec2InstanceSortBy enum
func Ec2InstanceSortBy_Values() []string {
	return []string{
		Ec2InstanceSortByNetworkFindings,
		Ec2InstanceSortByCritical,
		Ec2InstanceSortByHigh,
		Ec2InstanceSortByAll,
	}
}

const (
	// Ec2PlatformWindows is a Ec2Platform enum value
	Ec2PlatformWindows = "WINDOWS"

	// Ec2PlatformLinux is a Ec2Platform enum value
	Ec2PlatformLinux = "LINUX"

	// Ec2PlatformUnknown is a Ec2Platform enum value
	Ec2PlatformUnknown = "UNKNOWN"
)

// Ec2Platform_Values returns all elements of the Ec2Platform enum
func Ec2Platform_Values() []string {
	return []string{
		Ec2PlatformWindows,
		Ec2PlatformLinux,
		Ec2PlatformUnknown,
	}
}

const (
	// EcrScanFrequencyManual is a EcrScanFrequency enum value
	EcrScanFrequencyManual = "MANUAL"

	// EcrScanFrequencyScanOnPush is a EcrScanFrequency enum value
	EcrScanFrequencyScanOnPush = "SCAN_ON_PUSH"

	// EcrScanFrequencyContinuousScan is a EcrScanFrequency enum value
	EcrScanFrequencyContinuousScan = "CONTINUOUS_SCAN"
)

// EcrScanFrequency_Values returns all elements of the EcrScanFrequency enum
func EcrScanFrequency_Values() []string {
	return []string{
		EcrScanFrequencyManual,
		EcrScanFrequencyScanOnPush,
		EcrScanFrequencyContinuousScan,
	}
}

const (
	// ErrorCodeAlreadyEnabled is a ErrorCode enum value
	ErrorCodeAlreadyEnabled = "ALREADY_ENABLED"

	// ErrorCodeEnableInProgress is a ErrorCode enum value
	ErrorCodeEnableInProgress = "ENABLE_IN_PROGRESS"

	// ErrorCodeDisableInProgress is a ErrorCode enum value
	ErrorCodeDisableInProgress = "DISABLE_IN_PROGRESS"

	// ErrorCodeSuspendInProgress is a ErrorCode enum value
	ErrorCodeSuspendInProgress = "SUSPEND_IN_PROGRESS"

	// ErrorCodeResourceNotFound is a ErrorCode enum value
	ErrorCodeResourceNotFound = "RESOURCE_NOT_FOUND"

	// ErrorCodeAccessDenied is a ErrorCode enum value
	ErrorCodeAccessDenied = "ACCESS_DENIED"

	// ErrorCodeInternalError is a ErrorCode enum value
	ErrorCodeInternalError = "INTERNAL_ERROR"

	// ErrorCodeSsmUnavailable is a ErrorCode enum value
	ErrorCodeSsmUnavailable = "SSM_UNAVAILABLE"

	// ErrorCodeSsmThrottled is a ErrorCode enum value
	ErrorCodeSsmThrottled = "SSM_THROTTLED"

	// ErrorCodeEventbridgeUnavailable is a ErrorCode enum value
	ErrorCodeEventbridgeUnavailable = "EVENTBRIDGE_UNAVAILABLE"

	// ErrorCodeEventbridgeThrottled is a ErrorCode enum value
	ErrorCodeEventbridgeThrottled = "EVENTBRIDGE_THROTTLED"

	// ErrorCodeResourceScanNotDisabled is a ErrorCode enum value
	ErrorCodeResourceScanNotDisabled = "RESOURCE_SCAN_NOT_DISABLED"

	// ErrorCodeDisassociateAllMembers is a ErrorCode enum value
	ErrorCodeDisassociateAllMembers = "DISASSOCIATE_ALL_MEMBERS"
)

// ErrorCode_Values returns all elements of the ErrorCode enum
func ErrorCode_Values() []string {
	return []string{
		ErrorCodeAlreadyEnabled,
		ErrorCodeEnableInProgress,
		ErrorCodeDisableInProgress,
		ErrorCodeSuspendInProgress,
		ErrorCodeResourceNotFound,
		ErrorCodeAccessDenied,
		ErrorCodeInternalError,
		ErrorCodeSsmUnavailable,
		ErrorCodeSsmThrottled,
		ErrorCodeEventbridgeUnavailable,
		ErrorCodeEventbridgeThrottled,
		ErrorCodeResourceScanNotDisabled,
		ErrorCodeDisassociateAllMembers,
	}
}

const (
	// ExternalReportStatusSucceeded is a ExternalReportStatus enum value
	ExternalReportStatusSucceeded = "SUCCEEDED"

	// ExternalReportStatusInProgress is a ExternalReportStatus enum value
	ExternalReportStatusInProgress = "IN_PROGRESS"

	// ExternalReportStatusCancelled is a ExternalReportStatus enum value
	ExternalReportStatusCancelled = "CANCELLED"

	// ExternalReportStatusFailed is a ExternalReportStatus enum value
	ExternalReportStatusFailed = "FAILED"
)

// ExternalReportStatus_Values returns all elements of the ExternalReportStatus enum
func ExternalReportStatus_Values() []string {
	return []string{
		ExternalReportStatusSucceeded,
		ExternalReportStatusInProgress,
		ExternalReportStatusCancelled,
		ExternalReportStatusFailed,
	}
}

const (
	// FilterActionNone is a FilterAction enum value
	FilterActionNone = "NONE"

	// FilterActionSuppress is a FilterAction enum value
	FilterActionSuppress = "SUPPRESS"
)

// FilterAction_Values returns all elements of the FilterAction enum
func FilterAction_Values() []string {
	return []string{
		FilterActionNone,
		FilterActionSuppress,
	}
}

const (
	// FindingStatusActive is a FindingStatus enum value
	FindingStatusActive = "ACTIVE"

	// FindingStatusSuppressed is a FindingStatus enum value
	FindingStatusSuppressed = "SUPPRESSED"

	// FindingStatusClosed is a FindingStatus enum value
	FindingStatusClosed = "CLOSED"
)

// FindingStatus_Values returns all elements of the FindingStatus enum
func FindingStatus_Values() []string {
	return []string{
		FindingStatusActive,
		FindingStatusSuppressed,
		FindingStatusClosed,
	}
}

const (
	// FindingTypeNetworkReachability is a FindingType enum value
	FindingTypeNetworkReachability = "NETWORK_REACHABILITY"

	// FindingTypePackageVulnerability is a FindingType enum value
	FindingTypePackageVulnerability = "PACKAGE_VULNERABILITY"
)

// FindingType_Values returns all elements of the FindingType enum
func FindingType_Values() []string {
	return []string{
		FindingTypeNetworkReachability,
		FindingTypePackageVulnerability,
	}
}

const (
	// FindingTypeSortByCritical is a FindingTypeSortBy enum value
	FindingTypeSortByCritical = "CRITICAL"

	// FindingTypeSortByHigh is a FindingTypeSortBy enum value
	FindingTypeSortByHigh = "HIGH"

	// FindingTypeSortByAll is a FindingTypeSortBy enum value
	FindingTypeSortByAll = "ALL"
)

// FindingTypeSortBy_Values returns all elements of the FindingTypeSortBy enum
func FindingTypeSortBy_Values() []string {
	return []string{
		FindingTypeSortByCritical,
		FindingTypeSortByHigh,
		FindingTypeSortByAll,
	}
}

const (
	// FreeTrialInfoErrorCodeAccessDenied is a FreeTrialInfoErrorCode enum value
	FreeTrialInfoErrorCodeAccessDenied = "ACCESS_DENIED"

	// FreeTrialInfoErrorCodeInternalError is a FreeTrialInfoErrorCode enum value
	FreeTrialInfoErrorCodeInternalError = "INTERNAL_ERROR"
)

// FreeTrialInfoErrorCode_Values returns all elements of the FreeTrialInfoErrorCode enum
func FreeTrialInfoErrorCode_Values() []string {
	return []string{
		FreeTrialInfoErrorCodeAccessDenied,
		FreeTrialInfoErrorCodeInternalError,
	}
}

const (
	// FreeTrialStatusActive is a FreeTrialStatus enum value
	FreeTrialStatusActive = "ACTIVE"

	// FreeTrialStatusInactive is a FreeTrialStatus enum value
	FreeTrialStatusInactive = "INACTIVE"
)

// FreeTrialStatus_Values returns all elements of the FreeTrialStatus enum
func FreeTrialStatus_Values() []string {
	return []string{
		FreeTrialStatusActive,
		FreeTrialStatusInactive,
	}
}

const (
	// FreeTrialTypeEc2 is a FreeTrialType enum value
	FreeTrialTypeEc2 = "EC2"

	// FreeTrialTypeEcr is a FreeTrialType enum value
	FreeTrialTypeEcr = "ECR"
)

// FreeTrialType_Values returns all elements of the FreeTrialType enum
func FreeTrialType_Values() []string {
	return []string{
		FreeTrialTypeEc2,
		FreeTrialTypeEcr,
	}
}

const (
	// GroupKeyScanStatusCode is a GroupKey enum value
	GroupKeyScanStatusCode = "SCAN_STATUS_CODE"

	// GroupKeyScanStatusReason is a GroupKey enum value
	GroupKeyScanStatusReason = "SCAN_STATUS_REASON"

	// GroupKeyAccountId is a GroupKey enum value
	GroupKeyAccountId = "ACCOUNT_ID"

	// GroupKeyResourceType is a GroupKey enum value
	GroupKeyResourceType = "RESOURCE_TYPE"

	// GroupKeyEcrRepositoryName is a GroupKey enum value
	GroupKeyEcrRepositoryName = "ECR_REPOSITORY_NAME"
)

// GroupKey_Values returns all elements of the GroupKey enum
func GroupKey_Values() []string {
	return []string{
		GroupKeyScanStatusCode,
		GroupKeyScanStatusReason,
		GroupKeyAccountId,
		GroupKeyResourceType,
		GroupKeyEcrRepositoryName,
	}
}

const (
	// ImageLayerSortByCritical is a ImageLayerSortBy enum value
	ImageLayerSortByCritical = "CRITICAL"

	// ImageLayerSortByHigh is a ImageLayerSortBy enum value
	ImageLayerSortByHigh = "HIGH"

	// ImageLayerSortByAll is a ImageLayerSortBy enum value
	ImageLayerSortByAll = "ALL"
)

// ImageLayerSortBy_Values returns all elements of the ImageLayerSortBy enum
func ImageLayerSortBy_Values() []string {
	return []string{
		ImageLayerSortByCritical,
		ImageLayerSortByHigh,
		ImageLayerSortByAll,
	}
}

const (
	// MapComparisonEquals is a MapComparison enum value
	MapComparisonEquals = "EQUALS"
)

// MapComparison_Values returns all elements of the MapComparison enum
func MapComparison_Values() []string {
	return []string{
		MapComparisonEquals,
	}
}

const (
	// NetworkProtocolTcp is a NetworkProtocol enum value
	NetworkProtocolTcp = "TCP"

	// NetworkProtocolUdp is a NetworkProtocol enum value
	NetworkProtocolUdp = "UDP"
)

// NetworkProtocol_Values returns all elements of the NetworkProtocol enum
func NetworkProtocol_Values() []string {
	return []string{
		NetworkProtocolTcp,
		NetworkProtocolUdp,
	}
}

const (
	// OperationEnableScanning is a Operation enum value
	OperationEnableScanning = "ENABLE_SCANNING"

	// OperationDisableScanning is a Operation enum value
	OperationDisableScanning = "DISABLE_SCANNING"

	// OperationEnableRepository is a Operation enum value
	OperationEnableRepository = "ENABLE_REPOSITORY"

	// OperationDisableRepository is a Operation enum value
	OperationDisableRepository = "DISABLE_REPOSITORY"
)

// Operation_Values returns all elements of the Operation enum
func Operation_Values() []string {
	return []string{
		OperationEnableScanning,
		OperationDisableScanning,
		OperationEnableRepository,
		OperationDisableRepository,
	}
}

const (
	// PackageManagerBundler is a PackageManager enum value
	PackageManagerBundler = "BUNDLER"

	// PackageManagerCargo is a PackageManager enum value
	PackageManagerCargo = "CARGO"

	// PackageManagerComposer is a PackageManager enum value
	PackageManagerComposer = "COMPOSER"

	// PackageManagerNpm is a PackageManager enum value
	PackageManagerNpm = "NPM"

	// PackageManagerNuget is a PackageManager enum value
	PackageManagerNuget = "NUGET"

	// PackageManagerPipenv is a PackageManager enum value
	PackageManagerPipenv = "PIPENV"

	// PackageManagerPoetry is a PackageManager enum value
	PackageManagerPoetry = "POETRY"

	// PackageManagerYarn is a PackageManager enum value
	PackageManagerYarn = "YARN"

	// PackageManagerGobinary is a PackageManager enum value
	PackageManagerGobinary = "GOBINARY"

	// PackageManagerGomod is a PackageManager enum value
	PackageManagerGomod = "GOMOD"

	// PackageManagerJar is a PackageManager enum value
	PackageManagerJar = "JAR"

	// PackageManagerOs is a PackageManager enum value
	PackageManagerOs = "OS"
)

// PackageManager_Values returns all elements of the PackageManager enum
func PackageManager_Values() []string {
	return []string{
		PackageManagerBundler,
		PackageManagerCargo,
		PackageManagerComposer,
		PackageManagerNpm,
		PackageManagerNuget,
		PackageManagerPipenv,
		PackageManagerPoetry,
		PackageManagerYarn,
		PackageManagerGobinary,
		PackageManagerGomod,
		PackageManagerJar,
		PackageManagerOs,
	}
}

const (
	// PackageSortByCritical is a PackageSortBy enum value
	PackageSortByCritical = "CRITICAL"

	// PackageSortByHigh is a PackageSortBy enum value
	PackageSortByHigh = "HIGH"

	// PackageSortByAll is a PackageSortBy enum value
	PackageSortByAll = "ALL"
)

// PackageSortBy_Values returns all elements of the PackageSortBy enum
func PackageSortBy_Values() []string {
	return []string{
		PackageSortByCritical,
		PackageSortByHigh,
		PackageSortByAll,
	}
}

const (
	// RelationshipStatusCreated is a RelationshipStatus enum value
	RelationshipStatusCreated = "CREATED"

	// RelationshipStatusInvited is a RelationshipStatus enum value
	RelationshipStatusInvited = "INVITED"

	// RelationshipStatusDisabled is a RelationshipStatus enum value
	RelationshipStatusDisabled = "DISABLED"

	// RelationshipStatusEnabled is a RelationshipStatus enum value
	RelationshipStatusEnabled = "ENABLED"

	// RelationshipStatusRemoved is a RelationshipStatus enum value
	RelationshipStatusRemoved = "REMOVED"

	// RelationshipStatusResigned is a RelationshipStatus enum value
	RelationshipStatusResigned = "RESIGNED"

	// RelationshipStatusDeleted is a RelationshipStatus enum value
	RelationshipStatusDeleted = "DELETED"

	// RelationshipStatusEmailVerificationInProgress is a RelationshipStatus enum value
	RelationshipStatusEmailVerificationInProgress = "EMAIL_VERIFICATION_IN_PROGRESS"

	// RelationshipStatusEmailVerificationFailed is a RelationshipStatus enum value
	RelationshipStatusEmailVerificationFailed = "EMAIL_VERIFICATION_FAILED"

	// RelationshipStatusRegionDisabled is a RelationshipStatus enum value
	RelationshipStatusRegionDisabled = "REGION_DISABLED"

	// RelationshipStatusAccountSuspended is a RelationshipStatus enum value
	RelationshipStatusAccountSuspended = "ACCOUNT_SUSPENDED"

	// RelationshipStatusCannotCreateDetectorInOrgMaster is a RelationshipStatus enum value
	RelationshipStatusCannotCreateDetectorInOrgMaster = "CANNOT_CREATE_DETECTOR_IN_ORG_MASTER"
)

// RelationshipStatus_Values returns all elements of the RelationshipStatus enum
func RelationshipStatus_Values() []string {
	return []string{
		RelationshipStatusCreated,
		RelationshipStatusInvited,
		RelationshipStatusDisabled,
		RelationshipStatusEnabled,
		RelationshipStatusRemoved,
		RelationshipStatusResigned,
		RelationshipStatusDeleted,
		RelationshipStatusEmailVerificationInProgress,
		RelationshipStatusEmailVerificationFailed,
		RelationshipStatusRegionDisabled,
		RelationshipStatusAccountSuspended,
		RelationshipStatusCannotCreateDetectorInOrgMaster,
	}
}

const (
	// ReportFormatCsv is a ReportFormat enum value
	ReportFormatCsv = "CSV"

	// ReportFormatJson is a ReportFormat enum value
	ReportFormatJson = "JSON"
)

// ReportFormat_Values returns all elements of the ReportFormat enum
func ReportFormat_Values() []string {
	return []string{
		ReportFormatCsv,
		ReportFormatJson,
	}
}

const (
	// ReportingErrorCodeInternalError is a ReportingErrorCode enum value
	ReportingErrorCodeInternalError = "INTERNAL_ERROR"

	// ReportingErrorCodeInvalidPermissions is a ReportingErrorCode enum value
	ReportingErrorCodeInvalidPermissions = "INVALID_PERMISSIONS"
)

// ReportingErrorCode_Values returns all elements of the ReportingErrorCode enum
func ReportingErrorCode_Values() []string {
	return []string{
		ReportingErrorCodeInternalError,
		ReportingErrorCodeInvalidPermissions,
	}
}

const (
	// RepositorySortByCritical is a RepositorySortBy enum value
	RepositorySortByCritical = "CRITICAL"

	// RepositorySortByHigh is a RepositorySortBy enum value
	RepositorySortByHigh = "HIGH"

	// RepositorySortByAll is a RepositorySortBy enum value
	RepositorySortByAll = "ALL"

	// RepositorySortByAffectedImages is a RepositorySortBy enum value
	RepositorySortByAffectedImages = "AFFECTED_IMAGES"
)

// RepositorySortBy_Values returns all elements of the RepositorySortBy enum
func RepositorySortBy_Values() []string {
	return []string{
		RepositorySortByCritical,
		RepositorySortByHigh,
		RepositorySortByAll,
		RepositorySortByAffectedImages,
	}
}

const (
	// ResourceScanTypeEc2 is a ResourceScanType enum value
	ResourceScanTypeEc2 = "EC2"

	// ResourceScanTypeEcr is a ResourceScanType enum value
	ResourceScanTypeEcr = "ECR"
)

// ResourceScanType_Values returns all elements of the ResourceScanType enum
func ResourceScanType_Values() []string {
	return []string{
		ResourceScanTypeEc2,
		ResourceScanTypeEcr,
	}
}

const (
	// ResourceTypeAwsEc2Instance is a ResourceType enum value
	ResourceTypeAwsEc2Instance = "AWS_EC2_INSTANCE"

	// ResourceTypeAwsEcrContainerImage is a ResourceType enum value
	ResourceTypeAwsEcrContainerImage = "AWS_ECR_CONTAINER_IMAGE"

	// ResourceTypeAwsEcrRepository is a ResourceType enum value
	ResourceTypeAwsEcrRepository = "AWS_ECR_REPOSITORY"
)

// ResourceType_Values returns all elements of the ResourceType enum
func ResourceType_Values() []string {
	return []string{
		ResourceTypeAwsEc2Instance,
		ResourceTypeAwsEcrContainerImage,
		ResourceTypeAwsEcrRepository,
	}
}

const (
	// ScanStatusCodeActive is a ScanStatusCode enum value
	ScanStatusCodeActive = "ACTIVE"

	// ScanStatusCodeInactive is a ScanStatusCode enum value
	ScanStatusCodeInactive = "INACTIVE"
)

// ScanStatusCode_Values returns all elements of the ScanStatusCode enum
func ScanStatusCode_Values() []string {
	return []string{
		ScanStatusCodeActive,
		ScanStatusCodeInactive,
	}
}

const (
	// ScanStatusReasonPendingInitialScan is a ScanStatusReason enum value
	ScanStatusReasonPendingInitialScan = "PENDING_INITIAL_SCAN"

	// ScanStatusReasonAccessDenied is a ScanStatusReason enum value
	ScanStatusReasonAccessDenied = "ACCESS_DENIED"

	// ScanStatusReasonInternalError is a ScanStatusReason enum value
	ScanStatusReasonInternalError = "INTERNAL_ERROR"

	// ScanStatusReasonUnmanagedEc2Instance is a ScanStatusReason enum value
	ScanStatusReasonUnmanagedEc2Instance = "UNMANAGED_EC2_INSTANCE"

	// ScanStatusReasonUnsupportedOs is a ScanStatusReason enum value
	ScanStatusReasonUnsupportedOs = "UNSUPPORTED_OS"

	// ScanStatusReasonScanEligibilityExpired is a ScanStatusReason enum value
	ScanStatusReasonScanEligibilityExpired = "SCAN_ELIGIBILITY_EXPIRED"

	// ScanStatusReasonResourceTerminated is a ScanStatusReason enum value
	ScanStatusReasonResourceTerminated = "RESOURCE_TERMINATED"

	// ScanStatusReasonSuccessful is a ScanStatusReason enum value
	ScanStatusReasonSuccessful = "SUCCESSFUL"

	// ScanStatusReasonNoResourcesFound is a ScanStatusReason enum value
	ScanStatusReasonNoResourcesFound = "NO_RESOURCES_FOUND"

	// ScanStatusReasonImageSizeExceeded is a ScanStatusReason enum value
	ScanStatusReasonImageSizeExceeded = "IMAGE_SIZE_EXCEEDED"

	// ScanStatusReasonScanFrequencyManual is a ScanStatusReason enum value
	ScanStatusReasonScanFrequencyManual = "SCAN_FREQUENCY_MANUAL"

	// ScanStatusReasonScanFrequencyScanOnPush is a ScanStatusReason enum value
	ScanStatusReasonScanFrequencyScanOnPush = "SCAN_FREQUENCY_SCAN_ON_PUSH"

	// ScanStatusReasonEc2InstanceStopped is a ScanStatusReason enum value
	ScanStatusReasonEc2InstanceStopped = "EC2_INSTANCE_STOPPED"
)

// ScanStatusReason_Values returns all elements of the ScanStatusReason enum
func ScanStatusReason_Values() []string {
	return []string{
		ScanStatusReasonPendingInitialScan,
		ScanStatusReasonAccessDenied,
		ScanStatusReasonInternalError,
		ScanStatusReasonUnmanagedEc2Instance,
		ScanStatusReasonUnsupportedOs,
		ScanStatusReasonScanEligibilityExpired,
		ScanStatusReasonResourceTerminated,
		ScanStatusReasonSuccessful,
		ScanStatusReasonNoResourcesFound,
		ScanStatusReasonImageSizeExceeded,
		ScanStatusReasonScanFrequencyManual,
		ScanStatusReasonScanFrequencyScanOnPush,
		ScanStatusReasonEc2InstanceStopped,
	}
}

const (
	// ScanTypeNetwork is a ScanType enum value
	ScanTypeNetwork = "NETWORK"

	// ScanTypePackage is a ScanType enum value
	ScanTypePackage = "PACKAGE"
)

// ScanType_Values returns all elements of the ScanType enum
func ScanType_Values() []string {
	return []string{
		ScanTypeNetwork,
		ScanTypePackage,
	}
}

const (
	// ServiceEc2 is a Service enum value
	ServiceEc2 = "EC2"

	// ServiceEcr is a Service enum value
	ServiceEcr = "ECR"
)

// Service_Values returns all elements of the Service enum
func Service_Values() []string {
	return []string{
		ServiceEc2,
		ServiceEcr,
	}
}

const (
	// SeverityInformational is a Severity enum value
	SeverityInformational = "INFORMATIONAL"

	// SeverityLow is a Severity enum value
	SeverityLow = "LOW"

	// SeverityMedium is a Severity enum value
	SeverityMedium = "MEDIUM"

	// SeverityHigh is a Severity enum value
	SeverityHigh = "HIGH"

	// SeverityCritical is a Severity enum value
	SeverityCritical = "CRITICAL"

	// SeverityUntriaged is a Severity enum value
	SeverityUntriaged = "UNTRIAGED"
)

// Severity_Values returns all elements of the Severity enum
func Severity_Values() []string {
	return []string{
		SeverityInformational,
		SeverityLow,
		SeverityMedium,
		SeverityHigh,
		SeverityCritical,
		SeverityUntriaged,
	}
}

const (
	// SortFieldAwsAccountId is a SortField enum value
	SortFieldAwsAccountId = "AWS_ACCOUNT_ID"

	// SortFieldFindingType is a SortField enum value
	SortFieldFindingType = "FINDING_TYPE"

	// SortFieldSeverity is a SortField enum value
	SortFieldSeverity = "SEVERITY"

	// SortFieldFirstObservedAt is a SortField enum value
	SortFieldFirstObservedAt = "FIRST_OBSERVED_AT"

	// SortFieldLastObservedAt is a SortField enum value
	SortFieldLastObservedAt = "LAST_OBSERVED_AT"

	// SortFieldFindingStatus is a SortField enum value
	SortFieldFindingStatus = "FINDING_STATUS"

	// SortFieldResourceType is a SortField enum value
	SortFieldResourceType = "RESOURCE_TYPE"

	// SortFieldEcrImagePushedAt is a SortField enum value
	SortFieldEcrImagePushedAt = "ECR_IMAGE_PUSHED_AT"

	// SortFieldEcrImageRepositoryName is a SortField enum value
	SortFieldEcrImageRepositoryName = "ECR_IMAGE_REPOSITORY_NAME"

	// SortFieldEcrImageRegistry is a SortField enum value
	SortFieldEcrImageRegistry = "ECR_IMAGE_REGISTRY"

	// SortFieldNetworkProtocol is a SortField enum value
	SortFieldNetworkProtocol = "NETWORK_PROTOCOL"

	// SortFieldComponentType is a SortField enum value
	SortFieldComponentType = "COMPONENT_TYPE"

	// SortFieldVulnerabilityId is a SortField enum value
	SortFieldVulnerabilityId = "VULNERABILITY_ID"

	// SortFieldVulnerabilitySource is a SortField enum value
	SortFieldVulnerabilitySource = "VULNERABILITY_SOURCE"

	// SortFieldInspectorScore is a SortField enum value
	SortFieldInspectorScore = "INSPECTOR_SCORE"

	// SortFieldVendorSeverity is a SortField enum value
	SortFieldVendorSeverity = "VENDOR_SEVERITY"
)

// SortField_Values returns all elements of the SortField enum
func SortField_Values() []string {
	return []string{
		SortFieldAwsAccountId,
		SortFieldFindingType,
		SortFieldSeverity,
		SortFieldFirstObservedAt,
		SortFieldLastObservedAt,
		SortFieldFindingStatus,
		SortFieldResourceType,
		SortFieldEcrImagePushedAt,
		SortFieldEcrImageRepositoryName,
		SortFieldEcrImageRegistry,
		SortFieldNetworkProtocol,
		SortFieldComponentType,
		SortFieldVulnerabilityId,
		SortFieldVulnerabilitySource,
		SortFieldInspectorScore,
		SortFieldVendorSeverity,
	}
}

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 (
	// StatusEnabling is a Status enum value
	StatusEnabling = "ENABLING"

	// StatusEnabled is a Status enum value
	StatusEnabled = "ENABLED"

	// StatusDisabling is a Status enum value
	StatusDisabling = "DISABLING"

	// StatusDisabled is a Status enum value
	StatusDisabled = "DISABLED"

	// StatusSuspending is a Status enum value
	StatusSuspending = "SUSPENDING"

	// StatusSuspended is a Status enum value
	StatusSuspended = "SUSPENDED"
)

// Status_Values returns all elements of the Status enum
func Status_Values() []string {
	return []string{
		StatusEnabling,
		StatusEnabled,
		StatusDisabling,
		StatusDisabled,
		StatusSuspending,
		StatusSuspended,
	}
}

const (
	// StringComparisonEquals is a StringComparison enum value
	StringComparisonEquals = "EQUALS"

	// StringComparisonPrefix is a StringComparison enum value
	StringComparisonPrefix = "PREFIX"

	// StringComparisonNotEquals is a StringComparison enum value
	StringComparisonNotEquals = "NOT_EQUALS"
)

// StringComparison_Values returns all elements of the StringComparison enum
func StringComparison_Values() []string {
	return []string{
		StringComparisonEquals,
		StringComparisonPrefix,
		StringComparisonNotEquals,
	}
}

const (
	// TitleSortByCritical is a TitleSortBy enum value
	TitleSortByCritical = "CRITICAL"

	// TitleSortByHigh is a TitleSortBy enum value
	TitleSortByHigh = "HIGH"

	// TitleSortByAll is a TitleSortBy enum value
	TitleSortByAll = "ALL"
)

// TitleSortBy_Values returns all elements of the TitleSortBy enum
func TitleSortBy_Values() []string {
	return []string{
		TitleSortByCritical,
		TitleSortByHigh,
		TitleSortByAll,
	}
}

const (
	// UsageTypeEc2InstanceHours is a UsageType enum value
	UsageTypeEc2InstanceHours = "EC2_INSTANCE_HOURS"

	// UsageTypeEcrInitialScan is a UsageType enum value
	UsageTypeEcrInitialScan = "ECR_INITIAL_SCAN"

	// UsageTypeEcrRescan is a UsageType enum value
	UsageTypeEcrRescan = "ECR_RESCAN"
)

// UsageType_Values returns all elements of the UsageType enum
func UsageType_Values() []string {
	return []string{
		UsageTypeEc2InstanceHours,
		UsageTypeEcrInitialScan,
		UsageTypeEcrRescan,
	}
}

const (
	// ValidationExceptionReasonCannotParse is a ValidationExceptionReason enum value
	ValidationExceptionReasonCannotParse = "CANNOT_PARSE"

	// ValidationExceptionReasonFieldValidationFailed is a ValidationExceptionReason enum value
	ValidationExceptionReasonFieldValidationFailed = "FIELD_VALIDATION_FAILED"

	// ValidationExceptionReasonOther is a ValidationExceptionReason enum value
	ValidationExceptionReasonOther = "OTHER"
)

// ValidationExceptionReason_Values returns all elements of the ValidationExceptionReason enum
func ValidationExceptionReason_Values() []string {
	return []string{
		ValidationExceptionReasonCannotParse,
		ValidationExceptionReasonFieldValidationFailed,
		ValidationExceptionReasonOther,
	}
}
