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

package guardduty

import (
	"fmt"
	"time"

	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/awsutil"
	"github.com/aws/aws-sdk-go/aws/request"
	"github.com/aws/aws-sdk-go/private/protocol"
	"github.com/aws/aws-sdk-go/private/protocol/restjson"
)

const opAcceptAdministratorInvitation = "AcceptAdministratorInvitation"

// AcceptAdministratorInvitationRequest generates a "aws/request.Request" representing the
// client's request for the AcceptAdministratorInvitation operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See AcceptAdministratorInvitation for more information on using the AcceptAdministratorInvitation
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the AcceptAdministratorInvitationRequest method.
//	req, resp := client.AcceptAdministratorInvitationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/AcceptAdministratorInvitation
func (c *GuardDuty) AcceptAdministratorInvitationRequest(input *AcceptAdministratorInvitationInput) (req *request.Request, output *AcceptAdministratorInvitationOutput) {
	op := &request.Operation{
		Name:       opAcceptAdministratorInvitation,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/administrator",
	}

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

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

// AcceptAdministratorInvitation API operation for Amazon GuardDuty.
//
// Accepts the invitation to be a member account and get monitored by a GuardDuty
// administrator account that sent the invitation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon GuardDuty's
// API operation AcceptAdministratorInvitation for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/AcceptAdministratorInvitation
func (c *GuardDuty) AcceptAdministratorInvitation(input *AcceptAdministratorInvitationInput) (*AcceptAdministratorInvitationOutput, error) {
	req, out := c.AcceptAdministratorInvitationRequest(input)
	return out, req.Send()
}

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

const opAcceptInvitation = "AcceptInvitation"

// AcceptInvitationRequest generates a "aws/request.Request" representing the
// client's request for the AcceptInvitation operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See AcceptInvitation for more information on using the AcceptInvitation
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the AcceptInvitationRequest method.
//	req, resp := client.AcceptInvitationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/AcceptInvitation
//
// Deprecated: This operation is deprecated, use AcceptAdministratorInvitation instead
func (c *GuardDuty) AcceptInvitationRequest(input *AcceptInvitationInput) (req *request.Request, output *AcceptInvitationOutput) {
	if c.Client.Config.Logger != nil {
		c.Client.Config.Logger.Log("This operation, AcceptInvitation, has been deprecated")
	}
	op := &request.Operation{
		Name:       opAcceptInvitation,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/master",
	}

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

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

// AcceptInvitation API operation for Amazon GuardDuty.
//
// Accepts the invitation to be monitored by a GuardDuty administrator 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 Amazon GuardDuty's
// API operation AcceptInvitation for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/AcceptInvitation
//
// Deprecated: This operation is deprecated, use AcceptAdministratorInvitation instead
func (c *GuardDuty) AcceptInvitation(input *AcceptInvitationInput) (*AcceptInvitationOutput, error) {
	req, out := c.AcceptInvitationRequest(input)
	return out, req.Send()
}

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

const opArchiveFindings = "ArchiveFindings"

// ArchiveFindingsRequest generates a "aws/request.Request" representing the
// client's request for the ArchiveFindings 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 ArchiveFindings for more information on using the ArchiveFindings
// 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 ArchiveFindingsRequest method.
//	req, resp := client.ArchiveFindingsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/ArchiveFindings
func (c *GuardDuty) ArchiveFindingsRequest(input *ArchiveFindingsInput) (req *request.Request, output *ArchiveFindingsOutput) {
	op := &request.Operation{
		Name:       opArchiveFindings,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/findings/archive",
	}

	if input == nil {
		input = &ArchiveFindingsInput{}
	}

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

// ArchiveFindings API operation for Amazon GuardDuty.
//
// Archives GuardDuty findings that are specified by the list of finding IDs.
//
// Only the administrator account can archive findings. Member accounts don't
// have permission to archive findings from their 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 Amazon GuardDuty's
// API operation ArchiveFindings for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/ArchiveFindings
func (c *GuardDuty) ArchiveFindings(input *ArchiveFindingsInput) (*ArchiveFindingsOutput, error) {
	req, out := c.ArchiveFindingsRequest(input)
	return out, req.Send()
}

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

const opCreateDetector = "CreateDetector"

// CreateDetectorRequest generates a "aws/request.Request" representing the
// client's request for the CreateDetector 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 CreateDetector for more information on using the CreateDetector
// 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 CreateDetectorRequest method.
//	req, resp := client.CreateDetectorRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/CreateDetector
func (c *GuardDuty) CreateDetectorRequest(input *CreateDetectorInput) (req *request.Request, output *CreateDetectorOutput) {
	op := &request.Operation{
		Name:       opCreateDetector,
		HTTPMethod: "POST",
		HTTPPath:   "/detector",
	}

	if input == nil {
		input = &CreateDetectorInput{}
	}

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

// CreateDetector API operation for Amazon GuardDuty.
//
// Creates a single Amazon GuardDuty detector. A detector is a resource that
// represents the GuardDuty service. To start using GuardDuty, you must create
// a detector in each Region where you enable the service. You can have only
// one detector per account per Region. All data sources are enabled in a new
// detector by default.
//
// There might be regional differences because some data sources might not be
// available in all the Amazon Web Services Regions where GuardDuty is presently
// supported. For more information, see Regions and endpoints (https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_regions.html).
//
// 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 Amazon GuardDuty's
// API operation CreateDetector for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/CreateDetector
func (c *GuardDuty) CreateDetector(input *CreateDetectorInput) (*CreateDetectorOutput, error) {
	req, out := c.CreateDetectorRequest(input)
	return out, req.Send()
}

// CreateDetectorWithContext is the same as CreateDetector with the addition of
// the ability to pass a context and additional request options.
//
// See CreateDetector 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 *GuardDuty) CreateDetectorWithContext(ctx aws.Context, input *CreateDetectorInput, opts ...request.Option) (*CreateDetectorOutput, error) {
	req, out := c.CreateDetectorRequest(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/guardduty-2017-11-28/CreateFilter
func (c *GuardDuty) CreateFilterRequest(input *CreateFilterInput) (req *request.Request, output *CreateFilterOutput) {
	op := &request.Operation{
		Name:       opCreateFilter,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/filter",
	}

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

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

// CreateFilter API operation for Amazon GuardDuty.
//
// Creates a filter using the specified finding criteria. The maximum number
// of saved filters per Amazon Web Services account per Region is 100. For more
// information, see Quotas for GuardDuty (https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_limits.html).
//
// 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 Amazon GuardDuty's
// API operation CreateFilter for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/CreateFilter
func (c *GuardDuty) 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 *GuardDuty) 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 opCreateIPSet = "CreateIPSet"

// CreateIPSetRequest generates a "aws/request.Request" representing the
// client's request for the CreateIPSet 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 CreateIPSet for more information on using the CreateIPSet
// 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 CreateIPSetRequest method.
//	req, resp := client.CreateIPSetRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/CreateIPSet
func (c *GuardDuty) CreateIPSetRequest(input *CreateIPSetInput) (req *request.Request, output *CreateIPSetOutput) {
	op := &request.Operation{
		Name:       opCreateIPSet,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/ipset",
	}

	if input == nil {
		input = &CreateIPSetInput{}
	}

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

// CreateIPSet API operation for Amazon GuardDuty.
//
// Creates a new IPSet, which is called a trusted IP list in the console user
// interface. An IPSet is a list of IP addresses that are trusted for secure
// communication with Amazon Web Services infrastructure and applications. GuardDuty
// doesn't generate findings for IP addresses that are included in IPSets. Only
// users from the administrator account can use this operation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon GuardDuty's
// API operation CreateIPSet for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/CreateIPSet
func (c *GuardDuty) CreateIPSet(input *CreateIPSetInput) (*CreateIPSetOutput, error) {
	req, out := c.CreateIPSetRequest(input)
	return out, req.Send()
}

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

const opCreateMembers = "CreateMembers"

// CreateMembersRequest generates a "aws/request.Request" representing the
// client's request for the CreateMembers operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See CreateMembers for more information on using the CreateMembers
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the CreateMembersRequest method.
//	req, resp := client.CreateMembersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/CreateMembers
func (c *GuardDuty) CreateMembersRequest(input *CreateMembersInput) (req *request.Request, output *CreateMembersOutput) {
	op := &request.Operation{
		Name:       opCreateMembers,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/member",
	}

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

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

// CreateMembers API operation for Amazon GuardDuty.
//
// Creates member accounts of the current Amazon Web Services account by specifying
// a list of Amazon Web Services account IDs. This step is a prerequisite for
// managing the associated member accounts either by invitation or through an
// organization.
//
// As a delegated administrator, using CreateMembers will enable GuardDuty in
// the added member accounts, with the exception of the organization delegated
// administrator account. A delegated administrator must enable GuardDuty prior
// to being added as a member.
//
// When you use CreateMembers as an Organizations delegated administrator, GuardDuty
// applies your organization's auto-enable settings to the member accounts in
// this request, irrespective of the accounts being new or existing members.
// For more information about the existing auto-enable settings for your organization,
// see DescribeOrganizationConfiguration (https://docs.aws.amazon.com/guardduty/latest/APIReference/API_DescribeOrganizationConfiguration.html).
//
// If you are adding accounts by invitation, before using InviteMembers (https://docs.aws.amazon.com/guardduty/latest/APIReference/API_InviteMembers.html),
// use CreateMembers after GuardDuty has been enabled in potential member accounts.
//
// If you disassociate a member from a GuardDuty delegated administrator, the
// member account details obtained from this API, including the associated email
// addresses, will be retained. This is done so that the delegated administrator
// can invoke the InviteMembers (https://docs.aws.amazon.com/guardduty/latest/APIReference/API_InviteMembers.html)
// API without the need to invoke the CreateMembers API again. To remove the
// details associated with a member account, the delegated administrator must
// invoke the DeleteMembers (https://docs.aws.amazon.com/guardduty/latest/APIReference/API_DeleteMembers.html)
// API.
//
// 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 Amazon GuardDuty's
// API operation CreateMembers for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/CreateMembers
func (c *GuardDuty) CreateMembers(input *CreateMembersInput) (*CreateMembersOutput, error) {
	req, out := c.CreateMembersRequest(input)
	return out, req.Send()
}

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

const opCreatePublishingDestination = "CreatePublishingDestination"

// CreatePublishingDestinationRequest generates a "aws/request.Request" representing the
// client's request for the CreatePublishingDestination 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 CreatePublishingDestination for more information on using the CreatePublishingDestination
// 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 CreatePublishingDestinationRequest method.
//	req, resp := client.CreatePublishingDestinationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/CreatePublishingDestination
func (c *GuardDuty) CreatePublishingDestinationRequest(input *CreatePublishingDestinationInput) (req *request.Request, output *CreatePublishingDestinationOutput) {
	op := &request.Operation{
		Name:       opCreatePublishingDestination,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/publishingDestination",
	}

	if input == nil {
		input = &CreatePublishingDestinationInput{}
	}

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

// CreatePublishingDestination API operation for Amazon GuardDuty.
//
// Creates a publishing destination to export findings to. The resource to export
// findings to must exist before you use this operation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon GuardDuty's
// API operation CreatePublishingDestination for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/CreatePublishingDestination
func (c *GuardDuty) CreatePublishingDestination(input *CreatePublishingDestinationInput) (*CreatePublishingDestinationOutput, error) {
	req, out := c.CreatePublishingDestinationRequest(input)
	return out, req.Send()
}

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

const opCreateSampleFindings = "CreateSampleFindings"

// CreateSampleFindingsRequest generates a "aws/request.Request" representing the
// client's request for the CreateSampleFindings 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 CreateSampleFindings for more information on using the CreateSampleFindings
// 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 CreateSampleFindingsRequest method.
//	req, resp := client.CreateSampleFindingsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/CreateSampleFindings
func (c *GuardDuty) CreateSampleFindingsRequest(input *CreateSampleFindingsInput) (req *request.Request, output *CreateSampleFindingsOutput) {
	op := &request.Operation{
		Name:       opCreateSampleFindings,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/findings/create",
	}

	if input == nil {
		input = &CreateSampleFindingsInput{}
	}

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

// CreateSampleFindings API operation for Amazon GuardDuty.
//
// Generates sample findings of types specified by the list of finding types.
// If 'NULL' is specified for findingTypes, the API generates sample findings
// of all supported finding types.
//
// 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 Amazon GuardDuty's
// API operation CreateSampleFindings for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/CreateSampleFindings
func (c *GuardDuty) CreateSampleFindings(input *CreateSampleFindingsInput) (*CreateSampleFindingsOutput, error) {
	req, out := c.CreateSampleFindingsRequest(input)
	return out, req.Send()
}

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

const opCreateThreatIntelSet = "CreateThreatIntelSet"

// CreateThreatIntelSetRequest generates a "aws/request.Request" representing the
// client's request for the CreateThreatIntelSet 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 CreateThreatIntelSet for more information on using the CreateThreatIntelSet
// 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 CreateThreatIntelSetRequest method.
//	req, resp := client.CreateThreatIntelSetRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/CreateThreatIntelSet
func (c *GuardDuty) CreateThreatIntelSetRequest(input *CreateThreatIntelSetInput) (req *request.Request, output *CreateThreatIntelSetOutput) {
	op := &request.Operation{
		Name:       opCreateThreatIntelSet,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/threatintelset",
	}

	if input == nil {
		input = &CreateThreatIntelSetInput{}
	}

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

// CreateThreatIntelSet API operation for Amazon GuardDuty.
//
// Creates a new ThreatIntelSet. ThreatIntelSets consist of known malicious
// IP addresses. GuardDuty generates findings based on ThreatIntelSets. Only
// users of the administrator account can use this operation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon GuardDuty's
// API operation CreateThreatIntelSet for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/CreateThreatIntelSet
func (c *GuardDuty) CreateThreatIntelSet(input *CreateThreatIntelSetInput) (*CreateThreatIntelSetOutput, error) {
	req, out := c.CreateThreatIntelSetRequest(input)
	return out, req.Send()
}

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

const opDeclineInvitations = "DeclineInvitations"

// DeclineInvitationsRequest generates a "aws/request.Request" representing the
// client's request for the DeclineInvitations operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeclineInvitations for more information on using the DeclineInvitations
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeclineInvitationsRequest method.
//	req, resp := client.DeclineInvitationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DeclineInvitations
func (c *GuardDuty) DeclineInvitationsRequest(input *DeclineInvitationsInput) (req *request.Request, output *DeclineInvitationsOutput) {
	op := &request.Operation{
		Name:       opDeclineInvitations,
		HTTPMethod: "POST",
		HTTPPath:   "/invitation/decline",
	}

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

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

// DeclineInvitations API operation for Amazon GuardDuty.
//
// Declines invitations sent to the current member account by Amazon Web Services
// accounts specified by their account IDs.
//
// 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 Amazon GuardDuty's
// API operation DeclineInvitations for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DeclineInvitations
func (c *GuardDuty) DeclineInvitations(input *DeclineInvitationsInput) (*DeclineInvitationsOutput, error) {
	req, out := c.DeclineInvitationsRequest(input)
	return out, req.Send()
}

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

const opDeleteDetector = "DeleteDetector"

// DeleteDetectorRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDetector 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 DeleteDetector for more information on using the DeleteDetector
// 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 DeleteDetectorRequest method.
//	req, resp := client.DeleteDetectorRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DeleteDetector
func (c *GuardDuty) DeleteDetectorRequest(input *DeleteDetectorInput) (req *request.Request, output *DeleteDetectorOutput) {
	op := &request.Operation{
		Name:       opDeleteDetector,
		HTTPMethod: "DELETE",
		HTTPPath:   "/detector/{detectorId}",
	}

	if input == nil {
		input = &DeleteDetectorInput{}
	}

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

// DeleteDetector API operation for Amazon GuardDuty.
//
// Deletes an Amazon GuardDuty detector that is specified by the detector ID.
//
// 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 Amazon GuardDuty's
// API operation DeleteDetector for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DeleteDetector
func (c *GuardDuty) DeleteDetector(input *DeleteDetectorInput) (*DeleteDetectorOutput, error) {
	req, out := c.DeleteDetectorRequest(input)
	return out, req.Send()
}

// DeleteDetectorWithContext is the same as DeleteDetector with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteDetector 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 *GuardDuty) DeleteDetectorWithContext(ctx aws.Context, input *DeleteDetectorInput, opts ...request.Option) (*DeleteDetectorOutput, error) {
	req, out := c.DeleteDetectorRequest(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/guardduty-2017-11-28/DeleteFilter
func (c *GuardDuty) DeleteFilterRequest(input *DeleteFilterInput) (req *request.Request, output *DeleteFilterOutput) {
	op := &request.Operation{
		Name:       opDeleteFilter,
		HTTPMethod: "DELETE",
		HTTPPath:   "/detector/{detectorId}/filter/{filterName}",
	}

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

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

// DeleteFilter API operation for Amazon GuardDuty.
//
// Deletes the filter specified by the filter name.
//
// 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 Amazon GuardDuty's
// API operation DeleteFilter for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DeleteFilter
func (c *GuardDuty) 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 *GuardDuty) 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 opDeleteIPSet = "DeleteIPSet"

// DeleteIPSetRequest generates a "aws/request.Request" representing the
// client's request for the DeleteIPSet 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 DeleteIPSet for more information on using the DeleteIPSet
// 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 DeleteIPSetRequest method.
//	req, resp := client.DeleteIPSetRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DeleteIPSet
func (c *GuardDuty) DeleteIPSetRequest(input *DeleteIPSetInput) (req *request.Request, output *DeleteIPSetOutput) {
	op := &request.Operation{
		Name:       opDeleteIPSet,
		HTTPMethod: "DELETE",
		HTTPPath:   "/detector/{detectorId}/ipset/{ipSetId}",
	}

	if input == nil {
		input = &DeleteIPSetInput{}
	}

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

// DeleteIPSet API operation for Amazon GuardDuty.
//
// Deletes the IPSet specified by the ipSetId. IPSets are called trusted IP
// lists in the console user interface.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon GuardDuty's
// API operation DeleteIPSet for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DeleteIPSet
func (c *GuardDuty) DeleteIPSet(input *DeleteIPSetInput) (*DeleteIPSetOutput, error) {
	req, out := c.DeleteIPSetRequest(input)
	return out, req.Send()
}

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

const opDeleteInvitations = "DeleteInvitations"

// DeleteInvitationsRequest generates a "aws/request.Request" representing the
// client's request for the DeleteInvitations operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeleteInvitations for more information on using the DeleteInvitations
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeleteInvitationsRequest method.
//	req, resp := client.DeleteInvitationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DeleteInvitations
func (c *GuardDuty) DeleteInvitationsRequest(input *DeleteInvitationsInput) (req *request.Request, output *DeleteInvitationsOutput) {
	op := &request.Operation{
		Name:       opDeleteInvitations,
		HTTPMethod: "POST",
		HTTPPath:   "/invitation/delete",
	}

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

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

// DeleteInvitations API operation for Amazon GuardDuty.
//
// Deletes invitations sent to the current member account by Amazon Web Services
// accounts specified by their account IDs.
//
// 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 Amazon GuardDuty's
// API operation DeleteInvitations for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DeleteInvitations
func (c *GuardDuty) DeleteInvitations(input *DeleteInvitationsInput) (*DeleteInvitationsOutput, error) {
	req, out := c.DeleteInvitationsRequest(input)
	return out, req.Send()
}

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

const opDeleteMembers = "DeleteMembers"

// DeleteMembersRequest generates a "aws/request.Request" representing the
// client's request for the DeleteMembers operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeleteMembers for more information on using the DeleteMembers
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeleteMembersRequest method.
//	req, resp := client.DeleteMembersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DeleteMembers
func (c *GuardDuty) DeleteMembersRequest(input *DeleteMembersInput) (req *request.Request, output *DeleteMembersOutput) {
	op := &request.Operation{
		Name:       opDeleteMembers,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/member/delete",
	}

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

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

// DeleteMembers API operation for Amazon GuardDuty.
//
// Deletes GuardDuty member accounts (to the current GuardDuty administrator
// account) specified by the account IDs.
//
// With autoEnableOrganizationMembers configuration for your organization set
// to ALL, you'll receive an error if you attempt to disable GuardDuty for a
// member account in 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 Amazon GuardDuty's
// API operation DeleteMembers for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DeleteMembers
func (c *GuardDuty) DeleteMembers(input *DeleteMembersInput) (*DeleteMembersOutput, error) {
	req, out := c.DeleteMembersRequest(input)
	return out, req.Send()
}

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

const opDeletePublishingDestination = "DeletePublishingDestination"

// DeletePublishingDestinationRequest generates a "aws/request.Request" representing the
// client's request for the DeletePublishingDestination 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 DeletePublishingDestination for more information on using the DeletePublishingDestination
// 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 DeletePublishingDestinationRequest method.
//	req, resp := client.DeletePublishingDestinationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DeletePublishingDestination
func (c *GuardDuty) DeletePublishingDestinationRequest(input *DeletePublishingDestinationInput) (req *request.Request, output *DeletePublishingDestinationOutput) {
	op := &request.Operation{
		Name:       opDeletePublishingDestination,
		HTTPMethod: "DELETE",
		HTTPPath:   "/detector/{detectorId}/publishingDestination/{destinationId}",
	}

	if input == nil {
		input = &DeletePublishingDestinationInput{}
	}

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

// DeletePublishingDestination API operation for Amazon GuardDuty.
//
// Deletes the publishing definition with the specified destinationId.
//
// 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 Amazon GuardDuty's
// API operation DeletePublishingDestination for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DeletePublishingDestination
func (c *GuardDuty) DeletePublishingDestination(input *DeletePublishingDestinationInput) (*DeletePublishingDestinationOutput, error) {
	req, out := c.DeletePublishingDestinationRequest(input)
	return out, req.Send()
}

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

const opDeleteThreatIntelSet = "DeleteThreatIntelSet"

// DeleteThreatIntelSetRequest generates a "aws/request.Request" representing the
// client's request for the DeleteThreatIntelSet 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 DeleteThreatIntelSet for more information on using the DeleteThreatIntelSet
// 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 DeleteThreatIntelSetRequest method.
//	req, resp := client.DeleteThreatIntelSetRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DeleteThreatIntelSet
func (c *GuardDuty) DeleteThreatIntelSetRequest(input *DeleteThreatIntelSetInput) (req *request.Request, output *DeleteThreatIntelSetOutput) {
	op := &request.Operation{
		Name:       opDeleteThreatIntelSet,
		HTTPMethod: "DELETE",
		HTTPPath:   "/detector/{detectorId}/threatintelset/{threatIntelSetId}",
	}

	if input == nil {
		input = &DeleteThreatIntelSetInput{}
	}

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

// DeleteThreatIntelSet API operation for Amazon GuardDuty.
//
// Deletes the ThreatIntelSet specified by the ThreatIntelSet ID.
//
// 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 Amazon GuardDuty's
// API operation DeleteThreatIntelSet for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DeleteThreatIntelSet
func (c *GuardDuty) DeleteThreatIntelSet(input *DeleteThreatIntelSetInput) (*DeleteThreatIntelSetOutput, error) {
	req, out := c.DeleteThreatIntelSetRequest(input)
	return out, req.Send()
}

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

const opDescribeMalwareScans = "DescribeMalwareScans"

// DescribeMalwareScansRequest generates a "aws/request.Request" representing the
// client's request for the DescribeMalwareScans 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 DescribeMalwareScans for more information on using the DescribeMalwareScans
// 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 DescribeMalwareScansRequest method.
//	req, resp := client.DescribeMalwareScansRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DescribeMalwareScans
func (c *GuardDuty) DescribeMalwareScansRequest(input *DescribeMalwareScansInput) (req *request.Request, output *DescribeMalwareScansOutput) {
	op := &request.Operation{
		Name:       opDescribeMalwareScans,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/malware-scans",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeMalwareScansInput{}
	}

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

// DescribeMalwareScans API operation for Amazon GuardDuty.
//
// Returns a list of malware scans. Each member account can view the malware
// scans for their own accounts. An administrator can view the malware scans
// for all the member accounts.
//
// There might be regional differences because some data sources might not be
// available in all the Amazon Web Services Regions where GuardDuty is presently
// supported. For more information, see Regions and endpoints (https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_regions.html).
//
// 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 Amazon GuardDuty's
// API operation DescribeMalwareScans for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DescribeMalwareScans
func (c *GuardDuty) DescribeMalwareScans(input *DescribeMalwareScansInput) (*DescribeMalwareScansOutput, error) {
	req, out := c.DescribeMalwareScansRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

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/guardduty-2017-11-28/DescribeOrganizationConfiguration
func (c *GuardDuty) DescribeOrganizationConfigurationRequest(input *DescribeOrganizationConfigurationInput) (req *request.Request, output *DescribeOrganizationConfigurationOutput) {
	op := &request.Operation{
		Name:       opDescribeOrganizationConfiguration,
		HTTPMethod: "GET",
		HTTPPath:   "/detector/{detectorId}/admin",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

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

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

// DescribeOrganizationConfiguration API operation for Amazon GuardDuty.
//
// Returns information about the account selected as the delegated administrator
// for GuardDuty.
//
// There might be regional differences because some data sources might not be
// available in all the Amazon Web Services Regions where GuardDuty is presently
// supported. For more information, see Regions and endpoints (https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_regions.html).
//
// 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 Amazon GuardDuty's
// API operation DescribeOrganizationConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DescribeOrganizationConfiguration
func (c *GuardDuty) 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 *GuardDuty) 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()
}

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

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

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

	return p.Err()
}

const opDescribePublishingDestination = "DescribePublishingDestination"

// DescribePublishingDestinationRequest generates a "aws/request.Request" representing the
// client's request for the DescribePublishingDestination 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 DescribePublishingDestination for more information on using the DescribePublishingDestination
// 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 DescribePublishingDestinationRequest method.
//	req, resp := client.DescribePublishingDestinationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DescribePublishingDestination
func (c *GuardDuty) DescribePublishingDestinationRequest(input *DescribePublishingDestinationInput) (req *request.Request, output *DescribePublishingDestinationOutput) {
	op := &request.Operation{
		Name:       opDescribePublishingDestination,
		HTTPMethod: "GET",
		HTTPPath:   "/detector/{detectorId}/publishingDestination/{destinationId}",
	}

	if input == nil {
		input = &DescribePublishingDestinationInput{}
	}

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

// DescribePublishingDestination API operation for Amazon GuardDuty.
//
// Returns information about the publishing destination specified by the provided
// destinationId.
//
// 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 Amazon GuardDuty's
// API operation DescribePublishingDestination for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DescribePublishingDestination
func (c *GuardDuty) DescribePublishingDestination(input *DescribePublishingDestinationInput) (*DescribePublishingDestinationOutput, error) {
	req, out := c.DescribePublishingDestinationRequest(input)
	return out, req.Send()
}

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

const opDisableOrganizationAdminAccount = "DisableOrganizationAdminAccount"

// DisableOrganizationAdminAccountRequest generates a "aws/request.Request" representing the
// client's request for the DisableOrganizationAdminAccount operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DisableOrganizationAdminAccount for more information on using the DisableOrganizationAdminAccount
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DisableOrganizationAdminAccountRequest method.
//	req, resp := client.DisableOrganizationAdminAccountRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DisableOrganizationAdminAccount
func (c *GuardDuty) DisableOrganizationAdminAccountRequest(input *DisableOrganizationAdminAccountInput) (req *request.Request, output *DisableOrganizationAdminAccountOutput) {
	op := &request.Operation{
		Name:       opDisableOrganizationAdminAccount,
		HTTPMethod: "POST",
		HTTPPath:   "/admin/disable",
	}

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

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

// DisableOrganizationAdminAccount API operation for Amazon GuardDuty.
//
// Removes the existing GuardDuty delegated administrator of the organization.
// Only the organization's management account can run this API operation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon GuardDuty's
// API operation DisableOrganizationAdminAccount for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DisableOrganizationAdminAccount
func (c *GuardDuty) DisableOrganizationAdminAccount(input *DisableOrganizationAdminAccountInput) (*DisableOrganizationAdminAccountOutput, error) {
	req, out := c.DisableOrganizationAdminAccountRequest(input)
	return out, req.Send()
}

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

const opDisassociateFromAdministratorAccount = "DisassociateFromAdministratorAccount"

// DisassociateFromAdministratorAccountRequest generates a "aws/request.Request" representing the
// client's request for the DisassociateFromAdministratorAccount operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DisassociateFromAdministratorAccount for more information on using the DisassociateFromAdministratorAccount
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DisassociateFromAdministratorAccountRequest method.
//	req, resp := client.DisassociateFromAdministratorAccountRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DisassociateFromAdministratorAccount
func (c *GuardDuty) DisassociateFromAdministratorAccountRequest(input *DisassociateFromAdministratorAccountInput) (req *request.Request, output *DisassociateFromAdministratorAccountOutput) {
	op := &request.Operation{
		Name:       opDisassociateFromAdministratorAccount,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/administrator/disassociate",
	}

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

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

// DisassociateFromAdministratorAccount API operation for Amazon GuardDuty.
//
// Disassociates the current GuardDuty member account from its administrator
// account.
//
// When you disassociate an invited member from a GuardDuty delegated administrator,
// the member account details obtained from the CreateMembers (https://docs.aws.amazon.com/guardduty/latest/APIReference/API_CreateMembers.html)
// API, including the associated email addresses, are retained. This is done
// so that the delegated administrator can invoke the InviteMembers (https://docs.aws.amazon.com/guardduty/latest/APIReference/API_InviteMembers.html)
// API without the need to invoke the CreateMembers API again. To remove the
// details associated with a member account, the delegated administrator must
// invoke the DeleteMembers (https://docs.aws.amazon.com/guardduty/latest/APIReference/API_DeleteMembers.html)
// API.
//
// With autoEnableOrganizationMembers configuration for your organization set
// to ALL, you'll receive an error if you attempt to disable GuardDuty in a
// member account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon GuardDuty's
// API operation DisassociateFromAdministratorAccount for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DisassociateFromAdministratorAccount
func (c *GuardDuty) DisassociateFromAdministratorAccount(input *DisassociateFromAdministratorAccountInput) (*DisassociateFromAdministratorAccountOutput, error) {
	req, out := c.DisassociateFromAdministratorAccountRequest(input)
	return out, req.Send()
}

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

const opDisassociateFromMasterAccount = "DisassociateFromMasterAccount"

// DisassociateFromMasterAccountRequest generates a "aws/request.Request" representing the
// client's request for the DisassociateFromMasterAccount operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DisassociateFromMasterAccount for more information on using the DisassociateFromMasterAccount
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DisassociateFromMasterAccountRequest method.
//	req, resp := client.DisassociateFromMasterAccountRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DisassociateFromMasterAccount
//
// Deprecated: This operation is deprecated, use DisassociateFromAdministratorAccount instead
func (c *GuardDuty) DisassociateFromMasterAccountRequest(input *DisassociateFromMasterAccountInput) (req *request.Request, output *DisassociateFromMasterAccountOutput) {
	if c.Client.Config.Logger != nil {
		c.Client.Config.Logger.Log("This operation, DisassociateFromMasterAccount, has been deprecated")
	}
	op := &request.Operation{
		Name:       opDisassociateFromMasterAccount,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/master/disassociate",
	}

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

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

// DisassociateFromMasterAccount API operation for Amazon GuardDuty.
//
// Disassociates the current GuardDuty member account from its administrator
// account.
//
// When you disassociate an invited member from a GuardDuty delegated administrator,
// the member account details obtained from the CreateMembers (https://docs.aws.amazon.com/guardduty/latest/APIReference/API_CreateMembers.html)
// API, including the associated email addresses, are retained. This is done
// so that the delegated administrator can invoke the InviteMembers (https://docs.aws.amazon.com/guardduty/latest/APIReference/API_InviteMembers.html)
// API without the need to invoke the CreateMembers API again. To remove the
// details associated with a member account, the delegated administrator must
// invoke the DeleteMembers (https://docs.aws.amazon.com/guardduty/latest/APIReference/API_DeleteMembers.html)
// API.
//
// 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 Amazon GuardDuty's
// API operation DisassociateFromMasterAccount for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DisassociateFromMasterAccount
//
// Deprecated: This operation is deprecated, use DisassociateFromAdministratorAccount instead
func (c *GuardDuty) DisassociateFromMasterAccount(input *DisassociateFromMasterAccountInput) (*DisassociateFromMasterAccountOutput, error) {
	req, out := c.DisassociateFromMasterAccountRequest(input)
	return out, req.Send()
}

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

const opDisassociateMembers = "DisassociateMembers"

// DisassociateMembersRequest generates a "aws/request.Request" representing the
// client's request for the DisassociateMembers operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DisassociateMembers for more information on using the DisassociateMembers
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DisassociateMembersRequest method.
//	req, resp := client.DisassociateMembersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DisassociateMembers
func (c *GuardDuty) DisassociateMembersRequest(input *DisassociateMembersInput) (req *request.Request, output *DisassociateMembersOutput) {
	op := &request.Operation{
		Name:       opDisassociateMembers,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/member/disassociate",
	}

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

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

// DisassociateMembers API operation for Amazon GuardDuty.
//
// Disassociates GuardDuty member accounts (from the current administrator account)
// specified by the account IDs.
//
// When you disassociate an invited member from a GuardDuty delegated administrator,
// the member account details obtained from the CreateMembers (https://docs.aws.amazon.com/guardduty/latest/APIReference/API_CreateMembers.html)
// API, including the associated email addresses, are retained. This is done
// so that the delegated administrator can invoke the InviteMembers (https://docs.aws.amazon.com/guardduty/latest/APIReference/API_InviteMembers.html)
// API without the need to invoke the CreateMembers API again. To remove the
// details associated with a member account, the delegated administrator must
// invoke the DeleteMembers (https://docs.aws.amazon.com/guardduty/latest/APIReference/API_DeleteMembers.html)
// API.
//
// With autoEnableOrganizationMembers configuration for your organization set
// to ALL, you'll receive an error if you attempt to disassociate a member account
// before removing them from 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 Amazon GuardDuty's
// API operation DisassociateMembers for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/DisassociateMembers
func (c *GuardDuty) DisassociateMembers(input *DisassociateMembersInput) (*DisassociateMembersOutput, error) {
	req, out := c.DisassociateMembersRequest(input)
	return out, req.Send()
}

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

const opEnableOrganizationAdminAccount = "EnableOrganizationAdminAccount"

// EnableOrganizationAdminAccountRequest generates a "aws/request.Request" representing the
// client's request for the EnableOrganizationAdminAccount operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See EnableOrganizationAdminAccount for more information on using the EnableOrganizationAdminAccount
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the EnableOrganizationAdminAccountRequest method.
//	req, resp := client.EnableOrganizationAdminAccountRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/EnableOrganizationAdminAccount
func (c *GuardDuty) EnableOrganizationAdminAccountRequest(input *EnableOrganizationAdminAccountInput) (req *request.Request, output *EnableOrganizationAdminAccountOutput) {
	op := &request.Operation{
		Name:       opEnableOrganizationAdminAccount,
		HTTPMethod: "POST",
		HTTPPath:   "/admin/enable",
	}

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

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

// EnableOrganizationAdminAccount API operation for Amazon GuardDuty.
//
// Designates an Amazon Web Services account within the organization as your
// GuardDuty delegated administrator. Only the organization's management account
// can run this API operation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon GuardDuty's
// API operation EnableOrganizationAdminAccount for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/EnableOrganizationAdminAccount
func (c *GuardDuty) EnableOrganizationAdminAccount(input *EnableOrganizationAdminAccountInput) (*EnableOrganizationAdminAccountOutput, error) {
	req, out := c.EnableOrganizationAdminAccountRequest(input)
	return out, req.Send()
}

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

const opGetAdministratorAccount = "GetAdministratorAccount"

// GetAdministratorAccountRequest generates a "aws/request.Request" representing the
// client's request for the GetAdministratorAccount operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See GetAdministratorAccount for more information on using the GetAdministratorAccount
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the GetAdministratorAccountRequest method.
//	req, resp := client.GetAdministratorAccountRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetAdministratorAccount
func (c *GuardDuty) GetAdministratorAccountRequest(input *GetAdministratorAccountInput) (req *request.Request, output *GetAdministratorAccountOutput) {
	op := &request.Operation{
		Name:       opGetAdministratorAccount,
		HTTPMethod: "GET",
		HTTPPath:   "/detector/{detectorId}/administrator",
	}

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

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

// GetAdministratorAccount API operation for Amazon GuardDuty.
//
// Provides the details of the GuardDuty administrator account associated with
// the current GuardDuty member account.
//
// If the organization's management account or a delegated administrator runs
// this API, it will return success (HTTP 200) but no content.
//
// 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 Amazon GuardDuty's
// API operation GetAdministratorAccount for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetAdministratorAccount
func (c *GuardDuty) GetAdministratorAccount(input *GetAdministratorAccountInput) (*GetAdministratorAccountOutput, error) {
	req, out := c.GetAdministratorAccountRequest(input)
	return out, req.Send()
}

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

const opGetCoverageStatistics = "GetCoverageStatistics"

// GetCoverageStatisticsRequest generates a "aws/request.Request" representing the
// client's request for the GetCoverageStatistics 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 GetCoverageStatistics for more information on using the GetCoverageStatistics
// 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 GetCoverageStatisticsRequest method.
//	req, resp := client.GetCoverageStatisticsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetCoverageStatistics
func (c *GuardDuty) GetCoverageStatisticsRequest(input *GetCoverageStatisticsInput) (req *request.Request, output *GetCoverageStatisticsOutput) {
	op := &request.Operation{
		Name:       opGetCoverageStatistics,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/coverage/statistics",
	}

	if input == nil {
		input = &GetCoverageStatisticsInput{}
	}

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

// GetCoverageStatistics API operation for Amazon GuardDuty.
//
// Retrieves aggregated statistics for your account. If you are a GuardDuty
// administrator, you can retrieve the statistics for all the resources associated
// with the active member accounts in your organization who have enabled Runtime
// Monitoring and have the GuardDuty security agent running on their resources.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon GuardDuty's
// API operation GetCoverageStatistics for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetCoverageStatistics
func (c *GuardDuty) GetCoverageStatistics(input *GetCoverageStatisticsInput) (*GetCoverageStatisticsOutput, error) {
	req, out := c.GetCoverageStatisticsRequest(input)
	return out, req.Send()
}

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

const opGetDetector = "GetDetector"

// GetDetectorRequest generates a "aws/request.Request" representing the
// client's request for the GetDetector 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 GetDetector for more information on using the GetDetector
// 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 GetDetectorRequest method.
//	req, resp := client.GetDetectorRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetDetector
func (c *GuardDuty) GetDetectorRequest(input *GetDetectorInput) (req *request.Request, output *GetDetectorOutput) {
	op := &request.Operation{
		Name:       opGetDetector,
		HTTPMethod: "GET",
		HTTPPath:   "/detector/{detectorId}",
	}

	if input == nil {
		input = &GetDetectorInput{}
	}

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

// GetDetector API operation for Amazon GuardDuty.
//
// Retrieves an Amazon GuardDuty detector specified by the detectorId.
//
// There might be regional differences because some data sources might not be
// available in all the Amazon Web Services Regions where GuardDuty is presently
// supported. For more information, see Regions and endpoints (https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_regions.html).
//
// 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 Amazon GuardDuty's
// API operation GetDetector for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetDetector
func (c *GuardDuty) GetDetector(input *GetDetectorInput) (*GetDetectorOutput, error) {
	req, out := c.GetDetectorRequest(input)
	return out, req.Send()
}

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

const opGetFilter = "GetFilter"

// GetFilterRequest generates a "aws/request.Request" representing the
// client's request for the GetFilter 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 GetFilter for more information on using the GetFilter
// 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 GetFilterRequest method.
//	req, resp := client.GetFilterRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetFilter
func (c *GuardDuty) GetFilterRequest(input *GetFilterInput) (req *request.Request, output *GetFilterOutput) {
	op := &request.Operation{
		Name:       opGetFilter,
		HTTPMethod: "GET",
		HTTPPath:   "/detector/{detectorId}/filter/{filterName}",
	}

	if input == nil {
		input = &GetFilterInput{}
	}

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

// GetFilter API operation for Amazon GuardDuty.
//
// Returns the details of the filter specified by the filter name.
//
// 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 Amazon GuardDuty's
// API operation GetFilter for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetFilter
func (c *GuardDuty) GetFilter(input *GetFilterInput) (*GetFilterOutput, error) {
	req, out := c.GetFilterRequest(input)
	return out, req.Send()
}

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

const opGetFindings = "GetFindings"

// GetFindingsRequest generates a "aws/request.Request" representing the
// client's request for the GetFindings operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See GetFindings for more information on using the GetFindings
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the GetFindingsRequest method.
//	req, resp := client.GetFindingsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetFindings
func (c *GuardDuty) GetFindingsRequest(input *GetFindingsInput) (req *request.Request, output *GetFindingsOutput) {
	op := &request.Operation{
		Name:       opGetFindings,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/findings/get",
	}

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

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

// GetFindings API operation for Amazon GuardDuty.
//
// Describes Amazon GuardDuty findings specified by finding IDs.
//
// 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 Amazon GuardDuty's
// API operation GetFindings for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetFindings
func (c *GuardDuty) GetFindings(input *GetFindingsInput) (*GetFindingsOutput, error) {
	req, out := c.GetFindingsRequest(input)
	return out, req.Send()
}

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

const opGetFindingsStatistics = "GetFindingsStatistics"

// GetFindingsStatisticsRequest generates a "aws/request.Request" representing the
// client's request for the GetFindingsStatistics 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 GetFindingsStatistics for more information on using the GetFindingsStatistics
// 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 GetFindingsStatisticsRequest method.
//	req, resp := client.GetFindingsStatisticsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetFindingsStatistics
func (c *GuardDuty) GetFindingsStatisticsRequest(input *GetFindingsStatisticsInput) (req *request.Request, output *GetFindingsStatisticsOutput) {
	op := &request.Operation{
		Name:       opGetFindingsStatistics,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/findings/statistics",
	}

	if input == nil {
		input = &GetFindingsStatisticsInput{}
	}

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

// GetFindingsStatistics API operation for Amazon GuardDuty.
//
// Lists Amazon GuardDuty findings statistics for the specified detector ID.
//
// 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 Amazon GuardDuty's
// API operation GetFindingsStatistics for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetFindingsStatistics
func (c *GuardDuty) GetFindingsStatistics(input *GetFindingsStatisticsInput) (*GetFindingsStatisticsOutput, error) {
	req, out := c.GetFindingsStatisticsRequest(input)
	return out, req.Send()
}

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

const opGetIPSet = "GetIPSet"

// GetIPSetRequest generates a "aws/request.Request" representing the
// client's request for the GetIPSet 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 GetIPSet for more information on using the GetIPSet
// 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 GetIPSetRequest method.
//	req, resp := client.GetIPSetRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetIPSet
func (c *GuardDuty) GetIPSetRequest(input *GetIPSetInput) (req *request.Request, output *GetIPSetOutput) {
	op := &request.Operation{
		Name:       opGetIPSet,
		HTTPMethod: "GET",
		HTTPPath:   "/detector/{detectorId}/ipset/{ipSetId}",
	}

	if input == nil {
		input = &GetIPSetInput{}
	}

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

// GetIPSet API operation for Amazon GuardDuty.
//
// Retrieves the IPSet specified by the ipSetId.
//
// 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 Amazon GuardDuty's
// API operation GetIPSet for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetIPSet
func (c *GuardDuty) GetIPSet(input *GetIPSetInput) (*GetIPSetOutput, error) {
	req, out := c.GetIPSetRequest(input)
	return out, req.Send()
}

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

const opGetInvitationsCount = "GetInvitationsCount"

// GetInvitationsCountRequest generates a "aws/request.Request" representing the
// client's request for the GetInvitationsCount operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See GetInvitationsCount for more information on using the GetInvitationsCount
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the GetInvitationsCountRequest method.
//	req, resp := client.GetInvitationsCountRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetInvitationsCount
func (c *GuardDuty) GetInvitationsCountRequest(input *GetInvitationsCountInput) (req *request.Request, output *GetInvitationsCountOutput) {
	op := &request.Operation{
		Name:       opGetInvitationsCount,
		HTTPMethod: "GET",
		HTTPPath:   "/invitation/count",
	}

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

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

// GetInvitationsCount API operation for Amazon GuardDuty.
//
// Returns the count of all GuardDuty membership invitations that were sent
// to the current member account except the currently accepted invitation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon GuardDuty's
// API operation GetInvitationsCount for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetInvitationsCount
func (c *GuardDuty) GetInvitationsCount(input *GetInvitationsCountInput) (*GetInvitationsCountOutput, error) {
	req, out := c.GetInvitationsCountRequest(input)
	return out, req.Send()
}

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

const opGetMalwareScanSettings = "GetMalwareScanSettings"

// GetMalwareScanSettingsRequest generates a "aws/request.Request" representing the
// client's request for the GetMalwareScanSettings 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 GetMalwareScanSettings for more information on using the GetMalwareScanSettings
// 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 GetMalwareScanSettingsRequest method.
//	req, resp := client.GetMalwareScanSettingsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetMalwareScanSettings
func (c *GuardDuty) GetMalwareScanSettingsRequest(input *GetMalwareScanSettingsInput) (req *request.Request, output *GetMalwareScanSettingsOutput) {
	op := &request.Operation{
		Name:       opGetMalwareScanSettings,
		HTTPMethod: "GET",
		HTTPPath:   "/detector/{detectorId}/malware-scan-settings",
	}

	if input == nil {
		input = &GetMalwareScanSettingsInput{}
	}

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

// GetMalwareScanSettings API operation for Amazon GuardDuty.
//
// Returns the details of the malware scan settings.
//
// There might be regional differences because some data sources might not be
// available in all the Amazon Web Services Regions where GuardDuty is presently
// supported. For more information, see Regions and endpoints (https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_regions.html).
//
// 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 Amazon GuardDuty's
// API operation GetMalwareScanSettings for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetMalwareScanSettings
func (c *GuardDuty) GetMalwareScanSettings(input *GetMalwareScanSettingsInput) (*GetMalwareScanSettingsOutput, error) {
	req, out := c.GetMalwareScanSettingsRequest(input)
	return out, req.Send()
}

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

const opGetMasterAccount = "GetMasterAccount"

// GetMasterAccountRequest generates a "aws/request.Request" representing the
// client's request for the GetMasterAccount operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See GetMasterAccount for more information on using the GetMasterAccount
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the GetMasterAccountRequest method.
//	req, resp := client.GetMasterAccountRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetMasterAccount
//
// Deprecated: This operation is deprecated, use GetAdministratorAccount instead
func (c *GuardDuty) GetMasterAccountRequest(input *GetMasterAccountInput) (req *request.Request, output *GetMasterAccountOutput) {
	if c.Client.Config.Logger != nil {
		c.Client.Config.Logger.Log("This operation, GetMasterAccount, has been deprecated")
	}
	op := &request.Operation{
		Name:       opGetMasterAccount,
		HTTPMethod: "GET",
		HTTPPath:   "/detector/{detectorId}/master",
	}

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

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

// GetMasterAccount API operation for Amazon GuardDuty.
//
// Provides the details for the GuardDuty administrator account associated with
// the current GuardDuty member account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon GuardDuty's
// API operation GetMasterAccount for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetMasterAccount
//
// Deprecated: This operation is deprecated, use GetAdministratorAccount instead
func (c *GuardDuty) GetMasterAccount(input *GetMasterAccountInput) (*GetMasterAccountOutput, error) {
	req, out := c.GetMasterAccountRequest(input)
	return out, req.Send()
}

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

const opGetMemberDetectors = "GetMemberDetectors"

// GetMemberDetectorsRequest generates a "aws/request.Request" representing the
// client's request for the GetMemberDetectors 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 GetMemberDetectors for more information on using the GetMemberDetectors
// 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 GetMemberDetectorsRequest method.
//	req, resp := client.GetMemberDetectorsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetMemberDetectors
func (c *GuardDuty) GetMemberDetectorsRequest(input *GetMemberDetectorsInput) (req *request.Request, output *GetMemberDetectorsOutput) {
	op := &request.Operation{
		Name:       opGetMemberDetectors,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/member/detector/get",
	}

	if input == nil {
		input = &GetMemberDetectorsInput{}
	}

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

// GetMemberDetectors API operation for Amazon GuardDuty.
//
// Describes which data sources are enabled for the member account's detector.
//
// There might be regional differences because some data sources might not be
// available in all the Amazon Web Services Regions where GuardDuty is presently
// supported. For more information, see Regions and endpoints (https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_regions.html).
//
// 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 Amazon GuardDuty's
// API operation GetMemberDetectors for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetMemberDetectors
func (c *GuardDuty) GetMemberDetectors(input *GetMemberDetectorsInput) (*GetMemberDetectorsOutput, error) {
	req, out := c.GetMemberDetectorsRequest(input)
	return out, req.Send()
}

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

const opGetMembers = "GetMembers"

// GetMembersRequest generates a "aws/request.Request" representing the
// client's request for the GetMembers operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See GetMembers for more information on using the GetMembers
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the GetMembersRequest method.
//	req, resp := client.GetMembersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetMembers
func (c *GuardDuty) GetMembersRequest(input *GetMembersInput) (req *request.Request, output *GetMembersOutput) {
	op := &request.Operation{
		Name:       opGetMembers,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/member/get",
	}

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

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

// GetMembers API operation for Amazon GuardDuty.
//
// Retrieves GuardDuty member accounts (of the current GuardDuty administrator
// account) specified by the account IDs.
//
// 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 Amazon GuardDuty's
// API operation GetMembers for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetMembers
func (c *GuardDuty) GetMembers(input *GetMembersInput) (*GetMembersOutput, error) {
	req, out := c.GetMembersRequest(input)
	return out, req.Send()
}

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

const opGetOrganizationStatistics = "GetOrganizationStatistics"

// GetOrganizationStatisticsRequest generates a "aws/request.Request" representing the
// client's request for the GetOrganizationStatistics 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 GetOrganizationStatistics for more information on using the GetOrganizationStatistics
// 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 GetOrganizationStatisticsRequest method.
//	req, resp := client.GetOrganizationStatisticsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetOrganizationStatistics
func (c *GuardDuty) GetOrganizationStatisticsRequest(input *GetOrganizationStatisticsInput) (req *request.Request, output *GetOrganizationStatisticsOutput) {
	op := &request.Operation{
		Name:       opGetOrganizationStatistics,
		HTTPMethod: "GET",
		HTTPPath:   "/organization/statistics",
	}

	if input == nil {
		input = &GetOrganizationStatisticsInput{}
	}

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

// GetOrganizationStatistics API operation for Amazon GuardDuty.
//
// Retrieves how many active member accounts in your Amazon Web Services organization
// have each feature enabled within GuardDuty. Only a delegated GuardDuty administrator
// of an organization can run this API.
//
// When you create a new Amazon Web Services organization, it might take up
// to 24 hours to generate the statistics for the entire 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 Amazon GuardDuty's
// API operation GetOrganizationStatistics for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetOrganizationStatistics
func (c *GuardDuty) GetOrganizationStatistics(input *GetOrganizationStatisticsInput) (*GetOrganizationStatisticsOutput, error) {
	req, out := c.GetOrganizationStatisticsRequest(input)
	return out, req.Send()
}

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

const opGetRemainingFreeTrialDays = "GetRemainingFreeTrialDays"

// GetRemainingFreeTrialDaysRequest generates a "aws/request.Request" representing the
// client's request for the GetRemainingFreeTrialDays 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 GetRemainingFreeTrialDays for more information on using the GetRemainingFreeTrialDays
// 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 GetRemainingFreeTrialDaysRequest method.
//	req, resp := client.GetRemainingFreeTrialDaysRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetRemainingFreeTrialDays
func (c *GuardDuty) GetRemainingFreeTrialDaysRequest(input *GetRemainingFreeTrialDaysInput) (req *request.Request, output *GetRemainingFreeTrialDaysOutput) {
	op := &request.Operation{
		Name:       opGetRemainingFreeTrialDays,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/freeTrial/daysRemaining",
	}

	if input == nil {
		input = &GetRemainingFreeTrialDaysInput{}
	}

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

// GetRemainingFreeTrialDays API operation for Amazon GuardDuty.
//
// Provides the number of days left for each data source used in the free trial
// period.
//
// 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 Amazon GuardDuty's
// API operation GetRemainingFreeTrialDays for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetRemainingFreeTrialDays
func (c *GuardDuty) GetRemainingFreeTrialDays(input *GetRemainingFreeTrialDaysInput) (*GetRemainingFreeTrialDaysOutput, error) {
	req, out := c.GetRemainingFreeTrialDaysRequest(input)
	return out, req.Send()
}

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

const opGetThreatIntelSet = "GetThreatIntelSet"

// GetThreatIntelSetRequest generates a "aws/request.Request" representing the
// client's request for the GetThreatIntelSet 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 GetThreatIntelSet for more information on using the GetThreatIntelSet
// 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 GetThreatIntelSetRequest method.
//	req, resp := client.GetThreatIntelSetRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetThreatIntelSet
func (c *GuardDuty) GetThreatIntelSetRequest(input *GetThreatIntelSetInput) (req *request.Request, output *GetThreatIntelSetOutput) {
	op := &request.Operation{
		Name:       opGetThreatIntelSet,
		HTTPMethod: "GET",
		HTTPPath:   "/detector/{detectorId}/threatintelset/{threatIntelSetId}",
	}

	if input == nil {
		input = &GetThreatIntelSetInput{}
	}

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

// GetThreatIntelSet API operation for Amazon GuardDuty.
//
// Retrieves the ThreatIntelSet that is specified by the ThreatIntelSet ID.
//
// 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 Amazon GuardDuty's
// API operation GetThreatIntelSet for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetThreatIntelSet
func (c *GuardDuty) GetThreatIntelSet(input *GetThreatIntelSetInput) (*GetThreatIntelSetOutput, error) {
	req, out := c.GetThreatIntelSetRequest(input)
	return out, req.Send()
}

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

const opGetUsageStatistics = "GetUsageStatistics"

// GetUsageStatisticsRequest generates a "aws/request.Request" representing the
// client's request for the GetUsageStatistics 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 GetUsageStatistics for more information on using the GetUsageStatistics
// 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 GetUsageStatisticsRequest method.
//	req, resp := client.GetUsageStatisticsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetUsageStatistics
func (c *GuardDuty) GetUsageStatisticsRequest(input *GetUsageStatisticsInput) (req *request.Request, output *GetUsageStatisticsOutput) {
	op := &request.Operation{
		Name:       opGetUsageStatistics,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/usage/statistics",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetUsageStatisticsInput{}
	}

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

// GetUsageStatistics API operation for Amazon GuardDuty.
//
// Lists Amazon GuardDuty usage statistics over the last 30 days for the specified
// detector ID. For newly enabled detectors or data sources, the cost returned
// will include only the usage so far under 30 days. This may differ from the
// cost metrics in the console, which project usage over 30 days to provide
// a monthly cost estimate. For more information, see Understanding How Usage
// Costs are Calculated (https://docs.aws.amazon.com/guardduty/latest/ug/monitoring_costs.html#usage-calculations).
//
// 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 Amazon GuardDuty's
// API operation GetUsageStatistics for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/GetUsageStatistics
func (c *GuardDuty) GetUsageStatistics(input *GetUsageStatisticsInput) (*GetUsageStatisticsOutput, error) {
	req, out := c.GetUsageStatisticsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opInviteMembers = "InviteMembers"

// InviteMembersRequest generates a "aws/request.Request" representing the
// client's request for the InviteMembers operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See InviteMembers for more information on using the InviteMembers
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the InviteMembersRequest method.
//	req, resp := client.InviteMembersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/InviteMembers
func (c *GuardDuty) InviteMembersRequest(input *InviteMembersInput) (req *request.Request, output *InviteMembersOutput) {
	op := &request.Operation{
		Name:       opInviteMembers,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/member/invite",
	}

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

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

// InviteMembers API operation for Amazon GuardDuty.
//
// Invites Amazon Web Services accounts to become members of an organization
// administered by the Amazon Web Services account that invokes this API. If
// you are using Amazon Web Services Organizations to manage your GuardDuty
// environment, this step is not needed. For more information, see Managing
// accounts with organizations (https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_organizations.html).
//
// To invite Amazon Web Services accounts, the first step is to ensure that
// GuardDuty has been enabled in the potential member accounts. You can now
// invoke this API to add accounts by invitation. The invited accounts can either
// accept or decline the invitation from their GuardDuty accounts. Each invited
// Amazon Web Services account can choose to accept the invitation from only
// one Amazon Web Services account. For more information, see Managing GuardDuty
// accounts by invitation (https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_invitations.html).
//
// After the invite has been accepted and you choose to disassociate a member
// account (by using DisassociateMembers (https://docs.aws.amazon.com/guardduty/latest/APIReference/API_DisassociateMembers.html))
// from your account, the details of the member account obtained by invoking
// CreateMembers (https://docs.aws.amazon.com/guardduty/latest/APIReference/API_CreateMembers.html),
// including the associated email addresses, will be retained. This is done
// so that you can invoke InviteMembers without the need to invoke CreateMembers
// (https://docs.aws.amazon.com/guardduty/latest/APIReference/API_CreateMembers.html)
// again. To remove the details associated with a member account, you must also
// invoke DeleteMembers (https://docs.aws.amazon.com/guardduty/latest/APIReference/API_DeleteMembers.html).
//
// 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 Amazon GuardDuty's
// API operation InviteMembers for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/InviteMembers
func (c *GuardDuty) InviteMembers(input *InviteMembersInput) (*InviteMembersOutput, error) {
	req, out := c.InviteMembersRequest(input)
	return out, req.Send()
}

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

const 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/guardduty-2017-11-28/ListCoverage
func (c *GuardDuty) ListCoverageRequest(input *ListCoverageInput) (req *request.Request, output *ListCoverageOutput) {
	op := &request.Operation{
		Name:       opListCoverage,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/coverage",
		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 Amazon GuardDuty.
//
// Lists coverage details for your GuardDuty account. If you're a GuardDuty
// administrator, you can retrieve all resources associated with the active
// member accounts in your organization.
//
// Make sure the accounts have Runtime Monitoring enabled and GuardDuty agent
// running on their resources.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon GuardDuty's
// API operation ListCoverage for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/ListCoverage
func (c *GuardDuty) 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 *GuardDuty) 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 *guardduty.ListCoverageOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *GuardDuty) 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 *GuardDuty) 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 opListDetectors = "ListDetectors"

// ListDetectorsRequest generates a "aws/request.Request" representing the
// client's request for the ListDetectors 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 ListDetectors for more information on using the ListDetectors
// 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 ListDetectorsRequest method.
//	req, resp := client.ListDetectorsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/ListDetectors
func (c *GuardDuty) ListDetectorsRequest(input *ListDetectorsInput) (req *request.Request, output *ListDetectorsOutput) {
	op := &request.Operation{
		Name:       opListDetectors,
		HTTPMethod: "GET",
		HTTPPath:   "/detector",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListDetectorsInput{}
	}

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

// ListDetectors API operation for Amazon GuardDuty.
//
// Lists detectorIds of all the existing Amazon GuardDuty detector resources.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon GuardDuty's
// API operation ListDetectors for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/ListDetectors
func (c *GuardDuty) ListDetectors(input *ListDetectorsInput) (*ListDetectorsOutput, error) {
	req, out := c.ListDetectorsRequest(input)
	return out, req.Send()
}

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

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

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

	for p.Next() {
		if !fn(p.Page().(*ListDetectorsOutput), !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/guardduty-2017-11-28/ListFilters
func (c *GuardDuty) ListFiltersRequest(input *ListFiltersInput) (req *request.Request, output *ListFiltersOutput) {
	op := &request.Operation{
		Name:       opListFilters,
		HTTPMethod: "GET",
		HTTPPath:   "/detector/{detectorId}/filter",
		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 Amazon GuardDuty.
//
// Returns a paginated list of the current filters.
//
// 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 Amazon GuardDuty's
// API operation ListFilters for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/ListFilters
func (c *GuardDuty) 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 *GuardDuty) 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 *guardduty.ListFiltersOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *GuardDuty) 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 *GuardDuty) 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 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/guardduty-2017-11-28/ListFindings
func (c *GuardDuty) ListFindingsRequest(input *ListFindingsInput) (req *request.Request, output *ListFindingsOutput) {
	op := &request.Operation{
		Name:       opListFindings,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/findings",
		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 Amazon GuardDuty.
//
// Lists Amazon GuardDuty findings for the specified detector ID.
//
// 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 Amazon GuardDuty's
// API operation ListFindings for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/ListFindings
func (c *GuardDuty) 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 *GuardDuty) 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 *guardduty.ListFindingsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *GuardDuty) 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 *GuardDuty) 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 opListIPSets = "ListIPSets"

// ListIPSetsRequest generates a "aws/request.Request" representing the
// client's request for the ListIPSets 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 ListIPSets for more information on using the ListIPSets
// 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 ListIPSetsRequest method.
//	req, resp := client.ListIPSetsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/ListIPSets
func (c *GuardDuty) ListIPSetsRequest(input *ListIPSetsInput) (req *request.Request, output *ListIPSetsOutput) {
	op := &request.Operation{
		Name:       opListIPSets,
		HTTPMethod: "GET",
		HTTPPath:   "/detector/{detectorId}/ipset",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListIPSetsInput{}
	}

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

// ListIPSets API operation for Amazon GuardDuty.
//
// Lists the IPSets of the GuardDuty service specified by the detector ID. If
// you use this operation from a member account, the IPSets returned are the
// IPSets from the associated administrator 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 Amazon GuardDuty's
// API operation ListIPSets for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/ListIPSets
func (c *GuardDuty) ListIPSets(input *ListIPSetsInput) (*ListIPSetsOutput, error) {
	req, out := c.ListIPSetsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListInvitations = "ListInvitations"

// ListInvitationsRequest generates a "aws/request.Request" representing the
// client's request for the ListInvitations operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See ListInvitations for more information on using the ListInvitations
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the ListInvitationsRequest method.
//	req, resp := client.ListInvitationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/ListInvitations
func (c *GuardDuty) ListInvitationsRequest(input *ListInvitationsInput) (req *request.Request, output *ListInvitationsOutput) {
	op := &request.Operation{
		Name:       opListInvitations,
		HTTPMethod: "GET",
		HTTPPath:   "/invitation",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

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

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

// ListInvitations API operation for Amazon GuardDuty.
//
// Lists all GuardDuty membership invitations that were sent to the current
// Amazon Web Services account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon GuardDuty's
// API operation ListInvitations for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/ListInvitations
func (c *GuardDuty) ListInvitations(input *ListInvitationsInput) (*ListInvitationsOutput, error) {
	req, out := c.ListInvitationsRequest(input)
	return out, req.Send()
}

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

// ListInvitationsPages iterates over the pages of a ListInvitations operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListInvitations method for more information on how to use this operation.
//
// Note: This operation can generate multiple requests to a service.
//
//	// Example iterating over at most 3 pages of a ListInvitations operation.
//	pageNum := 0
//	err := client.ListInvitationsPages(params,
//	    func(page *guardduty.ListInvitationsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *GuardDuty) ListInvitationsPages(input *ListInvitationsInput, fn func(*ListInvitationsOutput, bool) bool) error {
	return c.ListInvitationsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListInvitationsPagesWithContext same as ListInvitationsPages except
// it takes a Context and allows setting request options on the pages.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *GuardDuty) ListInvitationsPagesWithContext(ctx aws.Context, input *ListInvitationsInput, fn func(*ListInvitationsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListInvitationsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListInvitationsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListMembers = "ListMembers"

// ListMembersRequest generates a "aws/request.Request" representing the
// client's request for the ListMembers operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See ListMembers for more information on using the ListMembers
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the ListMembersRequest method.
//	req, resp := client.ListMembersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/ListMembers
func (c *GuardDuty) ListMembersRequest(input *ListMembersInput) (req *request.Request, output *ListMembersOutput) {
	op := &request.Operation{
		Name:       opListMembers,
		HTTPMethod: "GET",
		HTTPPath:   "/detector/{detectorId}/member",
		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 Amazon GuardDuty.
//
// Lists details about all member accounts for the current GuardDuty administrator
// 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 Amazon GuardDuty's
// API operation ListMembers for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/ListMembers
func (c *GuardDuty) 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 *GuardDuty) 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 *guardduty.ListMembersOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *GuardDuty) 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 *GuardDuty) ListMembersPagesWithContext(ctx aws.Context, input *ListMembersInput, fn func(*ListMembersOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListMembersInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListMembersRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListOrganizationAdminAccounts = "ListOrganizationAdminAccounts"

// ListOrganizationAdminAccountsRequest generates a "aws/request.Request" representing the
// client's request for the ListOrganizationAdminAccounts operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See ListOrganizationAdminAccounts for more information on using the ListOrganizationAdminAccounts
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the ListOrganizationAdminAccountsRequest method.
//	req, resp := client.ListOrganizationAdminAccountsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/ListOrganizationAdminAccounts
func (c *GuardDuty) ListOrganizationAdminAccountsRequest(input *ListOrganizationAdminAccountsInput) (req *request.Request, output *ListOrganizationAdminAccountsOutput) {
	op := &request.Operation{
		Name:       opListOrganizationAdminAccounts,
		HTTPMethod: "GET",
		HTTPPath:   "/admin",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

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

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

// ListOrganizationAdminAccounts API operation for Amazon GuardDuty.
//
// Lists the accounts designated as GuardDuty delegated administrators. Only
// the organization's management account can run this API operation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon GuardDuty's
// API operation ListOrganizationAdminAccounts for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/ListOrganizationAdminAccounts
func (c *GuardDuty) ListOrganizationAdminAccounts(input *ListOrganizationAdminAccountsInput) (*ListOrganizationAdminAccountsOutput, error) {
	req, out := c.ListOrganizationAdminAccountsRequest(input)
	return out, req.Send()
}

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

// ListOrganizationAdminAccountsPages iterates over the pages of a ListOrganizationAdminAccounts operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListOrganizationAdminAccounts method for more information on how to use this operation.
//
// Note: This operation can generate multiple requests to a service.
//
//	// Example iterating over at most 3 pages of a ListOrganizationAdminAccounts operation.
//	pageNum := 0
//	err := client.ListOrganizationAdminAccountsPages(params,
//	    func(page *guardduty.ListOrganizationAdminAccountsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *GuardDuty) ListOrganizationAdminAccountsPages(input *ListOrganizationAdminAccountsInput, fn func(*ListOrganizationAdminAccountsOutput, bool) bool) error {
	return c.ListOrganizationAdminAccountsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListOrganizationAdminAccountsPagesWithContext same as ListOrganizationAdminAccountsPages except
// it takes a Context and allows setting request options on the pages.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *GuardDuty) ListOrganizationAdminAccountsPagesWithContext(ctx aws.Context, input *ListOrganizationAdminAccountsInput, fn func(*ListOrganizationAdminAccountsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListOrganizationAdminAccountsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListOrganizationAdminAccountsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListPublishingDestinations = "ListPublishingDestinations"

// ListPublishingDestinationsRequest generates a "aws/request.Request" representing the
// client's request for the ListPublishingDestinations 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 ListPublishingDestinations for more information on using the ListPublishingDestinations
// 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 ListPublishingDestinationsRequest method.
//	req, resp := client.ListPublishingDestinationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/ListPublishingDestinations
func (c *GuardDuty) ListPublishingDestinationsRequest(input *ListPublishingDestinationsInput) (req *request.Request, output *ListPublishingDestinationsOutput) {
	op := &request.Operation{
		Name:       opListPublishingDestinations,
		HTTPMethod: "GET",
		HTTPPath:   "/detector/{detectorId}/publishingDestination",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListPublishingDestinationsInput{}
	}

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

// ListPublishingDestinations API operation for Amazon GuardDuty.
//
// Returns a list of publishing destinations associated with the specified detectorId.
//
// 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 Amazon GuardDuty's
// API operation ListPublishingDestinations for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/ListPublishingDestinations
func (c *GuardDuty) ListPublishingDestinations(input *ListPublishingDestinationsInput) (*ListPublishingDestinationsOutput, error) {
	req, out := c.ListPublishingDestinationsRequest(input)
	return out, req.Send()
}

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

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

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

	for p.Next() {
		if !fn(p.Page().(*ListPublishingDestinationsOutput), !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/guardduty-2017-11-28/ListTagsForResource
func (c *GuardDuty) 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 Amazon GuardDuty.
//
// Lists tags for a resource. Tagging is currently supported for detectors,
// finding filters, IP sets, threat intel sets, and publishing destination,
// with a limit of 50 tags per resource. When invoked, this operation returns
// all assigned tags for 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 Amazon GuardDuty's
// API operation ListTagsForResource for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - AccessDeniedException
//     An access denied exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/ListTagsForResource
func (c *GuardDuty) 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 *GuardDuty) 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 opListThreatIntelSets = "ListThreatIntelSets"

// ListThreatIntelSetsRequest generates a "aws/request.Request" representing the
// client's request for the ListThreatIntelSets 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 ListThreatIntelSets for more information on using the ListThreatIntelSets
// 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 ListThreatIntelSetsRequest method.
//	req, resp := client.ListThreatIntelSetsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/ListThreatIntelSets
func (c *GuardDuty) ListThreatIntelSetsRequest(input *ListThreatIntelSetsInput) (req *request.Request, output *ListThreatIntelSetsOutput) {
	op := &request.Operation{
		Name:       opListThreatIntelSets,
		HTTPMethod: "GET",
		HTTPPath:   "/detector/{detectorId}/threatintelset",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListThreatIntelSetsInput{}
	}

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

// ListThreatIntelSets API operation for Amazon GuardDuty.
//
// Lists the ThreatIntelSets of the GuardDuty service specified by the detector
// ID. If you use this operation from a member account, the ThreatIntelSets
// associated with the administrator account are returned.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon GuardDuty's
// API operation ListThreatIntelSets for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/ListThreatIntelSets
func (c *GuardDuty) ListThreatIntelSets(input *ListThreatIntelSetsInput) (*ListThreatIntelSetsOutput, error) {
	req, out := c.ListThreatIntelSetsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opStartMalwareScan = "StartMalwareScan"

// StartMalwareScanRequest generates a "aws/request.Request" representing the
// client's request for the StartMalwareScan 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 StartMalwareScan for more information on using the StartMalwareScan
// 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 StartMalwareScanRequest method.
//	req, resp := client.StartMalwareScanRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/StartMalwareScan
func (c *GuardDuty) StartMalwareScanRequest(input *StartMalwareScanInput) (req *request.Request, output *StartMalwareScanOutput) {
	op := &request.Operation{
		Name:       opStartMalwareScan,
		HTTPMethod: "POST",
		HTTPPath:   "/malware-scan/start",
	}

	if input == nil {
		input = &StartMalwareScanInput{}
	}

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

// StartMalwareScan API operation for Amazon GuardDuty.
//
// Initiates the malware scan. Invoking this API will automatically create the
// Service-linked role (https://docs.aws.amazon.com/guardduty/latest/ug/slr-permissions-malware-protection.html)
// in the corresponding 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 Amazon GuardDuty's
// API operation StartMalwareScan for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - ConflictException
//     A request conflict exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/StartMalwareScan
func (c *GuardDuty) StartMalwareScan(input *StartMalwareScanInput) (*StartMalwareScanOutput, error) {
	req, out := c.StartMalwareScanRequest(input)
	return out, req.Send()
}

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

const opStartMonitoringMembers = "StartMonitoringMembers"

// StartMonitoringMembersRequest generates a "aws/request.Request" representing the
// client's request for the StartMonitoringMembers 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 StartMonitoringMembers for more information on using the StartMonitoringMembers
// 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 StartMonitoringMembersRequest method.
//	req, resp := client.StartMonitoringMembersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/StartMonitoringMembers
func (c *GuardDuty) StartMonitoringMembersRequest(input *StartMonitoringMembersInput) (req *request.Request, output *StartMonitoringMembersOutput) {
	op := &request.Operation{
		Name:       opStartMonitoringMembers,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/member/start",
	}

	if input == nil {
		input = &StartMonitoringMembersInput{}
	}

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

// StartMonitoringMembers API operation for Amazon GuardDuty.
//
// Turns on GuardDuty monitoring of the specified member accounts. Use this
// operation to restart monitoring of accounts that you stopped monitoring with
// the StopMonitoringMembers (https://docs.aws.amazon.com/guardduty/latest/APIReference/API_StopMonitoringMembers.html)
// operation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon GuardDuty's
// API operation StartMonitoringMembers for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/StartMonitoringMembers
func (c *GuardDuty) StartMonitoringMembers(input *StartMonitoringMembersInput) (*StartMonitoringMembersOutput, error) {
	req, out := c.StartMonitoringMembersRequest(input)
	return out, req.Send()
}

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

const opStopMonitoringMembers = "StopMonitoringMembers"

// StopMonitoringMembersRequest generates a "aws/request.Request" representing the
// client's request for the StopMonitoringMembers 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 StopMonitoringMembers for more information on using the StopMonitoringMembers
// 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 StopMonitoringMembersRequest method.
//	req, resp := client.StopMonitoringMembersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/StopMonitoringMembers
func (c *GuardDuty) StopMonitoringMembersRequest(input *StopMonitoringMembersInput) (req *request.Request, output *StopMonitoringMembersOutput) {
	op := &request.Operation{
		Name:       opStopMonitoringMembers,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/member/stop",
	}

	if input == nil {
		input = &StopMonitoringMembersInput{}
	}

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

// StopMonitoringMembers API operation for Amazon GuardDuty.
//
// Stops GuardDuty monitoring for the specified member accounts. Use the StartMonitoringMembers
// operation to restart monitoring for those accounts.
//
// With autoEnableOrganizationMembers configuration for your organization set
// to ALL, you'll receive an error if you attempt to stop monitoring the member
// accounts in 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 Amazon GuardDuty's
// API operation StopMonitoringMembers for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/StopMonitoringMembers
func (c *GuardDuty) StopMonitoringMembers(input *StopMonitoringMembersInput) (*StopMonitoringMembersOutput, error) {
	req, out := c.StopMonitoringMembersRequest(input)
	return out, req.Send()
}

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

const opTagResource = "TagResource"

// TagResourceRequest generates a "aws/request.Request" representing the
// client's request for the TagResource operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See TagResource for more information on using the TagResource
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the TagResourceRequest method.
//	req, resp := client.TagResourceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/TagResource
func (c *GuardDuty) 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 Amazon GuardDuty.
//
// 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 Amazon GuardDuty's
// API operation TagResource for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - AccessDeniedException
//     An access denied exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/TagResource
func (c *GuardDuty) 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 *GuardDuty) 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 opUnarchiveFindings = "UnarchiveFindings"

// UnarchiveFindingsRequest generates a "aws/request.Request" representing the
// client's request for the UnarchiveFindings 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 UnarchiveFindings for more information on using the UnarchiveFindings
// 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 UnarchiveFindingsRequest method.
//	req, resp := client.UnarchiveFindingsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/UnarchiveFindings
func (c *GuardDuty) UnarchiveFindingsRequest(input *UnarchiveFindingsInput) (req *request.Request, output *UnarchiveFindingsOutput) {
	op := &request.Operation{
		Name:       opUnarchiveFindings,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/findings/unarchive",
	}

	if input == nil {
		input = &UnarchiveFindingsInput{}
	}

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

// UnarchiveFindings API operation for Amazon GuardDuty.
//
// Unarchives GuardDuty findings specified by the findingIds.
//
// 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 Amazon GuardDuty's
// API operation UnarchiveFindings for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/UnarchiveFindings
func (c *GuardDuty) UnarchiveFindings(input *UnarchiveFindingsInput) (*UnarchiveFindingsOutput, error) {
	req, out := c.UnarchiveFindingsRequest(input)
	return out, req.Send()
}

// UnarchiveFindingsWithContext is the same as UnarchiveFindings with the addition of
// the ability to pass a context and additional request options.
//
// See UnarchiveFindings 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 *GuardDuty) UnarchiveFindingsWithContext(ctx aws.Context, input *UnarchiveFindingsInput, opts ...request.Option) (*UnarchiveFindingsOutput, error) {
	req, out := c.UnarchiveFindingsRequest(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/guardduty-2017-11-28/UntagResource
func (c *GuardDuty) 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 Amazon GuardDuty.
//
// 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 Amazon GuardDuty's
// API operation UntagResource for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - AccessDeniedException
//     An access denied exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/UntagResource
func (c *GuardDuty) 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 *GuardDuty) 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 opUpdateDetector = "UpdateDetector"

// UpdateDetectorRequest generates a "aws/request.Request" representing the
// client's request for the UpdateDetector 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 UpdateDetector for more information on using the UpdateDetector
// 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 UpdateDetectorRequest method.
//	req, resp := client.UpdateDetectorRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/UpdateDetector
func (c *GuardDuty) UpdateDetectorRequest(input *UpdateDetectorInput) (req *request.Request, output *UpdateDetectorOutput) {
	op := &request.Operation{
		Name:       opUpdateDetector,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}",
	}

	if input == nil {
		input = &UpdateDetectorInput{}
	}

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

// UpdateDetector API operation for Amazon GuardDuty.
//
// Updates the Amazon GuardDuty detector specified by the detectorId.
//
// There might be regional differences because some data sources might not be
// available in all the Amazon Web Services Regions where GuardDuty is presently
// supported. For more information, see Regions and endpoints (https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_regions.html).
//
// 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 Amazon GuardDuty's
// API operation UpdateDetector for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/UpdateDetector
func (c *GuardDuty) UpdateDetector(input *UpdateDetectorInput) (*UpdateDetectorOutput, error) {
	req, out := c.UpdateDetectorRequest(input)
	return out, req.Send()
}

// UpdateDetectorWithContext is the same as UpdateDetector with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateDetector 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 *GuardDuty) UpdateDetectorWithContext(ctx aws.Context, input *UpdateDetectorInput, opts ...request.Option) (*UpdateDetectorOutput, error) {
	req, out := c.UpdateDetectorRequest(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/guardduty-2017-11-28/UpdateFilter
func (c *GuardDuty) UpdateFilterRequest(input *UpdateFilterInput) (req *request.Request, output *UpdateFilterOutput) {
	op := &request.Operation{
		Name:       opUpdateFilter,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/filter/{filterName}",
	}

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

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

// UpdateFilter API operation for Amazon GuardDuty.
//
// Updates the filter specified by the filter name.
//
// 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 Amazon GuardDuty's
// API operation UpdateFilter for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/UpdateFilter
func (c *GuardDuty) 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 *GuardDuty) 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 opUpdateFindingsFeedback = "UpdateFindingsFeedback"

// UpdateFindingsFeedbackRequest generates a "aws/request.Request" representing the
// client's request for the UpdateFindingsFeedback 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 UpdateFindingsFeedback for more information on using the UpdateFindingsFeedback
// 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 UpdateFindingsFeedbackRequest method.
//	req, resp := client.UpdateFindingsFeedbackRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/UpdateFindingsFeedback
func (c *GuardDuty) UpdateFindingsFeedbackRequest(input *UpdateFindingsFeedbackInput) (req *request.Request, output *UpdateFindingsFeedbackOutput) {
	op := &request.Operation{
		Name:       opUpdateFindingsFeedback,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/findings/feedback",
	}

	if input == nil {
		input = &UpdateFindingsFeedbackInput{}
	}

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

// UpdateFindingsFeedback API operation for Amazon GuardDuty.
//
// Marks the specified GuardDuty findings as useful or not useful.
//
// 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 Amazon GuardDuty's
// API operation UpdateFindingsFeedback for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/UpdateFindingsFeedback
func (c *GuardDuty) UpdateFindingsFeedback(input *UpdateFindingsFeedbackInput) (*UpdateFindingsFeedbackOutput, error) {
	req, out := c.UpdateFindingsFeedbackRequest(input)
	return out, req.Send()
}

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

const opUpdateIPSet = "UpdateIPSet"

// UpdateIPSetRequest generates a "aws/request.Request" representing the
// client's request for the UpdateIPSet 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 UpdateIPSet for more information on using the UpdateIPSet
// 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 UpdateIPSetRequest method.
//	req, resp := client.UpdateIPSetRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/UpdateIPSet
func (c *GuardDuty) UpdateIPSetRequest(input *UpdateIPSetInput) (req *request.Request, output *UpdateIPSetOutput) {
	op := &request.Operation{
		Name:       opUpdateIPSet,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/ipset/{ipSetId}",
	}

	if input == nil {
		input = &UpdateIPSetInput{}
	}

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

// UpdateIPSet API operation for Amazon GuardDuty.
//
// Updates the IPSet specified by the IPSet ID.
//
// 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 Amazon GuardDuty's
// API operation UpdateIPSet for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/UpdateIPSet
func (c *GuardDuty) UpdateIPSet(input *UpdateIPSetInput) (*UpdateIPSetOutput, error) {
	req, out := c.UpdateIPSetRequest(input)
	return out, req.Send()
}

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

const opUpdateMalwareScanSettings = "UpdateMalwareScanSettings"

// UpdateMalwareScanSettingsRequest generates a "aws/request.Request" representing the
// client's request for the UpdateMalwareScanSettings 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 UpdateMalwareScanSettings for more information on using the UpdateMalwareScanSettings
// 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 UpdateMalwareScanSettingsRequest method.
//	req, resp := client.UpdateMalwareScanSettingsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/UpdateMalwareScanSettings
func (c *GuardDuty) UpdateMalwareScanSettingsRequest(input *UpdateMalwareScanSettingsInput) (req *request.Request, output *UpdateMalwareScanSettingsOutput) {
	op := &request.Operation{
		Name:       opUpdateMalwareScanSettings,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/malware-scan-settings",
	}

	if input == nil {
		input = &UpdateMalwareScanSettingsInput{}
	}

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

// UpdateMalwareScanSettings API operation for Amazon GuardDuty.
//
// Updates the malware scan settings.
//
// There might be regional differences because some data sources might not be
// available in all the Amazon Web Services Regions where GuardDuty is presently
// supported. For more information, see Regions and endpoints (https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_regions.html).
//
// 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 Amazon GuardDuty's
// API operation UpdateMalwareScanSettings for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/UpdateMalwareScanSettings
func (c *GuardDuty) UpdateMalwareScanSettings(input *UpdateMalwareScanSettingsInput) (*UpdateMalwareScanSettingsOutput, error) {
	req, out := c.UpdateMalwareScanSettingsRequest(input)
	return out, req.Send()
}

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

const opUpdateMemberDetectors = "UpdateMemberDetectors"

// UpdateMemberDetectorsRequest generates a "aws/request.Request" representing the
// client's request for the UpdateMemberDetectors 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 UpdateMemberDetectors for more information on using the UpdateMemberDetectors
// 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 UpdateMemberDetectorsRequest method.
//	req, resp := client.UpdateMemberDetectorsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/UpdateMemberDetectors
func (c *GuardDuty) UpdateMemberDetectorsRequest(input *UpdateMemberDetectorsInput) (req *request.Request, output *UpdateMemberDetectorsOutput) {
	op := &request.Operation{
		Name:       opUpdateMemberDetectors,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/member/detector/update",
	}

	if input == nil {
		input = &UpdateMemberDetectorsInput{}
	}

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

// UpdateMemberDetectors API operation for Amazon GuardDuty.
//
// Contains information on member accounts to be updated.
//
// There might be regional differences because some data sources might not be
// available in all the Amazon Web Services Regions where GuardDuty is presently
// supported. For more information, see Regions and endpoints (https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_regions.html).
//
// 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 Amazon GuardDuty's
// API operation UpdateMemberDetectors for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/UpdateMemberDetectors
func (c *GuardDuty) UpdateMemberDetectors(input *UpdateMemberDetectorsInput) (*UpdateMemberDetectorsOutput, error) {
	req, out := c.UpdateMemberDetectorsRequest(input)
	return out, req.Send()
}

// UpdateMemberDetectorsWithContext is the same as UpdateMemberDetectors with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateMemberDetectors 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 *GuardDuty) UpdateMemberDetectorsWithContext(ctx aws.Context, input *UpdateMemberDetectorsInput, opts ...request.Option) (*UpdateMemberDetectorsOutput, error) {
	req, out := c.UpdateMemberDetectorsRequest(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/guardduty-2017-11-28/UpdateOrganizationConfiguration
func (c *GuardDuty) UpdateOrganizationConfigurationRequest(input *UpdateOrganizationConfigurationInput) (req *request.Request, output *UpdateOrganizationConfigurationOutput) {
	op := &request.Operation{
		Name:       opUpdateOrganizationConfiguration,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/admin",
	}

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

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

// UpdateOrganizationConfiguration API operation for Amazon GuardDuty.
//
// Configures the delegated administrator account with the provided values.
// You must provide a value for either autoEnableOrganizationMembers or autoEnable,
// but not both.
//
// There might be regional differences because some data sources might not be
// available in all the Amazon Web Services Regions where GuardDuty is presently
// supported. For more information, see Regions and endpoints (https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_regions.html).
//
// 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 Amazon GuardDuty's
// API operation UpdateOrganizationConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/UpdateOrganizationConfiguration
func (c *GuardDuty) 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 *GuardDuty) UpdateOrganizationConfigurationWithContext(ctx aws.Context, input *UpdateOrganizationConfigurationInput, opts ...request.Option) (*UpdateOrganizationConfigurationOutput, error) {
	req, out := c.UpdateOrganizationConfigurationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdatePublishingDestination = "UpdatePublishingDestination"

// UpdatePublishingDestinationRequest generates a "aws/request.Request" representing the
// client's request for the UpdatePublishingDestination 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 UpdatePublishingDestination for more information on using the UpdatePublishingDestination
// 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 UpdatePublishingDestinationRequest method.
//	req, resp := client.UpdatePublishingDestinationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/UpdatePublishingDestination
func (c *GuardDuty) UpdatePublishingDestinationRequest(input *UpdatePublishingDestinationInput) (req *request.Request, output *UpdatePublishingDestinationOutput) {
	op := &request.Operation{
		Name:       opUpdatePublishingDestination,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/publishingDestination/{destinationId}",
	}

	if input == nil {
		input = &UpdatePublishingDestinationInput{}
	}

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

// UpdatePublishingDestination API operation for Amazon GuardDuty.
//
// Updates information about the publishing destination specified by the destinationId.
//
// 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 Amazon GuardDuty's
// API operation UpdatePublishingDestination for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/UpdatePublishingDestination
func (c *GuardDuty) UpdatePublishingDestination(input *UpdatePublishingDestinationInput) (*UpdatePublishingDestinationOutput, error) {
	req, out := c.UpdatePublishingDestinationRequest(input)
	return out, req.Send()
}

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

const opUpdateThreatIntelSet = "UpdateThreatIntelSet"

// UpdateThreatIntelSetRequest generates a "aws/request.Request" representing the
// client's request for the UpdateThreatIntelSet 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 UpdateThreatIntelSet for more information on using the UpdateThreatIntelSet
// 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 UpdateThreatIntelSetRequest method.
//	req, resp := client.UpdateThreatIntelSetRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/UpdateThreatIntelSet
func (c *GuardDuty) UpdateThreatIntelSetRequest(input *UpdateThreatIntelSetInput) (req *request.Request, output *UpdateThreatIntelSetOutput) {
	op := &request.Operation{
		Name:       opUpdateThreatIntelSet,
		HTTPMethod: "POST",
		HTTPPath:   "/detector/{detectorId}/threatintelset/{threatIntelSetId}",
	}

	if input == nil {
		input = &UpdateThreatIntelSetInput{}
	}

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

// UpdateThreatIntelSet API operation for Amazon GuardDuty.
//
// Updates the ThreatIntelSet specified by the ThreatIntelSet ID.
//
// 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 Amazon GuardDuty's
// API operation UpdateThreatIntelSet for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     A bad request exception object.
//
//   - InternalServerErrorException
//     An internal server error exception object.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/UpdateThreatIntelSet
func (c *GuardDuty) UpdateThreatIntelSet(input *UpdateThreatIntelSetInput) (*UpdateThreatIntelSetOutput, error) {
	req, out := c.UpdateThreatIntelSetRequest(input)
	return out, req.Send()
}

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

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

	// The account ID of the GuardDuty administrator account whose invitation you're
	// accepting.
	//
	// AdministratorId is a required field
	AdministratorId *string `locationName:"administratorId" type:"string" required:"true"`

	// The unique ID of the detector of the GuardDuty member account.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// The value that is used to validate the administrator account to the member
	// account.
	//
	// InvitationId is a required field
	InvitationId *string `locationName:"invitationId" type:"string" required:"true"`
}

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

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

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

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

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

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

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

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

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

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

// Deprecated: This input is deprecated, use AcceptAdministratorInvitationRequest instead
type AcceptInvitationInput struct {
	_ struct{} `deprecated:"true" type:"structure"`

	// The unique ID of the detector of the GuardDuty member account.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// The value that is used to validate the administrator account to the member
	// account.
	//
	// InvitationId is a required field
	InvitationId *string `locationName:"invitationId" type:"string" required:"true"`

	// The account ID of the GuardDuty administrator account whose invitation you're
	// accepting.
	//
	// MasterId is a required field
	MasterId *string `locationName:"masterId" type:"string" required:"true"`
}

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

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

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

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

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

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

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

// Deprecated: This output is deprecated, use AcceptAdministratorInvitationResponse instead
type AcceptInvitationOutput struct {
	_ struct{} `deprecated:"true" type:"structure"`
}

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

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

// Contains information on the current access control policies for the bucket.
type AccessControlList struct {
	_ struct{} `type:"structure"`

	// A value that indicates whether public read access for the bucket is enabled
	// through an Access Control List (ACL).
	AllowsPublicReadAccess *bool `locationName:"allowsPublicReadAccess" type:"boolean"`

	// A value that indicates whether public write access for the bucket is enabled
	// through an Access Control List (ACL).
	AllowsPublicWriteAccess *bool `locationName:"allowsPublicWriteAccess" 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 AccessControlList) String() string {
	return awsutil.Prettify(s)
}

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

// SetAllowsPublicReadAccess sets the AllowsPublicReadAccess field's value.
func (s *AccessControlList) SetAllowsPublicReadAccess(v bool) *AccessControlList {
	s.AllowsPublicReadAccess = &v
	return s
}

// SetAllowsPublicWriteAccess sets the AllowsPublicWriteAccess field's value.
func (s *AccessControlList) SetAllowsPublicWriteAccess(v bool) *AccessControlList {
	s.AllowsPublicWriteAccess = &v
	return s
}

// An access denied exception object.
type AccessDeniedException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The error message.
	Message_ *string `locationName:"message" type:"string"`

	// The error type.
	Type *string `locationName:"__type" type:"string"`
}

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

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

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

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

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

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

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

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

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

// Contains information about the access keys.
type AccessKeyDetails struct {
	_ struct{} `type:"structure"`

	// The access key ID of the user.
	AccessKeyId *string `locationName:"accessKeyId" type:"string"`

	// The principal ID of the user.
	PrincipalId *string `locationName:"principalId" type:"string"`

	// The name of the user.
	UserName *string `locationName:"userName" type:"string"`

	// The type of the user.
	UserType *string `locationName:"userType" type:"string"`
}

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

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

// SetAccessKeyId sets the AccessKeyId field's value.
func (s *AccessKeyDetails) SetAccessKeyId(v string) *AccessKeyDetails {
	s.AccessKeyId = &v
	return s
}

// SetPrincipalId sets the PrincipalId field's value.
func (s *AccessKeyDetails) SetPrincipalId(v string) *AccessKeyDetails {
	s.PrincipalId = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *AccessKeyDetails) SetUserName(v string) *AccessKeyDetails {
	s.UserName = &v
	return s
}

// SetUserType sets the UserType field's value.
func (s *AccessKeyDetails) SetUserType(v string) *AccessKeyDetails {
	s.UserType = &v
	return s
}

// Contains information about the account.
type AccountDetail struct {
	_ struct{} `type:"structure"`

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

	// The email address of the member account.
	//
	// Email is a required field
	Email *string `locationName:"email" 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 AccountDetail) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

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

// Provides details of the GuardDuty member account that uses a free trial service.
type AccountFreeTrialInfo struct {
	_ struct{} `type:"structure"`

	// The account identifier of the GuardDuty member account.
	AccountId *string `locationName:"accountId" type:"string"`

	// Describes the data source enabled for the GuardDuty member account.
	//
	// Deprecated: This parameter is deprecated, use Features instead
	DataSources *DataSourcesFreeTrial `locationName:"dataSources" deprecated:"true" type:"structure"`

	// A list of features enabled for the GuardDuty account.
	Features []*FreeTrialFeatureConfigurationResult `locationName:"features" 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 AccountFreeTrialInfo) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetDataSources sets the DataSources field's value.
func (s *AccountFreeTrialInfo) SetDataSources(v *DataSourcesFreeTrial) *AccountFreeTrialInfo {
	s.DataSources = v
	return s
}

// SetFeatures sets the Features field's value.
func (s *AccountFreeTrialInfo) SetFeatures(v []*FreeTrialFeatureConfigurationResult) *AccountFreeTrialInfo {
	s.Features = v
	return s
}

// Contains information about the account level permissions on the S3 bucket.
type AccountLevelPermissions struct {
	_ struct{} `type:"structure"`

	// Describes the S3 Block Public Access settings of the bucket's parent account.
	BlockPublicAccess *BlockPublicAccess `locationName:"blockPublicAccess" 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 AccountLevelPermissions) String() string {
	return awsutil.Prettify(s)
}

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

// SetBlockPublicAccess sets the BlockPublicAccess field's value.
func (s *AccountLevelPermissions) SetBlockPublicAccess(v *BlockPublicAccess) *AccountLevelPermissions {
	s.BlockPublicAccess = v
	return s
}

// Contains information about actions.
type Action struct {
	_ struct{} `type:"structure"`

	// The GuardDuty finding activity type.
	ActionType *string `locationName:"actionType" type:"string"`

	// Information about the AWS_API_CALL action described in this finding.
	AwsApiCallAction *AwsApiCallAction `locationName:"awsApiCallAction" type:"structure"`

	// Information about the DNS_REQUEST action described in this finding.
	DnsRequestAction *DnsRequestAction `locationName:"dnsRequestAction" type:"structure"`

	// Information about the Kubernetes API call action described in this finding.
	KubernetesApiCallAction *KubernetesApiCallAction `locationName:"kubernetesApiCallAction" type:"structure"`

	// Information whether the user has the permission to use a specific Kubernetes
	// API.
	KubernetesPermissionCheckedDetails *KubernetesPermissionCheckedDetails `locationName:"kubernetesPermissionCheckedDetails" type:"structure"`

	// Information about the role binding that grants the permission defined in
	// a Kubernetes role.
	KubernetesRoleBindingDetails *KubernetesRoleBindingDetails `locationName:"kubernetesRoleBindingDetails" type:"structure"`

	// Information about the Kubernetes role name and role type.
	KubernetesRoleDetails *KubernetesRoleDetails `locationName:"kubernetesRoleDetails" type:"structure"`

	// Information about the NETWORK_CONNECTION action described in this finding.
	NetworkConnectionAction *NetworkConnectionAction `locationName:"networkConnectionAction" type:"structure"`

	// Information about the PORT_PROBE action described in this finding.
	PortProbeAction *PortProbeAction `locationName:"portProbeAction" type:"structure"`

	// Information about RDS_LOGIN_ATTEMPT action described in this finding.
	RdsLoginAttemptAction *RdsLoginAttemptAction `locationName:"rdsLoginAttemptAction" type:"structure"`
}

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

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

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

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

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

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

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

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

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

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

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

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

// Information about the installed EKS add-on (GuardDuty security agent).
type AddonDetails struct {
	_ struct{} `type:"structure"`

	// Status of the installed EKS add-on.
	AddonStatus *string `locationName:"addonStatus" type:"string"`

	// Version of the installed EKS add-on.
	AddonVersion *string `locationName:"addonVersion" type:"string"`
}

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

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

// SetAddonStatus sets the AddonStatus field's value.
func (s *AddonDetails) SetAddonStatus(v string) *AddonDetails {
	s.AddonStatus = &v
	return s
}

// SetAddonVersion sets the AddonVersion field's value.
func (s *AddonDetails) SetAddonVersion(v string) *AddonDetails {
	s.AddonVersion = &v
	return s
}

// The account within the organization specified as the GuardDuty delegated
// administrator.
type AdminAccount struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID for the account.
	AdminAccountId *string `locationName:"adminAccountId" type:"string"`

	// Indicates whether the account is enabled as the delegated administrator.
	AdminStatus *string `locationName:"adminStatus" min:"1" type:"string" enum:"AdminStatus"`
}

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

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

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

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

// Contains information about the administrator account and invitation.
type Administrator struct {
	_ struct{} `type:"structure"`

	// The ID of the account used as the administrator account.
	AccountId *string `locationName:"accountId" min:"12" type:"string"`

	// The value that is used to validate the administrator account to the member
	// account.
	InvitationId *string `locationName:"invitationId" type:"string"`

	// The timestamp when the invitation was sent.
	InvitedAt *string `locationName:"invitedAt" type:"string"`

	// The status of the relationship between the administrator and member accounts.
	RelationshipStatus *string `locationName:"relationshipStatus" type:"string"`
}

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

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

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

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

// SetInvitedAt sets the InvitedAt field's value.
func (s *Administrator) SetInvitedAt(v string) *Administrator {
	s.InvitedAt = &v
	return s
}

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

// Information about the installed GuardDuty security agent.
type AgentDetails struct {
	_ struct{} `type:"structure"`

	// Version of the installed GuardDuty security agent.
	Version *string `locationName:"version" type:"string"`
}

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

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

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

// Contains information about the anomalies.
type Anomaly struct {
	_ struct{} `type:"structure"`

	// Information about the types of profiles.
	Profiles map[string]map[string][]*AnomalyObject `locationName:"profiles" type:"map"`

	// Information about the behavior of the anomalies.
	Unusual *AnomalyUnusual `locationName:"unusual" 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 Anomaly) String() string {
	return awsutil.Prettify(s)
}

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

// SetProfiles sets the Profiles field's value.
func (s *Anomaly) SetProfiles(v map[string]map[string][]*AnomalyObject) *Anomaly {
	s.Profiles = v
	return s
}

// SetUnusual sets the Unusual field's value.
func (s *Anomaly) SetUnusual(v *AnomalyUnusual) *Anomaly {
	s.Unusual = v
	return s
}

// Contains information about the unusual anomalies.
type AnomalyObject struct {
	_ struct{} `type:"structure"`

	// The recorded value.
	Observations *Observations `locationName:"observations" type:"structure"`

	// The frequency of the anomaly.
	ProfileSubtype *string `locationName:"profileSubtype" type:"string" enum:"ProfileSubtype"`

	// The type of behavior of the profile.
	ProfileType *string `locationName:"profileType" type:"string" enum:"ProfileType"`
}

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

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

// SetObservations sets the Observations field's value.
func (s *AnomalyObject) SetObservations(v *Observations) *AnomalyObject {
	s.Observations = v
	return s
}

// SetProfileSubtype sets the ProfileSubtype field's value.
func (s *AnomalyObject) SetProfileSubtype(v string) *AnomalyObject {
	s.ProfileSubtype = &v
	return s
}

// SetProfileType sets the ProfileType field's value.
func (s *AnomalyObject) SetProfileType(v string) *AnomalyObject {
	s.ProfileType = &v
	return s
}

// Contains information about the behavior of the anomaly that is new to GuardDuty.
type AnomalyUnusual struct {
	_ struct{} `type:"structure"`

	// The behavior of the anomalous activity that caused GuardDuty to generate
	// the finding.
	Behavior map[string]map[string]*AnomalyObject `locationName:"behavior" 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 AnomalyUnusual) String() string {
	return awsutil.Prettify(s)
}

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

// SetBehavior sets the Behavior field's value.
func (s *AnomalyUnusual) SetBehavior(v map[string]map[string]*AnomalyObject) *AnomalyUnusual {
	s.Behavior = v
	return s
}

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

	// The ID of the detector that specifies the GuardDuty service whose findings
	// you want to archive.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// The IDs of the findings that you want to archive.
	//
	// FindingIds is a required field
	FindingIds []*string `locationName:"findingIds" 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 ArchiveFindingsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *ArchiveFindingsInput) SetDetectorId(v string) *ArchiveFindingsInput {
	s.DetectorId = &v
	return s
}

// SetFindingIds sets the FindingIds field's value.
func (s *ArchiveFindingsInput) SetFindingIds(v []*string) *ArchiveFindingsInput {
	s.FindingIds = v
	return s
}

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

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

// Contains information about the API action.
type AwsApiCallAction struct {
	_ struct{} `type:"structure"`

	// The details of the Amazon Web Services account that made the API call. This
	// field identifies the resources that were affected by this API call.
	AffectedResources map[string]*string `locationName:"affectedResources" type:"map"`

	// The Amazon Web Services API name.
	Api *string `locationName:"api" type:"string"`

	// The Amazon Web Services API caller type.
	CallerType *string `locationName:"callerType" type:"string"`

	// The domain information for the Amazon Web Services API call.
	DomainDetails *DomainDetails `locationName:"domainDetails" type:"structure"`

	// The error code of the failed Amazon Web Services API action.
	ErrorCode *string `locationName:"errorCode" type:"string"`

	// The details of the Amazon Web Services account that made the API call. This
	// field appears if the call was made from outside your account.
	RemoteAccountDetails *RemoteAccountDetails `locationName:"remoteAccountDetails" type:"structure"`

	// The remote IP information of the connection that initiated the Amazon Web
	// Services API call.
	RemoteIpDetails *RemoteIpDetails `locationName:"remoteIpDetails" type:"structure"`

	// The Amazon Web Services service name whose API was invoked.
	ServiceName *string `locationName:"serviceName" type:"string"`

	// The agent through which the API request was made.
	UserAgent *string `locationName:"userAgent" type:"string"`
}

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

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

// SetAffectedResources sets the AffectedResources field's value.
func (s *AwsApiCallAction) SetAffectedResources(v map[string]*string) *AwsApiCallAction {
	s.AffectedResources = v
	return s
}

// SetApi sets the Api field's value.
func (s *AwsApiCallAction) SetApi(v string) *AwsApiCallAction {
	s.Api = &v
	return s
}

// SetCallerType sets the CallerType field's value.
func (s *AwsApiCallAction) SetCallerType(v string) *AwsApiCallAction {
	s.CallerType = &v
	return s
}

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

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

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

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

// SetServiceName sets the ServiceName field's value.
func (s *AwsApiCallAction) SetServiceName(v string) *AwsApiCallAction {
	s.ServiceName = &v
	return s
}

// SetUserAgent sets the UserAgent field's value.
func (s *AwsApiCallAction) SetUserAgent(v string) *AwsApiCallAction {
	s.UserAgent = &v
	return s
}

// A bad request exception object.
type BadRequestException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The error message.
	Message_ *string `locationName:"message" type:"string"`

	// The error type.
	Type *string `locationName:"__type" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API 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\n%s", s.Code(), s.Message(), s.String())
}

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

// Contains information on how the bucker owner's S3 Block Public Access settings
// are being applied to the S3 bucket. See S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
// for more information.
type BlockPublicAccess struct {
	_ struct{} `type:"structure"`

	// Indicates if S3 Block Public Access is set to BlockPublicAcls.
	BlockPublicAcls *bool `locationName:"blockPublicAcls" type:"boolean"`

	// Indicates if S3 Block Public Access is set to BlockPublicPolicy.
	BlockPublicPolicy *bool `locationName:"blockPublicPolicy" type:"boolean"`

	// Indicates if S3 Block Public Access is set to IgnorePublicAcls.
	IgnorePublicAcls *bool `locationName:"ignorePublicAcls" type:"boolean"`

	// Indicates if S3 Block Public Access is set to RestrictPublicBuckets.
	RestrictPublicBuckets *bool `locationName:"restrictPublicBuckets" 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 BlockPublicAccess) String() string {
	return awsutil.Prettify(s)
}

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

// SetBlockPublicAcls sets the BlockPublicAcls field's value.
func (s *BlockPublicAccess) SetBlockPublicAcls(v bool) *BlockPublicAccess {
	s.BlockPublicAcls = &v
	return s
}

// SetBlockPublicPolicy sets the BlockPublicPolicy field's value.
func (s *BlockPublicAccess) SetBlockPublicPolicy(v bool) *BlockPublicAccess {
	s.BlockPublicPolicy = &v
	return s
}

// SetIgnorePublicAcls sets the IgnorePublicAcls field's value.
func (s *BlockPublicAccess) SetIgnorePublicAcls(v bool) *BlockPublicAccess {
	s.IgnorePublicAcls = &v
	return s
}

// SetRestrictPublicBuckets sets the RestrictPublicBuckets field's value.
func (s *BlockPublicAccess) SetRestrictPublicBuckets(v bool) *BlockPublicAccess {
	s.RestrictPublicBuckets = &v
	return s
}

// Contains information about the bucket level permissions for the S3 bucket.
type BucketLevelPermissions struct {
	_ struct{} `type:"structure"`

	// Contains information on how Access Control Policies are applied to the bucket.
	AccessControlList *AccessControlList `locationName:"accessControlList" type:"structure"`

	// Contains information on which account level S3 Block Public Access settings
	// are applied to the S3 bucket.
	BlockPublicAccess *BlockPublicAccess `locationName:"blockPublicAccess" type:"structure"`

	// Contains information on the bucket policies for the S3 bucket.
	BucketPolicy *BucketPolicy `locationName:"bucketPolicy" 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 BucketLevelPermissions) String() string {
	return awsutil.Prettify(s)
}

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

// SetAccessControlList sets the AccessControlList field's value.
func (s *BucketLevelPermissions) SetAccessControlList(v *AccessControlList) *BucketLevelPermissions {
	s.AccessControlList = v
	return s
}

// SetBlockPublicAccess sets the BlockPublicAccess field's value.
func (s *BucketLevelPermissions) SetBlockPublicAccess(v *BlockPublicAccess) *BucketLevelPermissions {
	s.BlockPublicAccess = v
	return s
}

// SetBucketPolicy sets the BucketPolicy field's value.
func (s *BucketLevelPermissions) SetBucketPolicy(v *BucketPolicy) *BucketLevelPermissions {
	s.BucketPolicy = v
	return s
}

// Contains information on the current bucket policies for the S3 bucket.
type BucketPolicy struct {
	_ struct{} `type:"structure"`

	// A value that indicates whether public read access for the bucket is enabled
	// through a bucket policy.
	AllowsPublicReadAccess *bool `locationName:"allowsPublicReadAccess" type:"boolean"`

	// A value that indicates whether public write access for the bucket is enabled
	// through a bucket policy.
	AllowsPublicWriteAccess *bool `locationName:"allowsPublicWriteAccess" 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 BucketPolicy) String() string {
	return awsutil.Prettify(s)
}

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

// SetAllowsPublicReadAccess sets the AllowsPublicReadAccess field's value.
func (s *BucketPolicy) SetAllowsPublicReadAccess(v bool) *BucketPolicy {
	s.AllowsPublicReadAccess = &v
	return s
}

// SetAllowsPublicWriteAccess sets the AllowsPublicWriteAccess field's value.
func (s *BucketPolicy) SetAllowsPublicWriteAccess(v bool) *BucketPolicy {
	s.AllowsPublicWriteAccess = &v
	return s
}

// Contains information about the city associated with the IP address.
type City struct {
	_ struct{} `type:"structure"`

	// The city name of the remote IP address.
	CityName *string `locationName:"cityName" type:"string"`
}

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

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

// SetCityName sets the CityName field's value.
func (s *City) SetCityName(v string) *City {
	s.CityName = &v
	return s
}

// Contains information on the status of CloudTrail as a data source for the
// detector.
type CloudTrailConfigurationResult struct {
	_ struct{} `type:"structure"`

	// Describes whether CloudTrail is enabled as a data source for the detector.
	//
	// Status is a required field
	Status *string `locationName:"status" min:"1" type:"string" required:"true" enum:"DataSourceStatus"`
}

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

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

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

// Contains information about the condition.
type Condition struct {
	_ struct{} `type:"structure"`

	// Represents the equal condition to be applied to a single field when querying
	// for findings.
	//
	// Deprecated: Eq has been deprecated
	Eq []*string `locationName:"eq" deprecated:"true" type:"list"`

	// Represents an equal condition to be applied to a single field when querying
	// for findings.
	Equals []*string `locationName:"equals" type:"list"`

	// Represents a greater than condition to be applied to a single field when
	// querying for findings.
	GreaterThan *int64 `locationName:"greaterThan" type:"long"`

	// Represents a greater than or equal condition to be applied to a single field
	// when querying for findings.
	GreaterThanOrEqual *int64 `locationName:"greaterThanOrEqual" type:"long"`

	// Represents a greater than condition to be applied to a single field when
	// querying for findings.
	//
	// Deprecated: Gt has been deprecated
	Gt *int64 `locationName:"gt" deprecated:"true" type:"integer"`

	// Represents a greater than or equal condition to be applied to a single field
	// when querying for findings.
	//
	// Deprecated: Gte has been deprecated
	Gte *int64 `locationName:"gte" deprecated:"true" type:"integer"`

	// Represents a less than condition to be applied to a single field when querying
	// for findings.
	LessThan *int64 `locationName:"lessThan" type:"long"`

	// Represents a less than or equal condition to be applied to a single field
	// when querying for findings.
	LessThanOrEqual *int64 `locationName:"lessThanOrEqual" type:"long"`

	// Represents a less than condition to be applied to a single field when querying
	// for findings.
	//
	// Deprecated: Lt has been deprecated
	Lt *int64 `locationName:"lt" deprecated:"true" type:"integer"`

	// Represents a less than or equal condition to be applied to a single field
	// when querying for findings.
	//
	// Deprecated: Lte has been deprecated
	Lte *int64 `locationName:"lte" deprecated:"true" type:"integer"`

	// Represents the not equal condition to be applied to a single field when querying
	// for findings.
	//
	// Deprecated: Neq has been deprecated
	Neq []*string `locationName:"neq" deprecated:"true" type:"list"`

	// Represents a not equal condition to be applied to a single field when querying
	// for findings.
	NotEquals []*string `locationName:"notEquals" 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 Condition) String() string {
	return awsutil.Prettify(s)
}

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

// SetEq sets the Eq field's value.
func (s *Condition) SetEq(v []*string) *Condition {
	s.Eq = v
	return s
}

// SetEquals sets the Equals field's value.
func (s *Condition) SetEquals(v []*string) *Condition {
	s.Equals = v
	return s
}

// SetGreaterThan sets the GreaterThan field's value.
func (s *Condition) SetGreaterThan(v int64) *Condition {
	s.GreaterThan = &v
	return s
}

// SetGreaterThanOrEqual sets the GreaterThanOrEqual field's value.
func (s *Condition) SetGreaterThanOrEqual(v int64) *Condition {
	s.GreaterThanOrEqual = &v
	return s
}

// SetGt sets the Gt field's value.
func (s *Condition) SetGt(v int64) *Condition {
	s.Gt = &v
	return s
}

// SetGte sets the Gte field's value.
func (s *Condition) SetGte(v int64) *Condition {
	s.Gte = &v
	return s
}

// SetLessThan sets the LessThan field's value.
func (s *Condition) SetLessThan(v int64) *Condition {
	s.LessThan = &v
	return s
}

// SetLessThanOrEqual sets the LessThanOrEqual field's value.
func (s *Condition) SetLessThanOrEqual(v int64) *Condition {
	s.LessThanOrEqual = &v
	return s
}

// SetLt sets the Lt field's value.
func (s *Condition) SetLt(v int64) *Condition {
	s.Lt = &v
	return s
}

// SetLte sets the Lte field's value.
func (s *Condition) SetLte(v int64) *Condition {
	s.Lte = &v
	return s
}

// SetNeq sets the Neq field's value.
func (s *Condition) SetNeq(v []*string) *Condition {
	s.Neq = v
	return s
}

// SetNotEquals sets the NotEquals field's value.
func (s *Condition) SetNotEquals(v []*string) *Condition {
	s.NotEquals = v
	return s
}

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

	// The error message.
	Message_ *string `locationName:"message" type:"string"`

	// The error type.
	Type *string `locationName:"__type" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API 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
}

// Details of a container.
type Container struct {
	_ struct{} `type:"structure"`

	// The container runtime (such as, Docker or containerd) used to run the container.
	ContainerRuntime *string `locationName:"containerRuntime" type:"string"`

	// Container ID.
	Id *string `locationName:"id" type:"string"`

	// Container image.
	Image *string `locationName:"image" type:"string"`

	// Part of the image name before the last slash. For example, imagePrefix for
	// public.ecr.aws/amazonlinux/amazonlinux:latest would be public.ecr.aws/amazonlinux.
	// If the image name is relative and does not have a slash, this field is empty.
	ImagePrefix *string `locationName:"imagePrefix" type:"string"`

	// Container name.
	Name *string `locationName:"name" type:"string"`

	// Container security context.
	SecurityContext *SecurityContext `locationName:"securityContext" type:"structure"`

	// Container volume mounts.
	VolumeMounts []*VolumeMount `locationName:"volumeMounts" 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 Container) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

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

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

// SetSecurityContext sets the SecurityContext field's value.
func (s *Container) SetSecurityContext(v *SecurityContext) *Container {
	s.SecurityContext = v
	return s
}

// SetVolumeMounts sets the VolumeMounts field's value.
func (s *Container) SetVolumeMounts(v []*VolumeMount) *Container {
	s.VolumeMounts = v
	return s
}

// Contains information about the Amazon EC2 instance that is running the Amazon
// ECS container.
type ContainerInstanceDetails struct {
	_ struct{} `type:"structure"`

	// Represents total number of nodes in the Amazon ECS cluster.
	CompatibleContainerInstances *int64 `locationName:"compatibleContainerInstances" type:"long"`

	// Represents the nodes in the Amazon ECS cluster that has a HEALTHY coverage
	// status.
	CoveredContainerInstances *int64 `locationName:"coveredContainerInstances" 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 ContainerInstanceDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetCompatibleContainerInstances sets the CompatibleContainerInstances field's value.
func (s *ContainerInstanceDetails) SetCompatibleContainerInstances(v int64) *ContainerInstanceDetails {
	s.CompatibleContainerInstances = &v
	return s
}

// SetCoveredContainerInstances sets the CoveredContainerInstances field's value.
func (s *ContainerInstanceDetails) SetCoveredContainerInstances(v int64) *ContainerInstanceDetails {
	s.CoveredContainerInstances = &v
	return s
}

// Contains information about the country where the remote IP address is located.
type Country struct {
	_ struct{} `type:"structure"`

	// The country code of the remote IP address.
	CountryCode *string `locationName:"countryCode" type:"string"`

	// The country name of the remote IP address.
	CountryName *string `locationName:"countryName" type:"string"`
}

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

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

// SetCountryCode sets the CountryCode field's value.
func (s *Country) SetCountryCode(v string) *Country {
	s.CountryCode = &v
	return s
}

// SetCountryName sets the CountryName field's value.
func (s *Country) SetCountryName(v string) *Country {
	s.CountryName = &v
	return s
}

// This API is also used when you use GuardDuty Runtime Monitoring for your
// Amazon EC2 instances (currently in preview release) and is subject to change.
// The use of this API is subject to Section 2 of the Amazon Web Services Service
// Terms (http://aws.amazon.com/service-terms/) ("Betas and Previews").
//
// Contains information about the Amazon EC2 instance runtime coverage details.
type CoverageEc2InstanceDetails struct {
	_ struct{} `type:"structure"`

	// Information about the installed security agent.
	AgentDetails *AgentDetails `locationName:"agentDetails" type:"structure"`

	// The cluster ARN of the Amazon ECS cluster running on the Amazon EC2 instance.
	ClusterArn *string `locationName:"clusterArn" type:"string"`

	// The Amazon EC2 instance ID.
	InstanceId *string `locationName:"instanceId" type:"string"`

	// The instance type of the Amazon EC2 instance.
	InstanceType *string `locationName:"instanceType" type:"string"`

	// Indicates how the GuardDuty security agent is managed for this resource.
	//
	//    * AUTO_MANAGED indicates that GuardDuty deploys and manages updates for
	//    this resource.
	//
	//    * MANUAL indicates that you are responsible to deploy, update, and manage
	//    the GuardDuty security agent updates for this resource.
	//
	// The DISABLED status doesn't apply to Amazon EC2 instances and Amazon EKS
	// clusters.
	ManagementType *string `locationName:"managementType" type:"string" enum:"ManagementType"`
}

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

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

// SetAgentDetails sets the AgentDetails field's value.
func (s *CoverageEc2InstanceDetails) SetAgentDetails(v *AgentDetails) *CoverageEc2InstanceDetails {
	s.AgentDetails = v
	return s
}

// SetClusterArn sets the ClusterArn field's value.
func (s *CoverageEc2InstanceDetails) SetClusterArn(v string) *CoverageEc2InstanceDetails {
	s.ClusterArn = &v
	return s
}

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

// SetInstanceType sets the InstanceType field's value.
func (s *CoverageEc2InstanceDetails) SetInstanceType(v string) *CoverageEc2InstanceDetails {
	s.InstanceType = &v
	return s
}

// SetManagementType sets the ManagementType field's value.
func (s *CoverageEc2InstanceDetails) SetManagementType(v string) *CoverageEc2InstanceDetails {
	s.ManagementType = &v
	return s
}

// Contains information about Amazon ECS cluster runtime coverage details.
type CoverageEcsClusterDetails struct {
	_ struct{} `type:"structure"`

	// The name of the Amazon ECS cluster.
	ClusterName *string `locationName:"clusterName" type:"string"`

	// Information about the Amazon ECS container running on Amazon EC2 instance.
	ContainerInstanceDetails *ContainerInstanceDetails `locationName:"containerInstanceDetails" type:"structure"`

	// Information about the Fargate details associated with the Amazon ECS cluster.
	FargateDetails *FargateDetails `locationName:"fargateDetails" 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 CoverageEcsClusterDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetClusterName sets the ClusterName field's value.
func (s *CoverageEcsClusterDetails) SetClusterName(v string) *CoverageEcsClusterDetails {
	s.ClusterName = &v
	return s
}

// SetContainerInstanceDetails sets the ContainerInstanceDetails field's value.
func (s *CoverageEcsClusterDetails) SetContainerInstanceDetails(v *ContainerInstanceDetails) *CoverageEcsClusterDetails {
	s.ContainerInstanceDetails = v
	return s
}

// SetFargateDetails sets the FargateDetails field's value.
func (s *CoverageEcsClusterDetails) SetFargateDetails(v *FargateDetails) *CoverageEcsClusterDetails {
	s.FargateDetails = v
	return s
}

// Information about the EKS cluster that has a coverage status.
type CoverageEksClusterDetails struct {
	_ struct{} `type:"structure"`

	// Information about the installed EKS add-on.
	AddonDetails *AddonDetails `locationName:"addonDetails" type:"structure"`

	// Name of the EKS cluster.
	ClusterName *string `locationName:"clusterName" type:"string"`

	// Represents all the nodes within the EKS cluster in your account.
	CompatibleNodes *int64 `locationName:"compatibleNodes" type:"long"`

	// Represents the nodes within the EKS cluster that have a HEALTHY coverage
	// status.
	CoveredNodes *int64 `locationName:"coveredNodes" type:"long"`

	// Indicates how the Amazon EKS add-on GuardDuty agent is managed for this EKS
	// cluster.
	//
	// AUTO_MANAGED indicates GuardDuty deploys and manages updates for this resource.
	//
	// MANUAL indicates that you are responsible to deploy, update, and manage the
	// Amazon EKS add-on GuardDuty agent for this resource.
	ManagementType *string `locationName:"managementType" type:"string" enum:"ManagementType"`
}

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

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

// SetAddonDetails sets the AddonDetails field's value.
func (s *CoverageEksClusterDetails) SetAddonDetails(v *AddonDetails) *CoverageEksClusterDetails {
	s.AddonDetails = v
	return s
}

// SetClusterName sets the ClusterName field's value.
func (s *CoverageEksClusterDetails) SetClusterName(v string) *CoverageEksClusterDetails {
	s.ClusterName = &v
	return s
}

// SetCompatibleNodes sets the CompatibleNodes field's value.
func (s *CoverageEksClusterDetails) SetCompatibleNodes(v int64) *CoverageEksClusterDetails {
	s.CompatibleNodes = &v
	return s
}

// SetCoveredNodes sets the CoveredNodes field's value.
func (s *CoverageEksClusterDetails) SetCoveredNodes(v int64) *CoverageEksClusterDetails {
	s.CoveredNodes = &v
	return s
}

// SetManagementType sets the ManagementType field's value.
func (s *CoverageEksClusterDetails) SetManagementType(v string) *CoverageEksClusterDetails {
	s.ManagementType = &v
	return s
}

// Represents a condition that when matched will be added to the response of
// the operation.
type CoverageFilterCondition struct {
	_ struct{} `type:"structure"`

	// Represents an equal condition that is applied to a single field while retrieving
	// the coverage details.
	Equals []*string `locationName:"equals" type:"list"`

	// Represents a not equal condition that is applied to a single field while
	// retrieving the coverage details.
	NotEquals []*string `locationName:"notEquals" 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 CoverageFilterCondition) String() string {
	return awsutil.Prettify(s)
}

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

// SetEquals sets the Equals field's value.
func (s *CoverageFilterCondition) SetEquals(v []*string) *CoverageFilterCondition {
	s.Equals = v
	return s
}

// SetNotEquals sets the NotEquals field's value.
func (s *CoverageFilterCondition) SetNotEquals(v []*string) *CoverageFilterCondition {
	s.NotEquals = v
	return s
}

// Represents the criteria used in the filter.
type CoverageFilterCriteria struct {
	_ struct{} `type:"structure"`

	// Represents a condition that when matched will be added to the response of
	// the operation.
	FilterCriterion []*CoverageFilterCriterion `locationName:"filterCriterion" 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()
}

// SetFilterCriterion sets the FilterCriterion field's value.
func (s *CoverageFilterCriteria) SetFilterCriterion(v []*CoverageFilterCriterion) *CoverageFilterCriteria {
	s.FilterCriterion = v
	return s
}

// Represents a condition that when matched will be added to the response of
// the operation.
type CoverageFilterCriterion struct {
	_ struct{} `type:"structure"`

	// An enum value representing possible filter fields.
	//
	// Replace the enum value CLUSTER_NAME with EKS_CLUSTER_NAME. CLUSTER_NAME has
	// been deprecated.
	CriterionKey *string `locationName:"criterionKey" type:"string" enum:"CoverageFilterCriterionKey"`

	// Contains information about the condition.
	FilterCondition *CoverageFilterCondition `locationName:"filterCondition" 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 CoverageFilterCriterion) String() string {
	return awsutil.Prettify(s)
}

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

// SetCriterionKey sets the CriterionKey field's value.
func (s *CoverageFilterCriterion) SetCriterionKey(v string) *CoverageFilterCriterion {
	s.CriterionKey = &v
	return s
}

// SetFilterCondition sets the FilterCondition field's value.
func (s *CoverageFilterCriterion) SetFilterCondition(v *CoverageFilterCondition) *CoverageFilterCriterion {
	s.FilterCondition = v
	return s
}

// Information about the resource of the GuardDuty account.
type CoverageResource struct {
	_ struct{} `type:"structure"`

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

	// Represents the status of the EKS cluster coverage.
	CoverageStatus *string `locationName:"coverageStatus" type:"string" enum:"CoverageStatus"`

	// The unique ID of the GuardDuty detector associated with the resource.
	DetectorId *string `locationName:"detectorId" min:"1" type:"string"`

	// Represents the reason why a coverage status was UNHEALTHY for the EKS cluster.
	Issue *string `locationName:"issue" type:"string"`

	// Information about the resource for which the coverage statistics are retrieved.
	ResourceDetails *CoverageResourceDetails `locationName:"resourceDetails" type:"structure"`

	// The unique ID of the resource.
	ResourceId *string `locationName:"resourceId" type:"string"`

	// The timestamp at which the coverage details for the resource were last updated.
	// This is in UTC format.
	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 CoverageResource) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetCoverageStatus sets the CoverageStatus field's value.
func (s *CoverageResource) SetCoverageStatus(v string) *CoverageResource {
	s.CoverageStatus = &v
	return s
}

// SetDetectorId sets the DetectorId field's value.
func (s *CoverageResource) SetDetectorId(v string) *CoverageResource {
	s.DetectorId = &v
	return s
}

// SetIssue sets the Issue field's value.
func (s *CoverageResource) SetIssue(v string) *CoverageResource {
	s.Issue = &v
	return s
}

// SetResourceDetails sets the ResourceDetails field's value.
func (s *CoverageResource) SetResourceDetails(v *CoverageResourceDetails) *CoverageResource {
	s.ResourceDetails = v
	return s
}

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

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

// Information about the resource for each individual EKS cluster.
type CoverageResourceDetails struct {
	_ struct{} `type:"structure"`

	//
	// This API is also used when you use GuardDuty Runtime Monitoring for your
	// Amazon EC2 instances (currently in preview release) and is subject to change.
	// The use of this API is subject to Section 2 of the Amazon Web Services Service
	// Terms (http://aws.amazon.com/service-terms/) ("Betas and Previews").
	//
	// Information about the Amazon EC2 instance assessed for runtime coverage.
	Ec2InstanceDetails *CoverageEc2InstanceDetails `locationName:"ec2InstanceDetails" type:"structure"`

	// Information about the Amazon ECS cluster that is assessed for runtime coverage.
	EcsClusterDetails *CoverageEcsClusterDetails `locationName:"ecsClusterDetails" type:"structure"`

	// EKS cluster details involved in the coverage statistics.
	EksClusterDetails *CoverageEksClusterDetails `locationName:"eksClusterDetails" type:"structure"`

	// The type of Amazon Web Services resource.
	ResourceType *string `locationName:"resourceType" type:"string" 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 CoverageResourceDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetEc2InstanceDetails sets the Ec2InstanceDetails field's value.
func (s *CoverageResourceDetails) SetEc2InstanceDetails(v *CoverageEc2InstanceDetails) *CoverageResourceDetails {
	s.Ec2InstanceDetails = v
	return s
}

// SetEcsClusterDetails sets the EcsClusterDetails field's value.
func (s *CoverageResourceDetails) SetEcsClusterDetails(v *CoverageEcsClusterDetails) *CoverageResourceDetails {
	s.EcsClusterDetails = v
	return s
}

// SetEksClusterDetails sets the EksClusterDetails field's value.
func (s *CoverageResourceDetails) SetEksClusterDetails(v *CoverageEksClusterDetails) *CoverageResourceDetails {
	s.EksClusterDetails = v
	return s
}

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

// Information about the sorting criteria used in the coverage statistics.
type CoverageSortCriteria struct {
	_ struct{} `type:"structure"`

	// Represents the field name used to sort the coverage details.
	//
	// Replace the enum value CLUSTER_NAME with EKS_CLUSTER_NAME. CLUSTER_NAME has
	// been deprecated.
	AttributeName *string `locationName:"attributeName" type:"string" enum:"CoverageSortKey"`

	// The order in which the sorted findings are to be displayed.
	OrderBy *string `locationName:"orderBy" type:"string" enum:"OrderBy"`
}

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

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

// SetAttributeName sets the AttributeName field's value.
func (s *CoverageSortCriteria) SetAttributeName(v string) *CoverageSortCriteria {
	s.AttributeName = &v
	return s
}

// SetOrderBy sets the OrderBy field's value.
func (s *CoverageSortCriteria) SetOrderBy(v string) *CoverageSortCriteria {
	s.OrderBy = &v
	return s
}

// Information about the coverage statistics for a resource.
type CoverageStatistics struct {
	_ struct{} `type:"structure"`

	// Represents coverage statistics for EKS clusters aggregated by coverage status.
	CountByCoverageStatus map[string]*int64 `locationName:"countByCoverageStatus" type:"map"`

	// Represents coverage statistics for EKS clusters aggregated by resource type.
	CountByResourceType map[string]*int64 `locationName:"countByResourceType" 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 CoverageStatistics) String() string {
	return awsutil.Prettify(s)
}

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

// SetCountByCoverageStatus sets the CountByCoverageStatus field's value.
func (s *CoverageStatistics) SetCountByCoverageStatus(v map[string]*int64) *CoverageStatistics {
	s.CountByCoverageStatus = v
	return s
}

// SetCountByResourceType sets the CountByResourceType field's value.
func (s *CoverageStatistics) SetCountByResourceType(v map[string]*int64) *CoverageStatistics {
	s.CountByResourceType = v
	return s
}

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

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

	// Describes which data sources will be enabled for the detector.
	//
	// There might be regional differences because some data sources might not be
	// available in all the Amazon Web Services Regions where GuardDuty is presently
	// supported. For more information, see Regions and endpoints (https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_regions.html).
	//
	// Deprecated: This parameter is deprecated, use Features instead
	DataSources *DataSourceConfigurations `locationName:"dataSources" deprecated:"true" type:"structure"`

	// A Boolean value that specifies whether the detector is to be enabled.
	//
	// Enable is a required field
	Enable *bool `locationName:"enable" type:"boolean" required:"true"`

	// A list of features that will be configured for the detector.
	Features []*DetectorFeatureConfiguration `locationName:"features" type:"list"`

	// A value that specifies how frequently updated findings are exported.
	FindingPublishingFrequency *string `locationName:"findingPublishingFrequency" type:"string" enum:"FindingPublishingFrequency"`

	// The tags to be added to a new detector resource.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
}

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

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

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

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

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

// SetDataSources sets the DataSources field's value.
func (s *CreateDetectorInput) SetDataSources(v *DataSourceConfigurations) *CreateDetectorInput {
	s.DataSources = v
	return s
}

// SetEnable sets the Enable field's value.
func (s *CreateDetectorInput) SetEnable(v bool) *CreateDetectorInput {
	s.Enable = &v
	return s
}

// SetFeatures sets the Features field's value.
func (s *CreateDetectorInput) SetFeatures(v []*DetectorFeatureConfiguration) *CreateDetectorInput {
	s.Features = v
	return s
}

// SetFindingPublishingFrequency sets the FindingPublishingFrequency field's value.
func (s *CreateDetectorInput) SetFindingPublishingFrequency(v string) *CreateDetectorInput {
	s.FindingPublishingFrequency = &v
	return s
}

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

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

	// The unique ID of the created detector.
	DetectorId *string `locationName:"detectorId" min:"1" type:"string"`

	// Specifies the data sources that couldn't be enabled when GuardDuty was enabled
	// for the first time.
	UnprocessedDataSources *UnprocessedDataSourcesResult `locationName:"unprocessedDataSources" 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 CreateDetectorOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetDetectorId sets the DetectorId field's value.
func (s *CreateDetectorOutput) SetDetectorId(v string) *CreateDetectorOutput {
	s.DetectorId = &v
	return s
}

// SetUnprocessedDataSources sets the UnprocessedDataSources field's value.
func (s *CreateDetectorOutput) SetUnprocessedDataSources(v *UnprocessedDataSourcesResult) *CreateDetectorOutput {
	s.UnprocessedDataSources = v
	return s
}

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

	// Specifies the action that is to be applied to the findings that match the
	// filter.
	Action *string `locationName:"action" min:"1" type:"string" enum:"FilterAction"`

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

	// The description of the filter. Valid characters include alphanumeric characters,
	// and special characters such as hyphen, period, colon, underscore, parentheses
	// ({ }, [ ], and ( )), forward slash, horizontal tab, vertical tab, newline,
	// form feed, return, and whitespace.
	Description *string `locationName:"description" type:"string"`

	// The ID of the detector belonging to the GuardDuty account that you want to
	// create a filter for.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// Represents the criteria to be used in the filter for querying findings.
	//
	// You can only use the following attributes to query findings:
	//
	//    * accountId
	//
	//    * id
	//
	//    * region
	//
	//    * severity To filter on the basis of severity, the API and CLI use the
	//    following input list for the FindingCriteria (https://docs.aws.amazon.com/guardduty/latest/APIReference/API_FindingCriteria.html)
	//    condition: Low: ["1", "2", "3"] Medium: ["4", "5", "6"] High: ["7", "8",
	//    "9"] For more information, see Severity levels for GuardDuty findings
	//    (https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_findings.html#guardduty_findings-severity).
	//
	//    * type
	//
	//    * updatedAt Type: ISO 8601 string format: YYYY-MM-DDTHH:MM:SS.SSSZ or
	//    YYYY-MM-DDTHH:MM:SSZ depending on whether the value contains milliseconds.
	//
	//    * resource.accessKeyDetails.accessKeyId
	//
	//    * resource.accessKeyDetails.principalId
	//
	//    * resource.accessKeyDetails.userName
	//
	//    * resource.accessKeyDetails.userType
	//
	//    * resource.instanceDetails.iamInstanceProfile.id
	//
	//    * resource.instanceDetails.imageId
	//
	//    * resource.instanceDetails.instanceId
	//
	//    * resource.instanceDetails.tags.key
	//
	//    * resource.instanceDetails.tags.value
	//
	//    * resource.instanceDetails.networkInterfaces.ipv6Addresses
	//
	//    * resource.instanceDetails.networkInterfaces.privateIpAddresses.privateIpAddress
	//
	//    * resource.instanceDetails.networkInterfaces.publicDnsName
	//
	//    * resource.instanceDetails.networkInterfaces.publicIp
	//
	//    * resource.instanceDetails.networkInterfaces.securityGroups.groupId
	//
	//    * resource.instanceDetails.networkInterfaces.securityGroups.groupName
	//
	//    * resource.instanceDetails.networkInterfaces.subnetId
	//
	//    * resource.instanceDetails.networkInterfaces.vpcId
	//
	//    * resource.instanceDetails.outpostArn
	//
	//    * resource.resourceType
	//
	//    * resource.s3BucketDetails.publicAccess.effectivePermissions
	//
	//    * resource.s3BucketDetails.name
	//
	//    * resource.s3BucketDetails.tags.key
	//
	//    * resource.s3BucketDetails.tags.value
	//
	//    * resource.s3BucketDetails.type
	//
	//    * service.action.actionType
	//
	//    * service.action.awsApiCallAction.api
	//
	//    * service.action.awsApiCallAction.callerType
	//
	//    * service.action.awsApiCallAction.errorCode
	//
	//    * service.action.awsApiCallAction.remoteIpDetails.city.cityName
	//
	//    * service.action.awsApiCallAction.remoteIpDetails.country.countryName
	//
	//    * service.action.awsApiCallAction.remoteIpDetails.ipAddressV4
	//
	//    * service.action.awsApiCallAction.remoteIpDetails.organization.asn
	//
	//    * service.action.awsApiCallAction.remoteIpDetails.organization.asnOrg
	//
	//    * service.action.awsApiCallAction.serviceName
	//
	//    * service.action.dnsRequestAction.domain
	//
	//    * service.action.dnsRequestAction.domainWithSuffix
	//
	//    * service.action.networkConnectionAction.blocked
	//
	//    * service.action.networkConnectionAction.connectionDirection
	//
	//    * service.action.networkConnectionAction.localPortDetails.port
	//
	//    * service.action.networkConnectionAction.protocol
	//
	//    * service.action.networkConnectionAction.remoteIpDetails.city.cityName
	//
	//    * service.action.networkConnectionAction.remoteIpDetails.country.countryName
	//
	//    * service.action.networkConnectionAction.remoteIpDetails.ipAddressV4
	//
	//    * service.action.networkConnectionAction.remoteIpDetails.organization.asn
	//
	//    * service.action.networkConnectionAction.remoteIpDetails.organization.asnOrg
	//
	//    * service.action.networkConnectionAction.remotePortDetails.port
	//
	//    * service.action.awsApiCallAction.remoteAccountDetails.affiliated
	//
	//    * service.action.kubernetesApiCallAction.remoteIpDetails.ipAddressV4
	//
	//    * service.action.kubernetesApiCallAction.namespace
	//
	//    * service.action.kubernetesApiCallAction.remoteIpDetails.organization.asn
	//
	//    * service.action.kubernetesApiCallAction.requestUri
	//
	//    * service.action.kubernetesApiCallAction.statusCode
	//
	//    * service.action.networkConnectionAction.localIpDetails.ipAddressV4
	//
	//    * service.action.networkConnectionAction.protocol
	//
	//    * service.action.awsApiCallAction.serviceName
	//
	//    * service.action.awsApiCallAction.remoteAccountDetails.accountId
	//
	//    * service.additionalInfo.threatListName
	//
	//    * service.resourceRole
	//
	//    * resource.eksClusterDetails.name
	//
	//    * resource.kubernetesDetails.kubernetesWorkloadDetails.name
	//
	//    * resource.kubernetesDetails.kubernetesWorkloadDetails.namespace
	//
	//    * resource.kubernetesDetails.kubernetesUserDetails.username
	//
	//    * resource.kubernetesDetails.kubernetesWorkloadDetails.containers.image
	//
	//    * resource.kubernetesDetails.kubernetesWorkloadDetails.containers.imagePrefix
	//
	//    * service.ebsVolumeScanDetails.scanId
	//
	//    * service.ebsVolumeScanDetails.scanDetections.threatDetectedByName.threatNames.name
	//
	//    * service.ebsVolumeScanDetails.scanDetections.threatDetectedByName.threatNames.severity
	//
	//    * service.ebsVolumeScanDetails.scanDetections.threatDetectedByName.threatNames.filePaths.hash
	//
	//    * resource.ecsClusterDetails.name
	//
	//    * resource.ecsClusterDetails.taskDetails.containers.image
	//
	//    * resource.ecsClusterDetails.taskDetails.definitionArn
	//
	//    * resource.containerDetails.image
	//
	//    * resource.rdsDbInstanceDetails.dbInstanceIdentifier
	//
	//    * resource.rdsDbInstanceDetails.dbClusterIdentifier
	//
	//    * resource.rdsDbInstanceDetails.engine
	//
	//    * resource.rdsDbUserDetails.user
	//
	//    * resource.rdsDbInstanceDetails.tags.key
	//
	//    * resource.rdsDbInstanceDetails.tags.value
	//
	//    * service.runtimeDetails.process.executableSha256
	//
	//    * service.runtimeDetails.process.name
	//
	//    * service.runtimeDetails.process.name
	//
	//    * resource.lambdaDetails.functionName
	//
	//    * resource.lambdaDetails.functionArn
	//
	//    * resource.lambdaDetails.tags.key
	//
	//    * resource.lambdaDetails.tags.value
	//
	// FindingCriteria is a required field
	FindingCriteria *FindingCriteria `locationName:"findingCriteria" type:"structure" required:"true"`

	// The name of the filter. Valid characters include period (.), underscore (_),
	// dash (-), and alphanumeric characters. A whitespace is considered to be an
	// invalid character.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"3" type:"string" required:"true"`

	// Specifies the position of the filter in the list of current filters. Also
	// specifies the order in which this filter is applied to the findings.
	Rank *int64 `locationName:"rank" min:"1" type:"integer"`

	// The tags to be added to a new filter resource.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s 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 && len(*s.Action) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Action", 1))
	}
	if s.DetectorId == nil {
		invalidParams.Add(request.NewErrParamRequired("DetectorId"))
	}
	if s.DetectorId != nil && len(*s.DetectorId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DetectorId", 1))
	}
	if s.FindingCriteria == nil {
		invalidParams.Add(request.NewErrParamRequired("FindingCriteria"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 3))
	}
	if s.Rank != nil && *s.Rank < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Rank", 1))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}

	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
}

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

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

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

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

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

// SetRank sets the Rank field's value.
func (s *CreateFilterInput) SetRank(v int64) *CreateFilterInput {
	s.Rank = &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 name of the successfully created filter.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"3" 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()
}

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

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

	// A Boolean value that indicates whether GuardDuty is to start using the uploaded
	// IPSet.
	//
	// Activate is a required field
	Activate *bool `locationName:"activate" type:"boolean" required:"true"`

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

	// The unique ID of the detector of the GuardDuty account that you want to create
	// an IPSet for.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// The format of the file that contains the IPSet.
	//
	// Format is a required field
	Format *string `locationName:"format" min:"1" type:"string" required:"true" enum:"IpSetFormat"`

	// The URI of the file that contains the IPSet.
	//
	// Location is a required field
	Location *string `locationName:"location" min:"1" type:"string" required:"true"`

	// The user-friendly name to identify the IPSet.
	//
	// Allowed characters are alphanumeric, whitespace, dash (-), and underscores
	// (_).
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true"`

	// The tags to be added to a new IP set resource.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
}

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

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

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

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

// SetActivate sets the Activate field's value.
func (s *CreateIPSetInput) SetActivate(v bool) *CreateIPSetInput {
	s.Activate = &v
	return s
}

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

// SetDetectorId sets the DetectorId field's value.
func (s *CreateIPSetInput) SetDetectorId(v string) *CreateIPSetInput {
	s.DetectorId = &v
	return s
}

// SetFormat sets the Format field's value.
func (s *CreateIPSetInput) SetFormat(v string) *CreateIPSetInput {
	s.Format = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *CreateIPSetInput) SetLocation(v string) *CreateIPSetInput {
	s.Location = &v
	return s
}

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

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

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

	// The ID of the IPSet resource.
	//
	// IpSetId is a required field
	IpSetId *string `locationName:"ipSetId" 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 CreateIPSetOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetIpSetId sets the IpSetId field's value.
func (s *CreateIPSetOutput) SetIpSetId(v string) *CreateIPSetOutput {
	s.IpSetId = &v
	return s
}

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

	// A list of account ID and email address pairs of the accounts that you want
	// to associate with the GuardDuty administrator account.
	//
	// AccountDetails is a required field
	AccountDetails []*AccountDetail `locationName:"accountDetails" min:"1" type:"list" required:"true"`

	// The unique ID of the detector of the GuardDuty account that you want to associate
	// member accounts with.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" 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 CreateMembersInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAccountDetails sets the AccountDetails field's value.
func (s *CreateMembersInput) SetAccountDetails(v []*AccountDetail) *CreateMembersInput {
	s.AccountDetails = v
	return s
}

// SetDetectorId sets the DetectorId field's value.
func (s *CreateMembersInput) SetDetectorId(v string) *CreateMembersInput {
	s.DetectorId = &v
	return s
}

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

	// A list of objects that include the accountIds of the unprocessed accounts
	// and a result string that explains why each was unprocessed.
	//
	// UnprocessedAccounts is a required field
	UnprocessedAccounts []*UnprocessedAccount `locationName:"unprocessedAccounts" 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 CreateMembersOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetUnprocessedAccounts sets the UnprocessedAccounts field's value.
func (s *CreateMembersOutput) SetUnprocessedAccounts(v []*UnprocessedAccount) *CreateMembersOutput {
	s.UnprocessedAccounts = v
	return s
}

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

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

	// The properties of the publishing destination, including the ARNs for the
	// destination and the KMS key used for encryption.
	//
	// DestinationProperties is a required field
	DestinationProperties *DestinationProperties `locationName:"destinationProperties" type:"structure" required:"true"`

	// The type of resource for the publishing destination. Currently only Amazon
	// S3 buckets are supported.
	//
	// DestinationType is a required field
	DestinationType *string `locationName:"destinationType" min:"1" type:"string" required:"true" enum:"DestinationType"`

	// The ID of the GuardDuty detector associated with the publishing destination.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" 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 CreatePublishingDestinationInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// SetDestinationProperties sets the DestinationProperties field's value.
func (s *CreatePublishingDestinationInput) SetDestinationProperties(v *DestinationProperties) *CreatePublishingDestinationInput {
	s.DestinationProperties = v
	return s
}

// SetDestinationType sets the DestinationType field's value.
func (s *CreatePublishingDestinationInput) SetDestinationType(v string) *CreatePublishingDestinationInput {
	s.DestinationType = &v
	return s
}

// SetDetectorId sets the DetectorId field's value.
func (s *CreatePublishingDestinationInput) SetDetectorId(v string) *CreatePublishingDestinationInput {
	s.DetectorId = &v
	return s
}

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

	// The ID of the publishing destination that is created.
	//
	// DestinationId is a required field
	DestinationId *string `locationName:"destinationId" 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 CreatePublishingDestinationOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetDestinationId sets the DestinationId field's value.
func (s *CreatePublishingDestinationOutput) SetDestinationId(v string) *CreatePublishingDestinationOutput {
	s.DestinationId = &v
	return s
}

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

	// The ID of the detector to create sample findings for.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// The types of sample findings to generate.
	FindingTypes []*string `locationName:"findingTypes" 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 CreateSampleFindingsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *CreateSampleFindingsInput) SetDetectorId(v string) *CreateSampleFindingsInput {
	s.DetectorId = &v
	return s
}

// SetFindingTypes sets the FindingTypes field's value.
func (s *CreateSampleFindingsInput) SetFindingTypes(v []*string) *CreateSampleFindingsInput {
	s.FindingTypes = v
	return s
}

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

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

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

	// A Boolean value that indicates whether GuardDuty is to start using the uploaded
	// ThreatIntelSet.
	//
	// Activate is a required field
	Activate *bool `locationName:"activate" type:"boolean" required:"true"`

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

	// The unique ID of the detector of the GuardDuty account that you want to create
	// a threatIntelSet for.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// The format of the file that contains the ThreatIntelSet.
	//
	// Format is a required field
	Format *string `locationName:"format" min:"1" type:"string" required:"true" enum:"ThreatIntelSetFormat"`

	// The URI of the file that contains the ThreatIntelSet.
	//
	// Location is a required field
	Location *string `locationName:"location" min:"1" type:"string" required:"true"`

	// A user-friendly ThreatIntelSet name displayed in all findings that are generated
	// by activity that involves IP addresses included in this ThreatIntelSet.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true"`

	// The tags to be added to a new threat list resource.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
}

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

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

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

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

// SetActivate sets the Activate field's value.
func (s *CreateThreatIntelSetInput) SetActivate(v bool) *CreateThreatIntelSetInput {
	s.Activate = &v
	return s
}

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

// SetDetectorId sets the DetectorId field's value.
func (s *CreateThreatIntelSetInput) SetDetectorId(v string) *CreateThreatIntelSetInput {
	s.DetectorId = &v
	return s
}

// SetFormat sets the Format field's value.
func (s *CreateThreatIntelSetInput) SetFormat(v string) *CreateThreatIntelSetInput {
	s.Format = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *CreateThreatIntelSetInput) SetLocation(v string) *CreateThreatIntelSetInput {
	s.Location = &v
	return s
}

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

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

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

	// The ID of the ThreatIntelSet resource.
	//
	// ThreatIntelSetId is a required field
	ThreatIntelSetId *string `locationName:"threatIntelSetId" 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 CreateThreatIntelSetOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetThreatIntelSetId sets the ThreatIntelSetId field's value.
func (s *CreateThreatIntelSetOutput) SetThreatIntelSetId(v string) *CreateThreatIntelSetOutput {
	s.ThreatIntelSetId = &v
	return s
}

// Contains information on the status of DNS logs as a data source.
type DNSLogsConfigurationResult struct {
	_ struct{} `type:"structure"`

	// Denotes whether DNS logs is enabled as a data source.
	//
	// Status is a required field
	Status *string `locationName:"status" min:"1" type:"string" required:"true" enum:"DataSourceStatus"`
}

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

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

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

// Contains information about which data sources are enabled.
type DataSourceConfigurations struct {
	_ struct{} `type:"structure"`

	// Describes whether any Kubernetes logs are enabled as data sources.
	Kubernetes *KubernetesConfiguration `locationName:"kubernetes" type:"structure"`

	// Describes whether Malware Protection is enabled as a data source.
	MalwareProtection *MalwareProtectionConfiguration `locationName:"malwareProtection" type:"structure"`

	// Describes whether S3 data event logs are enabled as a data source.
	S3Logs *S3LogsConfiguration `locationName:"s3Logs" type:"structure"`
}

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

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

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

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

// SetKubernetes sets the Kubernetes field's value.
func (s *DataSourceConfigurations) SetKubernetes(v *KubernetesConfiguration) *DataSourceConfigurations {
	s.Kubernetes = v
	return s
}

// SetMalwareProtection sets the MalwareProtection field's value.
func (s *DataSourceConfigurations) SetMalwareProtection(v *MalwareProtectionConfiguration) *DataSourceConfigurations {
	s.MalwareProtection = v
	return s
}

// SetS3Logs sets the S3Logs field's value.
func (s *DataSourceConfigurations) SetS3Logs(v *S3LogsConfiguration) *DataSourceConfigurations {
	s.S3Logs = v
	return s
}

// Contains information on the status of data sources for the detector.
type DataSourceConfigurationsResult struct {
	_ struct{} `type:"structure"`

	// An object that contains information on the status of CloudTrail as a data
	// source.
	//
	// CloudTrail is a required field
	CloudTrail *CloudTrailConfigurationResult `locationName:"cloudTrail" type:"structure" required:"true"`

	// An object that contains information on the status of DNS logs as a data source.
	//
	// DNSLogs is a required field
	DNSLogs *DNSLogsConfigurationResult `locationName:"dnsLogs" type:"structure" required:"true"`

	// An object that contains information on the status of VPC flow logs as a data
	// source.
	//
	// FlowLogs is a required field
	FlowLogs *FlowLogsConfigurationResult `locationName:"flowLogs" type:"structure" required:"true"`

	// An object that contains information on the status of all Kubernetes data
	// sources.
	Kubernetes *KubernetesConfigurationResult `locationName:"kubernetes" type:"structure"`

	// Describes the configuration of Malware Protection data sources.
	MalwareProtection *MalwareProtectionConfigurationResult `locationName:"malwareProtection" type:"structure"`

	// An object that contains information on the status of S3 Data event logs as
	// a data source.
	//
	// S3Logs is a required field
	S3Logs *S3LogsConfigurationResult `locationName:"s3Logs" 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 DataSourceConfigurationsResult) String() string {
	return awsutil.Prettify(s)
}

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

// SetCloudTrail sets the CloudTrail field's value.
func (s *DataSourceConfigurationsResult) SetCloudTrail(v *CloudTrailConfigurationResult) *DataSourceConfigurationsResult {
	s.CloudTrail = v
	return s
}

// SetDNSLogs sets the DNSLogs field's value.
func (s *DataSourceConfigurationsResult) SetDNSLogs(v *DNSLogsConfigurationResult) *DataSourceConfigurationsResult {
	s.DNSLogs = v
	return s
}

// SetFlowLogs sets the FlowLogs field's value.
func (s *DataSourceConfigurationsResult) SetFlowLogs(v *FlowLogsConfigurationResult) *DataSourceConfigurationsResult {
	s.FlowLogs = v
	return s
}

// SetKubernetes sets the Kubernetes field's value.
func (s *DataSourceConfigurationsResult) SetKubernetes(v *KubernetesConfigurationResult) *DataSourceConfigurationsResult {
	s.Kubernetes = v
	return s
}

// SetMalwareProtection sets the MalwareProtection field's value.
func (s *DataSourceConfigurationsResult) SetMalwareProtection(v *MalwareProtectionConfigurationResult) *DataSourceConfigurationsResult {
	s.MalwareProtection = v
	return s
}

// SetS3Logs sets the S3Logs field's value.
func (s *DataSourceConfigurationsResult) SetS3Logs(v *S3LogsConfigurationResult) *DataSourceConfigurationsResult {
	s.S3Logs = v
	return s
}

// Contains information about which data sources are enabled for the GuardDuty
// member account.
type DataSourceFreeTrial struct {
	_ struct{} `type:"structure"`

	// A value that specifies the number of days left to use each enabled data source.
	FreeTrialDaysRemaining *int64 `locationName:"freeTrialDaysRemaining" 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 DataSourceFreeTrial) String() string {
	return awsutil.Prettify(s)
}

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

// SetFreeTrialDaysRemaining sets the FreeTrialDaysRemaining field's value.
func (s *DataSourceFreeTrial) SetFreeTrialDaysRemaining(v int64) *DataSourceFreeTrial {
	s.FreeTrialDaysRemaining = &v
	return s
}

// Contains information about which data sources are enabled for the GuardDuty
// member account.
type DataSourcesFreeTrial struct {
	_ struct{} `type:"structure"`

	// Describes whether any Amazon Web Services CloudTrail management event logs
	// are enabled as data sources.
	CloudTrail *DataSourceFreeTrial `locationName:"cloudTrail" type:"structure"`

	// Describes whether any DNS logs are enabled as data sources.
	DnsLogs *DataSourceFreeTrial `locationName:"dnsLogs" type:"structure"`

	// Describes whether any VPC Flow logs are enabled as data sources.
	FlowLogs *DataSourceFreeTrial `locationName:"flowLogs" type:"structure"`

	// Describes whether any Kubernetes logs are enabled as data sources.
	Kubernetes *KubernetesDataSourceFreeTrial `locationName:"kubernetes" type:"structure"`

	// Describes whether Malware Protection is enabled as a data source.
	MalwareProtection *MalwareProtectionDataSourceFreeTrial `locationName:"malwareProtection" type:"structure"`

	// Describes whether any S3 data event logs are enabled as data sources.
	S3Logs *DataSourceFreeTrial `locationName:"s3Logs" type:"structure"`
}

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

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

// SetCloudTrail sets the CloudTrail field's value.
func (s *DataSourcesFreeTrial) SetCloudTrail(v *DataSourceFreeTrial) *DataSourcesFreeTrial {
	s.CloudTrail = v
	return s
}

// SetDnsLogs sets the DnsLogs field's value.
func (s *DataSourcesFreeTrial) SetDnsLogs(v *DataSourceFreeTrial) *DataSourcesFreeTrial {
	s.DnsLogs = v
	return s
}

// SetFlowLogs sets the FlowLogs field's value.
func (s *DataSourcesFreeTrial) SetFlowLogs(v *DataSourceFreeTrial) *DataSourcesFreeTrial {
	s.FlowLogs = v
	return s
}

// SetKubernetes sets the Kubernetes field's value.
func (s *DataSourcesFreeTrial) SetKubernetes(v *KubernetesDataSourceFreeTrial) *DataSourcesFreeTrial {
	s.Kubernetes = v
	return s
}

// SetMalwareProtection sets the MalwareProtection field's value.
func (s *DataSourcesFreeTrial) SetMalwareProtection(v *MalwareProtectionDataSourceFreeTrial) *DataSourcesFreeTrial {
	s.MalwareProtection = v
	return s
}

// SetS3Logs sets the S3Logs field's value.
func (s *DataSourcesFreeTrial) SetS3Logs(v *DataSourceFreeTrial) *DataSourcesFreeTrial {
	s.S3Logs = v
	return s
}

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

	// A list of account IDs of the Amazon Web Services accounts that sent invitations
	// to the current member account that you want to decline invitations from.
	//
	// 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 DeclineInvitationsInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeclineInvitationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeclineInvitationsInput"}
	if s.AccountIds == nil {
		invalidParams.Add(request.NewErrParamRequired("AccountIds"))
	}
	if 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 *DeclineInvitationsInput) SetAccountIds(v []*string) *DeclineInvitationsInput {
	s.AccountIds = v
	return s
}

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

	// A list of objects that contain the unprocessed account and a result string
	// that explains why it was unprocessed.
	//
	// UnprocessedAccounts is a required field
	UnprocessedAccounts []*UnprocessedAccount `locationName:"unprocessedAccounts" 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 DeclineInvitationsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetUnprocessedAccounts sets the UnprocessedAccounts field's value.
func (s *DeclineInvitationsOutput) SetUnprocessedAccounts(v []*UnprocessedAccount) *DeclineInvitationsOutput {
	s.UnprocessedAccounts = v
	return s
}

// Contains information on the server side encryption method used in the S3
// bucket. See S3 Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html)
// for more information.
type DefaultServerSideEncryption struct {
	_ struct{} `type:"structure"`

	// The type of encryption used for objects within the S3 bucket.
	EncryptionType *string `locationName:"encryptionType" type:"string"`

	// The Amazon Resource Name (ARN) of the KMS encryption key. Only available
	// if the bucket EncryptionType is aws:kms.
	KmsMasterKeyArn *string `locationName:"kmsMasterKeyArn" type:"string"`
}

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

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

// SetEncryptionType sets the EncryptionType field's value.
func (s *DefaultServerSideEncryption) SetEncryptionType(v string) *DefaultServerSideEncryption {
	s.EncryptionType = &v
	return s
}

// SetKmsMasterKeyArn sets the KmsMasterKeyArn field's value.
func (s *DefaultServerSideEncryption) SetKmsMasterKeyArn(v string) *DefaultServerSideEncryption {
	s.KmsMasterKeyArn = &v
	return s
}

type DeleteDetectorInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique ID of the detector that you want to delete.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" 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 DeleteDetectorInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *DeleteDetectorInput) SetDetectorId(v string) *DeleteDetectorInput {
	s.DetectorId = &v
	return s
}

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

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

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

	// The unique ID of the detector that the filter is associated with.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// The name of the filter that you want to delete.
	//
	// FilterName is a required field
	FilterName *string `location:"uri" locationName:"filterName" 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.DetectorId == nil {
		invalidParams.Add(request.NewErrParamRequired("DetectorId"))
	}
	if s.DetectorId != nil && len(*s.DetectorId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DetectorId", 1))
	}
	if s.FilterName == nil {
		invalidParams.Add(request.NewErrParamRequired("FilterName"))
	}
	if s.FilterName != nil && len(*s.FilterName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FilterName", 1))
	}

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

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

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

type DeleteFilterOutput 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 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()
}

type DeleteIPSetInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique ID of the detector associated with the IPSet.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// The unique ID of the IPSet to delete.
	//
	// IpSetId is a required field
	IpSetId *string `location:"uri" locationName:"ipSetId" 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 DeleteIPSetInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *DeleteIPSetInput) SetDetectorId(v string) *DeleteIPSetInput {
	s.DetectorId = &v
	return s
}

// SetIpSetId sets the IpSetId field's value.
func (s *DeleteIPSetInput) SetIpSetId(v string) *DeleteIPSetInput {
	s.IpSetId = &v
	return s
}

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

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

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

	// A list of account IDs of the Amazon Web Services accounts that sent invitations
	// to the current member account that you want to delete invitations from.
	//
	// 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 DeleteInvitationsInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteInvitationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteInvitationsInput"}
	if s.AccountIds == nil {
		invalidParams.Add(request.NewErrParamRequired("AccountIds"))
	}
	if 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 *DeleteInvitationsInput) SetAccountIds(v []*string) *DeleteInvitationsInput {
	s.AccountIds = v
	return s
}

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

	// A list of objects that contain the unprocessed account and a result string
	// that explains why it was unprocessed.
	//
	// UnprocessedAccounts is a required field
	UnprocessedAccounts []*UnprocessedAccount `locationName:"unprocessedAccounts" 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 DeleteInvitationsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetUnprocessedAccounts sets the UnprocessedAccounts field's value.
func (s *DeleteInvitationsOutput) SetUnprocessedAccounts(v []*UnprocessedAccount) *DeleteInvitationsOutput {
	s.UnprocessedAccounts = v
	return s
}

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

	// A list of account IDs of the GuardDuty member accounts that you want to delete.
	//
	// AccountIds is a required field
	AccountIds []*string `locationName:"accountIds" min:"1" type:"list" required:"true"`

	// The unique ID of the detector of the GuardDuty account whose members you
	// want to delete.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" 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 DeleteMembersInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *DeleteMembersInput) SetDetectorId(v string) *DeleteMembersInput {
	s.DetectorId = &v
	return s
}

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

	// The accounts that could not be processed.
	//
	// UnprocessedAccounts is a required field
	UnprocessedAccounts []*UnprocessedAccount `locationName:"unprocessedAccounts" 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 DeleteMembersOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetUnprocessedAccounts sets the UnprocessedAccounts field's value.
func (s *DeleteMembersOutput) SetUnprocessedAccounts(v []*UnprocessedAccount) *DeleteMembersOutput {
	s.UnprocessedAccounts = v
	return s
}

type DeletePublishingDestinationInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the publishing destination to delete.
	//
	// DestinationId is a required field
	DestinationId *string `location:"uri" locationName:"destinationId" type:"string" required:"true"`

	// The unique ID of the detector associated with the publishing destination
	// to delete.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" 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 DeletePublishingDestinationInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDestinationId sets the DestinationId field's value.
func (s *DeletePublishingDestinationInput) SetDestinationId(v string) *DeletePublishingDestinationInput {
	s.DestinationId = &v
	return s
}

// SetDetectorId sets the DetectorId field's value.
func (s *DeletePublishingDestinationInput) SetDetectorId(v string) *DeletePublishingDestinationInput {
	s.DetectorId = &v
	return s
}

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

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

type DeleteThreatIntelSetInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique ID of the detector that the threatIntelSet is associated with.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// The unique ID of the threatIntelSet that you want to delete.
	//
	// ThreatIntelSetId is a required field
	ThreatIntelSetId *string `location:"uri" locationName:"threatIntelSetId" 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 DeleteThreatIntelSetInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *DeleteThreatIntelSetInput) SetDetectorId(v string) *DeleteThreatIntelSetInput {
	s.DetectorId = &v
	return s
}

// SetThreatIntelSetId sets the ThreatIntelSetId field's value.
func (s *DeleteThreatIntelSetInput) SetThreatIntelSetId(v string) *DeleteThreatIntelSetInput {
	s.ThreatIntelSetId = &v
	return s
}

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

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

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

	// The unique ID of the detector that the request is associated with.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// Represents the criteria to be used in the filter for describing scan entries.
	FilterCriteria *FilterCriteria `locationName:"filterCriteria" type:"structure"`

	// You can use this parameter to indicate the maximum number of items that you
	// want in the response. The default value is 50. The maximum value is 50.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// You can use this parameter when paginating results. Set the value of this
	// parameter to null on your first call to the list action. For subsequent calls
	// to the action, fill nextToken in the request with the value of NextToken
	// from the previous response to continue listing data.
	NextToken *string `locationName:"nextToken" type:"string"`

	// Represents the criteria used for sorting scan entries. The attributeName
	// (https://docs.aws.amazon.com/guardduty/latest/APIReference/API_SortCriteria.html#guardduty-Type-SortCriteria-attributeName)
	// is required and it must be scanStartTime.
	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 DescribeMalwareScansInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeMalwareScansInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeMalwareScansInput"}
	if s.DetectorId == nil {
		invalidParams.Add(request.NewErrParamRequired("DetectorId"))
	}
	if s.DetectorId != nil && len(*s.DetectorId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DetectorId", 1))
	}
	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
}

// SetDetectorId sets the DetectorId field's value.
func (s *DescribeMalwareScansInput) SetDetectorId(v string) *DescribeMalwareScansInput {
	s.DetectorId = &v
	return s
}

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

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

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

// SetSortCriteria sets the SortCriteria field's value.
func (s *DescribeMalwareScansInput) SetSortCriteria(v *SortCriteria) *DescribeMalwareScansInput {
	s.SortCriteria = v
	return s
}

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

	// The pagination parameter to be used on the next list operation to retrieve
	// more items.
	NextToken *string `locationName:"nextToken" type:"string"`

	// Contains information about malware scans.
	//
	// Scans is a required field
	Scans []*Scan `locationName:"scans" 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 DescribeMalwareScansOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetScans sets the Scans field's value.
func (s *DescribeMalwareScansOutput) SetScans(v []*Scan) *DescribeMalwareScansOutput {
	s.Scans = v
	return s
}

type DescribeOrganizationConfigurationInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the detector to retrieve information about the delegated administrator
	// from.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// You can use this parameter to indicate the maximum number of items that you
	// want in the response.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// You can use this parameter when paginating results. Set the value of this
	// parameter to null on your first call to the list action. For subsequent calls
	// to the action, fill nextToken in the request with the value of NextToken
	// from the previous response to continue listing data.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *DescribeOrganizationConfigurationInput) SetDetectorId(v string) *DescribeOrganizationConfigurationInput {
	s.DetectorId = &v
	return s
}

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

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

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

	// Indicates whether GuardDuty is automatically enabled for accounts added to
	// the organization.
	//
	// Even though this is still supported, we recommend using AutoEnableOrganizationMembers
	// to achieve the similar results.
	//
	// Deprecated: This field is deprecated, use AutoEnableOrganizationMembers instead
	AutoEnable *bool `locationName:"autoEnable" deprecated:"true" type:"boolean"`

	// Indicates the auto-enablement configuration of GuardDuty for the member accounts
	// in the organization.
	//
	//    * NEW: Indicates that when a new account joins the organization, they
	//    will have GuardDuty enabled automatically.
	//
	//    * ALL: Indicates that all accounts in the organization have GuardDuty
	//    enabled automatically. This includes NEW accounts that join the organization
	//    and accounts that may have been suspended or removed from the organization
	//    in GuardDuty.
	//
	//    * NONE: Indicates that GuardDuty will not be automatically enabled for
	//    any account in the organization. The administrator must manage GuardDuty
	//    for each account in the organization individually.
	AutoEnableOrganizationMembers *string `locationName:"autoEnableOrganizationMembers" type:"string" enum:"AutoEnableMembers"`

	// Describes which data sources are enabled automatically for member accounts.
	//
	// Deprecated: This parameter is deprecated, use Features instead
	DataSources *OrganizationDataSourceConfigurationsResult `locationName:"dataSources" deprecated:"true" type:"structure"`

	// A list of features that are configured for this organization.
	Features []*OrganizationFeatureConfigurationResult `locationName:"features" type:"list"`

	// Indicates whether the maximum number of allowed member accounts are already
	// associated with the delegated administrator account for your organization.
	//
	// MemberAccountLimitReached is a required field
	MemberAccountLimitReached *bool `locationName:"memberAccountLimitReached" type:"boolean" required:"true"`

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

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

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

// SetAutoEnableOrganizationMembers sets the AutoEnableOrganizationMembers field's value.
func (s *DescribeOrganizationConfigurationOutput) SetAutoEnableOrganizationMembers(v string) *DescribeOrganizationConfigurationOutput {
	s.AutoEnableOrganizationMembers = &v
	return s
}

// SetDataSources sets the DataSources field's value.
func (s *DescribeOrganizationConfigurationOutput) SetDataSources(v *OrganizationDataSourceConfigurationsResult) *DescribeOrganizationConfigurationOutput {
	s.DataSources = v
	return s
}

// SetFeatures sets the Features field's value.
func (s *DescribeOrganizationConfigurationOutput) SetFeatures(v []*OrganizationFeatureConfigurationResult) *DescribeOrganizationConfigurationOutput {
	s.Features = v
	return s
}

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

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

type DescribePublishingDestinationInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the publishing destination to retrieve.
	//
	// DestinationId is a required field
	DestinationId *string `location:"uri" locationName:"destinationId" type:"string" required:"true"`

	// The unique ID of the detector associated with the publishing destination
	// to retrieve.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" 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 DescribePublishingDestinationInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDestinationId sets the DestinationId field's value.
func (s *DescribePublishingDestinationInput) SetDestinationId(v string) *DescribePublishingDestinationInput {
	s.DestinationId = &v
	return s
}

// SetDetectorId sets the DetectorId field's value.
func (s *DescribePublishingDestinationInput) SetDetectorId(v string) *DescribePublishingDestinationInput {
	s.DetectorId = &v
	return s
}

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

	// The ID of the publishing destination.
	//
	// DestinationId is a required field
	DestinationId *string `locationName:"destinationId" type:"string" required:"true"`

	// A DestinationProperties object that includes the DestinationArn and KmsKeyArn
	// of the publishing destination.
	//
	// DestinationProperties is a required field
	DestinationProperties *DestinationProperties `locationName:"destinationProperties" type:"structure" required:"true"`

	// The type of publishing destination. Currently, only Amazon S3 buckets are
	// supported.
	//
	// DestinationType is a required field
	DestinationType *string `locationName:"destinationType" min:"1" type:"string" required:"true" enum:"DestinationType"`

	// The time, in epoch millisecond format, at which GuardDuty was first unable
	// to publish findings to the destination.
	//
	// PublishingFailureStartTimestamp is a required field
	PublishingFailureStartTimestamp *int64 `locationName:"publishingFailureStartTimestamp" type:"long" required:"true"`

	// The status of the publishing destination.
	//
	// Status is a required field
	Status *string `locationName:"status" min:"1" type:"string" required:"true" enum:"PublishingStatus"`
}

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

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

// SetDestinationId sets the DestinationId field's value.
func (s *DescribePublishingDestinationOutput) SetDestinationId(v string) *DescribePublishingDestinationOutput {
	s.DestinationId = &v
	return s
}

// SetDestinationProperties sets the DestinationProperties field's value.
func (s *DescribePublishingDestinationOutput) SetDestinationProperties(v *DestinationProperties) *DescribePublishingDestinationOutput {
	s.DestinationProperties = v
	return s
}

// SetDestinationType sets the DestinationType field's value.
func (s *DescribePublishingDestinationOutput) SetDestinationType(v string) *DescribePublishingDestinationOutput {
	s.DestinationType = &v
	return s
}

// SetPublishingFailureStartTimestamp sets the PublishingFailureStartTimestamp field's value.
func (s *DescribePublishingDestinationOutput) SetPublishingFailureStartTimestamp(v int64) *DescribePublishingDestinationOutput {
	s.PublishingFailureStartTimestamp = &v
	return s
}

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

// Contains information about the publishing destination, including the ID,
// type, and status.
type Destination struct {
	_ struct{} `type:"structure"`

	// The unique ID of the publishing destination.
	//
	// DestinationId is a required field
	DestinationId *string `locationName:"destinationId" type:"string" required:"true"`

	// The type of resource used for the publishing destination. Currently, only
	// Amazon S3 buckets are supported.
	//
	// DestinationType is a required field
	DestinationType *string `locationName:"destinationType" min:"1" type:"string" required:"true" enum:"DestinationType"`

	// The status of the publishing destination.
	//
	// Status is a required field
	Status *string `locationName:"status" min:"1" type:"string" required:"true" enum:"PublishingStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API 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()
}

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

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

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

// Contains the Amazon Resource Name (ARN) of the resource to publish to, such
// as an S3 bucket, and the ARN of the KMS key to use to encrypt published findings.
type DestinationProperties struct {
	_ struct{} `type:"structure"`

	// The ARN of the resource to publish to.
	//
	// To specify an S3 bucket folder use the following format: arn:aws:s3:::DOC-EXAMPLE-BUCKET/myFolder/
	DestinationArn *string `locationName:"destinationArn" type:"string"`

	// The ARN of the KMS key to use for encryption.
	KmsKeyArn *string `locationName:"kmsKeyArn" type:"string"`
}

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

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

// SetDestinationArn sets the DestinationArn field's value.
func (s *DestinationProperties) SetDestinationArn(v string) *DestinationProperties {
	s.DestinationArn = &v
	return s
}

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

// Contains information about the detected behavior.
type Detection struct {
	_ struct{} `type:"structure"`

	// The details about the anomalous activity that caused GuardDuty to generate
	// the finding.
	Anomaly *Anomaly `locationName:"anomaly" 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 Detection) String() string {
	return awsutil.Prettify(s)
}

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

// SetAnomaly sets the Anomaly field's value.
func (s *Detection) SetAnomaly(v *Anomaly) *Detection {
	s.Anomaly = v
	return s
}

// Information about the additional configuration for a feature in your GuardDuty
// account.
type DetectorAdditionalConfiguration struct {
	_ struct{} `type:"structure"`

	// Name of the additional configuration.
	Name *string `locationName:"name" type:"string" enum:"FeatureAdditionalConfiguration"`

	// Status of the additional configuration.
	Status *string `locationName:"status" type:"string" enum:"FeatureStatus"`
}

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

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

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

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

// Information about the additional configuration.
type DetectorAdditionalConfigurationResult struct {
	_ struct{} `type:"structure"`

	// Name of the additional configuration.
	Name *string `locationName:"name" type:"string" enum:"FeatureAdditionalConfiguration"`

	// Status of the additional configuration.
	Status *string `locationName:"status" type:"string" enum:"FeatureStatus"`

	// The timestamp at which the additional configuration was last updated. This
	// is in UTC format.
	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 DetectorAdditionalConfigurationResult) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// Contains information about a GuardDuty feature.
type DetectorFeatureConfiguration struct {
	_ struct{} `type:"structure"`

	// Additional configuration for a resource.
	AdditionalConfiguration []*DetectorAdditionalConfiguration `locationName:"additionalConfiguration" type:"list"`

	// The name of the feature.
	Name *string `locationName:"name" type:"string" enum:"DetectorFeature"`

	// The status of the feature.
	Status *string `locationName:"status" type:"string" enum:"FeatureStatus"`
}

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

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

// SetAdditionalConfiguration sets the AdditionalConfiguration field's value.
func (s *DetectorFeatureConfiguration) SetAdditionalConfiguration(v []*DetectorAdditionalConfiguration) *DetectorFeatureConfiguration {
	s.AdditionalConfiguration = v
	return s
}

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

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

// Contains information about a GuardDuty feature.
type DetectorFeatureConfigurationResult struct {
	_ struct{} `type:"structure"`

	// Additional configuration for a resource.
	AdditionalConfiguration []*DetectorAdditionalConfigurationResult `locationName:"additionalConfiguration" type:"list"`

	// Indicates the name of the feature that can be enabled for the detector.
	Name *string `locationName:"name" type:"string" enum:"DetectorFeatureResult"`

	// Indicates the status of the feature that is enabled for the detector.
	Status *string `locationName:"status" type:"string" enum:"FeatureStatus"`

	// The timestamp at which the feature object was 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 DetectorFeatureConfigurationResult) String() string {
	return awsutil.Prettify(s)
}

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

// SetAdditionalConfiguration sets the AdditionalConfiguration field's value.
func (s *DetectorFeatureConfigurationResult) SetAdditionalConfiguration(v []*DetectorAdditionalConfigurationResult) *DetectorFeatureConfigurationResult {
	s.AdditionalConfiguration = v
	return s
}

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

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

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

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

	// The Amazon Web Services Account ID for the organizations account to be disabled
	// as a GuardDuty delegated administrator.
	//
	// AdminAccountId is a required field
	AdminAccountId *string `locationName:"adminAccountId" type:"string" required:"true"`
}

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

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

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

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

// SetAdminAccountId sets the AdminAccountId field's value.
func (s *DisableOrganizationAdminAccountInput) SetAdminAccountId(v string) *DisableOrganizationAdminAccountInput {
	s.AdminAccountId = &v
	return s
}

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

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

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

type DisassociateFromAdministratorAccountInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique ID of the detector of the GuardDuty member account.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" 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 DisassociateFromAdministratorAccountInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *DisassociateFromAdministratorAccountInput) SetDetectorId(v string) *DisassociateFromAdministratorAccountInput {
	s.DetectorId = &v
	return s
}

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

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

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

// Deprecated: This input is deprecated, use DisassociateFromAdministratorAccountRequest instead
type DisassociateFromMasterAccountInput struct {
	_ struct{} `deprecated:"true" type:"structure" nopayload:"true"`

	// The unique ID of the detector of the GuardDuty member account.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" 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 DisassociateFromMasterAccountInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *DisassociateFromMasterAccountInput) SetDetectorId(v string) *DisassociateFromMasterAccountInput {
	s.DetectorId = &v
	return s
}

// Deprecated: This output is deprecated, use DisassociateFromAdministratorAccountResponse instead
type DisassociateFromMasterAccountOutput struct {
	_ struct{} `deprecated:"true" type:"structure"`
}

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

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

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

	// A list of account IDs of the GuardDuty member accounts that you want to disassociate
	// from the administrator account.
	//
	// AccountIds is a required field
	AccountIds []*string `locationName:"accountIds" min:"1" type:"list" required:"true"`

	// The unique ID of the detector of the GuardDuty account whose members you
	// want to disassociate from the administrator account.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" 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 DisassociateMembersInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *DisassociateMembersInput) SetDetectorId(v string) *DisassociateMembersInput {
	s.DetectorId = &v
	return s
}

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

	// A list of objects that contain the unprocessed account and a result string
	// that explains why it was unprocessed.
	//
	// UnprocessedAccounts is a required field
	UnprocessedAccounts []*UnprocessedAccount `locationName:"unprocessedAccounts" 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 DisassociateMembersOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetUnprocessedAccounts sets the UnprocessedAccounts field's value.
func (s *DisassociateMembersOutput) SetUnprocessedAccounts(v []*UnprocessedAccount) *DisassociateMembersOutput {
	s.UnprocessedAccounts = v
	return s
}

// Contains information about the DNS_REQUEST action described in this finding.
type DnsRequestAction struct {
	_ struct{} `type:"structure"`

	// Indicates whether the targeted port is blocked.
	Blocked *bool `locationName:"blocked" type:"boolean"`

	// The domain information for the DNS query.
	Domain *string `locationName:"domain" type:"string"`

	// The second and top level domain involved in the activity that prompted GuardDuty
	// to generate this finding.
	DomainWithSuffix *string `locationName:"domainWithSuffix" type:"string"`

	// The network connection protocol observed in the activity that prompted GuardDuty
	// to generate the finding.
	Protocol *string `locationName:"protocol" type:"string"`
}

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

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

// SetBlocked sets the Blocked field's value.
func (s *DnsRequestAction) SetBlocked(v bool) *DnsRequestAction {
	s.Blocked = &v
	return s
}

// SetDomain sets the Domain field's value.
func (s *DnsRequestAction) SetDomain(v string) *DnsRequestAction {
	s.Domain = &v
	return s
}

// SetDomainWithSuffix sets the DomainWithSuffix field's value.
func (s *DnsRequestAction) SetDomainWithSuffix(v string) *DnsRequestAction {
	s.DomainWithSuffix = &v
	return s
}

// SetProtocol sets the Protocol field's value.
func (s *DnsRequestAction) SetProtocol(v string) *DnsRequestAction {
	s.Protocol = &v
	return s
}

// Contains information about the domain.
type DomainDetails struct {
	_ struct{} `type:"structure"`

	// The domain information for the Amazon Web Services API call.
	Domain *string `locationName:"domain" type:"string"`
}

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

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

// SetDomain sets the Domain field's value.
func (s *DomainDetails) SetDomain(v string) *DomainDetails {
	s.Domain = &v
	return s
}

// Contains list of scanned and skipped EBS volumes with details.
type EbsVolumeDetails struct {
	_ struct{} `type:"structure"`

	// List of EBS volumes that were scanned.
	ScannedVolumeDetails []*VolumeDetail `locationName:"scannedVolumeDetails" type:"list"`

	// List of EBS volumes that were skipped from the malware scan.
	SkippedVolumeDetails []*VolumeDetail `locationName:"skippedVolumeDetails" 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 EbsVolumeDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetScannedVolumeDetails sets the ScannedVolumeDetails field's value.
func (s *EbsVolumeDetails) SetScannedVolumeDetails(v []*VolumeDetail) *EbsVolumeDetails {
	s.ScannedVolumeDetails = v
	return s
}

// SetSkippedVolumeDetails sets the SkippedVolumeDetails field's value.
func (s *EbsVolumeDetails) SetSkippedVolumeDetails(v []*VolumeDetail) *EbsVolumeDetails {
	s.SkippedVolumeDetails = v
	return s
}

// Contains details from the malware scan that created a finding.
type EbsVolumeScanDetails struct {
	_ struct{} `type:"structure"`

	// Returns the completion date and time of the malware scan.
	ScanCompletedAt *time.Time `locationName:"scanCompletedAt" type:"timestamp"`

	// Contains a complete view providing malware scan result details.
	ScanDetections *ScanDetections `locationName:"scanDetections" type:"structure"`

	// Unique Id of the malware scan that generated the finding.
	ScanId *string `locationName:"scanId" type:"string"`

	// Returns the start date and time of the malware scan.
	ScanStartedAt *time.Time `locationName:"scanStartedAt" type:"timestamp"`

	// Specifies the scan type that invoked the malware scan.
	ScanType *string `locationName:"scanType" type:"string" enum:"ScanType"`

	// Contains list of threat intelligence sources used to detect threats.
	Sources []*string `locationName:"sources" type:"list"`

	// GuardDuty finding ID that triggered a malware scan.
	TriggerFindingId *string `locationName:"triggerFindingId" type:"string"`
}

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

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

// SetScanCompletedAt sets the ScanCompletedAt field's value.
func (s *EbsVolumeScanDetails) SetScanCompletedAt(v time.Time) *EbsVolumeScanDetails {
	s.ScanCompletedAt = &v
	return s
}

// SetScanDetections sets the ScanDetections field's value.
func (s *EbsVolumeScanDetails) SetScanDetections(v *ScanDetections) *EbsVolumeScanDetails {
	s.ScanDetections = v
	return s
}

// SetScanId sets the ScanId field's value.
func (s *EbsVolumeScanDetails) SetScanId(v string) *EbsVolumeScanDetails {
	s.ScanId = &v
	return s
}

// SetScanStartedAt sets the ScanStartedAt field's value.
func (s *EbsVolumeScanDetails) SetScanStartedAt(v time.Time) *EbsVolumeScanDetails {
	s.ScanStartedAt = &v
	return s
}

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

// SetSources sets the Sources field's value.
func (s *EbsVolumeScanDetails) SetSources(v []*string) *EbsVolumeScanDetails {
	s.Sources = v
	return s
}

// SetTriggerFindingId sets the TriggerFindingId field's value.
func (s *EbsVolumeScanDetails) SetTriggerFindingId(v string) *EbsVolumeScanDetails {
	s.TriggerFindingId = &v
	return s
}

// Describes the configuration of scanning EBS volumes as a data source.
type EbsVolumesResult struct {
	_ struct{} `type:"structure"`

	// Specifies the reason why scanning EBS volumes (Malware Protection) was not
	// enabled as a data source.
	Reason *string `locationName:"reason" type:"string"`

	// Describes whether scanning EBS volumes is enabled as a data source.
	Status *string `locationName:"status" min:"1" type:"string" enum:"DataSourceStatus"`
}

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

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

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

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

// Contains information about the details of the ECS Cluster.
type EcsClusterDetails struct {
	_ struct{} `type:"structure"`

	// The number of services that are running on the cluster in an ACTIVE state.
	ActiveServicesCount *int64 `locationName:"activeServicesCount" type:"integer"`

	// The Amazon Resource Name (ARN) that identifies the cluster.
	Arn *string `locationName:"arn" type:"string"`

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

	// The number of container instances registered into the cluster.
	RegisteredContainerInstancesCount *int64 `locationName:"registeredContainerInstancesCount" type:"integer"`

	// The number of tasks in the cluster that are in the RUNNING state.
	RunningTasksCount *int64 `locationName:"runningTasksCount" type:"integer"`

	// The status of the ECS cluster.
	Status *string `locationName:"status" type:"string"`

	// The tags of the ECS Cluster.
	Tags []*Tag `locationName:"tags" type:"list"`

	// Contains information about the details of the ECS Task.
	TaskDetails *EcsTaskDetails `locationName:"taskDetails" 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 EcsClusterDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetActiveServicesCount sets the ActiveServicesCount field's value.
func (s *EcsClusterDetails) SetActiveServicesCount(v int64) *EcsClusterDetails {
	s.ActiveServicesCount = &v
	return s
}

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

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

// SetRegisteredContainerInstancesCount sets the RegisteredContainerInstancesCount field's value.
func (s *EcsClusterDetails) SetRegisteredContainerInstancesCount(v int64) *EcsClusterDetails {
	s.RegisteredContainerInstancesCount = &v
	return s
}

// SetRunningTasksCount sets the RunningTasksCount field's value.
func (s *EcsClusterDetails) SetRunningTasksCount(v int64) *EcsClusterDetails {
	s.RunningTasksCount = &v
	return s
}

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

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

// SetTaskDetails sets the TaskDetails field's value.
func (s *EcsClusterDetails) SetTaskDetails(v *EcsTaskDetails) *EcsClusterDetails {
	s.TaskDetails = v
	return s
}

// Contains information about the task in an ECS cluster.
type EcsTaskDetails struct {
	_ struct{} `type:"structure"`

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

	// The containers that's associated with the task.
	Containers []*Container `locationName:"containers" type:"list"`

	// The ARN of the task definition that creates the task.
	DefinitionArn *string `locationName:"definitionArn" type:"string"`

	// The name of the task group that's associated with the task.
	Group *string `locationName:"group" type:"string"`

	// The Unix timestamp for the time when the task started.
	StartedAt *time.Time `locationName:"startedAt" type:"timestamp"`

	// Contains the tag specified when a task is started.
	StartedBy *string `locationName:"startedBy" type:"string"`

	// The tags of the ECS Task.
	Tags []*Tag `locationName:"tags" type:"list"`

	// The Unix timestamp for the time when the task was created.
	TaskCreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The version counter for the task.
	Version *string `locationName:"version" type:"string"`

	// The list of data volume definitions for the task.
	Volumes []*Volume `locationName:"volumes" 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 EcsTaskDetails) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetContainers sets the Containers field's value.
func (s *EcsTaskDetails) SetContainers(v []*Container) *EcsTaskDetails {
	s.Containers = v
	return s
}

// SetDefinitionArn sets the DefinitionArn field's value.
func (s *EcsTaskDetails) SetDefinitionArn(v string) *EcsTaskDetails {
	s.DefinitionArn = &v
	return s
}

// SetGroup sets the Group field's value.
func (s *EcsTaskDetails) SetGroup(v string) *EcsTaskDetails {
	s.Group = &v
	return s
}

// SetStartedAt sets the StartedAt field's value.
func (s *EcsTaskDetails) SetStartedAt(v time.Time) *EcsTaskDetails {
	s.StartedAt = &v
	return s
}

// SetStartedBy sets the StartedBy field's value.
func (s *EcsTaskDetails) SetStartedBy(v string) *EcsTaskDetails {
	s.StartedBy = &v
	return s
}

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

// SetTaskCreatedAt sets the TaskCreatedAt field's value.
func (s *EcsTaskDetails) SetTaskCreatedAt(v time.Time) *EcsTaskDetails {
	s.TaskCreatedAt = &v
	return s
}

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

// SetVolumes sets the Volumes field's value.
func (s *EcsTaskDetails) SetVolumes(v []*Volume) *EcsTaskDetails {
	s.Volumes = v
	return s
}

// Details about the EKS cluster involved in a Kubernetes finding.
type EksClusterDetails struct {
	_ struct{} `type:"structure"`

	// EKS cluster ARN.
	Arn *string `locationName:"arn" type:"string"`

	// The timestamp when the EKS cluster was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// EKS cluster name.
	Name *string `locationName:"name" type:"string"`

	// The EKS cluster status.
	Status *string `locationName:"status" type:"string"`

	// The EKS cluster tags.
	Tags []*Tag `locationName:"tags" type:"list"`

	// The VPC ID to which the EKS cluster is attached.
	VpcId *string `locationName:"vpcId" type:"string"`
}

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

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

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

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

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

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

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

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

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

	// The Amazon Web Services account ID for the organization account to be enabled
	// as a GuardDuty delegated administrator.
	//
	// AdminAccountId is a required field
	AdminAccountId *string `locationName:"adminAccountId" type:"string" required:"true"`
}

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

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

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

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

// SetAdminAccountId sets the AdminAccountId field's value.
func (s *EnableOrganizationAdminAccountInput) SetAdminAccountId(v string) *EnableOrganizationAdminAccountInput {
	s.AdminAccountId = &v
	return s
}

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

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

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

// Contains information about the reason that the finding was generated.
type Evidence struct {
	_ struct{} `type:"structure"`

	// A list of threat intelligence details related to the evidence.
	ThreatIntelligenceDetails []*ThreatIntelligenceDetail `locationName:"threatIntelligenceDetails" 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 Evidence) String() string {
	return awsutil.Prettify(s)
}

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

// SetThreatIntelligenceDetails sets the ThreatIntelligenceDetails field's value.
func (s *Evidence) SetThreatIntelligenceDetails(v []*ThreatIntelligenceDetail) *Evidence {
	s.ThreatIntelligenceDetails = v
	return s
}

// Contains information about Amazon Web Services Fargate details associated
// with an Amazon ECS cluster.
type FargateDetails struct {
	_ struct{} `type:"structure"`

	// Runtime coverage issues identified for the resource running on Amazon Web
	// Services Fargate.
	Issues []*string `locationName:"issues" type:"list"`

	// Indicates how the GuardDuty security agent is managed for this resource.
	//
	//    * AUTO_MANAGED indicates that GuardDuty deploys and manages updates for
	//    this resource.
	//
	//    * DISABLED indicates that the deployment of the GuardDuty security agent
	//    is disabled for this resource.
	//
	// The MANUAL status doesn't apply to the Amazon Web Services Fargate (Amazon
	// ECS only) woprkloads.
	ManagementType *string `locationName:"managementType" type:"string" enum:"ManagementType"`
}

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

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

// SetIssues sets the Issues field's value.
func (s *FargateDetails) SetIssues(v []*string) *FargateDetails {
	s.Issues = v
	return s
}

// SetManagementType sets the ManagementType field's value.
func (s *FargateDetails) SetManagementType(v string) *FargateDetails {
	s.ManagementType = &v
	return s
}

// Contains information about the condition.
type FilterCondition struct {
	_ struct{} `type:"structure"`

	// Represents an equal condition to be applied to a single field when querying
	// for scan entries.
	EqualsValue *string `locationName:"equalsValue" min:"1" type:"string"`

	// Represents a greater than condition to be applied to a single field when
	// querying for scan entries.
	GreaterThan *int64 `locationName:"greaterThan" type:"long"`

	// Represents a less than condition to be applied to a single field when querying
	// for scan entries.
	LessThan *int64 `locationName:"lessThan" 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 FilterCondition) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetEqualsValue sets the EqualsValue field's value.
func (s *FilterCondition) SetEqualsValue(v string) *FilterCondition {
	s.EqualsValue = &v
	return s
}

// SetGreaterThan sets the GreaterThan field's value.
func (s *FilterCondition) SetGreaterThan(v int64) *FilterCondition {
	s.GreaterThan = &v
	return s
}

// SetLessThan sets the LessThan field's value.
func (s *FilterCondition) SetLessThan(v int64) *FilterCondition {
	s.LessThan = &v
	return s
}

// Represents the criteria to be used in the filter for describing scan entries.
type FilterCriteria struct {
	_ struct{} `type:"structure"`

	// Represents a condition that when matched will be added to the response of
	// the operation.
	FilterCriterion []*FilterCriterion `locationName:"filterCriterion" 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.FilterCriterion != nil {
		for i, v := range s.FilterCriterion {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "FilterCriterion", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

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

// Represents a condition that when matched will be added to the response of
// the operation. Irrespective of using any filter criteria, an administrator
// account can view the scan entries for all of its member accounts. However,
// each member account can view the scan entries only for their own account.
type FilterCriterion struct {
	_ struct{} `type:"structure"`

	// An enum value representing possible scan properties to match with given scan
	// entries.
	//
	// Replace the enum value CLUSTER_NAME with EKS_CLUSTER_NAME. CLUSTER_NAME has
	// been deprecated.
	CriterionKey *string `locationName:"criterionKey" type:"string" enum:"CriterionKey"`

	// Contains information about the condition.
	FilterCondition *FilterCondition `locationName:"filterCondition" 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 FilterCriterion) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetCriterionKey sets the CriterionKey field's value.
func (s *FilterCriterion) SetCriterionKey(v string) *FilterCriterion {
	s.CriterionKey = &v
	return s
}

// SetFilterCondition sets the FilterCondition field's value.
func (s *FilterCriterion) SetFilterCondition(v *FilterCondition) *FilterCriterion {
	s.FilterCondition = v
	return s
}

// Contains information about the finding that is generated when abnormal or
// suspicious activity is detected.
type Finding struct {
	_ struct{} `type:"structure"`

	// The ID of the account in which the finding was generated.
	//
	// AccountId is a required field
	AccountId *string `locationName:"accountId" type:"string" required:"true"`

	// The ARN of the finding.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" type:"string" required:"true"`

	// The confidence score for the finding.
	Confidence *float64 `locationName:"confidence" type:"double"`

	// The time and date when the finding was created.
	//
	// CreatedAt is a required field
	CreatedAt *string `locationName:"createdAt" type:"string" required:"true"`

	// The description of the finding.
	Description *string `locationName:"description" type:"string"`

	// The ID of the finding.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The partition associated with the finding.
	Partition *string `locationName:"partition" type:"string"`

	// The Region where the finding was generated.
	//
	// Region is a required field
	Region *string `locationName:"region" type:"string" required:"true"`

	// Contains information about the Amazon Web Services resource associated with
	// the activity that prompted GuardDuty to generate a finding.
	//
	// Resource is a required field
	Resource *Resource `locationName:"resource" type:"structure" required:"true"`

	// The version of the schema used for the finding.
	//
	// SchemaVersion is a required field
	SchemaVersion *string `locationName:"schemaVersion" type:"string" required:"true"`

	// Contains additional information about the generated finding.
	Service *Service `locationName:"service" type:"structure"`

	// The severity of the finding.
	//
	// Severity is a required field
	Severity *float64 `locationName:"severity" type:"double" required:"true"`

	// The title of the finding.
	Title *string `locationName:"title" type:"string"`

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

	// The time and date when the finding was last updated.
	//
	// UpdatedAt is a required field
	UpdatedAt *string `locationName:"updatedAt" 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 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()
}

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

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

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

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

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

// SetId sets the Id field's value.
func (s *Finding) SetId(v string) *Finding {
	s.Id = &v
	return s
}

// SetPartition sets the Partition field's value.
func (s *Finding) SetPartition(v string) *Finding {
	s.Partition = &v
	return s
}

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

// SetResource sets the Resource field's value.
func (s *Finding) SetResource(v *Resource) *Finding {
	s.Resource = v
	return s
}

// SetSchemaVersion sets the SchemaVersion field's value.
func (s *Finding) SetSchemaVersion(v string) *Finding {
	s.SchemaVersion = &v
	return s
}

// SetService sets the Service field's value.
func (s *Finding) SetService(v *Service) *Finding {
	s.Service = v
	return s
}

// SetSeverity sets the Severity field's value.
func (s *Finding) SetSeverity(v float64) *Finding {
	s.Severity = &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 string) *Finding {
	s.UpdatedAt = &v
	return s
}

// Contains information about the criteria used for querying findings.
type FindingCriteria struct {
	_ struct{} `type:"structure"`

	// Represents a map of finding properties that match specified conditions and
	// values when querying findings.
	Criterion map[string]*Condition `locationName:"criterion" 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 FindingCriteria) String() string {
	return awsutil.Prettify(s)
}

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

// SetCriterion sets the Criterion field's value.
func (s *FindingCriteria) SetCriterion(v map[string]*Condition) *FindingCriteria {
	s.Criterion = v
	return s
}

// Contains information about finding statistics.
type FindingStatistics struct {
	_ struct{} `type:"structure"`

	// Represents a map of severity to count statistics for a set of findings.
	CountBySeverity map[string]*int64 `locationName:"countBySeverity" 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 FindingStatistics) String() string {
	return awsutil.Prettify(s)
}

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

// SetCountBySeverity sets the CountBySeverity field's value.
func (s *FindingStatistics) SetCountBySeverity(v map[string]*int64) *FindingStatistics {
	s.CountBySeverity = v
	return s
}

// Contains information on the status of VPC flow logs as a data source.
type FlowLogsConfigurationResult struct {
	_ struct{} `type:"structure"`

	// Denotes whether VPC flow logs is enabled as a data source.
	//
	// Status is a required field
	Status *string `locationName:"status" min:"1" type:"string" required:"true" enum:"DataSourceStatus"`
}

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

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

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

// Contains information about the free trial period for a feature.
type FreeTrialFeatureConfigurationResult struct {
	_ struct{} `type:"structure"`

	// The number of the remaining free trial days for the feature.
	FreeTrialDaysRemaining *int64 `locationName:"freeTrialDaysRemaining" type:"integer"`

	// The name of the feature for which the free trial is configured.
	Name *string `locationName:"name" type:"string" enum:"FreeTrialFeatureResult"`
}

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

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

// SetFreeTrialDaysRemaining sets the FreeTrialDaysRemaining field's value.
func (s *FreeTrialFeatureConfigurationResult) SetFreeTrialDaysRemaining(v int64) *FreeTrialFeatureConfigurationResult {
	s.FreeTrialDaysRemaining = &v
	return s
}

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

// Contains information about the location of the remote IP address.
type GeoLocation struct {
	_ struct{} `type:"structure"`

	// The latitude information of the remote IP address.
	Lat *float64 `locationName:"lat" type:"double"`

	// The longitude information of the remote IP address.
	Lon *float64 `locationName:"lon" type:"double"`
}

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

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

// SetLat sets the Lat field's value.
func (s *GeoLocation) SetLat(v float64) *GeoLocation {
	s.Lat = &v
	return s
}

// SetLon sets the Lon field's value.
func (s *GeoLocation) SetLon(v float64) *GeoLocation {
	s.Lon = &v
	return s
}

type GetAdministratorAccountInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique ID of the detector of the GuardDuty member account.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" 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 GetAdministratorAccountInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *GetAdministratorAccountInput) SetDetectorId(v string) *GetAdministratorAccountInput {
	s.DetectorId = &v
	return s
}

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

	// The administrator account details.
	//
	// Administrator is a required field
	Administrator *Administrator `locationName:"administrator" 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 GetAdministratorAccountOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetAdministrator sets the Administrator field's value.
func (s *GetAdministratorAccountOutput) SetAdministrator(v *Administrator) *GetAdministratorAccountOutput {
	s.Administrator = v
	return s
}

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

	// The unique ID of the GuardDuty detector associated to the coverage statistics.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// Represents the criteria used to filter the coverage statistics
	FilterCriteria *CoverageFilterCriteria `locationName:"filterCriteria" type:"structure"`

	// Represents the statistics type used to aggregate the coverage details.
	//
	// StatisticsType is a required field
	StatisticsType []*string `locationName:"statisticsType" type:"list" required:"true" enum:"CoverageStatisticsType"`
}

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

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *GetCoverageStatisticsInput) SetDetectorId(v string) *GetCoverageStatisticsInput {
	s.DetectorId = &v
	return s
}

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

// SetStatisticsType sets the StatisticsType field's value.
func (s *GetCoverageStatisticsInput) SetStatisticsType(v []*string) *GetCoverageStatisticsInput {
	s.StatisticsType = v
	return s
}

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

	// Represents the count aggregated by the statusCode and resourceType.
	CoverageStatistics *CoverageStatistics `locationName:"coverageStatistics" 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 GetCoverageStatisticsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetCoverageStatistics sets the CoverageStatistics field's value.
func (s *GetCoverageStatisticsOutput) SetCoverageStatistics(v *CoverageStatistics) *GetCoverageStatisticsOutput {
	s.CoverageStatistics = v
	return s
}

type GetDetectorInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique ID of the detector that you want to get.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" 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 GetDetectorInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *GetDetectorInput) SetDetectorId(v string) *GetDetectorInput {
	s.DetectorId = &v
	return s
}

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

	// The timestamp of when the detector was created.
	CreatedAt *string `locationName:"createdAt" type:"string"`

	// Describes which data sources are enabled for the detector.
	//
	// Deprecated: This parameter is deprecated, use Features instead
	DataSources *DataSourceConfigurationsResult `locationName:"dataSources" deprecated:"true" type:"structure"`

	// Describes the features that have been enabled for the detector.
	Features []*DetectorFeatureConfigurationResult `locationName:"features" type:"list"`

	// The publishing frequency of the finding.
	FindingPublishingFrequency *string `locationName:"findingPublishingFrequency" type:"string" enum:"FindingPublishingFrequency"`

	// The GuardDuty service role.
	//
	// ServiceRole is a required field
	ServiceRole *string `locationName:"serviceRole" type:"string" required:"true"`

	// The detector status.
	//
	// Status is a required field
	Status *string `locationName:"status" min:"1" type:"string" required:"true" enum:"DetectorStatus"`

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

	// The last-updated timestamp for the detector.
	UpdatedAt *string `locationName:"updatedAt" type:"string"`
}

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

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

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

// SetDataSources sets the DataSources field's value.
func (s *GetDetectorOutput) SetDataSources(v *DataSourceConfigurationsResult) *GetDetectorOutput {
	s.DataSources = v
	return s
}

// SetFeatures sets the Features field's value.
func (s *GetDetectorOutput) SetFeatures(v []*DetectorFeatureConfigurationResult) *GetDetectorOutput {
	s.Features = v
	return s
}

// SetFindingPublishingFrequency sets the FindingPublishingFrequency field's value.
func (s *GetDetectorOutput) SetFindingPublishingFrequency(v string) *GetDetectorOutput {
	s.FindingPublishingFrequency = &v
	return s
}

// SetServiceRole sets the ServiceRole field's value.
func (s *GetDetectorOutput) SetServiceRole(v string) *GetDetectorOutput {
	s.ServiceRole = &v
	return s
}

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

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

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

type GetFilterInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique ID of the detector that the filter is associated with.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// The name of the filter you want to get.
	//
	// FilterName is a required field
	FilterName *string `location:"uri" locationName:"filterName" 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 GetFilterInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *GetFilterInput) SetDetectorId(v string) *GetFilterInput {
	s.DetectorId = &v
	return s
}

// SetFilterName sets the FilterName field's value.
func (s *GetFilterInput) SetFilterName(v string) *GetFilterInput {
	s.FilterName = &v
	return s
}

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

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

	// The description of the filter.
	Description *string `locationName:"description" type:"string"`

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

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

	// Specifies the position of the filter in the list of current filters. Also
	// specifies the order in which this filter is applied to the findings.
	Rank *int64 `locationName:"rank" min:"1" type:"integer"`

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

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

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

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

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

// SetFindingCriteria sets the FindingCriteria field's value.
func (s *GetFilterOutput) SetFindingCriteria(v *FindingCriteria) *GetFilterOutput {
	s.FindingCriteria = v
	return s
}

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

// SetRank sets the Rank field's value.
func (s *GetFilterOutput) SetRank(v int64) *GetFilterOutput {
	s.Rank = &v
	return s
}

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

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

	// The ID of the detector that specifies the GuardDuty service whose findings
	// you want to retrieve.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// The IDs of the findings that you want to retrieve.
	//
	// FindingIds is a required field
	FindingIds []*string `locationName:"findingIds" type:"list" required:"true"`

	// Represents the criteria used for sorting findings.
	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 GetFindingsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *GetFindingsInput) SetDetectorId(v string) *GetFindingsInput {
	s.DetectorId = &v
	return s
}

// SetFindingIds sets the FindingIds field's value.
func (s *GetFindingsInput) SetFindingIds(v []*string) *GetFindingsInput {
	s.FindingIds = v
	return s
}

// SetSortCriteria sets the SortCriteria field's value.
func (s *GetFindingsInput) SetSortCriteria(v *SortCriteria) *GetFindingsInput {
	s.SortCriteria = v
	return s
}

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

	// A list of findings.
	//
	// Findings is a required field
	Findings []*Finding `locationName:"findings" 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 GetFindingsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetFindings sets the Findings field's value.
func (s *GetFindingsOutput) SetFindings(v []*Finding) *GetFindingsOutput {
	s.Findings = v
	return s
}

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

	// The ID of the detector that specifies the GuardDuty service whose findings'
	// statistics you want to retrieve.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// Represents the criteria that is used for querying findings.
	FindingCriteria *FindingCriteria `locationName:"findingCriteria" type:"structure"`

	// The types of finding statistics to retrieve.
	//
	// FindingStatisticTypes is a required field
	FindingStatisticTypes []*string `locationName:"findingStatisticTypes" type:"list" required:"true" enum:"FindingStatisticType"`
}

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

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *GetFindingsStatisticsInput) SetDetectorId(v string) *GetFindingsStatisticsInput {
	s.DetectorId = &v
	return s
}

// SetFindingCriteria sets the FindingCriteria field's value.
func (s *GetFindingsStatisticsInput) SetFindingCriteria(v *FindingCriteria) *GetFindingsStatisticsInput {
	s.FindingCriteria = v
	return s
}

// SetFindingStatisticTypes sets the FindingStatisticTypes field's value.
func (s *GetFindingsStatisticsInput) SetFindingStatisticTypes(v []*string) *GetFindingsStatisticsInput {
	s.FindingStatisticTypes = v
	return s
}

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

	// The finding statistics object.
	//
	// FindingStatistics is a required field
	FindingStatistics *FindingStatistics `locationName:"findingStatistics" 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 GetFindingsStatisticsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetFindingStatistics sets the FindingStatistics field's value.
func (s *GetFindingsStatisticsOutput) SetFindingStatistics(v *FindingStatistics) *GetFindingsStatisticsOutput {
	s.FindingStatistics = v
	return s
}

type GetIPSetInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique ID of the detector that the IPSet is associated with.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// The unique ID of the IPSet to retrieve.
	//
	// IpSetId is a required field
	IpSetId *string `location:"uri" locationName:"ipSetId" 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 GetIPSetInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *GetIPSetInput) SetDetectorId(v string) *GetIPSetInput {
	s.DetectorId = &v
	return s
}

// SetIpSetId sets the IpSetId field's value.
func (s *GetIPSetInput) SetIpSetId(v string) *GetIPSetInput {
	s.IpSetId = &v
	return s
}

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

	// The format of the file that contains the IPSet.
	//
	// Format is a required field
	Format *string `locationName:"format" min:"1" type:"string" required:"true" enum:"IpSetFormat"`

	// The URI of the file that contains the IPSet.
	//
	// Location is a required field
	Location *string `locationName:"location" min:"1" type:"string" required:"true"`

	// The user-friendly name for the IPSet.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true"`

	// The status of IPSet file that was uploaded.
	//
	// Status is a required field
	Status *string `locationName:"status" min:"1" type:"string" required:"true" enum:"IpSetStatus"`

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

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

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

// SetFormat sets the Format field's value.
func (s *GetIPSetOutput) SetFormat(v string) *GetIPSetOutput {
	s.Format = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *GetIPSetOutput) SetLocation(v string) *GetIPSetOutput {
	s.Location = &v
	return s
}

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

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

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

type GetInvitationsCountInput struct {
	_ struct{} `type:"structure" nopayload:"true"`
}

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

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

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

	// The number of received invitations.
	InvitationsCount *int64 `locationName:"invitationsCount" type:"integer"`
}

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

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

// SetInvitationsCount sets the InvitationsCount field's value.
func (s *GetInvitationsCountOutput) SetInvitationsCount(v int64) *GetInvitationsCountOutput {
	s.InvitationsCount = &v
	return s
}

type GetMalwareScanSettingsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique ID of the detector that the scan setting is associated with.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" 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 GetMalwareScanSettingsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *GetMalwareScanSettingsInput) SetDetectorId(v string) *GetMalwareScanSettingsInput {
	s.DetectorId = &v
	return s
}

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

	// An enum value representing possible snapshot preservation settings.
	EbsSnapshotPreservation *string `locationName:"ebsSnapshotPreservation" type:"string" enum:"EbsSnapshotPreservation"`

	// Represents the criteria to be used in the filter for scanning resources.
	ScanResourceCriteria *ScanResourceCriteria `locationName:"scanResourceCriteria" 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 GetMalwareScanSettingsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetEbsSnapshotPreservation sets the EbsSnapshotPreservation field's value.
func (s *GetMalwareScanSettingsOutput) SetEbsSnapshotPreservation(v string) *GetMalwareScanSettingsOutput {
	s.EbsSnapshotPreservation = &v
	return s
}

// SetScanResourceCriteria sets the ScanResourceCriteria field's value.
func (s *GetMalwareScanSettingsOutput) SetScanResourceCriteria(v *ScanResourceCriteria) *GetMalwareScanSettingsOutput {
	s.ScanResourceCriteria = v
	return s
}

// Deprecated: This input is deprecated, use GetAdministratorAccountRequest instead
type GetMasterAccountInput struct {
	_ struct{} `deprecated:"true" type:"structure" nopayload:"true"`

	// The unique ID of the detector of the GuardDuty member account.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" 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 GetMasterAccountInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *GetMasterAccountInput) SetDetectorId(v string) *GetMasterAccountInput {
	s.DetectorId = &v
	return s
}

// Deprecated: This output is deprecated, use GetAdministratorAccountResponse instead
type GetMasterAccountOutput struct {
	_ struct{} `deprecated:"true" type:"structure"`

	// The administrator account details.
	//
	// Master is a required field
	Master *Master `locationName:"master" 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 GetMasterAccountOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetMaster sets the Master field's value.
func (s *GetMasterAccountOutput) SetMaster(v *Master) *GetMasterAccountOutput {
	s.Master = v
	return s
}

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

	// The account ID of the member account.
	//
	// AccountIds is a required field
	AccountIds []*string `locationName:"accountIds" min:"1" type:"list" required:"true"`

	// The detector ID for the administrator account.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" 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 GetMemberDetectorsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *GetMemberDetectorsInput) SetDetectorId(v string) *GetMemberDetectorsInput {
	s.DetectorId = &v
	return s
}

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

	// An object that describes which data sources are enabled for a member account.
	//
	// MemberDataSourceConfigurations is a required field
	MemberDataSourceConfigurations []*MemberDataSourceConfiguration `locationName:"members" min:"1" type:"list" required:"true"`

	// A list of member account IDs that were unable to be processed along with
	// an explanation for why they were not processed.
	//
	// UnprocessedAccounts is a required field
	UnprocessedAccounts []*UnprocessedAccount `locationName:"unprocessedAccounts" 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 GetMemberDetectorsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetMemberDataSourceConfigurations sets the MemberDataSourceConfigurations field's value.
func (s *GetMemberDetectorsOutput) SetMemberDataSourceConfigurations(v []*MemberDataSourceConfiguration) *GetMemberDetectorsOutput {
	s.MemberDataSourceConfigurations = v
	return s
}

// SetUnprocessedAccounts sets the UnprocessedAccounts field's value.
func (s *GetMemberDetectorsOutput) SetUnprocessedAccounts(v []*UnprocessedAccount) *GetMemberDetectorsOutput {
	s.UnprocessedAccounts = v
	return s
}

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

	// A list of account IDs of the GuardDuty member accounts that you want to describe.
	//
	// AccountIds is a required field
	AccountIds []*string `locationName:"accountIds" min:"1" type:"list" required:"true"`

	// The unique ID of the detector of the GuardDuty account whose members you
	// want to retrieve.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" 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 GetMembersInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *GetMembersInput) SetDetectorId(v string) *GetMembersInput {
	s.DetectorId = &v
	return s
}

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

	// A list of members.
	//
	// Members is a required field
	Members []*Member `locationName:"members" type:"list" required:"true"`

	// A list of objects that contain the unprocessed account and a result string
	// that explains why it was unprocessed.
	//
	// UnprocessedAccounts is a required field
	UnprocessedAccounts []*UnprocessedAccount `locationName:"unprocessedAccounts" 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 GetMembersOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetMembers sets the Members field's value.
func (s *GetMembersOutput) SetMembers(v []*Member) *GetMembersOutput {
	s.Members = v
	return s
}

// SetUnprocessedAccounts sets the UnprocessedAccounts field's value.
func (s *GetMembersOutput) SetUnprocessedAccounts(v []*UnprocessedAccount) *GetMembersOutput {
	s.UnprocessedAccounts = v
	return s
}

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

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

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

	// Information about the statistics report for your organization.
	OrganizationDetails *OrganizationDetails `locationName:"organizationDetails" 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 GetOrganizationStatisticsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetOrganizationDetails sets the OrganizationDetails field's value.
func (s *GetOrganizationStatisticsOutput) SetOrganizationDetails(v *OrganizationDetails) *GetOrganizationStatisticsOutput {
	s.OrganizationDetails = v
	return s
}

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

	// A list of account identifiers of the GuardDuty member account.
	AccountIds []*string `locationName:"accountIds" min:"1" type:"list"`

	// The unique ID of the detector of the GuardDuty member account.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" 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 GetRemainingFreeTrialDaysInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *GetRemainingFreeTrialDaysInput) SetDetectorId(v string) *GetRemainingFreeTrialDaysInput {
	s.DetectorId = &v
	return s
}

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

	// The member accounts which were included in a request and were processed successfully.
	Accounts []*AccountFreeTrialInfo `locationName:"accounts" type:"list"`

	// The member account that was included in a request but for which the request
	// could not be processed.
	UnprocessedAccounts []*UnprocessedAccount `locationName:"unprocessedAccounts" 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 GetRemainingFreeTrialDaysOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetUnprocessedAccounts sets the UnprocessedAccounts field's value.
func (s *GetRemainingFreeTrialDaysOutput) SetUnprocessedAccounts(v []*UnprocessedAccount) *GetRemainingFreeTrialDaysOutput {
	s.UnprocessedAccounts = v
	return s
}

type GetThreatIntelSetInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique ID of the detector that the threatIntelSet is associated with.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// The unique ID of the threatIntelSet that you want to get.
	//
	// ThreatIntelSetId is a required field
	ThreatIntelSetId *string `location:"uri" locationName:"threatIntelSetId" 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 GetThreatIntelSetInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *GetThreatIntelSetInput) SetDetectorId(v string) *GetThreatIntelSetInput {
	s.DetectorId = &v
	return s
}

// SetThreatIntelSetId sets the ThreatIntelSetId field's value.
func (s *GetThreatIntelSetInput) SetThreatIntelSetId(v string) *GetThreatIntelSetInput {
	s.ThreatIntelSetId = &v
	return s
}

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

	// The format of the threatIntelSet.
	//
	// Format is a required field
	Format *string `locationName:"format" min:"1" type:"string" required:"true" enum:"ThreatIntelSetFormat"`

	// The URI of the file that contains the ThreatIntelSet.
	//
	// Location is a required field
	Location *string `locationName:"location" min:"1" type:"string" required:"true"`

	// A user-friendly ThreatIntelSet name displayed in all findings that are generated
	// by activity that involves IP addresses included in this ThreatIntelSet.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true"`

	// The status of threatIntelSet file uploaded.
	//
	// Status is a required field
	Status *string `locationName:"status" min:"1" type:"string" required:"true" enum:"ThreatIntelSetStatus"`

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

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

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

// SetFormat sets the Format field's value.
func (s *GetThreatIntelSetOutput) SetFormat(v string) *GetThreatIntelSetOutput {
	s.Format = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *GetThreatIntelSetOutput) SetLocation(v string) *GetThreatIntelSetOutput {
	s.Location = &v
	return s
}

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

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

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

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

	// The ID of the detector that specifies the GuardDuty service whose usage statistics
	// you want to retrieve.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// 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 currency unit you would like to view your usage statistics in. Current
	// valid values are USD.
	Unit *string `locationName:"unit" type:"string"`

	// Represents the criteria used for querying usage.
	//
	// UsageCriteria is a required field
	UsageCriteria *UsageCriteria `locationName:"usageCriteria" type:"structure" required:"true"`

	// The type of usage statistics to retrieve.
	//
	// UsageStatisticType is a required field
	UsageStatisticType *string `locationName:"usageStatisticsType" type:"string" required:"true" enum:"UsageStatisticType"`
}

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

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *GetUsageStatisticsInput) SetDetectorId(v string) *GetUsageStatisticsInput {
	s.DetectorId = &v
	return s
}

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

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

// SetUnit sets the Unit field's value.
func (s *GetUsageStatisticsInput) SetUnit(v string) *GetUsageStatisticsInput {
	s.Unit = &v
	return s
}

// SetUsageCriteria sets the UsageCriteria field's value.
func (s *GetUsageStatisticsInput) SetUsageCriteria(v *UsageCriteria) *GetUsageStatisticsInput {
	s.UsageCriteria = v
	return s
}

// SetUsageStatisticType sets the UsageStatisticType field's value.
func (s *GetUsageStatisticsInput) SetUsageStatisticType(v string) *GetUsageStatisticsInput {
	s.UsageStatisticType = &v
	return s
}

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

	// The pagination parameter to be used on the next list operation to retrieve
	// more items.
	NextToken *string `locationName:"nextToken" type:"string"`

	// The usage statistics object. If a UsageStatisticType was provided, the objects
	// representing other types will be null.
	UsageStatistics *UsageStatistics `locationName:"usageStatistics" 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 GetUsageStatisticsOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetUsageStatistics sets the UsageStatistics field's value.
func (s *GetUsageStatisticsOutput) SetUsageStatistics(v *UsageStatistics) *GetUsageStatisticsOutput {
	s.UsageStatistics = v
	return s
}

// Contains details of the highest severity threat detected during scan and
// number of infected files.
type HighestSeverityThreatDetails struct {
	_ struct{} `type:"structure"`

	// Total number of infected files with the highest severity threat detected.
	Count *int64 `locationName:"count" type:"integer"`

	// Severity level of the highest severity threat detected.
	Severity *string `locationName:"severity" type:"string"`

	// Threat name of the highest severity threat detected as part of the malware
	// scan.
	ThreatName *string `locationName:"threatName" type:"string"`
}

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

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

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

// SetSeverity sets the Severity field's value.
func (s *HighestSeverityThreatDetails) SetSeverity(v string) *HighestSeverityThreatDetails {
	s.Severity = &v
	return s
}

// SetThreatName sets the ThreatName field's value.
func (s *HighestSeverityThreatDetails) SetThreatName(v string) *HighestSeverityThreatDetails {
	s.ThreatName = &v
	return s
}

// Represents a pre-existing file or directory on the host machine that the
// volume maps to.
type HostPath struct {
	_ struct{} `type:"structure"`

	// Path of the file or directory on the host that the volume maps to.
	Path *string `locationName:"path" type:"string"`
}

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

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

// SetPath sets the Path field's value.
func (s *HostPath) SetPath(v string) *HostPath {
	s.Path = &v
	return s
}

// Contains information about the EC2 instance profile.
type IamInstanceProfile struct {
	_ struct{} `type:"structure"`

	// The profile ARN of the EC2 instance.
	Arn *string `locationName:"arn" type:"string"`

	// The profile ID of the EC2 instance.
	Id *string `locationName:"id" type:"string"`
}

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

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

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

// SetId sets the Id field's value.
func (s *IamInstanceProfile) SetId(v string) *IamInstanceProfile {
	s.Id = &v
	return s
}

// Contains information about the impersonated user.
type ImpersonatedUser struct {
	_ struct{} `type:"structure"`

	// The group to which the user name belongs.
	Groups []*string `locationName:"groups" type:"list"`

	// Information about the username that was being impersonated.
	Username *string `locationName:"username" type:"string"`
}

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

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

// SetGroups sets the Groups field's value.
func (s *ImpersonatedUser) SetGroups(v []*string) *ImpersonatedUser {
	s.Groups = v
	return s
}

// SetUsername sets the Username field's value.
func (s *ImpersonatedUser) SetUsername(v string) *ImpersonatedUser {
	s.Username = &v
	return s
}

// Contains information about the details of an instance.
type InstanceDetails struct {
	_ struct{} `type:"structure"`

	// The Availability Zone of the EC2 instance.
	AvailabilityZone *string `locationName:"availabilityZone" type:"string"`

	// The profile information of the EC2 instance.
	IamInstanceProfile *IamInstanceProfile `locationName:"iamInstanceProfile" type:"structure"`

	// The image description of the EC2 instance.
	ImageDescription *string `locationName:"imageDescription" type:"string"`

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

	// The ID of the EC2 instance.
	InstanceId *string `locationName:"instanceId" type:"string"`

	// The state of the EC2 instance.
	InstanceState *string `locationName:"instanceState" type:"string"`

	// The type of the EC2 instance.
	InstanceType *string `locationName:"instanceType" type:"string"`

	// The launch time of the EC2 instance.
	LaunchTime *string `locationName:"launchTime" type:"string"`

	// The elastic network interface information of the EC2 instance.
	NetworkInterfaces []*NetworkInterface `locationName:"networkInterfaces" type:"list"`

	// The Amazon Resource Name (ARN) of the Amazon Web Services Outpost. Only applicable
	// to Amazon Web Services Outposts instances.
	OutpostArn *string `locationName:"outpostArn" type:"string"`

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

	// The product code of the EC2 instance.
	ProductCodes []*ProductCode `locationName:"productCodes" type:"list"`

	// The tags of the EC2 instance.
	Tags []*Tag `locationName:"tags" type:"list"`
}

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

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

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

// SetIamInstanceProfile sets the IamInstanceProfile field's value.
func (s *InstanceDetails) SetIamInstanceProfile(v *IamInstanceProfile) *InstanceDetails {
	s.IamInstanceProfile = v
	return s
}

// SetImageDescription sets the ImageDescription field's value.
func (s *InstanceDetails) SetImageDescription(v string) *InstanceDetails {
	s.ImageDescription = &v
	return s
}

// SetImageId sets the ImageId field's value.
func (s *InstanceDetails) SetImageId(v string) *InstanceDetails {
	s.ImageId = &v
	return s
}

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

// SetInstanceState sets the InstanceState field's value.
func (s *InstanceDetails) SetInstanceState(v string) *InstanceDetails {
	s.InstanceState = &v
	return s
}

// SetInstanceType sets the InstanceType field's value.
func (s *InstanceDetails) SetInstanceType(v string) *InstanceDetails {
	s.InstanceType = &v
	return s
}

// SetLaunchTime sets the LaunchTime field's value.
func (s *InstanceDetails) SetLaunchTime(v string) *InstanceDetails {
	s.LaunchTime = &v
	return s
}

// SetNetworkInterfaces sets the NetworkInterfaces field's value.
func (s *InstanceDetails) SetNetworkInterfaces(v []*NetworkInterface) *InstanceDetails {
	s.NetworkInterfaces = v
	return s
}

// SetOutpostArn sets the OutpostArn field's value.
func (s *InstanceDetails) SetOutpostArn(v string) *InstanceDetails {
	s.OutpostArn = &v
	return s
}

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

// SetProductCodes sets the ProductCodes field's value.
func (s *InstanceDetails) SetProductCodes(v []*ProductCode) *InstanceDetails {
	s.ProductCodes = v
	return s
}

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

// An internal server error exception object.
type InternalServerErrorException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The error message.
	Message_ *string `locationName:"message" type:"string"`

	// The error type.
	Type *string `locationName:"__type" type:"string"`
}

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

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

func newErrorInternalServerErrorException(v protocol.ResponseMetadata) error {
	return &InternalServerErrorException{
		RespMetadata: v,
	}
}

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

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

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

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

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

// Contains information about the invitation to become a member account.
type Invitation struct {
	_ struct{} `type:"structure"`

	// The ID of the account that the invitation was sent from.
	AccountId *string `locationName:"accountId" min:"12" type:"string"`

	// The ID of the invitation. This value is used to validate the inviter account
	// to the member account.
	InvitationId *string `locationName:"invitationId" type:"string"`

	// The timestamp when the invitation was sent.
	InvitedAt *string `locationName:"invitedAt" type:"string"`

	// The status of the relationship between the inviter and invitee accounts.
	RelationshipStatus *string `locationName:"relationshipStatus" type:"string"`
}

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

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

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

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

// SetInvitedAt sets the InvitedAt field's value.
func (s *Invitation) SetInvitedAt(v string) *Invitation {
	s.InvitedAt = &v
	return s
}

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

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

	// A list of account IDs of the accounts that you want to invite to GuardDuty
	// as members.
	//
	// AccountIds is a required field
	AccountIds []*string `locationName:"accountIds" min:"1" type:"list" required:"true"`

	// The unique ID of the detector of the GuardDuty account that you want to invite
	// members with.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// A Boolean value that specifies whether you want to disable email notification
	// to the accounts that you are inviting to GuardDuty as members.
	DisableEmailNotification *bool `locationName:"disableEmailNotification" type:"boolean"`

	// The invitation message that you want to send to the accounts that you're
	// inviting to GuardDuty as members.
	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 InviteMembersInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *InviteMembersInput) SetDetectorId(v string) *InviteMembersInput {
	s.DetectorId = &v
	return s
}

// SetDisableEmailNotification sets the DisableEmailNotification field's value.
func (s *InviteMembersInput) SetDisableEmailNotification(v bool) *InviteMembersInput {
	s.DisableEmailNotification = &v
	return s
}

// SetMessage sets the Message field's value.
func (s *InviteMembersInput) SetMessage(v string) *InviteMembersInput {
	s.Message = &v
	return s
}

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

	// A list of objects that contain the unprocessed account and a result string
	// that explains why it was unprocessed.
	//
	// UnprocessedAccounts is a required field
	UnprocessedAccounts []*UnprocessedAccount `locationName:"unprocessedAccounts" 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 InviteMembersOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetUnprocessedAccounts sets the UnprocessedAccounts field's value.
func (s *InviteMembersOutput) SetUnprocessedAccounts(v []*UnprocessedAccount) *InviteMembersOutput {
	s.UnprocessedAccounts = v
	return s
}

// Information about the Kubernetes API call action described in this finding.
type KubernetesApiCallAction struct {
	_ struct{} `type:"structure"`

	// The name of the namespace where the Kubernetes API call action takes place.
	Namespace *string `locationName:"namespace" type:"string"`

	// Parameters related to the Kubernetes API call action.
	Parameters *string `locationName:"parameters" type:"string"`

	// Contains information about the remote IP address of the connection.
	RemoteIpDetails *RemoteIpDetails `locationName:"remoteIpDetails" type:"structure"`

	// The Kubernetes API request URI.
	RequestUri *string `locationName:"requestUri" type:"string"`

	// The resource component in the Kubernetes API call action.
	Resource *string `locationName:"resource" type:"string"`

	// The name of the resource in the Kubernetes API call action.
	ResourceName *string `locationName:"resourceName" type:"string"`

	// The IP of the Kubernetes API caller and the IPs of any proxies or load balancers
	// between the caller and the API endpoint.
	SourceIps []*string `locationName:"sourceIps" type:"list"`

	// The resulting HTTP response code of the Kubernetes API call action.
	StatusCode *int64 `locationName:"statusCode" type:"integer"`

	// The name of the sub-resource in the Kubernetes API call action.
	Subresource *string `locationName:"subresource" type:"string"`

	// The user agent of the caller of the Kubernetes API.
	UserAgent *string `locationName:"userAgent" type:"string"`

	// The Kubernetes API request HTTP verb.
	Verb *string `locationName:"verb" type:"string"`
}

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

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

// SetNamespace sets the Namespace field's value.
func (s *KubernetesApiCallAction) SetNamespace(v string) *KubernetesApiCallAction {
	s.Namespace = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *KubernetesApiCallAction) SetParameters(v string) *KubernetesApiCallAction {
	s.Parameters = &v
	return s
}

// SetRemoteIpDetails sets the RemoteIpDetails field's value.
func (s *KubernetesApiCallAction) SetRemoteIpDetails(v *RemoteIpDetails) *KubernetesApiCallAction {
	s.RemoteIpDetails = v
	return s
}

// SetRequestUri sets the RequestUri field's value.
func (s *KubernetesApiCallAction) SetRequestUri(v string) *KubernetesApiCallAction {
	s.RequestUri = &v
	return s
}

// SetResource sets the Resource field's value.
func (s *KubernetesApiCallAction) SetResource(v string) *KubernetesApiCallAction {
	s.Resource = &v
	return s
}

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

// SetSourceIps sets the SourceIps field's value.
func (s *KubernetesApiCallAction) SetSourceIps(v []*string) *KubernetesApiCallAction {
	s.SourceIps = v
	return s
}

// SetStatusCode sets the StatusCode field's value.
func (s *KubernetesApiCallAction) SetStatusCode(v int64) *KubernetesApiCallAction {
	s.StatusCode = &v
	return s
}

// SetSubresource sets the Subresource field's value.
func (s *KubernetesApiCallAction) SetSubresource(v string) *KubernetesApiCallAction {
	s.Subresource = &v
	return s
}

// SetUserAgent sets the UserAgent field's value.
func (s *KubernetesApiCallAction) SetUserAgent(v string) *KubernetesApiCallAction {
	s.UserAgent = &v
	return s
}

// SetVerb sets the Verb field's value.
func (s *KubernetesApiCallAction) SetVerb(v string) *KubernetesApiCallAction {
	s.Verb = &v
	return s
}

// Describes whether Kubernetes audit logs are enabled as a data source.
type KubernetesAuditLogsConfiguration struct {
	_ struct{} `type:"structure"`

	// The status of Kubernetes audit logs as a data source.
	//
	// Enable is a required field
	Enable *bool `locationName:"enable" 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 KubernetesAuditLogsConfiguration) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetEnable sets the Enable field's value.
func (s *KubernetesAuditLogsConfiguration) SetEnable(v bool) *KubernetesAuditLogsConfiguration {
	s.Enable = &v
	return s
}

// Describes whether Kubernetes audit logs are enabled as a data source.
type KubernetesAuditLogsConfigurationResult struct {
	_ struct{} `type:"structure"`

	// A value that describes whether Kubernetes audit logs are enabled as a data
	// source.
	//
	// Status is a required field
	Status *string `locationName:"status" min:"1" type:"string" required:"true" enum:"DataSourceStatus"`
}

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

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

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

// Describes whether any Kubernetes data sources are enabled.
type KubernetesConfiguration struct {
	_ struct{} `type:"structure"`

	// The status of Kubernetes audit logs as a data source.
	//
	// AuditLogs is a required field
	AuditLogs *KubernetesAuditLogsConfiguration `locationName:"auditLogs" 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 KubernetesConfiguration) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAuditLogs sets the AuditLogs field's value.
func (s *KubernetesConfiguration) SetAuditLogs(v *KubernetesAuditLogsConfiguration) *KubernetesConfiguration {
	s.AuditLogs = v
	return s
}

// Describes whether any Kubernetes logs will be enabled as a data source.
type KubernetesConfigurationResult struct {
	_ struct{} `type:"structure"`

	// Describes whether Kubernetes audit logs are enabled as a data source.
	//
	// AuditLogs is a required field
	AuditLogs *KubernetesAuditLogsConfigurationResult `locationName:"auditLogs" 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 KubernetesConfigurationResult) String() string {
	return awsutil.Prettify(s)
}

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

// SetAuditLogs sets the AuditLogs field's value.
func (s *KubernetesConfigurationResult) SetAuditLogs(v *KubernetesAuditLogsConfigurationResult) *KubernetesConfigurationResult {
	s.AuditLogs = v
	return s
}

// Provides details about the Kubernetes resources when it is enabled as a data
// source.
type KubernetesDataSourceFreeTrial struct {
	_ struct{} `type:"structure"`

	// Describes whether Kubernetes audit logs are enabled as a data source.
	AuditLogs *DataSourceFreeTrial `locationName:"auditLogs" 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 KubernetesDataSourceFreeTrial) String() string {
	return awsutil.Prettify(s)
}

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

// SetAuditLogs sets the AuditLogs field's value.
func (s *KubernetesDataSourceFreeTrial) SetAuditLogs(v *DataSourceFreeTrial) *KubernetesDataSourceFreeTrial {
	s.AuditLogs = v
	return s
}

// Details about Kubernetes resources such as a Kubernetes user or workload
// resource involved in a Kubernetes finding.
type KubernetesDetails struct {
	_ struct{} `type:"structure"`

	// Details about the Kubernetes user involved in a Kubernetes finding.
	KubernetesUserDetails *KubernetesUserDetails `locationName:"kubernetesUserDetails" type:"structure"`

	// Details about the Kubernetes workload involved in a Kubernetes finding.
	KubernetesWorkloadDetails *KubernetesWorkloadDetails `locationName:"kubernetesWorkloadDetails" 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 KubernetesDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetKubernetesUserDetails sets the KubernetesUserDetails field's value.
func (s *KubernetesDetails) SetKubernetesUserDetails(v *KubernetesUserDetails) *KubernetesDetails {
	s.KubernetesUserDetails = v
	return s
}

// SetKubernetesWorkloadDetails sets the KubernetesWorkloadDetails field's value.
func (s *KubernetesDetails) SetKubernetesWorkloadDetails(v *KubernetesWorkloadDetails) *KubernetesDetails {
	s.KubernetesWorkloadDetails = v
	return s
}

// Information about the Kubernetes API for which you check if you have permission
// to call.
type KubernetesPermissionCheckedDetails struct {
	_ struct{} `type:"structure"`

	// Information whether the user has the permission to call the Kubernetes API.
	Allowed *bool `locationName:"allowed" type:"boolean"`

	// The namespace where the Kubernetes API action will take place.
	Namespace *string `locationName:"namespace" type:"string"`

	// The Kubernetes resource with which your Kubernetes API call will interact.
	Resource *string `locationName:"resource" type:"string"`

	// The verb component of the Kubernetes API call. For example, when you check
	// whether or not you have the permission to call the CreatePod API, the verb
	// component will be Create.
	Verb *string `locationName:"verb" type:"string"`
}

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

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

// SetAllowed sets the Allowed field's value.
func (s *KubernetesPermissionCheckedDetails) SetAllowed(v bool) *KubernetesPermissionCheckedDetails {
	s.Allowed = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *KubernetesPermissionCheckedDetails) SetNamespace(v string) *KubernetesPermissionCheckedDetails {
	s.Namespace = &v
	return s
}

// SetResource sets the Resource field's value.
func (s *KubernetesPermissionCheckedDetails) SetResource(v string) *KubernetesPermissionCheckedDetails {
	s.Resource = &v
	return s
}

// SetVerb sets the Verb field's value.
func (s *KubernetesPermissionCheckedDetails) SetVerb(v string) *KubernetesPermissionCheckedDetails {
	s.Verb = &v
	return s
}

// Contains information about the role binding that grants the permission defined
// in a Kubernetes role.
type KubernetesRoleBindingDetails struct {
	_ struct{} `type:"structure"`

	// The kind of the role. For role binding, this value will be RoleBinding.
	Kind *string `locationName:"kind" type:"string"`

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

	// The type of the role being referenced. This could be either Role or ClusterRole.
	RoleRefKind *string `locationName:"roleRefKind" type:"string"`

	// The name of the role being referenced. This must match the name of the Role
	// or ClusterRole that you want to bind to.
	RoleRefName *string `locationName:"roleRefName" type:"string"`

	// The unique identifier of the role binding.
	Uid *string `locationName:"uid" type:"string"`
}

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

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

// SetKind sets the Kind field's value.
func (s *KubernetesRoleBindingDetails) SetKind(v string) *KubernetesRoleBindingDetails {
	s.Kind = &v
	return s
}

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

// SetRoleRefKind sets the RoleRefKind field's value.
func (s *KubernetesRoleBindingDetails) SetRoleRefKind(v string) *KubernetesRoleBindingDetails {
	s.RoleRefKind = &v
	return s
}

// SetRoleRefName sets the RoleRefName field's value.
func (s *KubernetesRoleBindingDetails) SetRoleRefName(v string) *KubernetesRoleBindingDetails {
	s.RoleRefName = &v
	return s
}

// SetUid sets the Uid field's value.
func (s *KubernetesRoleBindingDetails) SetUid(v string) *KubernetesRoleBindingDetails {
	s.Uid = &v
	return s
}

// Information about the Kubernetes role name and role type.
type KubernetesRoleDetails struct {
	_ struct{} `type:"structure"`

	// The kind of role. For this API, the value of kind will be Role.
	Kind *string `locationName:"kind" type:"string"`

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

	// The unique identifier of the Kubernetes role name.
	Uid *string `locationName:"uid" type:"string"`
}

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

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

// SetKind sets the Kind field's value.
func (s *KubernetesRoleDetails) SetKind(v string) *KubernetesRoleDetails {
	s.Kind = &v
	return s
}

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

// SetUid sets the Uid field's value.
func (s *KubernetesRoleDetails) SetUid(v string) *KubernetesRoleDetails {
	s.Uid = &v
	return s
}

// Details about the Kubernetes user involved in a Kubernetes finding.
type KubernetesUserDetails struct {
	_ struct{} `type:"structure"`

	// The groups that include the user who called the Kubernetes API.
	Groups []*string `locationName:"groups" type:"list"`

	// Information about the impersonated user.
	ImpersonatedUser *ImpersonatedUser `locationName:"impersonatedUser" type:"structure"`

	// Entity that assumes the IAM role when Kubernetes RBAC permissions are assigned
	// to that role.
	SessionName []*string `locationName:"sessionName" type:"list"`

	// The user ID of the user who called the Kubernetes API.
	Uid *string `locationName:"uid" type:"string"`

	// The username of the user who called the Kubernetes API.
	Username *string `locationName:"username" type:"string"`
}

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

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

// SetGroups sets the Groups field's value.
func (s *KubernetesUserDetails) SetGroups(v []*string) *KubernetesUserDetails {
	s.Groups = v
	return s
}

// SetImpersonatedUser sets the ImpersonatedUser field's value.
func (s *KubernetesUserDetails) SetImpersonatedUser(v *ImpersonatedUser) *KubernetesUserDetails {
	s.ImpersonatedUser = v
	return s
}

// SetSessionName sets the SessionName field's value.
func (s *KubernetesUserDetails) SetSessionName(v []*string) *KubernetesUserDetails {
	s.SessionName = v
	return s
}

// SetUid sets the Uid field's value.
func (s *KubernetesUserDetails) SetUid(v string) *KubernetesUserDetails {
	s.Uid = &v
	return s
}

// SetUsername sets the Username field's value.
func (s *KubernetesUserDetails) SetUsername(v string) *KubernetesUserDetails {
	s.Username = &v
	return s
}

// Details about the Kubernetes workload involved in a Kubernetes finding.
type KubernetesWorkloadDetails struct {
	_ struct{} `type:"structure"`

	// Containers running as part of the Kubernetes workload.
	Containers []*Container `locationName:"containers" type:"list"`

	// Whether the host IPC flag is enabled for the pods in the workload.
	HostIPC *bool `locationName:"hostIPC" type:"boolean"`

	// Whether the hostNetwork flag is enabled for the pods included in the workload.
	HostNetwork *bool `locationName:"hostNetwork" type:"boolean"`

	// Whether the host PID flag is enabled for the pods in the workload.
	HostPID *bool `locationName:"hostPID" type:"boolean"`

	// Kubernetes workload name.
	Name *string `locationName:"name" type:"string"`

	// Kubernetes namespace that the workload is part of.
	Namespace *string `locationName:"namespace" type:"string"`

	// The service account name that is associated with a Kubernetes workload.
	ServiceAccountName *string `locationName:"serviceAccountName" type:"string"`

	// Kubernetes workload type (e.g. Pod, Deployment, etc.).
	Type *string `locationName:"type" type:"string"`

	// Kubernetes workload ID.
	Uid *string `locationName:"uid" type:"string"`

	// Volumes used by the Kubernetes workload.
	Volumes []*Volume `locationName:"volumes" 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 KubernetesWorkloadDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetContainers sets the Containers field's value.
func (s *KubernetesWorkloadDetails) SetContainers(v []*Container) *KubernetesWorkloadDetails {
	s.Containers = v
	return s
}

// SetHostIPC sets the HostIPC field's value.
func (s *KubernetesWorkloadDetails) SetHostIPC(v bool) *KubernetesWorkloadDetails {
	s.HostIPC = &v
	return s
}

// SetHostNetwork sets the HostNetwork field's value.
func (s *KubernetesWorkloadDetails) SetHostNetwork(v bool) *KubernetesWorkloadDetails {
	s.HostNetwork = &v
	return s
}

// SetHostPID sets the HostPID field's value.
func (s *KubernetesWorkloadDetails) SetHostPID(v bool) *KubernetesWorkloadDetails {
	s.HostPID = &v
	return s
}

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

// SetNamespace sets the Namespace field's value.
func (s *KubernetesWorkloadDetails) SetNamespace(v string) *KubernetesWorkloadDetails {
	s.Namespace = &v
	return s
}

// SetServiceAccountName sets the ServiceAccountName field's value.
func (s *KubernetesWorkloadDetails) SetServiceAccountName(v string) *KubernetesWorkloadDetails {
	s.ServiceAccountName = &v
	return s
}

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

// SetUid sets the Uid field's value.
func (s *KubernetesWorkloadDetails) SetUid(v string) *KubernetesWorkloadDetails {
	s.Uid = &v
	return s
}

// SetVolumes sets the Volumes field's value.
func (s *KubernetesWorkloadDetails) SetVolumes(v []*Volume) *KubernetesWorkloadDetails {
	s.Volumes = v
	return s
}

// Information about the Lambda function involved in the finding.
type LambdaDetails struct {
	_ struct{} `type:"structure"`

	// Description of the Lambda function.
	Description *string `locationName:"description" type:"string"`

	// Amazon Resource Name (ARN) of the Lambda function.
	FunctionArn *string `locationName:"functionArn" type:"string"`

	// Name of the Lambda function.
	FunctionName *string `locationName:"functionName" type:"string"`

	// The version of the Lambda function.
	FunctionVersion *string `locationName:"functionVersion" type:"string"`

	// The timestamp when the Lambda function was last modified. This field is in
	// the UTC date string format (2023-03-22T19:37:20.168Z).
	LastModifiedAt *time.Time `locationName:"lastModifiedAt" type:"timestamp"`

	// The revision ID of the Lambda function version.
	RevisionId *string `locationName:"revisionId" type:"string"`

	// The execution role of the Lambda function.
	Role *string `locationName:"role" type:"string"`

	// A list of tags attached to this resource, listed in the format of key:value
	// pair.
	Tags []*Tag `locationName:"tags" type:"list"`

	// Amazon Virtual Private Cloud configuration details associated with your Lambda
	// function.
	VpcConfig *VpcConfig `locationName:"vpcConfig" 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 LambdaDetails) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetFunctionArn sets the FunctionArn field's value.
func (s *LambdaDetails) SetFunctionArn(v string) *LambdaDetails {
	s.FunctionArn = &v
	return s
}

// SetFunctionName sets the FunctionName field's value.
func (s *LambdaDetails) SetFunctionName(v string) *LambdaDetails {
	s.FunctionName = &v
	return s
}

// SetFunctionVersion sets the FunctionVersion field's value.
func (s *LambdaDetails) SetFunctionVersion(v string) *LambdaDetails {
	s.FunctionVersion = &v
	return s
}

// SetLastModifiedAt sets the LastModifiedAt field's value.
func (s *LambdaDetails) SetLastModifiedAt(v time.Time) *LambdaDetails {
	s.LastModifiedAt = &v
	return s
}

// SetRevisionId sets the RevisionId field's value.
func (s *LambdaDetails) SetRevisionId(v string) *LambdaDetails {
	s.RevisionId = &v
	return s
}

// SetRole sets the Role field's value.
func (s *LambdaDetails) SetRole(v string) *LambdaDetails {
	s.Role = &v
	return s
}

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

// SetVpcConfig sets the VpcConfig field's value.
func (s *LambdaDetails) SetVpcConfig(v *VpcConfig) *LambdaDetails {
	s.VpcConfig = v
	return s
}

// Information about the runtime process details.
type LineageObject struct {
	_ struct{} `type:"structure"`

	// The effective user ID that was used to execute the process.
	Euid *int64 `locationName:"euid" type:"integer"`

	// The absolute path of the process executable file.
	ExecutablePath *string `locationName:"executablePath" type:"string"`

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

	// The process ID of the child process.
	NamespacePid *int64 `locationName:"namespacePid" type:"integer"`

	// The unique ID of the parent process. This ID is assigned to the parent process
	// by GuardDuty.
	ParentUuid *string `locationName:"parentUuid" type:"string"`

	// The ID of the process.
	Pid *int64 `locationName:"pid" type:"integer"`

	// The time when the process started. This is in UTC format.
	StartTime *time.Time `locationName:"startTime" type:"timestamp"`

	// The user ID of the user that executed the process.
	UserId *int64 `locationName:"userId" type:"integer"`

	// The unique ID assigned to the process by GuardDuty.
	Uuid *string `locationName:"uuid" type:"string"`
}

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

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

// SetEuid sets the Euid field's value.
func (s *LineageObject) SetEuid(v int64) *LineageObject {
	s.Euid = &v
	return s
}

// SetExecutablePath sets the ExecutablePath field's value.
func (s *LineageObject) SetExecutablePath(v string) *LineageObject {
	s.ExecutablePath = &v
	return s
}

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

// SetNamespacePid sets the NamespacePid field's value.
func (s *LineageObject) SetNamespacePid(v int64) *LineageObject {
	s.NamespacePid = &v
	return s
}

// SetParentUuid sets the ParentUuid field's value.
func (s *LineageObject) SetParentUuid(v string) *LineageObject {
	s.ParentUuid = &v
	return s
}

// SetPid sets the Pid field's value.
func (s *LineageObject) SetPid(v int64) *LineageObject {
	s.Pid = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *LineageObject) SetStartTime(v time.Time) *LineageObject {
	s.StartTime = &v
	return s
}

// SetUserId sets the UserId field's value.
func (s *LineageObject) SetUserId(v int64) *LineageObject {
	s.UserId = &v
	return s
}

// SetUuid sets the Uuid field's value.
func (s *LineageObject) SetUuid(v string) *LineageObject {
	s.Uuid = &v
	return s
}

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

	// The unique ID of the detector whose coverage details you want to retrieve.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// Represents the criteria used to filter the coverage details.
	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"`

	// Represents the criteria used to sort the coverage details.
	SortCriteria *CoverageSortCriteria `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 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.DetectorId == nil {
		invalidParams.Add(request.NewErrParamRequired("DetectorId"))
	}
	if s.DetectorId != nil && len(*s.DetectorId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DetectorId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

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

// SetDetectorId sets the DetectorId field's value.
func (s *ListCoverageInput) SetDetectorId(v string) *ListCoverageInput {
	s.DetectorId = &v
	return s
}

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

// SetSortCriteria sets the SortCriteria field's value.
func (s *ListCoverageInput) SetSortCriteria(v *CoverageSortCriteria) *ListCoverageInput {
	s.SortCriteria = v
	return s
}

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

	// The pagination parameter to be used on the next list operation to retrieve
	// more items.
	NextToken *string `locationName:"nextToken" type:"string"`

	// A list of resources and their attributes providing cluster details.
	//
	// Resources is a required field
	Resources []*CoverageResource `locationName:"resources" 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 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()
}

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

// SetResources sets the Resources field's value.
func (s *ListCoverageOutput) SetResources(v []*CoverageResource) *ListCoverageOutput {
	s.Resources = v
	return s
}

type ListDetectorsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// You can use this parameter to indicate the maximum number of items that you
	// want in the response. The default value is 50. The maximum value is 50.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// You can use this parameter when paginating results. Set the value of this
	// parameter to null on your first call to the list action. For subsequent calls
	// to the action, fill nextToken in the request with the value of NextToken
	// from the previous response to continue listing data.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

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

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

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

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

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

	// A list of detector IDs.
	//
	// DetectorIds is a required field
	DetectorIds []*string `locationName:"detectorIds" type:"list" required:"true"`

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

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

// SetDetectorIds sets the DetectorIds field's value.
func (s *ListDetectorsOutput) SetDetectorIds(v []*string) *ListDetectorsOutput {
	s.DetectorIds = v
	return s
}

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

type ListFiltersInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique ID of the detector that the filter is associated with.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// You can use this parameter to indicate the maximum number of items that you
	// want in the response. The default value is 50. The maximum value is 50.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// You can use this parameter when paginating results. Set the value of this
	// parameter to null on your first call to the list action. For subsequent calls
	// to the action, fill nextToken in the request with the value of NextToken
	// from the previous response to continue listing data.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s 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.DetectorId == nil {
		invalidParams.Add(request.NewErrParamRequired("DetectorId"))
	}
	if s.DetectorId != nil && len(*s.DetectorId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DetectorId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

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

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

	// A list of filter names.
	//
	// FilterNames is a required field
	FilterNames []*string `locationName:"filterNames" type:"list" required:"true"`

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

// SetFilterNames sets the FilterNames field's value.
func (s *ListFiltersOutput) SetFilterNames(v []*string) *ListFiltersOutput {
	s.FilterNames = v
	return s
}

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

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

	// The ID of the detector that specifies the GuardDuty service whose findings
	// you want to list.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// Represents the criteria used for querying findings. Valid values include:
	//
	//    * JSON field name
	//
	//    * accountId
	//
	//    * region
	//
	//    * confidence
	//
	//    * id
	//
	//    * resource.accessKeyDetails.accessKeyId
	//
	//    * resource.accessKeyDetails.principalId
	//
	//    * resource.accessKeyDetails.userName
	//
	//    * resource.accessKeyDetails.userType
	//
	//    * resource.instanceDetails.iamInstanceProfile.id
	//
	//    * resource.instanceDetails.imageId
	//
	//    * resource.instanceDetails.instanceId
	//
	//    * resource.instanceDetails.networkInterfaces.ipv6Addresses
	//
	//    * resource.instanceDetails.networkInterfaces.privateIpAddresses.privateIpAddress
	//
	//    * resource.instanceDetails.networkInterfaces.publicDnsName
	//
	//    * resource.instanceDetails.networkInterfaces.publicIp
	//
	//    * resource.instanceDetails.networkInterfaces.securityGroups.groupId
	//
	//    * resource.instanceDetails.networkInterfaces.securityGroups.groupName
	//
	//    * resource.instanceDetails.networkInterfaces.subnetId
	//
	//    * resource.instanceDetails.networkInterfaces.vpcId
	//
	//    * resource.instanceDetails.tags.key
	//
	//    * resource.instanceDetails.tags.value
	//
	//    * resource.resourceType
	//
	//    * service.action.actionType
	//
	//    * service.action.awsApiCallAction.api
	//
	//    * service.action.awsApiCallAction.callerType
	//
	//    * service.action.awsApiCallAction.remoteIpDetails.city.cityName
	//
	//    * service.action.awsApiCallAction.remoteIpDetails.country.countryName
	//
	//    * service.action.awsApiCallAction.remoteIpDetails.ipAddressV4
	//
	//    * service.action.awsApiCallAction.remoteIpDetails.organization.asn
	//
	//    * service.action.awsApiCallAction.remoteIpDetails.organization.asnOrg
	//
	//    * service.action.awsApiCallAction.serviceName
	//
	//    * service.action.dnsRequestAction.domain
	//
	//    * service.action.dnsRequestAction.domainWithSuffix
	//
	//    * service.action.networkConnectionAction.blocked
	//
	//    * service.action.networkConnectionAction.connectionDirection
	//
	//    * service.action.networkConnectionAction.localPortDetails.port
	//
	//    * service.action.networkConnectionAction.protocol
	//
	//    * service.action.networkConnectionAction.remoteIpDetails.country.countryName
	//
	//    * service.action.networkConnectionAction.remoteIpDetails.ipAddressV4
	//
	//    * service.action.networkConnectionAction.remoteIpDetails.organization.asn
	//
	//    * service.action.networkConnectionAction.remoteIpDetails.organization.asnOrg
	//
	//    * service.action.networkConnectionAction.remotePortDetails.port
	//
	//    * service.additionalInfo.threatListName
	//
	//    * service.archived When this attribute is set to 'true', only archived
	//    findings are listed. When it's set to 'false', only unarchived findings
	//    are listed. When this attribute is not set, all existing findings are
	//    listed.
	//
	//    * service.resourceRole
	//
	//    * severity
	//
	//    * type
	//
	//    * updatedAt Type: Timestamp in Unix Epoch millisecond format: 1486685375000
	FindingCriteria *FindingCriteria `locationName:"findingCriteria" type:"structure"`

	// You can use this parameter to indicate the maximum number of items you want
	// in the response. The default value is 50. The maximum value is 50.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// You can use this parameter when paginating results. Set the value of this
	// parameter to null on your first call to the list action. For subsequent calls
	// to the action, fill nextToken in the request with the value of NextToken
	// from the previous response to continue listing data.
	NextToken *string `locationName:"nextToken" type:"string"`

	// Represents the criteria used for sorting findings.
	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.DetectorId == nil {
		invalidParams.Add(request.NewErrParamRequired("DetectorId"))
	}
	if s.DetectorId != nil && len(*s.DetectorId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DetectorId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

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

// SetDetectorId sets the DetectorId field's value.
func (s *ListFindingsInput) SetDetectorId(v string) *ListFindingsInput {
	s.DetectorId = &v
	return s
}

// SetFindingCriteria sets the FindingCriteria field's value.
func (s *ListFindingsInput) SetFindingCriteria(v *FindingCriteria) *ListFindingsInput {
	s.FindingCriteria = 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"`

	// The IDs of the findings that you're listing.
	//
	// FindingIds is a required field
	FindingIds []*string `locationName:"findingIds" type:"list" required:"true"`

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

// SetFindingIds sets the FindingIds field's value.
func (s *ListFindingsOutput) SetFindingIds(v []*string) *ListFindingsOutput {
	s.FindingIds = v
	return s
}

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

type ListIPSetsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique ID of the detector that the IPSet is associated with.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// You can use this parameter to indicate the maximum number of items you want
	// in the response. The default value is 50. The maximum value is 50.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// You can use this parameter when paginating results. Set the value of this
	// parameter to null on your first call to the list action. For subsequent calls
	// to the action, fill nextToken in the request with the value of NextToken
	// from the previous response to continue listing data.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

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

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *ListIPSetsInput) SetDetectorId(v string) *ListIPSetsInput {
	s.DetectorId = &v
	return s
}

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

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

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

	// The IDs of the IPSet resources.
	//
	// IpSetIds is a required field
	IpSetIds []*string `locationName:"ipSetIds" type:"list" required:"true"`

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

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

// SetIpSetIds sets the IpSetIds field's value.
func (s *ListIPSetsOutput) SetIpSetIds(v []*string) *ListIPSetsOutput {
	s.IpSetIds = v
	return s
}

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

type ListInvitationsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// You can use this parameter to indicate the maximum number of items that you
	// want in the response. The default value is 50. The maximum value is 50.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// You can use this parameter when paginating results. Set the value of this
	// parameter to null on your first call to the list action. For subsequent calls
	// to the action, fill nextToken in the request with the value of NextToken
	// from the previous response to continue listing data.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

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

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

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

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

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

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

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

	// A list of invitation descriptions.
	Invitations []*Invitation `locationName:"invitations" 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 ListInvitationsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetInvitations sets the Invitations field's value.
func (s *ListInvitationsOutput) SetInvitations(v []*Invitation) *ListInvitationsOutput {
	s.Invitations = v
	return s
}

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

type ListMembersInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique ID of the detector the member is associated with.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// You can use this parameter to indicate the maximum number of items you want
	// in the response. The default value is 50. The maximum value is 50.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// You can use this parameter when paginating results. Set the value of this
	// parameter to null on your first call to the list action. For subsequent calls
	// to the action, fill nextToken in the request with the value of NextToken
	// from the previous response to continue listing data.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`

	// Specifies whether to only return associated members or to return all members
	// (including members who haven't been invited yet or have been disassociated).
	// Member accounts must have been previously associated with the GuardDuty administrator
	// account using Create Members (https://docs.aws.amazon.com/guardduty/latest/APIReference/API_CreateMembers.html).
	OnlyAssociated *string `location:"querystring" locationName:"onlyAssociated" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API 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.DetectorId == nil {
		invalidParams.Add(request.NewErrParamRequired("DetectorId"))
	}
	if s.DetectorId != nil && len(*s.DetectorId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DetectorId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

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

// SetDetectorId sets the DetectorId field's value.
func (s *ListMembersInput) SetDetectorId(v string) *ListMembersInput {
	s.DetectorId = &v
	return s
}

// 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 string) *ListMembersInput {
	s.OnlyAssociated = &v
	return s
}

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

	// A list of members.
	//
	// The values for email and invitedAt are available only if the member accounts
	// are added by invitation.
	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 ListOrganizationAdminAccountsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The maximum number of results to return in the response.
	MaxResults *int64 `location:"querystring" 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 `location:"querystring" locationName:"nextToken" type:"string"`
}

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

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

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

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

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

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

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

	// A list of accounts configured as GuardDuty delegated administrators.
	AdminAccounts []*AdminAccount `locationName:"adminAccounts" 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 ListOrganizationAdminAccountsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetAdminAccounts sets the AdminAccounts field's value.
func (s *ListOrganizationAdminAccountsOutput) SetAdminAccounts(v []*AdminAccount) *ListOrganizationAdminAccountsOutput {
	s.AdminAccounts = v
	return s
}

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

type ListPublishingDestinationsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the detector to retrieve publishing destinations for.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return in the response.
	MaxResults *int64 `location:"querystring" 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 `location:"querystring" locationName:"nextToken" type:"string"`
}

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

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

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

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

// SetDetectorId sets the DetectorId field's value.
func (s *ListPublishingDestinationsInput) SetDetectorId(v string) *ListPublishingDestinationsInput {
	s.DetectorId = &v
	return s
}

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

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

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

	// A Destinations object that includes information about each publishing destination
	// returned.
	//
	// Destinations is a required field
	Destinations []*Destination `locationName:"destinations" 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 ListPublishingDestinationsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetDestinations sets the Destinations field's value.
func (s *ListPublishingDestinationsOutput) SetDestinations(v []*Destination) *ListPublishingDestinationsOutput {
	s.Destinations = v
	return s
}

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

type ListTagsForResourceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) for the given GuardDuty resource.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"`
}

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

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

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

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

// SetResourceArn sets the ResourceArn field's value.
func (s *ListTagsForResourceInput) SetResourceArn(v string) *ListTagsForResourceInput {
	s.ResourceArn = &v
	return s
}

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

	// The tags associated with the resource.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
}

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

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

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

type ListThreatIntelSetsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique ID of the detector that the threatIntelSet is associated with.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// You can use this parameter to indicate the maximum number of items that you
	// want in the response. The default value is 50. The maximum value is 50.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// You can use this parameter to paginate results in the response. Set the value
	// of this parameter to null on your first call to the list action. For subsequent
	// calls to the action, fill nextToken in the request with the value of NextToken
	// from the previous response to continue listing data.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

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

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListThreatIntelSetsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListThreatIntelSetsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListThreatIntelSetsInput"}
	if s.DetectorId == nil {
		invalidParams.Add(request.NewErrParamRequired("DetectorId"))
	}
	if s.DetectorId != nil && len(*s.DetectorId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DetectorId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDetectorId sets the DetectorId field's value.
func (s *ListThreatIntelSetsInput) SetDetectorId(v string) *ListThreatIntelSetsInput {
	s.DetectorId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListThreatIntelSetsInput) SetMaxResults(v int64) *ListThreatIntelSetsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListThreatIntelSetsInput) SetNextToken(v string) *ListThreatIntelSetsInput {
	s.NextToken = &v
	return s
}

type ListThreatIntelSetsOutput struct {
	_ struct{} `type:"structure"`

	// The pagination parameter to be used on the next list operation to retrieve
	// more items.
	NextToken *string `locationName:"nextToken" type:"string"`

	// The IDs of the ThreatIntelSet resources.
	//
	// ThreatIntelSetIds is a required field
	ThreatIntelSetIds []*string `locationName:"threatIntelSetIds" 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 ListThreatIntelSetsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListThreatIntelSetsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListThreatIntelSetsOutput) SetNextToken(v string) *ListThreatIntelSetsOutput {
	s.NextToken = &v
	return s
}

// SetThreatIntelSetIds sets the ThreatIntelSetIds field's value.
func (s *ListThreatIntelSetsOutput) SetThreatIntelSetIds(v []*string) *ListThreatIntelSetsOutput {
	s.ThreatIntelSetIds = v
	return s
}

// Contains information about the local IP address of the connection.
type LocalIpDetails struct {
	_ struct{} `type:"structure"`

	// The IPv4 local address of the connection.
	IpAddressV4 *string `locationName:"ipAddressV4" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LocalIpDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LocalIpDetails) GoString() string {
	return s.String()
}

// SetIpAddressV4 sets the IpAddressV4 field's value.
func (s *LocalIpDetails) SetIpAddressV4(v string) *LocalIpDetails {
	s.IpAddressV4 = &v
	return s
}

// Contains information about the port for the local connection.
type LocalPortDetails struct {
	_ struct{} `type:"structure"`

	// The port number of the local connection.
	Port *int64 `locationName:"port" type:"integer"`

	// The port name of the local connection.
	PortName *string `locationName:"portName" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LocalPortDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LocalPortDetails) GoString() string {
	return s.String()
}

// SetPort sets the Port field's value.
func (s *LocalPortDetails) SetPort(v int64) *LocalPortDetails {
	s.Port = &v
	return s
}

// SetPortName sets the PortName field's value.
func (s *LocalPortDetails) SetPortName(v string) *LocalPortDetails {
	s.PortName = &v
	return s
}

// Information about the login attempts.
type LoginAttribute struct {
	_ struct{} `type:"structure"`

	// Indicates the application name used to attempt log in.
	Application *string `locationName:"application" type:"string"`

	// Represents the sum of failed (unsuccessful) login attempts made to establish
	// a connection to the database instance.
	FailedLoginAttempts *int64 `locationName:"failedLoginAttempts" type:"integer"`

	// Represents the sum of successful connections (a correct combination of login
	// attributes) made to the database instance by the actor.
	SuccessfulLoginAttempts *int64 `locationName:"successfulLoginAttempts" type:"integer"`

	// Indicates the user name which attempted to log in.
	User *string `locationName:"user" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LoginAttribute) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LoginAttribute) GoString() string {
	return s.String()
}

// SetApplication sets the Application field's value.
func (s *LoginAttribute) SetApplication(v string) *LoginAttribute {
	s.Application = &v
	return s
}

// SetFailedLoginAttempts sets the FailedLoginAttempts field's value.
func (s *LoginAttribute) SetFailedLoginAttempts(v int64) *LoginAttribute {
	s.FailedLoginAttempts = &v
	return s
}

// SetSuccessfulLoginAttempts sets the SuccessfulLoginAttempts field's value.
func (s *LoginAttribute) SetSuccessfulLoginAttempts(v int64) *LoginAttribute {
	s.SuccessfulLoginAttempts = &v
	return s
}

// SetUser sets the User field's value.
func (s *LoginAttribute) SetUser(v string) *LoginAttribute {
	s.User = &v
	return s
}

// Describes whether Malware Protection will be enabled as a data source.
type MalwareProtectionConfiguration struct {
	_ struct{} `type:"structure"`

	// Describes the configuration of Malware Protection for EC2 instances with
	// findings.
	ScanEc2InstanceWithFindings *ScanEc2InstanceWithFindings `locationName:"scanEc2InstanceWithFindings" 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 MalwareProtectionConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MalwareProtectionConfiguration) GoString() string {
	return s.String()
}

// SetScanEc2InstanceWithFindings sets the ScanEc2InstanceWithFindings field's value.
func (s *MalwareProtectionConfiguration) SetScanEc2InstanceWithFindings(v *ScanEc2InstanceWithFindings) *MalwareProtectionConfiguration {
	s.ScanEc2InstanceWithFindings = v
	return s
}

// An object that contains information on the status of all Malware Protection
// data sources.
type MalwareProtectionConfigurationResult struct {
	_ struct{} `type:"structure"`

	// Describes the configuration of Malware Protection for EC2 instances with
	// findings.
	ScanEc2InstanceWithFindings *ScanEc2InstanceWithFindingsResult `locationName:"scanEc2InstanceWithFindings" type:"structure"`

	// The GuardDuty Malware Protection service role.
	ServiceRole *string `locationName:"serviceRole" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MalwareProtectionConfigurationResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MalwareProtectionConfigurationResult) GoString() string {
	return s.String()
}

// SetScanEc2InstanceWithFindings sets the ScanEc2InstanceWithFindings field's value.
func (s *MalwareProtectionConfigurationResult) SetScanEc2InstanceWithFindings(v *ScanEc2InstanceWithFindingsResult) *MalwareProtectionConfigurationResult {
	s.ScanEc2InstanceWithFindings = v
	return s
}

// SetServiceRole sets the ServiceRole field's value.
func (s *MalwareProtectionConfigurationResult) SetServiceRole(v string) *MalwareProtectionConfigurationResult {
	s.ServiceRole = &v
	return s
}

// Provides details about Malware Protection when it is enabled as a data source.
type MalwareProtectionDataSourceFreeTrial struct {
	_ struct{} `type:"structure"`

	// Describes whether Malware Protection for EC2 instances with findings is enabled
	// as a data source.
	ScanEc2InstanceWithFindings *DataSourceFreeTrial `locationName:"scanEc2InstanceWithFindings" 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 MalwareProtectionDataSourceFreeTrial) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MalwareProtectionDataSourceFreeTrial) GoString() string {
	return s.String()
}

// SetScanEc2InstanceWithFindings sets the ScanEc2InstanceWithFindings field's value.
func (s *MalwareProtectionDataSourceFreeTrial) SetScanEc2InstanceWithFindings(v *DataSourceFreeTrial) *MalwareProtectionDataSourceFreeTrial {
	s.ScanEc2InstanceWithFindings = v
	return s
}

// Contains information about the administrator account and invitation.
type Master struct {
	_ struct{} `type:"structure"`

	// The ID of the account used as the administrator account.
	AccountId *string `locationName:"accountId" min:"12" type:"string"`

	// The value used to validate the administrator account to the member account.
	InvitationId *string `locationName:"invitationId" type:"string"`

	// The timestamp when the invitation was sent.
	InvitedAt *string `locationName:"invitedAt" type:"string"`

	// The status of the relationship between the administrator and member accounts.
	RelationshipStatus *string `locationName:"relationshipStatus" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Master) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Master) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *Master) SetAccountId(v string) *Master {
	s.AccountId = &v
	return s
}

// SetInvitationId sets the InvitationId field's value.
func (s *Master) SetInvitationId(v string) *Master {
	s.InvitationId = &v
	return s
}

// SetInvitedAt sets the InvitedAt field's value.
func (s *Master) SetInvitedAt(v string) *Master {
	s.InvitedAt = &v
	return s
}

// SetRelationshipStatus sets the RelationshipStatus field's value.
func (s *Master) SetRelationshipStatus(v string) *Master {
	s.RelationshipStatus = &v
	return s
}

// Contains information about the member account.
type Member struct {
	_ struct{} `type:"structure"`

	// The ID of the member account.
	//
	// AccountId is a required field
	AccountId *string `locationName:"accountId" min:"12" type:"string" required:"true"`

	// The administrator account ID.
	AdministratorId *string `locationName:"administratorId" type:"string"`

	// The detector ID of the member account.
	DetectorId *string `locationName:"detectorId" min:"1" type:"string"`

	// The email address of the member account.
	//
	// Email is a required field
	Email *string `locationName:"email" min:"1" type:"string" required:"true"`

	// The timestamp when the invitation was sent.
	InvitedAt *string `locationName:"invitedAt" type:"string"`

	// The administrator account ID.
	//
	// MasterId is a required field
	MasterId *string `locationName:"masterId" type:"string" required:"true"`

	// The status of the relationship between the member and the administrator.
	//
	// RelationshipStatus is a required field
	RelationshipStatus *string `locationName:"relationshipStatus" type:"string" required:"true"`

	// The last-updated timestamp of the member.
	//
	// UpdatedAt is a required field
	UpdatedAt *string `locationName:"updatedAt" 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 Member) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Member) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *Member) SetAccountId(v string) *Member {
	s.AccountId = &v
	return s
}

// SetAdministratorId sets the AdministratorId field's value.
func (s *Member) SetAdministratorId(v string) *Member {
	s.AdministratorId = &v
	return s
}

// SetDetectorId sets the DetectorId field's value.
func (s *Member) SetDetectorId(v string) *Member {
	s.DetectorId = &v
	return s
}

// SetEmail sets the Email field's value.
func (s *Member) SetEmail(v string) *Member {
	s.Email = &v
	return s
}

// SetInvitedAt sets the InvitedAt field's value.
func (s *Member) SetInvitedAt(v string) *Member {
	s.InvitedAt = &v
	return s
}

// SetMasterId sets the MasterId field's value.
func (s *Member) SetMasterId(v string) *Member {
	s.MasterId = &v
	return s
}

// 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 string) *Member {
	s.UpdatedAt = &v
	return s
}

// Information about the additional configuration for the member account.
type MemberAdditionalConfiguration struct {
	_ struct{} `type:"structure"`

	// Name of the additional configuration.
	Name *string `locationName:"name" type:"string" enum:"OrgFeatureAdditionalConfiguration"`

	// Status of the additional configuration.
	Status *string `locationName:"status" type:"string" enum:"FeatureStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MemberAdditionalConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MemberAdditionalConfiguration) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *MemberAdditionalConfiguration) SetName(v string) *MemberAdditionalConfiguration {
	s.Name = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *MemberAdditionalConfiguration) SetStatus(v string) *MemberAdditionalConfiguration {
	s.Status = &v
	return s
}

// Information about the additional configuration for the member account.
type MemberAdditionalConfigurationResult struct {
	_ struct{} `type:"structure"`

	// Indicates the name of the additional configuration that is set for the member
	// account.
	Name *string `locationName:"name" type:"string" enum:"OrgFeatureAdditionalConfiguration"`

	// Indicates the status of the additional configuration that is set for the
	// member account.
	Status *string `locationName:"status" type:"string" enum:"FeatureStatus"`

	// The timestamp at which the additional configuration was set for the member
	// account. This is in UTC format.
	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 MemberAdditionalConfigurationResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MemberAdditionalConfigurationResult) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *MemberAdditionalConfigurationResult) SetName(v string) *MemberAdditionalConfigurationResult {
	s.Name = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *MemberAdditionalConfigurationResult) SetStatus(v string) *MemberAdditionalConfigurationResult {
	s.Status = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *MemberAdditionalConfigurationResult) SetUpdatedAt(v time.Time) *MemberAdditionalConfigurationResult {
	s.UpdatedAt = &v
	return s
}

// Contains information on which data sources are enabled for a member account.
type MemberDataSourceConfiguration struct {
	_ struct{} `type:"structure"`

	// The account ID for the member account.
	//
	// AccountId is a required field
	AccountId *string `locationName:"accountId" min:"12" type:"string" required:"true"`

	// Contains information on the status of data sources for the account.
	//
	// Deprecated: This parameter is deprecated, use Features instead
	DataSources *DataSourceConfigurationsResult `locationName:"dataSources" deprecated:"true" type:"structure"`

	// Contains information about the status of the features for the member account.
	Features []*MemberFeaturesConfigurationResult `locationName:"features" 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 MemberDataSourceConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MemberDataSourceConfiguration) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *MemberDataSourceConfiguration) SetAccountId(v string) *MemberDataSourceConfiguration {
	s.AccountId = &v
	return s
}

// SetDataSources sets the DataSources field's value.
func (s *MemberDataSourceConfiguration) SetDataSources(v *DataSourceConfigurationsResult) *MemberDataSourceConfiguration {
	s.DataSources = v
	return s
}

// SetFeatures sets the Features field's value.
func (s *MemberDataSourceConfiguration) SetFeatures(v []*MemberFeaturesConfigurationResult) *MemberDataSourceConfiguration {
	s.Features = v
	return s
}

// Contains information about the features for the member account.
type MemberFeaturesConfiguration struct {
	_ struct{} `type:"structure"`

	// Additional configuration of the feature for the member account.
	AdditionalConfiguration []*MemberAdditionalConfiguration `locationName:"additionalConfiguration" type:"list"`

	// The name of the feature.
	Name *string `locationName:"name" type:"string" enum:"OrgFeature"`

	// The status of the feature.
	Status *string `locationName:"status" type:"string" enum:"FeatureStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MemberFeaturesConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MemberFeaturesConfiguration) GoString() string {
	return s.String()
}

// SetAdditionalConfiguration sets the AdditionalConfiguration field's value.
func (s *MemberFeaturesConfiguration) SetAdditionalConfiguration(v []*MemberAdditionalConfiguration) *MemberFeaturesConfiguration {
	s.AdditionalConfiguration = v
	return s
}

// SetName sets the Name field's value.
func (s *MemberFeaturesConfiguration) SetName(v string) *MemberFeaturesConfiguration {
	s.Name = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *MemberFeaturesConfiguration) SetStatus(v string) *MemberFeaturesConfiguration {
	s.Status = &v
	return s
}

// Contains information about the features for the member account.
type MemberFeaturesConfigurationResult struct {
	_ struct{} `type:"structure"`

	// Indicates the additional configuration of the feature that is configured
	// for the member account.
	AdditionalConfiguration []*MemberAdditionalConfigurationResult `locationName:"additionalConfiguration" type:"list"`

	// Indicates the name of the feature that is enabled for the detector.
	Name *string `locationName:"name" type:"string" enum:"OrgFeature"`

	// Indicates the status of the feature that is enabled for the detector.
	Status *string `locationName:"status" type:"string" enum:"FeatureStatus"`

	// The timestamp at which the feature object was 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 MemberFeaturesConfigurationResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MemberFeaturesConfigurationResult) GoString() string {
	return s.String()
}

// SetAdditionalConfiguration sets the AdditionalConfiguration field's value.
func (s *MemberFeaturesConfigurationResult) SetAdditionalConfiguration(v []*MemberAdditionalConfigurationResult) *MemberFeaturesConfigurationResult {
	s.AdditionalConfiguration = v
	return s
}

// SetName sets the Name field's value.
func (s *MemberFeaturesConfigurationResult) SetName(v string) *MemberFeaturesConfigurationResult {
	s.Name = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *MemberFeaturesConfigurationResult) SetStatus(v string) *MemberFeaturesConfigurationResult {
	s.Status = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *MemberFeaturesConfigurationResult) SetUpdatedAt(v time.Time) *MemberFeaturesConfigurationResult {
	s.UpdatedAt = &v
	return s
}

// Contains information about the NETWORK_CONNECTION action described in the
// finding.
type NetworkConnectionAction struct {
	_ struct{} `type:"structure"`

	// Indicates whether EC2 blocked the network connection to your instance.
	Blocked *bool `locationName:"blocked" type:"boolean"`

	// The network connection direction.
	ConnectionDirection *string `locationName:"connectionDirection" type:"string"`

	// The local IP information of the connection.
	LocalIpDetails *LocalIpDetails `locationName:"localIpDetails" type:"structure"`

	// The local port information of the connection.
	LocalPortDetails *LocalPortDetails `locationName:"localPortDetails" type:"structure"`

	// The network connection protocol.
	Protocol *string `locationName:"protocol" type:"string"`

	// The remote IP information of the connection.
	RemoteIpDetails *RemoteIpDetails `locationName:"remoteIpDetails" type:"structure"`

	// The remote port information of the connection.
	RemotePortDetails *RemotePortDetails `locationName:"remotePortDetails" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NetworkConnectionAction) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NetworkConnectionAction) GoString() string {
	return s.String()
}

// SetBlocked sets the Blocked field's value.
func (s *NetworkConnectionAction) SetBlocked(v bool) *NetworkConnectionAction {
	s.Blocked = &v
	return s
}

// SetConnectionDirection sets the ConnectionDirection field's value.
func (s *NetworkConnectionAction) SetConnectionDirection(v string) *NetworkConnectionAction {
	s.ConnectionDirection = &v
	return s
}

// SetLocalIpDetails sets the LocalIpDetails field's value.
func (s *NetworkConnectionAction) SetLocalIpDetails(v *LocalIpDetails) *NetworkConnectionAction {
	s.LocalIpDetails = v
	return s
}

// SetLocalPortDetails sets the LocalPortDetails field's value.
func (s *NetworkConnectionAction) SetLocalPortDetails(v *LocalPortDetails) *NetworkConnectionAction {
	s.LocalPortDetails = v
	return s
}

// SetProtocol sets the Protocol field's value.
func (s *NetworkConnectionAction) SetProtocol(v string) *NetworkConnectionAction {
	s.Protocol = &v
	return s
}

// SetRemoteIpDetails sets the RemoteIpDetails field's value.
func (s *NetworkConnectionAction) SetRemoteIpDetails(v *RemoteIpDetails) *NetworkConnectionAction {
	s.RemoteIpDetails = v
	return s
}

// SetRemotePortDetails sets the RemotePortDetails field's value.
func (s *NetworkConnectionAction) SetRemotePortDetails(v *RemotePortDetails) *NetworkConnectionAction {
	s.RemotePortDetails = v
	return s
}

// Contains information about the elastic network interface of the EC2 instance.
type NetworkInterface struct {
	_ struct{} `type:"structure"`

	// A list of IPv6 addresses for the EC2 instance.
	Ipv6Addresses []*string `locationName:"ipv6Addresses" type:"list"`

	// The ID of the network interface.
	NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"`

	// The private DNS name of the EC2 instance.
	PrivateDnsName *string `locationName:"privateDnsName" type:"string"`

	// The private IP address of the EC2 instance.
	PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"`

	// Other private IP address information of the EC2 instance.
	PrivateIpAddresses []*PrivateIpAddressDetails `locationName:"privateIpAddresses" type:"list"`

	// The public DNS name of the EC2 instance.
	PublicDnsName *string `locationName:"publicDnsName" type:"string"`

	// The public IP address of the EC2 instance.
	PublicIp *string `locationName:"publicIp" type:"string"`

	// The security groups associated with the EC2 instance.
	SecurityGroups []*SecurityGroup `locationName:"securityGroups" type:"list"`

	// The subnet ID of the EC2 instance.
	SubnetId *string `locationName:"subnetId" type:"string"`

	// The VPC ID of the EC2 instance.
	VpcId *string `locationName:"vpcId" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NetworkInterface) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NetworkInterface) GoString() string {
	return s.String()
}

// SetIpv6Addresses sets the Ipv6Addresses field's value.
func (s *NetworkInterface) SetIpv6Addresses(v []*string) *NetworkInterface {
	s.Ipv6Addresses = v
	return s
}

// SetNetworkInterfaceId sets the NetworkInterfaceId field's value.
func (s *NetworkInterface) SetNetworkInterfaceId(v string) *NetworkInterface {
	s.NetworkInterfaceId = &v
	return s
}

// SetPrivateDnsName sets the PrivateDnsName field's value.
func (s *NetworkInterface) SetPrivateDnsName(v string) *NetworkInterface {
	s.PrivateDnsName = &v
	return s
}

// SetPrivateIpAddress sets the PrivateIpAddress field's value.
func (s *NetworkInterface) SetPrivateIpAddress(v string) *NetworkInterface {
	s.PrivateIpAddress = &v
	return s
}

// SetPrivateIpAddresses sets the PrivateIpAddresses field's value.
func (s *NetworkInterface) SetPrivateIpAddresses(v []*PrivateIpAddressDetails) *NetworkInterface {
	s.PrivateIpAddresses = v
	return s
}

// SetPublicDnsName sets the PublicDnsName field's value.
func (s *NetworkInterface) SetPublicDnsName(v string) *NetworkInterface {
	s.PublicDnsName = &v
	return s
}

// SetPublicIp sets the PublicIp field's value.
func (s *NetworkInterface) SetPublicIp(v string) *NetworkInterface {
	s.PublicIp = &v
	return s
}

// SetSecurityGroups sets the SecurityGroups field's value.
func (s *NetworkInterface) SetSecurityGroups(v []*SecurityGroup) *NetworkInterface {
	s.SecurityGroups = v
	return s
}

// SetSubnetId sets the SubnetId field's value.
func (s *NetworkInterface) SetSubnetId(v string) *NetworkInterface {
	s.SubnetId = &v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *NetworkInterface) SetVpcId(v string) *NetworkInterface {
	s.VpcId = &v
	return s
}

// Contains information about the observed behavior.
type Observations struct {
	_ struct{} `type:"structure"`

	// The text that was unusual.
	Text []*string `locationName:"text" 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 Observations) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Observations) GoString() string {
	return s.String()
}

// SetText sets the Text field's value.
func (s *Observations) SetText(v []*string) *Observations {
	s.Text = v
	return s
}

// Contains information about the ISP organization of the remote IP address.
type Organization struct {
	_ struct{} `type:"structure"`

	// The Autonomous System Number (ASN) of the internet provider of the remote
	// IP address.
	Asn *string `locationName:"asn" type:"string"`

	// The organization that registered this ASN.
	AsnOrg *string `locationName:"asnOrg" type:"string"`

	// The ISP information for the internet provider.
	Isp *string `locationName:"isp" type:"string"`

	// The name of the internet provider.
	Org *string `locationName:"org" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Organization) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Organization) GoString() string {
	return s.String()
}

// SetAsn sets the Asn field's value.
func (s *Organization) SetAsn(v string) *Organization {
	s.Asn = &v
	return s
}

// SetAsnOrg sets the AsnOrg field's value.
func (s *Organization) SetAsnOrg(v string) *Organization {
	s.AsnOrg = &v
	return s
}

// SetIsp sets the Isp field's value.
func (s *Organization) SetIsp(v string) *Organization {
	s.Isp = &v
	return s
}

// SetOrg sets the Org field's value.
func (s *Organization) SetOrg(v string) *Organization {
	s.Org = &v
	return s
}

// A list of additional configurations which will be configured for the organization.
type OrganizationAdditionalConfiguration struct {
	_ struct{} `type:"structure"`

	// The status of the additional configuration that will be configured for the
	// organization. Use one of the following values to configure the feature status
	// for the entire organization:
	//
	//    * NEW: Indicates that when a new account joins the organization, they
	//    will have the additional configuration enabled automatically.
	//
	//    * ALL: Indicates that all accounts in the organization have the additional
	//    configuration enabled automatically. This includes NEW accounts that join
	//    the organization and accounts that may have been suspended or removed
	//    from the organization in GuardDuty. It may take up to 24 hours to update
	//    the configuration for all the member accounts.
	//
	//    * NONE: Indicates that the additional configuration will not be automatically
	//    enabled for any account in the organization. The administrator must manage
	//    the additional configuration for each account individually.
	AutoEnable *string `locationName:"autoEnable" type:"string" enum:"OrgFeatureStatus"`

	// The name of the additional configuration that will be configured for the
	// organization.
	Name *string `locationName:"name" type:"string" enum:"OrgFeatureAdditionalConfiguration"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationAdditionalConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationAdditionalConfiguration) GoString() string {
	return s.String()
}

// SetAutoEnable sets the AutoEnable field's value.
func (s *OrganizationAdditionalConfiguration) SetAutoEnable(v string) *OrganizationAdditionalConfiguration {
	s.AutoEnable = &v
	return s
}

// SetName sets the Name field's value.
func (s *OrganizationAdditionalConfiguration) SetName(v string) *OrganizationAdditionalConfiguration {
	s.Name = &v
	return s
}

// A list of additional configuration which will be configured for the organization.
type OrganizationAdditionalConfigurationResult struct {
	_ struct{} `type:"structure"`

	// Describes the status of the additional configuration that is configured for
	// the member accounts within the organization. One of the following values
	// is the status for the entire organization:
	//
	//    * NEW: Indicates that when a new account joins the organization, they
	//    will have the additional configuration enabled automatically.
	//
	//    * ALL: Indicates that all accounts in the organization have the additional
	//    configuration enabled automatically. This includes NEW accounts that join
	//    the organization and accounts that may have been suspended or removed
	//    from the organization in GuardDuty. It may take up to 24 hours to update
	//    the configuration for all the member accounts.
	//
	//    * NONE: Indicates that the additional configuration will not be automatically
	//    enabled for any account in the organization. The administrator must manage
	//    the additional configuration for each account individually.
	AutoEnable *string `locationName:"autoEnable" type:"string" enum:"OrgFeatureStatus"`

	// The name of the additional configuration that is configured for the member
	// accounts within the organization.
	Name *string `locationName:"name" type:"string" enum:"OrgFeatureAdditionalConfiguration"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationAdditionalConfigurationResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationAdditionalConfigurationResult) GoString() string {
	return s.String()
}

// SetAutoEnable sets the AutoEnable field's value.
func (s *OrganizationAdditionalConfigurationResult) SetAutoEnable(v string) *OrganizationAdditionalConfigurationResult {
	s.AutoEnable = &v
	return s
}

// SetName sets the Name field's value.
func (s *OrganizationAdditionalConfigurationResult) SetName(v string) *OrganizationAdditionalConfigurationResult {
	s.Name = &v
	return s
}

// An object that contains information on which data sources will be configured
// to be automatically enabled for new members within the organization.
type OrganizationDataSourceConfigurations struct {
	_ struct{} `type:"structure"`

	// Describes the configuration of Kubernetes data sources for new members of
	// the organization.
	Kubernetes *OrganizationKubernetesConfiguration `locationName:"kubernetes" type:"structure"`

	// Describes the configuration of Malware Protection for new members of the
	// organization.
	MalwareProtection *OrganizationMalwareProtectionConfiguration `locationName:"malwareProtection" type:"structure"`

	// Describes whether S3 data event logs are enabled for new members of the organization.
	S3Logs *OrganizationS3LogsConfiguration `locationName:"s3Logs" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationDataSourceConfigurations) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationDataSourceConfigurations) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *OrganizationDataSourceConfigurations) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "OrganizationDataSourceConfigurations"}
	if s.Kubernetes != nil {
		if err := s.Kubernetes.Validate(); err != nil {
			invalidParams.AddNested("Kubernetes", err.(request.ErrInvalidParams))
		}
	}
	if s.S3Logs != nil {
		if err := s.S3Logs.Validate(); err != nil {
			invalidParams.AddNested("S3Logs", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetKubernetes sets the Kubernetes field's value.
func (s *OrganizationDataSourceConfigurations) SetKubernetes(v *OrganizationKubernetesConfiguration) *OrganizationDataSourceConfigurations {
	s.Kubernetes = v
	return s
}

// SetMalwareProtection sets the MalwareProtection field's value.
func (s *OrganizationDataSourceConfigurations) SetMalwareProtection(v *OrganizationMalwareProtectionConfiguration) *OrganizationDataSourceConfigurations {
	s.MalwareProtection = v
	return s
}

// SetS3Logs sets the S3Logs field's value.
func (s *OrganizationDataSourceConfigurations) SetS3Logs(v *OrganizationS3LogsConfiguration) *OrganizationDataSourceConfigurations {
	s.S3Logs = v
	return s
}

// An object that contains information on which data sources are automatically
// enabled for new members within the organization.
type OrganizationDataSourceConfigurationsResult struct {
	_ struct{} `type:"structure"`

	// Describes the configuration of Kubernetes data sources.
	Kubernetes *OrganizationKubernetesConfigurationResult `locationName:"kubernetes" type:"structure"`

	// Describes the configuration of Malware Protection data source for an organization.
	MalwareProtection *OrganizationMalwareProtectionConfigurationResult `locationName:"malwareProtection" type:"structure"`

	// Describes whether S3 data event logs are enabled as a data source.
	//
	// S3Logs is a required field
	S3Logs *OrganizationS3LogsConfigurationResult `locationName:"s3Logs" 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 OrganizationDataSourceConfigurationsResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationDataSourceConfigurationsResult) GoString() string {
	return s.String()
}

// SetKubernetes sets the Kubernetes field's value.
func (s *OrganizationDataSourceConfigurationsResult) SetKubernetes(v *OrganizationKubernetesConfigurationResult) *OrganizationDataSourceConfigurationsResult {
	s.Kubernetes = v
	return s
}

// SetMalwareProtection sets the MalwareProtection field's value.
func (s *OrganizationDataSourceConfigurationsResult) SetMalwareProtection(v *OrganizationMalwareProtectionConfigurationResult) *OrganizationDataSourceConfigurationsResult {
	s.MalwareProtection = v
	return s
}

// SetS3Logs sets the S3Logs field's value.
func (s *OrganizationDataSourceConfigurationsResult) SetS3Logs(v *OrganizationS3LogsConfigurationResult) *OrganizationDataSourceConfigurationsResult {
	s.S3Logs = v
	return s
}

// Information about GuardDuty coverage statistics for members in your Amazon
// Web Services organization.
type OrganizationDetails struct {
	_ struct{} `type:"structure"`

	// Information about the GuardDuty coverage statistics for members in your Amazon
	// Web Services organization.
	OrganizationStatistics *OrganizationStatistics `locationName:"organizationStatistics" type:"structure"`

	// The timestamp at which the organization statistics was last updated. This
	// is in UTC format.
	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 OrganizationDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationDetails) GoString() string {
	return s.String()
}

// SetOrganizationStatistics sets the OrganizationStatistics field's value.
func (s *OrganizationDetails) SetOrganizationStatistics(v *OrganizationStatistics) *OrganizationDetails {
	s.OrganizationStatistics = v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *OrganizationDetails) SetUpdatedAt(v time.Time) *OrganizationDetails {
	s.UpdatedAt = &v
	return s
}

// Organization-wide EBS volumes scan configuration.
type OrganizationEbsVolumes struct {
	_ struct{} `type:"structure"`

	// Whether scanning EBS volumes should be auto-enabled for new members joining
	// the organization.
	AutoEnable *bool `locationName:"autoEnable" 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 OrganizationEbsVolumes) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationEbsVolumes) GoString() string {
	return s.String()
}

// SetAutoEnable sets the AutoEnable field's value.
func (s *OrganizationEbsVolumes) SetAutoEnable(v bool) *OrganizationEbsVolumes {
	s.AutoEnable = &v
	return s
}

// An object that contains information on the status of whether EBS volumes
// scanning will be enabled as a data source for an organization.
type OrganizationEbsVolumesResult struct {
	_ struct{} `type:"structure"`

	// An object that contains the status of whether scanning EBS volumes should
	// be auto-enabled for new members joining the organization.
	AutoEnable *bool `locationName:"autoEnable" 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 OrganizationEbsVolumesResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationEbsVolumesResult) GoString() string {
	return s.String()
}

// SetAutoEnable sets the AutoEnable field's value.
func (s *OrganizationEbsVolumesResult) SetAutoEnable(v bool) *OrganizationEbsVolumesResult {
	s.AutoEnable = &v
	return s
}

// A list of features which will be configured for the organization.
type OrganizationFeatureConfiguration struct {
	_ struct{} `type:"structure"`

	// The additional information that will be configured for the organization.
	AdditionalConfiguration []*OrganizationAdditionalConfiguration `locationName:"additionalConfiguration" type:"list"`

	// Describes the status of the feature that is configured for the member accounts
	// within the organization. One of the following values is the status for the
	// entire organization:
	//
	//    * NEW: Indicates that when a new account joins the organization, they
	//    will have the feature enabled automatically.
	//
	//    * ALL: Indicates that all accounts in the organization have the feature
	//    enabled automatically. This includes NEW accounts that join the organization
	//    and accounts that may have been suspended or removed from the organization
	//    in GuardDuty. It may take up to 24 hours to update the configuration for
	//    all the member accounts.
	//
	//    * NONE: Indicates that the feature will not be automatically enabled for
	//    any account in the organization. The administrator must manage the feature
	//    for each account individually.
	AutoEnable *string `locationName:"autoEnable" type:"string" enum:"OrgFeatureStatus"`

	// The name of the feature that will be configured for the organization.
	Name *string `locationName:"name" type:"string" enum:"OrgFeature"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationFeatureConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationFeatureConfiguration) GoString() string {
	return s.String()
}

// SetAdditionalConfiguration sets the AdditionalConfiguration field's value.
func (s *OrganizationFeatureConfiguration) SetAdditionalConfiguration(v []*OrganizationAdditionalConfiguration) *OrganizationFeatureConfiguration {
	s.AdditionalConfiguration = v
	return s
}

// SetAutoEnable sets the AutoEnable field's value.
func (s *OrganizationFeatureConfiguration) SetAutoEnable(v string) *OrganizationFeatureConfiguration {
	s.AutoEnable = &v
	return s
}

// SetName sets the Name field's value.
func (s *OrganizationFeatureConfiguration) SetName(v string) *OrganizationFeatureConfiguration {
	s.Name = &v
	return s
}

// A list of features which will be configured for the organization.
type OrganizationFeatureConfigurationResult struct {
	_ struct{} `type:"structure"`

	// The additional configuration that is configured for the member accounts within
	// the organization.
	AdditionalConfiguration []*OrganizationAdditionalConfigurationResult `locationName:"additionalConfiguration" type:"list"`

	// Describes the status of the feature that is configured for the member accounts
	// within the organization.
	//
	//    * NEW: Indicates that when a new account joins the organization, they
	//    will have the feature enabled automatically.
	//
	//    * ALL: Indicates that all accounts in the organization have the feature
	//    enabled automatically. This includes NEW accounts that join the organization
	//    and accounts that may have been suspended or removed from the organization
	//    in GuardDuty.
	//
	//    * NONE: Indicates that the feature will not be automatically enabled for
	//    any account in the organization. In this case, each account will be managed
	//    individually by the administrator.
	AutoEnable *string `locationName:"autoEnable" type:"string" enum:"OrgFeatureStatus"`

	// The name of the feature that is configured for the member accounts within
	// the organization.
	Name *string `locationName:"name" type:"string" enum:"OrgFeature"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationFeatureConfigurationResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationFeatureConfigurationResult) GoString() string {
	return s.String()
}

// SetAdditionalConfiguration sets the AdditionalConfiguration field's value.
func (s *OrganizationFeatureConfigurationResult) SetAdditionalConfiguration(v []*OrganizationAdditionalConfigurationResult) *OrganizationFeatureConfigurationResult {
	s.AdditionalConfiguration = v
	return s
}

// SetAutoEnable sets the AutoEnable field's value.
func (s *OrganizationFeatureConfigurationResult) SetAutoEnable(v string) *OrganizationFeatureConfigurationResult {
	s.AutoEnable = &v
	return s
}

// SetName sets the Name field's value.
func (s *OrganizationFeatureConfigurationResult) SetName(v string) *OrganizationFeatureConfigurationResult {
	s.Name = &v
	return s
}

// Information about the number of accounts that have enabled a specific feature.
type OrganizationFeatureStatistics struct {
	_ struct{} `type:"structure"`

	// Name of the additional configuration.
	AdditionalConfiguration []*OrganizationFeatureStatisticsAdditionalConfiguration `locationName:"additionalConfiguration" type:"list"`

	// Total number of accounts that have enabled a specific feature.
	EnabledAccountsCount *int64 `locationName:"enabledAccountsCount" type:"integer"`

	// Name of the feature.
	Name *string `locationName:"name" type:"string" enum:"OrgFeature"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationFeatureStatistics) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationFeatureStatistics) GoString() string {
	return s.String()
}

// SetAdditionalConfiguration sets the AdditionalConfiguration field's value.
func (s *OrganizationFeatureStatistics) SetAdditionalConfiguration(v []*OrganizationFeatureStatisticsAdditionalConfiguration) *OrganizationFeatureStatistics {
	s.AdditionalConfiguration = v
	return s
}

// SetEnabledAccountsCount sets the EnabledAccountsCount field's value.
func (s *OrganizationFeatureStatistics) SetEnabledAccountsCount(v int64) *OrganizationFeatureStatistics {
	s.EnabledAccountsCount = &v
	return s
}

// SetName sets the Name field's value.
func (s *OrganizationFeatureStatistics) SetName(v string) *OrganizationFeatureStatistics {
	s.Name = &v
	return s
}

// Information about the coverage statistic for the additional configuration
// of the feature.
type OrganizationFeatureStatisticsAdditionalConfiguration struct {
	_ struct{} `type:"structure"`

	// Total number of accounts that have enabled the additional configuration.
	EnabledAccountsCount *int64 `locationName:"enabledAccountsCount" type:"integer"`

	// Name of the additional configuration within a feature.
	Name *string `locationName:"name" type:"string" enum:"OrgFeatureAdditionalConfiguration"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationFeatureStatisticsAdditionalConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationFeatureStatisticsAdditionalConfiguration) GoString() string {
	return s.String()
}

// SetEnabledAccountsCount sets the EnabledAccountsCount field's value.
func (s *OrganizationFeatureStatisticsAdditionalConfiguration) SetEnabledAccountsCount(v int64) *OrganizationFeatureStatisticsAdditionalConfiguration {
	s.EnabledAccountsCount = &v
	return s
}

// SetName sets the Name field's value.
func (s *OrganizationFeatureStatisticsAdditionalConfiguration) SetName(v string) *OrganizationFeatureStatisticsAdditionalConfiguration {
	s.Name = &v
	return s
}

// Organization-wide Kubernetes audit logs configuration.
type OrganizationKubernetesAuditLogsConfiguration struct {
	_ struct{} `type:"structure"`

	// A value that contains information on whether Kubernetes audit logs should
	// be enabled automatically as a data source for the organization.
	//
	// AutoEnable is a required field
	AutoEnable *bool `locationName:"autoEnable" 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 OrganizationKubernetesAuditLogsConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationKubernetesAuditLogsConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *OrganizationKubernetesAuditLogsConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "OrganizationKubernetesAuditLogsConfiguration"}
	if s.AutoEnable == nil {
		invalidParams.Add(request.NewErrParamRequired("AutoEnable"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAutoEnable sets the AutoEnable field's value.
func (s *OrganizationKubernetesAuditLogsConfiguration) SetAutoEnable(v bool) *OrganizationKubernetesAuditLogsConfiguration {
	s.AutoEnable = &v
	return s
}

// The current configuration of Kubernetes audit logs as a data source for the
// organization.
type OrganizationKubernetesAuditLogsConfigurationResult struct {
	_ struct{} `type:"structure"`

	// Whether Kubernetes audit logs data source should be auto-enabled for new
	// members joining the organization.
	//
	// AutoEnable is a required field
	AutoEnable *bool `locationName:"autoEnable" 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 OrganizationKubernetesAuditLogsConfigurationResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationKubernetesAuditLogsConfigurationResult) GoString() string {
	return s.String()
}

// SetAutoEnable sets the AutoEnable field's value.
func (s *OrganizationKubernetesAuditLogsConfigurationResult) SetAutoEnable(v bool) *OrganizationKubernetesAuditLogsConfigurationResult {
	s.AutoEnable = &v
	return s
}

// Organization-wide Kubernetes data sources configurations.
type OrganizationKubernetesConfiguration struct {
	_ struct{} `type:"structure"`

	// Whether Kubernetes audit logs data source should be auto-enabled for new
	// members joining the organization.
	//
	// AuditLogs is a required field
	AuditLogs *OrganizationKubernetesAuditLogsConfiguration `locationName:"auditLogs" 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 OrganizationKubernetesConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationKubernetesConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *OrganizationKubernetesConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "OrganizationKubernetesConfiguration"}
	if s.AuditLogs == nil {
		invalidParams.Add(request.NewErrParamRequired("AuditLogs"))
	}
	if s.AuditLogs != nil {
		if err := s.AuditLogs.Validate(); err != nil {
			invalidParams.AddNested("AuditLogs", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAuditLogs sets the AuditLogs field's value.
func (s *OrganizationKubernetesConfiguration) SetAuditLogs(v *OrganizationKubernetesAuditLogsConfiguration) *OrganizationKubernetesConfiguration {
	s.AuditLogs = v
	return s
}

// The current configuration of all Kubernetes data sources for the organization.
type OrganizationKubernetesConfigurationResult struct {
	_ struct{} `type:"structure"`

	// The current configuration of Kubernetes audit logs as a data source for the
	// organization.
	//
	// AuditLogs is a required field
	AuditLogs *OrganizationKubernetesAuditLogsConfigurationResult `locationName:"auditLogs" 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 OrganizationKubernetesConfigurationResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationKubernetesConfigurationResult) GoString() string {
	return s.String()
}

// SetAuditLogs sets the AuditLogs field's value.
func (s *OrganizationKubernetesConfigurationResult) SetAuditLogs(v *OrganizationKubernetesAuditLogsConfigurationResult) *OrganizationKubernetesConfigurationResult {
	s.AuditLogs = v
	return s
}

// Organization-wide Malware Protection configurations.
type OrganizationMalwareProtectionConfiguration struct {
	_ struct{} `type:"structure"`

	// Whether Malware Protection for EC2 instances with findings should be auto-enabled
	// for new members joining the organization.
	ScanEc2InstanceWithFindings *OrganizationScanEc2InstanceWithFindings `locationName:"scanEc2InstanceWithFindings" 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 OrganizationMalwareProtectionConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationMalwareProtectionConfiguration) GoString() string {
	return s.String()
}

// SetScanEc2InstanceWithFindings sets the ScanEc2InstanceWithFindings field's value.
func (s *OrganizationMalwareProtectionConfiguration) SetScanEc2InstanceWithFindings(v *OrganizationScanEc2InstanceWithFindings) *OrganizationMalwareProtectionConfiguration {
	s.ScanEc2InstanceWithFindings = v
	return s
}

// An object that contains information on the status of all Malware Protection
// data source for an organization.
type OrganizationMalwareProtectionConfigurationResult struct {
	_ struct{} `type:"structure"`

	// Describes the configuration for scanning EC2 instances with findings for
	// an organization.
	ScanEc2InstanceWithFindings *OrganizationScanEc2InstanceWithFindingsResult `locationName:"scanEc2InstanceWithFindings" 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 OrganizationMalwareProtectionConfigurationResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationMalwareProtectionConfigurationResult) GoString() string {
	return s.String()
}

// SetScanEc2InstanceWithFindings sets the ScanEc2InstanceWithFindings field's value.
func (s *OrganizationMalwareProtectionConfigurationResult) SetScanEc2InstanceWithFindings(v *OrganizationScanEc2InstanceWithFindingsResult) *OrganizationMalwareProtectionConfigurationResult {
	s.ScanEc2InstanceWithFindings = v
	return s
}

// Describes whether S3 data event logs will be automatically enabled for new
// members of the organization.
type OrganizationS3LogsConfiguration struct {
	_ struct{} `type:"structure"`

	// A value that contains information on whether S3 data event logs will be enabled
	// automatically as a data source for the organization.
	//
	// AutoEnable is a required field
	AutoEnable *bool `locationName:"autoEnable" 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 OrganizationS3LogsConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationS3LogsConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *OrganizationS3LogsConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "OrganizationS3LogsConfiguration"}
	if s.AutoEnable == nil {
		invalidParams.Add(request.NewErrParamRequired("AutoEnable"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAutoEnable sets the AutoEnable field's value.
func (s *OrganizationS3LogsConfiguration) SetAutoEnable(v bool) *OrganizationS3LogsConfiguration {
	s.AutoEnable = &v
	return s
}

// The current configuration of S3 data event logs as a data source for the
// organization.
type OrganizationS3LogsConfigurationResult struct {
	_ struct{} `type:"structure"`

	// A value that describes whether S3 data event logs are automatically enabled
	// for new members of the organization.
	//
	// AutoEnable is a required field
	AutoEnable *bool `locationName:"autoEnable" 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 OrganizationS3LogsConfigurationResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationS3LogsConfigurationResult) GoString() string {
	return s.String()
}

// SetAutoEnable sets the AutoEnable field's value.
func (s *OrganizationS3LogsConfigurationResult) SetAutoEnable(v bool) *OrganizationS3LogsConfigurationResult {
	s.AutoEnable = &v
	return s
}

// Organization-wide EC2 instances with findings scan configuration.
type OrganizationScanEc2InstanceWithFindings struct {
	_ struct{} `type:"structure"`

	// Whether scanning EBS volumes should be auto-enabled for new members joining
	// the organization.
	EbsVolumes *OrganizationEbsVolumes `locationName:"ebsVolumes" 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 OrganizationScanEc2InstanceWithFindings) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationScanEc2InstanceWithFindings) GoString() string {
	return s.String()
}

// SetEbsVolumes sets the EbsVolumes field's value.
func (s *OrganizationScanEc2InstanceWithFindings) SetEbsVolumes(v *OrganizationEbsVolumes) *OrganizationScanEc2InstanceWithFindings {
	s.EbsVolumes = v
	return s
}

// An object that contains information on the status of scanning EC2 instances
// with findings for an organization.
type OrganizationScanEc2InstanceWithFindingsResult struct {
	_ struct{} `type:"structure"`

	// Describes the configuration for scanning EBS volumes for an organization.
	EbsVolumes *OrganizationEbsVolumesResult `locationName:"ebsVolumes" 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 OrganizationScanEc2InstanceWithFindingsResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationScanEc2InstanceWithFindingsResult) GoString() string {
	return s.String()
}

// SetEbsVolumes sets the EbsVolumes field's value.
func (s *OrganizationScanEc2InstanceWithFindingsResult) SetEbsVolumes(v *OrganizationEbsVolumesResult) *OrganizationScanEc2InstanceWithFindingsResult {
	s.EbsVolumes = v
	return s
}

// Information about the coverage statistics of the features for the entire
// Amazon Web Services organization.
//
// When you create a new Amazon Web Services organization, it might take up
// to 24 hours to generate the statistics summary for this organization.
type OrganizationStatistics struct {
	_ struct{} `type:"structure"`

	// Total number of active accounts in your Amazon Web Services organization
	// that are associated with GuardDuty.
	ActiveAccountsCount *int64 `locationName:"activeAccountsCount" type:"integer"`

	// Retrieves the coverage statistics for each feature.
	CountByFeature []*OrganizationFeatureStatistics `locationName:"countByFeature" type:"list"`

	// Total number of accounts that have enabled GuardDuty.
	EnabledAccountsCount *int64 `locationName:"enabledAccountsCount" type:"integer"`

	// Total number of accounts in your Amazon Web Services organization that are
	// associated with GuardDuty.
	MemberAccountsCount *int64 `locationName:"memberAccountsCount" type:"integer"`

	// Total number of accounts in your Amazon Web Services organization.
	TotalAccountsCount *int64 `locationName:"totalAccountsCount" 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 OrganizationStatistics) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OrganizationStatistics) GoString() string {
	return s.String()
}

// SetActiveAccountsCount sets the ActiveAccountsCount field's value.
func (s *OrganizationStatistics) SetActiveAccountsCount(v int64) *OrganizationStatistics {
	s.ActiveAccountsCount = &v
	return s
}

// SetCountByFeature sets the CountByFeature field's value.
func (s *OrganizationStatistics) SetCountByFeature(v []*OrganizationFeatureStatistics) *OrganizationStatistics {
	s.CountByFeature = v
	return s
}

// SetEnabledAccountsCount sets the EnabledAccountsCount field's value.
func (s *OrganizationStatistics) SetEnabledAccountsCount(v int64) *OrganizationStatistics {
	s.EnabledAccountsCount = &v
	return s
}

// SetMemberAccountsCount sets the MemberAccountsCount field's value.
func (s *OrganizationStatistics) SetMemberAccountsCount(v int64) *OrganizationStatistics {
	s.MemberAccountsCount = &v
	return s
}

// SetTotalAccountsCount sets the TotalAccountsCount field's value.
func (s *OrganizationStatistics) SetTotalAccountsCount(v int64) *OrganizationStatistics {
	s.TotalAccountsCount = &v
	return s
}

// Contains information on the owner of the bucket.
type Owner struct {
	_ struct{} `type:"structure"`

	// The canonical user ID of the bucket owner. For information about locating
	// your canonical user ID see Finding Your Account Canonical User ID. (https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html#FindingCanonicalId)
	Id *string `locationName:"id" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Owner) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Owner) GoString() string {
	return s.String()
}

// SetId sets the Id field's value.
func (s *Owner) SetId(v string) *Owner {
	s.Id = &v
	return s
}

// Contains information about how permissions are configured for the S3 bucket.
type PermissionConfiguration struct {
	_ struct{} `type:"structure"`

	// Contains information about the account level permissions on the S3 bucket.
	AccountLevelPermissions *AccountLevelPermissions `locationName:"accountLevelPermissions" type:"structure"`

	// Contains information about the bucket level permissions for the S3 bucket.
	BucketLevelPermissions *BucketLevelPermissions `locationName:"bucketLevelPermissions" 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 PermissionConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PermissionConfiguration) GoString() string {
	return s.String()
}

// SetAccountLevelPermissions sets the AccountLevelPermissions field's value.
func (s *PermissionConfiguration) SetAccountLevelPermissions(v *AccountLevelPermissions) *PermissionConfiguration {
	s.AccountLevelPermissions = v
	return s
}

// SetBucketLevelPermissions sets the BucketLevelPermissions field's value.
func (s *PermissionConfiguration) SetBucketLevelPermissions(v *BucketLevelPermissions) *PermissionConfiguration {
	s.BucketLevelPermissions = v
	return s
}

// Contains information about the PORT_PROBE action described in the finding.
type PortProbeAction struct {
	_ struct{} `type:"structure"`

	// Indicates whether EC2 blocked the port probe to the instance, such as with
	// an ACL.
	Blocked *bool `locationName:"blocked" type:"boolean"`

	// A list of objects related to port probe details.
	PortProbeDetails []*PortProbeDetail `locationName:"portProbeDetails" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PortProbeAction) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PortProbeAction) GoString() string {
	return s.String()
}

// SetBlocked sets the Blocked field's value.
func (s *PortProbeAction) SetBlocked(v bool) *PortProbeAction {
	s.Blocked = &v
	return s
}

// SetPortProbeDetails sets the PortProbeDetails field's value.
func (s *PortProbeAction) SetPortProbeDetails(v []*PortProbeDetail) *PortProbeAction {
	s.PortProbeDetails = v
	return s
}

// Contains information about the port probe details.
type PortProbeDetail struct {
	_ struct{} `type:"structure"`

	// The local IP information of the connection.
	LocalIpDetails *LocalIpDetails `locationName:"localIpDetails" type:"structure"`

	// The local port information of the connection.
	LocalPortDetails *LocalPortDetails `locationName:"localPortDetails" type:"structure"`

	// The remote IP information of the connection.
	RemoteIpDetails *RemoteIpDetails `locationName:"remoteIpDetails" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PortProbeDetail) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PortProbeDetail) GoString() string {
	return s.String()
}

// SetLocalIpDetails sets the LocalIpDetails field's value.
func (s *PortProbeDetail) SetLocalIpDetails(v *LocalIpDetails) *PortProbeDetail {
	s.LocalIpDetails = v
	return s
}

// SetLocalPortDetails sets the LocalPortDetails field's value.
func (s *PortProbeDetail) SetLocalPortDetails(v *LocalPortDetails) *PortProbeDetail {
	s.LocalPortDetails = v
	return s
}

// SetRemoteIpDetails sets the RemoteIpDetails field's value.
func (s *PortProbeDetail) SetRemoteIpDetails(v *RemoteIpDetails) *PortProbeDetail {
	s.RemoteIpDetails = v
	return s
}

// Contains other private IP address information of the EC2 instance.
type PrivateIpAddressDetails struct {
	_ struct{} `type:"structure"`

	// The private DNS name of the EC2 instance.
	PrivateDnsName *string `locationName:"privateDnsName" type:"string"`

	// The private IP address of the EC2 instance.
	PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PrivateIpAddressDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PrivateIpAddressDetails) GoString() string {
	return s.String()
}

// SetPrivateDnsName sets the PrivateDnsName field's value.
func (s *PrivateIpAddressDetails) SetPrivateDnsName(v string) *PrivateIpAddressDetails {
	s.PrivateDnsName = &v
	return s
}

// SetPrivateIpAddress sets the PrivateIpAddress field's value.
func (s *PrivateIpAddressDetails) SetPrivateIpAddress(v string) *PrivateIpAddressDetails {
	s.PrivateIpAddress = &v
	return s
}

// Information about the observed process.
type ProcessDetails struct {
	_ struct{} `type:"structure"`

	// The effective user ID of the user that executed the process.
	Euid *int64 `locationName:"euid" type:"integer"`

	// The absolute path of the process executable file.
	ExecutablePath *string `locationName:"executablePath" type:"string"`

	// The SHA256 hash of the process executable.
	ExecutableSha256 *string `locationName:"executableSha256" type:"string"`

	// Information about the process's lineage.
	Lineage []*LineageObject `locationName:"lineage" type:"list"`

	// The name of the process.
	Name *string `locationName:"name" type:"string"`

	// The ID of the child process.
	NamespacePid *int64 `locationName:"namespacePid" type:"integer"`

	// The unique ID of the parent process. This ID is assigned to the parent process
	// by GuardDuty.
	ParentUuid *string `locationName:"parentUuid" type:"string"`

	// The ID of the process.
	Pid *int64 `locationName:"pid" type:"integer"`

	// The present working directory of the process.
	Pwd *string `locationName:"pwd" type:"string"`

	// The time when the process started. This is in UTC format.
	StartTime *time.Time `locationName:"startTime" type:"timestamp"`

	// The user that executed the process.
	User *string `locationName:"user" type:"string"`

	// The unique ID of the user that executed the process.
	UserId *int64 `locationName:"userId" type:"integer"`

	// The unique ID assigned to the process by GuardDuty.
	Uuid *string `locationName:"uuid" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ProcessDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ProcessDetails) GoString() string {
	return s.String()
}

// SetEuid sets the Euid field's value.
func (s *ProcessDetails) SetEuid(v int64) *ProcessDetails {
	s.Euid = &v
	return s
}

// SetExecutablePath sets the ExecutablePath field's value.
func (s *ProcessDetails) SetExecutablePath(v string) *ProcessDetails {
	s.ExecutablePath = &v
	return s
}

// SetExecutableSha256 sets the ExecutableSha256 field's value.
func (s *ProcessDetails) SetExecutableSha256(v string) *ProcessDetails {
	s.ExecutableSha256 = &v
	return s
}

// SetLineage sets the Lineage field's value.
func (s *ProcessDetails) SetLineage(v []*LineageObject) *ProcessDetails {
	s.Lineage = v
	return s
}

// SetName sets the Name field's value.
func (s *ProcessDetails) SetName(v string) *ProcessDetails {
	s.Name = &v
	return s
}

// SetNamespacePid sets the NamespacePid field's value.
func (s *ProcessDetails) SetNamespacePid(v int64) *ProcessDetails {
	s.NamespacePid = &v
	return s
}

// SetParentUuid sets the ParentUuid field's value.
func (s *ProcessDetails) SetParentUuid(v string) *ProcessDetails {
	s.ParentUuid = &v
	return s
}

// SetPid sets the Pid field's value.
func (s *ProcessDetails) SetPid(v int64) *ProcessDetails {
	s.Pid = &v
	return s
}

// SetPwd sets the Pwd field's value.
func (s *ProcessDetails) SetPwd(v string) *ProcessDetails {
	s.Pwd = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *ProcessDetails) SetStartTime(v time.Time) *ProcessDetails {
	s.StartTime = &v
	return s
}

// SetUser sets the User field's value.
func (s *ProcessDetails) SetUser(v string) *ProcessDetails {
	s.User = &v
	return s
}

// SetUserId sets the UserId field's value.
func (s *ProcessDetails) SetUserId(v int64) *ProcessDetails {
	s.UserId = &v
	return s
}

// SetUuid sets the Uuid field's value.
func (s *ProcessDetails) SetUuid(v string) *ProcessDetails {
	s.Uuid = &v
	return s
}

// Contains information about the product code for the EC2 instance.
type ProductCode struct {
	_ struct{} `type:"structure"`

	// The product code information.
	Code *string `locationName:"productCodeId" type:"string"`

	// The product code type.
	ProductType *string `locationName:"productCodeType" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ProductCode) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ProductCode) GoString() string {
	return s.String()
}

// SetCode sets the Code field's value.
func (s *ProductCode) SetCode(v string) *ProductCode {
	s.Code = &v
	return s
}

// SetProductType sets the ProductType field's value.
func (s *ProductCode) SetProductType(v string) *ProductCode {
	s.ProductType = &v
	return s
}

// Describes the public access policies that apply to the S3 bucket.
type PublicAccess struct {
	_ struct{} `type:"structure"`

	// Describes the effective permission on this bucket after factoring all attached
	// policies.
	EffectivePermission *string `locationName:"effectivePermission" type:"string"`

	// Contains information about how permissions are configured for the S3 bucket.
	PermissionConfiguration *PermissionConfiguration `locationName:"permissionConfiguration" 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 PublicAccess) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PublicAccess) GoString() string {
	return s.String()
}

// SetEffectivePermission sets the EffectivePermission field's value.
func (s *PublicAccess) SetEffectivePermission(v string) *PublicAccess {
	s.EffectivePermission = &v
	return s
}

// SetPermissionConfiguration sets the PermissionConfiguration field's value.
func (s *PublicAccess) SetPermissionConfiguration(v *PermissionConfiguration) *PublicAccess {
	s.PermissionConfiguration = v
	return s
}

// Contains information about the resource type RDSDBInstance involved in a
// GuardDuty finding.
type RdsDbInstanceDetails struct {
	_ struct{} `type:"structure"`

	// The identifier of the database cluster that contains the database instance
	// ID involved in the finding.
	DbClusterIdentifier *string `locationName:"dbClusterIdentifier" type:"string"`

	// The Amazon Resource Name (ARN) that identifies the database instance involved
	// in the finding.
	DbInstanceArn *string `locationName:"dbInstanceArn" type:"string"`

	// The identifier associated to the database instance that was involved in the
	// finding.
	DbInstanceIdentifier *string `locationName:"dbInstanceIdentifier" type:"string"`

	// The database engine of the database instance involved in the finding.
	Engine *string `locationName:"engine" type:"string"`

	// The version of the database engine that was involved in the finding.
	EngineVersion *string `locationName:"engineVersion" type:"string"`

	// Instance tag key-value pairs associated with the database instance ID.
	Tags []*Tag `locationName:"tags" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RdsDbInstanceDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RdsDbInstanceDetails) GoString() string {
	return s.String()
}

// SetDbClusterIdentifier sets the DbClusterIdentifier field's value.
func (s *RdsDbInstanceDetails) SetDbClusterIdentifier(v string) *RdsDbInstanceDetails {
	s.DbClusterIdentifier = &v
	return s
}

// SetDbInstanceArn sets the DbInstanceArn field's value.
func (s *RdsDbInstanceDetails) SetDbInstanceArn(v string) *RdsDbInstanceDetails {
	s.DbInstanceArn = &v
	return s
}

// SetDbInstanceIdentifier sets the DbInstanceIdentifier field's value.
func (s *RdsDbInstanceDetails) SetDbInstanceIdentifier(v string) *RdsDbInstanceDetails {
	s.DbInstanceIdentifier = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *RdsDbInstanceDetails) SetEngine(v string) *RdsDbInstanceDetails {
	s.Engine = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *RdsDbInstanceDetails) SetEngineVersion(v string) *RdsDbInstanceDetails {
	s.EngineVersion = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *RdsDbInstanceDetails) SetTags(v []*Tag) *RdsDbInstanceDetails {
	s.Tags = v
	return s
}

// Contains information about the user and authentication details for a database
// instance involved in the finding.
type RdsDbUserDetails struct {
	_ struct{} `type:"structure"`

	// The application name used in the anomalous login attempt.
	Application *string `locationName:"application" type:"string"`

	// The authentication method used by the user involved in the finding.
	AuthMethod *string `locationName:"authMethod" type:"string"`

	// The name of the database instance involved in the anomalous login attempt.
	Database *string `locationName:"database" type:"string"`

	// The version of the Secure Socket Layer (SSL) used for the network.
	Ssl *string `locationName:"ssl" type:"string"`

	// The user name used in the anomalous login attempt.
	User *string `locationName:"user" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RdsDbUserDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RdsDbUserDetails) GoString() string {
	return s.String()
}

// SetApplication sets the Application field's value.
func (s *RdsDbUserDetails) SetApplication(v string) *RdsDbUserDetails {
	s.Application = &v
	return s
}

// SetAuthMethod sets the AuthMethod field's value.
func (s *RdsDbUserDetails) SetAuthMethod(v string) *RdsDbUserDetails {
	s.AuthMethod = &v
	return s
}

// SetDatabase sets the Database field's value.
func (s *RdsDbUserDetails) SetDatabase(v string) *RdsDbUserDetails {
	s.Database = &v
	return s
}

// SetSsl sets the Ssl field's value.
func (s *RdsDbUserDetails) SetSsl(v string) *RdsDbUserDetails {
	s.Ssl = &v
	return s
}

// SetUser sets the User field's value.
func (s *RdsDbUserDetails) SetUser(v string) *RdsDbUserDetails {
	s.User = &v
	return s
}

// Indicates that a login attempt was made to the potentially compromised database
// from a remote IP address.
type RdsLoginAttemptAction struct {
	_ struct{} `type:"structure"`

	// Indicates the login attributes used in the login attempt.
	LoginAttributes []*LoginAttribute `type:"list"`

	// Contains information about the remote IP address of the connection.
	RemoteIpDetails *RemoteIpDetails `locationName:"remoteIpDetails" 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 RdsLoginAttemptAction) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RdsLoginAttemptAction) GoString() string {
	return s.String()
}

// SetLoginAttributes sets the LoginAttributes field's value.
func (s *RdsLoginAttemptAction) SetLoginAttributes(v []*LoginAttribute) *RdsLoginAttemptAction {
	s.LoginAttributes = v
	return s
}

// SetRemoteIpDetails sets the RemoteIpDetails field's value.
func (s *RdsLoginAttemptAction) SetRemoteIpDetails(v *RemoteIpDetails) *RdsLoginAttemptAction {
	s.RemoteIpDetails = v
	return s
}

// Contains details about the remote Amazon Web Services account that made the
// API call.
type RemoteAccountDetails struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID of the remote API caller.
	AccountId *string `locationName:"accountId" type:"string"`

	// Details on whether the Amazon Web Services account of the remote API caller
	// is related to your GuardDuty environment. If this value is True the API caller
	// is affiliated to your account in some way. If it is False the API caller
	// is from outside your environment.
	Affiliated *bool `locationName:"affiliated" 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 RemoteAccountDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RemoteAccountDetails) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *RemoteAccountDetails) SetAccountId(v string) *RemoteAccountDetails {
	s.AccountId = &v
	return s
}

// SetAffiliated sets the Affiliated field's value.
func (s *RemoteAccountDetails) SetAffiliated(v bool) *RemoteAccountDetails {
	s.Affiliated = &v
	return s
}

// Contains information about the remote IP address of the connection.
type RemoteIpDetails struct {
	_ struct{} `type:"structure"`

	// The city information of the remote IP address.
	City *City `locationName:"city" type:"structure"`

	// The country code of the remote IP address.
	Country *Country `locationName:"country" type:"structure"`

	// The location information of the remote IP address.
	GeoLocation *GeoLocation `locationName:"geoLocation" type:"structure"`

	// The IPv4 remote address of the connection.
	IpAddressV4 *string `locationName:"ipAddressV4" type:"string"`

	// The ISP organization information of the remote IP address.
	Organization *Organization `locationName:"organization" 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 RemoteIpDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RemoteIpDetails) GoString() string {
	return s.String()
}

// SetCity sets the City field's value.
func (s *RemoteIpDetails) SetCity(v *City) *RemoteIpDetails {
	s.City = v
	return s
}

// SetCountry sets the Country field's value.
func (s *RemoteIpDetails) SetCountry(v *Country) *RemoteIpDetails {
	s.Country = v
	return s
}

// SetGeoLocation sets the GeoLocation field's value.
func (s *RemoteIpDetails) SetGeoLocation(v *GeoLocation) *RemoteIpDetails {
	s.GeoLocation = v
	return s
}

// SetIpAddressV4 sets the IpAddressV4 field's value.
func (s *RemoteIpDetails) SetIpAddressV4(v string) *RemoteIpDetails {
	s.IpAddressV4 = &v
	return s
}

// SetOrganization sets the Organization field's value.
func (s *RemoteIpDetails) SetOrganization(v *Organization) *RemoteIpDetails {
	s.Organization = v
	return s
}

// Contains information about the remote port.
type RemotePortDetails struct {
	_ struct{} `type:"structure"`

	// The port number of the remote connection.
	Port *int64 `locationName:"port" type:"integer"`

	// The port name of the remote connection.
	PortName *string `locationName:"portName" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RemotePortDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RemotePortDetails) GoString() string {
	return s.String()
}

// SetPort sets the Port field's value.
func (s *RemotePortDetails) SetPort(v int64) *RemotePortDetails {
	s.Port = &v
	return s
}

// SetPortName sets the PortName field's value.
func (s *RemotePortDetails) SetPortName(v string) *RemotePortDetails {
	s.PortName = &v
	return s
}

// Contains information about the Amazon Web Services resource associated with
// the activity that prompted GuardDuty to generate a finding.
type Resource struct {
	_ struct{} `type:"structure"`

	// The IAM access key details (user information) of a user that engaged in the
	// activity that prompted GuardDuty to generate a finding.
	AccessKeyDetails *AccessKeyDetails `locationName:"accessKeyDetails" type:"structure"`

	// Details of a container.
	ContainerDetails *Container `locationName:"containerDetails" type:"structure"`

	// Contains list of scanned and skipped EBS volumes with details.
	EbsVolumeDetails *EbsVolumeDetails `locationName:"ebsVolumeDetails" type:"structure"`

	// Contains information about the details of the ECS Cluster.
	EcsClusterDetails *EcsClusterDetails `locationName:"ecsClusterDetails" type:"structure"`

	// Details about the EKS cluster involved in a Kubernetes finding.
	EksClusterDetails *EksClusterDetails `locationName:"eksClusterDetails" type:"structure"`

	// The information about the EC2 instance associated with the activity that
	// prompted GuardDuty to generate a finding.
	InstanceDetails *InstanceDetails `locationName:"instanceDetails" type:"structure"`

	// Details about the Kubernetes user and workload involved in a Kubernetes finding.
	KubernetesDetails *KubernetesDetails `locationName:"kubernetesDetails" type:"structure"`

	// Contains information about the Lambda function that was involved in a finding.
	LambdaDetails *LambdaDetails `locationName:"lambdaDetails" type:"structure"`

	// Contains information about the database instance to which an anomalous login
	// attempt was made.
	RdsDbInstanceDetails *RdsDbInstanceDetails `locationName:"rdsDbInstanceDetails" type:"structure"`

	// Contains information about the user details through which anomalous login
	// attempt was made.
	RdsDbUserDetails *RdsDbUserDetails `locationName:"rdsDbUserDetails" type:"structure"`

	// The type of Amazon Web Services resource.
	ResourceType *string `locationName:"resourceType" type:"string"`

	// Contains information on the S3 bucket.
	S3BucketDetails []*S3BucketDetail `locationName:"s3BucketDetails" 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 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()
}

// SetAccessKeyDetails sets the AccessKeyDetails field's value.
func (s *Resource) SetAccessKeyDetails(v *AccessKeyDetails) *Resource {
	s.AccessKeyDetails = v
	return s
}

// SetContainerDetails sets the ContainerDetails field's value.
func (s *Resource) SetContainerDetails(v *Container) *Resource {
	s.ContainerDetails = v
	return s
}

// SetEbsVolumeDetails sets the EbsVolumeDetails field's value.
func (s *Resource) SetEbsVolumeDetails(v *EbsVolumeDetails) *Resource {
	s.EbsVolumeDetails = v
	return s
}

// SetEcsClusterDetails sets the EcsClusterDetails field's value.
func (s *Resource) SetEcsClusterDetails(v *EcsClusterDetails) *Resource {
	s.EcsClusterDetails = v
	return s
}

// SetEksClusterDetails sets the EksClusterDetails field's value.
func (s *Resource) SetEksClusterDetails(v *EksClusterDetails) *Resource {
	s.EksClusterDetails = v
	return s
}

// SetInstanceDetails sets the InstanceDetails field's value.
func (s *Resource) SetInstanceDetails(v *InstanceDetails) *Resource {
	s.InstanceDetails = v
	return s
}

// SetKubernetesDetails sets the KubernetesDetails field's value.
func (s *Resource) SetKubernetesDetails(v *KubernetesDetails) *Resource {
	s.KubernetesDetails = v
	return s
}

// SetLambdaDetails sets the LambdaDetails field's value.
func (s *Resource) SetLambdaDetails(v *LambdaDetails) *Resource {
	s.LambdaDetails = v
	return s
}

// SetRdsDbInstanceDetails sets the RdsDbInstanceDetails field's value.
func (s *Resource) SetRdsDbInstanceDetails(v *RdsDbInstanceDetails) *Resource {
	s.RdsDbInstanceDetails = v
	return s
}

// SetRdsDbUserDetails sets the RdsDbUserDetails field's value.
func (s *Resource) SetRdsDbUserDetails(v *RdsDbUserDetails) *Resource {
	s.RdsDbUserDetails = v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *Resource) SetResourceType(v string) *Resource {
	s.ResourceType = &v
	return s
}

// SetS3BucketDetails sets the S3BucketDetails field's value.
func (s *Resource) SetS3BucketDetails(v []*S3BucketDetail) *Resource {
	s.S3BucketDetails = v
	return s
}

// Represents the resources that were scanned in the scan entry.
type ResourceDetails struct {
	_ struct{} `type:"structure"`

	// InstanceArn that was scanned in the scan entry.
	InstanceArn *string `locationName:"instanceArn" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API 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()
}

// SetInstanceArn sets the InstanceArn field's value.
func (s *ResourceDetails) SetInstanceArn(v string) *ResourceDetails {
	s.InstanceArn = &v
	return s
}

// Additional information about the suspicious activity.
type RuntimeContext struct {
	_ struct{} `type:"structure"`

	// Represents the communication protocol associated with the address. For example,
	// the address family AF_INET is used for IP version of 4 protocol.
	AddressFamily *string `locationName:"addressFamily" type:"string"`

	// Represents the type of mounted fileSystem.
	FileSystemType *string `locationName:"fileSystemType" type:"string"`

	// Represents options that control the behavior of a runtime operation or action.
	// For example, a filesystem mount operation may contain a read-only flag.
	Flags []*string `locationName:"flags" type:"list"`

	// Specifies a particular protocol within the address family. Usually there
	// is a single protocol in address families. For example, the address family
	// AF_INET only has the IP protocol.
	IanaProtocolNumber *int64 `locationName:"ianaProtocolNumber" type:"integer"`

	// The value of the LD_PRELOAD environment variable.
	LdPreloadValue *string `locationName:"ldPreloadValue" type:"string"`

	// The path to the new library that was loaded.
	LibraryPath *string `locationName:"libraryPath" type:"string"`

	// Specifies the Region of a process's address space such as stack and heap.
	MemoryRegions []*string `locationName:"memoryRegions" type:"list"`

	// The timestamp at which the process modified the current process. The timestamp
	// is in UTC date string format.
	ModifiedAt *time.Time `locationName:"modifiedAt" type:"timestamp"`

	// Information about the process that modified the current process. This is
	// available for multiple finding types.
	ModifyingProcess *ProcessDetails `locationName:"modifyingProcess" type:"structure"`

	// The path to the module loaded into the kernel.
	ModuleFilePath *string `locationName:"moduleFilePath" type:"string"`

	// The name of the module loaded into the kernel.
	ModuleName *string `locationName:"moduleName" type:"string"`

	// The SHA256 hash of the module.
	ModuleSha256 *string `locationName:"moduleSha256" type:"string"`

	// The path on the host that is mounted by the container.
	MountSource *string `locationName:"mountSource" type:"string"`

	// The path in the container that is mapped to the host directory.
	MountTarget *string `locationName:"mountTarget" type:"string"`

	// The path in the container that modified the release agent file.
	ReleaseAgentPath *string `locationName:"releaseAgentPath" type:"string"`

	// The path to the leveraged runc implementation.
	RuncBinaryPath *string `locationName:"runcBinaryPath" type:"string"`

	// The path to the script that was executed.
	ScriptPath *string `locationName:"scriptPath" type:"string"`

	// The path to the modified shell history file.
	ShellHistoryFilePath *string `locationName:"shellHistoryFilePath" type:"string"`

	// The path to the docket socket that was accessed.
	SocketPath *string `locationName:"socketPath" type:"string"`

	// Information about the process that had its memory overwritten by the current
	// process.
	TargetProcess *ProcessDetails `locationName:"targetProcess" 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 RuntimeContext) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuntimeContext) GoString() string {
	return s.String()
}

// SetAddressFamily sets the AddressFamily field's value.
func (s *RuntimeContext) SetAddressFamily(v string) *RuntimeContext {
	s.AddressFamily = &v
	return s
}

// SetFileSystemType sets the FileSystemType field's value.
func (s *RuntimeContext) SetFileSystemType(v string) *RuntimeContext {
	s.FileSystemType = &v
	return s
}

// SetFlags sets the Flags field's value.
func (s *RuntimeContext) SetFlags(v []*string) *RuntimeContext {
	s.Flags = v
	return s
}

// SetIanaProtocolNumber sets the IanaProtocolNumber field's value.
func (s *RuntimeContext) SetIanaProtocolNumber(v int64) *RuntimeContext {
	s.IanaProtocolNumber = &v
	return s
}

// SetLdPreloadValue sets the LdPreloadValue field's value.
func (s *RuntimeContext) SetLdPreloadValue(v string) *RuntimeContext {
	s.LdPreloadValue = &v
	return s
}

// SetLibraryPath sets the LibraryPath field's value.
func (s *RuntimeContext) SetLibraryPath(v string) *RuntimeContext {
	s.LibraryPath = &v
	return s
}

// SetMemoryRegions sets the MemoryRegions field's value.
func (s *RuntimeContext) SetMemoryRegions(v []*string) *RuntimeContext {
	s.MemoryRegions = v
	return s
}

// SetModifiedAt sets the ModifiedAt field's value.
func (s *RuntimeContext) SetModifiedAt(v time.Time) *RuntimeContext {
	s.ModifiedAt = &v
	return s
}

// SetModifyingProcess sets the ModifyingProcess field's value.
func (s *RuntimeContext) SetModifyingProcess(v *ProcessDetails) *RuntimeContext {
	s.ModifyingProcess = v
	return s
}

// SetModuleFilePath sets the ModuleFilePath field's value.
func (s *RuntimeContext) SetModuleFilePath(v string) *RuntimeContext {
	s.ModuleFilePath = &v
	return s
}

// SetModuleName sets the ModuleName field's value.
func (s *RuntimeContext) SetModuleName(v string) *RuntimeContext {
	s.ModuleName = &v
	return s
}

// SetModuleSha256 sets the ModuleSha256 field's value.
func (s *RuntimeContext) SetModuleSha256(v string) *RuntimeContext {
	s.ModuleSha256 = &v
	return s
}

// SetMountSource sets the MountSource field's value.
func (s *RuntimeContext) SetMountSource(v string) *RuntimeContext {
	s.MountSource = &v
	return s
}

// SetMountTarget sets the MountTarget field's value.
func (s *RuntimeContext) SetMountTarget(v string) *RuntimeContext {
	s.MountTarget = &v
	return s
}

// SetReleaseAgentPath sets the ReleaseAgentPath field's value.
func (s *RuntimeContext) SetReleaseAgentPath(v string) *RuntimeContext {
	s.ReleaseAgentPath = &v
	return s
}

// SetRuncBinaryPath sets the RuncBinaryPath field's value.
func (s *RuntimeContext) SetRuncBinaryPath(v string) *RuntimeContext {
	s.RuncBinaryPath = &v
	return s
}

// SetScriptPath sets the ScriptPath field's value.
func (s *RuntimeContext) SetScriptPath(v string) *RuntimeContext {
	s.ScriptPath = &v
	return s
}

// SetShellHistoryFilePath sets the ShellHistoryFilePath field's value.
func (s *RuntimeContext) SetShellHistoryFilePath(v string) *RuntimeContext {
	s.ShellHistoryFilePath = &v
	return s
}

// SetSocketPath sets the SocketPath field's value.
func (s *RuntimeContext) SetSocketPath(v string) *RuntimeContext {
	s.SocketPath = &v
	return s
}

// SetTargetProcess sets the TargetProcess field's value.
func (s *RuntimeContext) SetTargetProcess(v *ProcessDetails) *RuntimeContext {
	s.TargetProcess = v
	return s
}

// Information about the process and any required context values for a specific
// finding.
type RuntimeDetails struct {
	_ struct{} `type:"structure"`

	// Additional information about the suspicious activity.
	Context *RuntimeContext `locationName:"context" type:"structure"`

	// Information about the observed process.
	Process *ProcessDetails `locationName:"process" 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 RuntimeDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuntimeDetails) GoString() string {
	return s.String()
}

// SetContext sets the Context field's value.
func (s *RuntimeDetails) SetContext(v *RuntimeContext) *RuntimeDetails {
	s.Context = v
	return s
}

// SetProcess sets the Process field's value.
func (s *RuntimeDetails) SetProcess(v *ProcessDetails) *RuntimeDetails {
	s.Process = v
	return s
}

// Contains information on the S3 bucket.
type S3BucketDetail struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the S3 bucket.
	Arn *string `locationName:"arn" type:"string"`

	// The date and time the bucket was created at.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// Describes the server side encryption method used in the S3 bucket.
	DefaultServerSideEncryption *DefaultServerSideEncryption `locationName:"defaultServerSideEncryption" type:"structure"`

	// The name of the S3 bucket.
	Name *string `locationName:"name" type:"string"`

	// The owner of the S3 bucket.
	Owner *Owner `locationName:"owner" type:"structure"`

	// Describes the public access policies that apply to the S3 bucket.
	PublicAccess *PublicAccess `locationName:"publicAccess" type:"structure"`

	// All tags attached to the S3 bucket
	Tags []*Tag `locationName:"tags" type:"list"`

	// Describes whether the bucket is a source or destination bucket.
	Type *string `locationName:"type" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3BucketDetail) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3BucketDetail) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *S3BucketDetail) SetArn(v string) *S3BucketDetail {
	s.Arn = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *S3BucketDetail) SetCreatedAt(v time.Time) *S3BucketDetail {
	s.CreatedAt = &v
	return s
}

// SetDefaultServerSideEncryption sets the DefaultServerSideEncryption field's value.
func (s *S3BucketDetail) SetDefaultServerSideEncryption(v *DefaultServerSideEncryption) *S3BucketDetail {
	s.DefaultServerSideEncryption = v
	return s
}

// SetName sets the Name field's value.
func (s *S3BucketDetail) SetName(v string) *S3BucketDetail {
	s.Name = &v
	return s
}

// SetOwner sets the Owner field's value.
func (s *S3BucketDetail) SetOwner(v *Owner) *S3BucketDetail {
	s.Owner = v
	return s
}

// SetPublicAccess sets the PublicAccess field's value.
func (s *S3BucketDetail) SetPublicAccess(v *PublicAccess) *S3BucketDetail {
	s.PublicAccess = v
	return s
}

// SetTags sets the Tags field's value.
func (s *S3BucketDetail) SetTags(v []*Tag) *S3BucketDetail {
	s.Tags = v
	return s
}

// SetType sets the Type field's value.
func (s *S3BucketDetail) SetType(v string) *S3BucketDetail {
	s.Type = &v
	return s
}

// Describes whether S3 data event logs will be enabled as a data source.
type S3LogsConfiguration struct {
	_ struct{} `type:"structure"`

	// The status of S3 data event logs as a data source.
	//
	// Enable is a required field
	Enable *bool `locationName:"enable" 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 S3LogsConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3LogsConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3LogsConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3LogsConfiguration"}
	if s.Enable == nil {
		invalidParams.Add(request.NewErrParamRequired("Enable"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEnable sets the Enable field's value.
func (s *S3LogsConfiguration) SetEnable(v bool) *S3LogsConfiguration {
	s.Enable = &v
	return s
}

// Describes whether S3 data event logs will be enabled as a data source.
type S3LogsConfigurationResult struct {
	_ struct{} `type:"structure"`

	// A value that describes whether S3 data event logs are automatically enabled
	// for new members of the organization.
	//
	// Status is a required field
	Status *string `locationName:"status" min:"1" type:"string" required:"true" enum:"DataSourceStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3LogsConfigurationResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3LogsConfigurationResult) GoString() string {
	return s.String()
}

// SetStatus sets the Status field's value.
func (s *S3LogsConfigurationResult) SetStatus(v string) *S3LogsConfigurationResult {
	s.Status = &v
	return s
}

// Contains information about a malware scan.
type Scan struct {
	_ struct{} `type:"structure"`

	// The ID for the account that belongs to the scan.
	AccountId *string `locationName:"accountId" min:"12" type:"string"`

	// The unique detector ID of the administrator account that the request is associated
	// with. Note that this value will be the same as the one used for DetectorId
	// if the account is an administrator.
	AdminDetectorId *string `locationName:"adminDetectorId" min:"1" type:"string"`

	// List of volumes that were attached to the original instance to be scanned.
	AttachedVolumes []*VolumeDetail `locationName:"attachedVolumes" type:"list"`

	// The unique ID of the detector that the request is associated with.
	DetectorId *string `locationName:"detectorId" min:"1" type:"string"`

	// Represents the reason for FAILED scan status.
	FailureReason *string `locationName:"failureReason" min:"1" type:"string"`

	// Represents the number of files that were scanned.
	FileCount *int64 `locationName:"fileCount" type:"long"`

	// Represents the resources that were scanned in the scan entry.
	ResourceDetails *ResourceDetails `locationName:"resourceDetails" type:"structure"`

	// The timestamp of when the scan was finished.
	ScanEndTime *time.Time `locationName:"scanEndTime" type:"timestamp"`

	// The unique scan ID associated with a scan entry.
	ScanId *string `locationName:"scanId" min:"1" type:"string"`

	// Represents the result of the scan.
	ScanResultDetails *ScanResultDetails `locationName:"scanResultDetails" type:"structure"`

	// The timestamp of when the scan was triggered.
	ScanStartTime *time.Time `locationName:"scanStartTime" type:"timestamp"`

	// An enum value representing possible scan statuses.
	ScanStatus *string `locationName:"scanStatus" type:"string" enum:"ScanStatus"`

	// Specifies the scan type that invoked the malware scan.
	ScanType *string `locationName:"scanType" type:"string" enum:"ScanType"`

	// Represents total bytes that were scanned.
	TotalBytes *int64 `locationName:"totalBytes" type:"long"`

	// Specifies the reason why the scan was initiated.
	TriggerDetails *TriggerDetails `locationName:"triggerDetails" 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 Scan) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Scan) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *Scan) SetAccountId(v string) *Scan {
	s.AccountId = &v
	return s
}

// SetAdminDetectorId sets the AdminDetectorId field's value.
func (s *Scan) SetAdminDetectorId(v string) *Scan {
	s.AdminDetectorId = &v
	return s
}

// SetAttachedVolumes sets the AttachedVolumes field's value.
func (s *Scan) SetAttachedVolumes(v []*VolumeDetail) *Scan {
	s.AttachedVolumes = v
	return s
}

// SetDetectorId sets the DetectorId field's value.
func (s *Scan) SetDetectorId(v string) *Scan {
	s.DetectorId = &v
	return s
}

// SetFailureReason sets the FailureReason field's value.
func (s *Scan) SetFailureReason(v string) *Scan {
	s.FailureReason = &v
	return s
}

// SetFileCount sets the FileCount field's value.
func (s *Scan) SetFileCount(v int64) *Scan {
	s.FileCount = &v
	return s
}

// SetResourceDetails sets the ResourceDetails field's value.
func (s *Scan) SetResourceDetails(v *ResourceDetails) *Scan {
	s.ResourceDetails = v
	return s
}

// SetScanEndTime sets the ScanEndTime field's value.
func (s *Scan) SetScanEndTime(v time.Time) *Scan {
	s.ScanEndTime = &v
	return s
}

// SetScanId sets the ScanId field's value.
func (s *Scan) SetScanId(v string) *Scan {
	s.ScanId = &v
	return s
}

// SetScanResultDetails sets the ScanResultDetails field's value.
func (s *Scan) SetScanResultDetails(v *ScanResultDetails) *Scan {
	s.ScanResultDetails = v
	return s
}

// SetScanStartTime sets the ScanStartTime field's value.
func (s *Scan) SetScanStartTime(v time.Time) *Scan {
	s.ScanStartTime = &v
	return s
}

// SetScanStatus sets the ScanStatus field's value.
func (s *Scan) SetScanStatus(v string) *Scan {
	s.ScanStatus = &v
	return s
}

// SetScanType sets the ScanType field's value.
func (s *Scan) SetScanType(v string) *Scan {
	s.ScanType = &v
	return s
}

// SetTotalBytes sets the TotalBytes field's value.
func (s *Scan) SetTotalBytes(v int64) *Scan {
	s.TotalBytes = &v
	return s
}

// SetTriggerDetails sets the TriggerDetails field's value.
func (s *Scan) SetTriggerDetails(v *TriggerDetails) *Scan {
	s.TriggerDetails = v
	return s
}

// Contains information about the condition.
type ScanCondition struct {
	_ struct{} `type:"structure"`

	// Represents an mapEqual condition to be applied to a single field when triggering
	// for malware scan.
	//
	// MapEquals is a required field
	MapEquals []*ScanConditionPair `locationName:"mapEquals" 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 ScanCondition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ScanCondition) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ScanCondition) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ScanCondition"}
	if s.MapEquals == nil {
		invalidParams.Add(request.NewErrParamRequired("MapEquals"))
	}
	if s.MapEquals != nil {
		for i, v := range s.MapEquals {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "MapEquals", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMapEquals sets the MapEquals field's value.
func (s *ScanCondition) SetMapEquals(v []*ScanConditionPair) *ScanCondition {
	s.MapEquals = v
	return s
}

// Represents the key:value pair to be matched against given resource property.
type ScanConditionPair struct {
	_ struct{} `type:"structure"`

	// Represents the key in the map condition.
	//
	// Key is a required field
	Key *string `locationName:"key" min:"1" type:"string" required:"true"`

	// Represents optional value in the map condition. If not specified, only the
	// key will be matched.
	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 ScanConditionPair) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ScanConditionPair) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ScanConditionPair) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ScanConditionPair"}
	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
}

// SetKey sets the Key field's value.
func (s *ScanConditionPair) SetKey(v string) *ScanConditionPair {
	s.Key = &v
	return s
}

// SetValue sets the Value field's value.
func (s *ScanConditionPair) SetValue(v string) *ScanConditionPair {
	s.Value = &v
	return s
}

// Contains a complete view providing malware scan result details.
type ScanDetections struct {
	_ struct{} `type:"structure"`

	// Details of the highest severity threat detected during malware scan and number
	// of infected files.
	HighestSeverityThreatDetails *HighestSeverityThreatDetails `locationName:"highestSeverityThreatDetails" type:"structure"`

	// Total number of scanned files.
	ScannedItemCount *ScannedItemCount `locationName:"scannedItemCount" type:"structure"`

	// Contains details about identified threats organized by threat name.
	ThreatDetectedByName *ThreatDetectedByName `locationName:"threatDetectedByName" type:"structure"`

	// Total number of infected files.
	ThreatsDetectedItemCount *ThreatsDetectedItemCount `locationName:"threatsDetectedItemCount" 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 ScanDetections) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ScanDetections) GoString() string {
	return s.String()
}

// SetHighestSeverityThreatDetails sets the HighestSeverityThreatDetails field's value.
func (s *ScanDetections) SetHighestSeverityThreatDetails(v *HighestSeverityThreatDetails) *ScanDetections {
	s.HighestSeverityThreatDetails = v
	return s
}

// SetScannedItemCount sets the ScannedItemCount field's value.
func (s *ScanDetections) SetScannedItemCount(v *ScannedItemCount) *ScanDetections {
	s.ScannedItemCount = v
	return s
}

// SetThreatDetectedByName sets the ThreatDetectedByName field's value.
func (s *ScanDetections) SetThreatDetectedByName(v *ThreatDetectedByName) *ScanDetections {
	s.ThreatDetectedByName = v
	return s
}

// SetThreatsDetectedItemCount sets the ThreatsDetectedItemCount field's value.
func (s *ScanDetections) SetThreatsDetectedItemCount(v *ThreatsDetectedItemCount) *ScanDetections {
	s.ThreatsDetectedItemCount = v
	return s
}

// Describes whether Malware Protection for EC2 instances with findings will
// be enabled as a data source.
type ScanEc2InstanceWithFindings struct {
	_ struct{} `type:"structure"`

	// Describes the configuration for scanning EBS volumes as data source.
	EbsVolumes *bool `locationName:"ebsVolumes" 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 ScanEc2InstanceWithFindings) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ScanEc2InstanceWithFindings) GoString() string {
	return s.String()
}

// SetEbsVolumes sets the EbsVolumes field's value.
func (s *ScanEc2InstanceWithFindings) SetEbsVolumes(v bool) *ScanEc2InstanceWithFindings {
	s.EbsVolumes = &v
	return s
}

// An object that contains information on the status of whether Malware Protection
// for EC2 instances with findings will be enabled as a data source.
type ScanEc2InstanceWithFindingsResult struct {
	_ struct{} `type:"structure"`

	// Describes the configuration of scanning EBS volumes as a data source.
	EbsVolumes *EbsVolumesResult `locationName:"ebsVolumes" 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 ScanEc2InstanceWithFindingsResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ScanEc2InstanceWithFindingsResult) GoString() string {
	return s.String()
}

// SetEbsVolumes sets the EbsVolumes field's value.
func (s *ScanEc2InstanceWithFindingsResult) SetEbsVolumes(v *EbsVolumesResult) *ScanEc2InstanceWithFindingsResult {
	s.EbsVolumes = v
	return s
}

// Contains details of infected file including name, file path and hash.
type ScanFilePath struct {
	_ struct{} `type:"structure"`

	// File name of the infected file.
	FileName *string `locationName:"fileName" type:"string"`

	// The file path of the infected file.
	FilePath *string `locationName:"filePath" type:"string"`

	// The hash value of the infected file.
	Hash *string `locationName:"hash" type:"string"`

	// EBS volume Arn details of the infected file.
	VolumeArn *string `locationName:"volumeArn" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ScanFilePath) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ScanFilePath) GoString() string {
	return s.String()
}

// SetFileName sets the FileName field's value.
func (s *ScanFilePath) SetFileName(v string) *ScanFilePath {
	s.FileName = &v
	return s
}

// SetFilePath sets the FilePath field's value.
func (s *ScanFilePath) SetFilePath(v string) *ScanFilePath {
	s.FilePath = &v
	return s
}

// SetHash sets the Hash field's value.
func (s *ScanFilePath) SetHash(v string) *ScanFilePath {
	s.Hash = &v
	return s
}

// SetVolumeArn sets the VolumeArn field's value.
func (s *ScanFilePath) SetVolumeArn(v string) *ScanFilePath {
	s.VolumeArn = &v
	return s
}

// Contains information about criteria used to filter resources before triggering
// malware scan.
type ScanResourceCriteria struct {
	_ struct{} `type:"structure"`

	// Represents condition that when matched will prevent a malware scan for a
	// certain resource.
	Exclude map[string]*ScanCondition `locationName:"exclude" type:"map"`

	// Represents condition that when matched will allow a malware scan for a certain
	// resource.
	Include map[string]*ScanCondition `locationName:"include" 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 ScanResourceCriteria) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ScanResourceCriteria) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ScanResourceCriteria) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ScanResourceCriteria"}
	if s.Exclude != nil {
		for i, v := range s.Exclude {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Exclude", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Include != nil {
		for i, v := range s.Include {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Include", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetExclude sets the Exclude field's value.
func (s *ScanResourceCriteria) SetExclude(v map[string]*ScanCondition) *ScanResourceCriteria {
	s.Exclude = v
	return s
}

// SetInclude sets the Include field's value.
func (s *ScanResourceCriteria) SetInclude(v map[string]*ScanCondition) *ScanResourceCriteria {
	s.Include = v
	return s
}

// Represents the result of the scan.
type ScanResultDetails struct {
	_ struct{} `type:"structure"`

	// An enum value representing possible scan results.
	ScanResult *string `locationName:"scanResult" type:"string" enum:"ScanResult"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ScanResultDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ScanResultDetails) GoString() string {
	return s.String()
}

// SetScanResult sets the ScanResult field's value.
func (s *ScanResultDetails) SetScanResult(v string) *ScanResultDetails {
	s.ScanResult = &v
	return s
}

// Contains files infected with the given threat providing details of malware
// name and severity.
type ScanThreatName struct {
	_ struct{} `type:"structure"`

	// List of infected files in EBS volume with details.
	FilePaths []*ScanFilePath `locationName:"filePaths" type:"list"`

	// Total number of files infected with given threat.
	ItemCount *int64 `locationName:"itemCount" type:"integer"`

	// The name of the identified threat.
	Name *string `locationName:"name" type:"string"`

	// Severity of threat identified as part of the malware scan.
	Severity *string `locationName:"severity" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ScanThreatName) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ScanThreatName) GoString() string {
	return s.String()
}

// SetFilePaths sets the FilePaths field's value.
func (s *ScanThreatName) SetFilePaths(v []*ScanFilePath) *ScanThreatName {
	s.FilePaths = v
	return s
}

// SetItemCount sets the ItemCount field's value.
func (s *ScanThreatName) SetItemCount(v int64) *ScanThreatName {
	s.ItemCount = &v
	return s
}

// SetName sets the Name field's value.
func (s *ScanThreatName) SetName(v string) *ScanThreatName {
	s.Name = &v
	return s
}

// SetSeverity sets the Severity field's value.
func (s *ScanThreatName) SetSeverity(v string) *ScanThreatName {
	s.Severity = &v
	return s
}

// Total number of scanned files.
type ScannedItemCount struct {
	_ struct{} `type:"structure"`

	// Number of files scanned.
	Files *int64 `locationName:"files" type:"integer"`

	// Total GB of files scanned for malware.
	TotalGb *int64 `locationName:"totalGb" type:"integer"`

	// Total number of scanned volumes.
	Volumes *int64 `locationName:"volumes" 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 ScannedItemCount) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ScannedItemCount) GoString() string {
	return s.String()
}

// SetFiles sets the Files field's value.
func (s *ScannedItemCount) SetFiles(v int64) *ScannedItemCount {
	s.Files = &v
	return s
}

// SetTotalGb sets the TotalGb field's value.
func (s *ScannedItemCount) SetTotalGb(v int64) *ScannedItemCount {
	s.TotalGb = &v
	return s
}

// SetVolumes sets the Volumes field's value.
func (s *ScannedItemCount) SetVolumes(v int64) *ScannedItemCount {
	s.Volumes = &v
	return s
}

// Container security context.
type SecurityContext struct {
	_ struct{} `type:"structure"`

	// Whether or not a container or a Kubernetes pod is allowed to gain more privileges
	// than its parent process.
	AllowPrivilegeEscalation *bool `locationName:"allowPrivilegeEscalation" type:"boolean"`

	// Whether the container is privileged.
	Privileged *bool `locationName:"privileged" 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 SecurityContext) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SecurityContext) GoString() string {
	return s.String()
}

// SetAllowPrivilegeEscalation sets the AllowPrivilegeEscalation field's value.
func (s *SecurityContext) SetAllowPrivilegeEscalation(v bool) *SecurityContext {
	s.AllowPrivilegeEscalation = &v
	return s
}

// SetPrivileged sets the Privileged field's value.
func (s *SecurityContext) SetPrivileged(v bool) *SecurityContext {
	s.Privileged = &v
	return s
}

// Contains information about the security groups associated with the EC2 instance.
type SecurityGroup struct {
	_ struct{} `type:"structure"`

	// The security group ID of the EC2 instance.
	GroupId *string `locationName:"groupId" type:"string"`

	// The security group name of the EC2 instance.
	GroupName *string `locationName:"groupName" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SecurityGroup) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SecurityGroup) GoString() string {
	return s.String()
}

// SetGroupId sets the GroupId field's value.
func (s *SecurityGroup) SetGroupId(v string) *SecurityGroup {
	s.GroupId = &v
	return s
}

// SetGroupName sets the GroupName field's value.
func (s *SecurityGroup) SetGroupName(v string) *SecurityGroup {
	s.GroupName = &v
	return s
}

// Contains additional information about the generated finding.
type Service struct {
	_ struct{} `type:"structure"`

	// Information about the activity that is described in a finding.
	Action *Action `locationName:"action" type:"structure"`

	// Contains additional information about the generated finding.
	AdditionalInfo *ServiceAdditionalInfo `locationName:"additionalInfo" type:"structure"`

	// Indicates whether this finding is archived.
	Archived *bool `locationName:"archived" type:"boolean"`

	// The total count of the occurrences of this finding type.
	Count *int64 `locationName:"count" type:"integer"`

	// Contains information about the detected unusual behavior.
	Detection *Detection `locationName:"detection" type:"structure"`

	// The detector ID for the GuardDuty service.
	DetectorId *string `locationName:"detectorId" min:"1" type:"string"`

	// Returns details from the malware scan that created a finding.
	EbsVolumeScanDetails *EbsVolumeScanDetails `locationName:"ebsVolumeScanDetails" type:"structure"`

	// The first-seen timestamp of the activity that prompted GuardDuty to generate
	// this finding.
	EventFirstSeen *string `locationName:"eventFirstSeen" type:"string"`

	// The last-seen timestamp of the activity that prompted GuardDuty to generate
	// this finding.
	EventLastSeen *string `locationName:"eventLastSeen" type:"string"`

	// An evidence object associated with the service.
	Evidence *Evidence `locationName:"evidence" type:"structure"`

	// The name of the feature that generated a finding.
	FeatureName *string `locationName:"featureName" type:"string"`

	// The resource role information for this finding.
	ResourceRole *string `locationName:"resourceRole" type:"string"`

	// Information about the process and any required context values for a specific
	// finding
	RuntimeDetails *RuntimeDetails `locationName:"runtimeDetails" type:"structure"`

	// The name of the Amazon Web Services service (GuardDuty) that generated a
	// finding.
	ServiceName *string `locationName:"serviceName" type:"string"`

	// Feedback that was submitted about the finding.
	UserFeedback *string `locationName:"userFeedback" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Service) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Service) GoString() string {
	return s.String()
}

// SetAction sets the Action field's value.
func (s *Service) SetAction(v *Action) *Service {
	s.Action = v
	return s
}

// SetAdditionalInfo sets the AdditionalInfo field's value.
func (s *Service) SetAdditionalInfo(v *ServiceAdditionalInfo) *Service {
	s.AdditionalInfo = v
	return s
}

// SetArchived sets the Archived field's value.
func (s *Service) SetArchived(v bool) *Service {
	s.Archived = &v
	return s
}

// SetCount sets the Count field's value.
func (s *Service) SetCount(v int64) *Service {
	s.Count = &v
	return s
}

// SetDetection sets the Detection field's value.
func (s *Service) SetDetection(v *Detection) *Service {
	s.Detection = v
	return s
}

// SetDetectorId sets the DetectorId field's value.
func (s *Service) SetDetectorId(v string) *Service {
	s.DetectorId = &v
	return s
}

// SetEbsVolumeScanDetails sets the EbsVolumeScanDetails field's value.
func (s *Service) SetEbsVolumeScanDetails(v *EbsVolumeScanDetails) *Service {
	s.EbsVolumeScanDetails = v
	return s
}

// SetEventFirstSeen sets the EventFirstSeen field's value.
func (s *Service) SetEventFirstSeen(v string) *Service {
	s.EventFirstSeen = &v
	return s
}

// SetEventLastSeen sets the EventLastSeen field's value.
func (s *Service) SetEventLastSeen(v string) *Service {
	s.EventLastSeen = &v
	return s
}

// SetEvidence sets the Evidence field's value.
func (s *Service) SetEvidence(v *Evidence) *Service {
	s.Evidence = v
	return s
}

// SetFeatureName sets the FeatureName field's value.
func (s *Service) SetFeatureName(v string) *Service {
	s.FeatureName = &v
	return s
}

// SetResourceRole sets the ResourceRole field's value.
func (s *Service) SetResourceRole(v string) *Service {
	s.ResourceRole = &v
	return s
}

// SetRuntimeDetails sets the RuntimeDetails field's value.
func (s *Service) SetRuntimeDetails(v *RuntimeDetails) *Service {
	s.RuntimeDetails = v
	return s
}

// SetServiceName sets the ServiceName field's value.
func (s *Service) SetServiceName(v string) *Service {
	s.ServiceName = &v
	return s
}

// SetUserFeedback sets the UserFeedback field's value.
func (s *Service) SetUserFeedback(v string) *Service {
	s.UserFeedback = &v
	return s
}

// Additional information about the generated finding.
type ServiceAdditionalInfo struct {
	_ struct{} `type:"structure"`

	// Describes the type of the additional information.
	Type *string `locationName:"type" type:"string"`

	// This field specifies the value of the additional information.
	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 ServiceAdditionalInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ServiceAdditionalInfo) GoString() string {
	return s.String()
}

// SetType sets the Type field's value.
func (s *ServiceAdditionalInfo) SetType(v string) *ServiceAdditionalInfo {
	s.Type = &v
	return s
}

// SetValue sets the Value field's value.
func (s *ServiceAdditionalInfo) SetValue(v string) *ServiceAdditionalInfo {
	s.Value = &v
	return s
}

// Contains information about the criteria used for sorting findings.
type SortCriteria struct {
	_ struct{} `type:"structure"`

	// Represents the finding attribute, such as accountId, that sorts the findings.
	AttributeName *string `locationName:"attributeName" type:"string"`

	// The order by which the sorted findings are to be displayed.
	OrderBy *string `locationName:"orderBy" type:"string" enum:"OrderBy"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API 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()
}

// SetAttributeName sets the AttributeName field's value.
func (s *SortCriteria) SetAttributeName(v string) *SortCriteria {
	s.AttributeName = &v
	return s
}

// SetOrderBy sets the OrderBy field's value.
func (s *SortCriteria) SetOrderBy(v string) *SortCriteria {
	s.OrderBy = &v
	return s
}

type StartMalwareScanInput struct {
	_ struct{} `type:"structure"`

	// Amazon Resource Name (ARN) of the resource for which you invoked the API.
	//
	// ResourceArn is a required field
	ResourceArn *string `locationName:"resourceArn" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartMalwareScanInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartMalwareScanInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartMalwareScanInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartMalwareScanInput"}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceArn sets the ResourceArn field's value.
func (s *StartMalwareScanInput) SetResourceArn(v string) *StartMalwareScanInput {
	s.ResourceArn = &v
	return s
}

type StartMalwareScanOutput struct {
	_ struct{} `type:"structure"`

	// A unique identifier that gets generated when you invoke the API without any
	// error. Each malware scan has a corresponding scan ID. Using this scan ID,
	// you can monitor the status of your malware scan.
	ScanId *string `locationName:"scanId" 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 StartMalwareScanOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartMalwareScanOutput) GoString() string {
	return s.String()
}

// SetScanId sets the ScanId field's value.
func (s *StartMalwareScanOutput) SetScanId(v string) *StartMalwareScanOutput {
	s.ScanId = &v
	return s
}

type StartMonitoringMembersInput struct {
	_ struct{} `type:"structure"`

	// A list of account IDs of the GuardDuty member accounts to start monitoring.
	//
	// AccountIds is a required field
	AccountIds []*string `locationName:"accountIds" min:"1" type:"list" required:"true"`

	// The unique ID of the detector of the GuardDuty administrator account associated
	// with the member accounts to monitor.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" 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 StartMonitoringMembersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartMonitoringMembersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartMonitoringMembersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartMonitoringMembersInput"}
	if s.AccountIds == nil {
		invalidParams.Add(request.NewErrParamRequired("AccountIds"))
	}
	if s.AccountIds != nil && len(s.AccountIds) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AccountIds", 1))
	}
	if s.DetectorId == nil {
		invalidParams.Add(request.NewErrParamRequired("DetectorId"))
	}
	if s.DetectorId != nil && len(*s.DetectorId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DetectorId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccountIds sets the AccountIds field's value.
func (s *StartMonitoringMembersInput) SetAccountIds(v []*string) *StartMonitoringMembersInput {
	s.AccountIds = v
	return s
}

// SetDetectorId sets the DetectorId field's value.
func (s *StartMonitoringMembersInput) SetDetectorId(v string) *StartMonitoringMembersInput {
	s.DetectorId = &v
	return s
}

type StartMonitoringMembersOutput struct {
	_ struct{} `type:"structure"`

	// A list of objects that contain the unprocessed account and a result string
	// that explains why it was unprocessed.
	//
	// UnprocessedAccounts is a required field
	UnprocessedAccounts []*UnprocessedAccount `locationName:"unprocessedAccounts" 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 StartMonitoringMembersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartMonitoringMembersOutput) GoString() string {
	return s.String()
}

// SetUnprocessedAccounts sets the UnprocessedAccounts field's value.
func (s *StartMonitoringMembersOutput) SetUnprocessedAccounts(v []*UnprocessedAccount) *StartMonitoringMembersOutput {
	s.UnprocessedAccounts = v
	return s
}

type StopMonitoringMembersInput struct {
	_ struct{} `type:"structure"`

	// A list of account IDs for the member accounts to stop monitoring.
	//
	// AccountIds is a required field
	AccountIds []*string `locationName:"accountIds" min:"1" type:"list" required:"true"`

	// The unique ID of the detector associated with the GuardDuty administrator
	// account that is monitoring member accounts.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" 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 StopMonitoringMembersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopMonitoringMembersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StopMonitoringMembersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StopMonitoringMembersInput"}
	if s.AccountIds == nil {
		invalidParams.Add(request.NewErrParamRequired("AccountIds"))
	}
	if s.AccountIds != nil && len(s.AccountIds) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AccountIds", 1))
	}
	if s.DetectorId == nil {
		invalidParams.Add(request.NewErrParamRequired("DetectorId"))
	}
	if s.DetectorId != nil && len(*s.DetectorId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DetectorId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccountIds sets the AccountIds field's value.
func (s *StopMonitoringMembersInput) SetAccountIds(v []*string) *StopMonitoringMembersInput {
	s.AccountIds = v
	return s
}

// SetDetectorId sets the DetectorId field's value.
func (s *StopMonitoringMembersInput) SetDetectorId(v string) *StopMonitoringMembersInput {
	s.DetectorId = &v
	return s
}

type StopMonitoringMembersOutput struct {
	_ struct{} `type:"structure"`

	// A list of objects that contain an accountId for each account that could not
	// be processed, and a result string that indicates why the account was not
	// processed.
	//
	// UnprocessedAccounts is a required field
	UnprocessedAccounts []*UnprocessedAccount `locationName:"unprocessedAccounts" 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 StopMonitoringMembersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopMonitoringMembersOutput) GoString() string {
	return s.String()
}

// SetUnprocessedAccounts sets the UnprocessedAccounts field's value.
func (s *StopMonitoringMembersOutput) SetUnprocessedAccounts(v []*UnprocessedAccount) *StopMonitoringMembersOutput {
	s.UnprocessedAccounts = v
	return s
}

// Contains information about a tag associated with the EC2 instance.
type Tag struct {
	_ struct{} `type:"structure"`

	// The EC2 instance tag key.
	Key *string `locationName:"key" type:"string"`

	// The EC2 instance tag value.
	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 Tag) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Tag) GoString() string {
	return s.String()
}

// SetKey sets the Key field's value.
func (s *Tag) SetKey(v string) *Tag {
	s.Key = &v
	return s
}

// SetValue sets the Value field's value.
func (s *Tag) SetValue(v string) *Tag {
	s.Value = &v
	return s
}

type TagResourceInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the GuardDuty resource to apply a tag
	// to.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"`

	// The tags to be added to a resource.
	//
	// Tags is a required field
	Tags map[string]*string `locationName:"tags" min:"1" type:"map" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagResourceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TagResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TagResourceInput"}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}
	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
	}
	if s.Tags == nil {
		invalidParams.Add(request.NewErrParamRequired("Tags"))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceArn sets the ResourceArn field's value.
func (s *TagResourceInput) SetResourceArn(v string) *TagResourceInput {
	s.ResourceArn = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *TagResourceInput) SetTags(v map[string]*string) *TagResourceInput {
	s.Tags = v
	return s
}

type TagResourceOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagResourceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagResourceOutput) GoString() string {
	return s.String()
}

// Contains details about identified threats organized by threat name.
type ThreatDetectedByName struct {
	_ struct{} `type:"structure"`

	// Total number of infected files identified.
	ItemCount *int64 `locationName:"itemCount" type:"integer"`

	// Flag to determine if the finding contains every single infected file-path
	// and/or every threat.
	Shortened *bool `locationName:"shortened" type:"boolean"`

	// List of identified threats with details, organized by threat name.
	ThreatNames []*ScanThreatName `locationName:"threatNames" type:"list"`

	// Total number of unique threats by name identified, as part of the malware
	// scan.
	UniqueThreatNameCount *int64 `locationName:"uniqueThreatNameCount" 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 ThreatDetectedByName) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ThreatDetectedByName) GoString() string {
	return s.String()
}

// SetItemCount sets the ItemCount field's value.
func (s *ThreatDetectedByName) SetItemCount(v int64) *ThreatDetectedByName {
	s.ItemCount = &v
	return s
}

// SetShortened sets the Shortened field's value.
func (s *ThreatDetectedByName) SetShortened(v bool) *ThreatDetectedByName {
	s.Shortened = &v
	return s
}

// SetThreatNames sets the ThreatNames field's value.
func (s *ThreatDetectedByName) SetThreatNames(v []*ScanThreatName) *ThreatDetectedByName {
	s.ThreatNames = v
	return s
}

// SetUniqueThreatNameCount sets the UniqueThreatNameCount field's value.
func (s *ThreatDetectedByName) SetUniqueThreatNameCount(v int64) *ThreatDetectedByName {
	s.UniqueThreatNameCount = &v
	return s
}

// An instance of a threat intelligence detail that constitutes evidence for
// the finding.
type ThreatIntelligenceDetail struct {
	_ struct{} `type:"structure"`

	// The name of the threat intelligence list that triggered the finding.
	ThreatListName *string `locationName:"threatListName" type:"string"`

	// A list of names of the threats in the threat intelligence list that triggered
	// the finding.
	ThreatNames []*string `locationName:"threatNames" 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 ThreatIntelligenceDetail) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ThreatIntelligenceDetail) GoString() string {
	return s.String()
}

// SetThreatListName sets the ThreatListName field's value.
func (s *ThreatIntelligenceDetail) SetThreatListName(v string) *ThreatIntelligenceDetail {
	s.ThreatListName = &v
	return s
}

// SetThreatNames sets the ThreatNames field's value.
func (s *ThreatIntelligenceDetail) SetThreatNames(v []*string) *ThreatIntelligenceDetail {
	s.ThreatNames = v
	return s
}

// Contains total number of infected files.
type ThreatsDetectedItemCount struct {
	_ struct{} `type:"structure"`

	// Total number of infected files.
	Files *int64 `locationName:"files" 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 ThreatsDetectedItemCount) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ThreatsDetectedItemCount) GoString() string {
	return s.String()
}

// SetFiles sets the Files field's value.
func (s *ThreatsDetectedItemCount) SetFiles(v int64) *ThreatsDetectedItemCount {
	s.Files = &v
	return s
}

// Contains the total usage with the corresponding currency unit for that value.
type Total struct {
	_ struct{} `type:"structure"`

	// The total usage.
	Amount *string `locationName:"amount" type:"string"`

	// The currency unit that the amount is given in.
	Unit *string `locationName:"unit" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Total) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Total) GoString() string {
	return s.String()
}

// SetAmount sets the Amount field's value.
func (s *Total) SetAmount(v string) *Total {
	s.Amount = &v
	return s
}

// SetUnit sets the Unit field's value.
func (s *Total) SetUnit(v string) *Total {
	s.Unit = &v
	return s
}

// Represents the reason the scan was triggered.
type TriggerDetails struct {
	_ struct{} `type:"structure"`

	// The description of the scan trigger.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The ID of the GuardDuty finding that triggered the malware scan.
	GuardDutyFindingId *string `locationName:"guardDutyFindingId" 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 TriggerDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TriggerDetails) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *TriggerDetails) SetDescription(v string) *TriggerDetails {
	s.Description = &v
	return s
}

// SetGuardDutyFindingId sets the GuardDutyFindingId field's value.
func (s *TriggerDetails) SetGuardDutyFindingId(v string) *TriggerDetails {
	s.GuardDutyFindingId = &v
	return s
}

type UnarchiveFindingsInput struct {
	_ struct{} `type:"structure"`

	// The ID of the detector associated with the findings to unarchive.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// The IDs of the findings to unarchive.
	//
	// FindingIds is a required field
	FindingIds []*string `locationName:"findingIds" 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 UnarchiveFindingsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnarchiveFindingsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UnarchiveFindingsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UnarchiveFindingsInput"}
	if s.DetectorId == nil {
		invalidParams.Add(request.NewErrParamRequired("DetectorId"))
	}
	if s.DetectorId != nil && len(*s.DetectorId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DetectorId", 1))
	}
	if s.FindingIds == nil {
		invalidParams.Add(request.NewErrParamRequired("FindingIds"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDetectorId sets the DetectorId field's value.
func (s *UnarchiveFindingsInput) SetDetectorId(v string) *UnarchiveFindingsInput {
	s.DetectorId = &v
	return s
}

// SetFindingIds sets the FindingIds field's value.
func (s *UnarchiveFindingsInput) SetFindingIds(v []*string) *UnarchiveFindingsInput {
	s.FindingIds = v
	return s
}

type UnarchiveFindingsOutput 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 UnarchiveFindingsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnarchiveFindingsOutput) GoString() string {
	return s.String()
}

// Contains information about the accounts that weren't processed.
type UnprocessedAccount 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"`

	// A reason why the account hasn't been processed.
	//
	// Result is a required field
	Result *string `locationName:"result" 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 UnprocessedAccount) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnprocessedAccount) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *UnprocessedAccount) SetAccountId(v string) *UnprocessedAccount {
	s.AccountId = &v
	return s
}

// SetResult sets the Result field's value.
func (s *UnprocessedAccount) SetResult(v string) *UnprocessedAccount {
	s.Result = &v
	return s
}

// Specifies the names of the data sources that couldn't be enabled.
type UnprocessedDataSourcesResult struct {
	_ struct{} `type:"structure"`

	// An object that contains information on the status of all Malware Protection
	// data sources.
	MalwareProtection *MalwareProtectionConfigurationResult `locationName:"malwareProtection" 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 UnprocessedDataSourcesResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnprocessedDataSourcesResult) GoString() string {
	return s.String()
}

// SetMalwareProtection sets the MalwareProtection field's value.
func (s *UnprocessedDataSourcesResult) SetMalwareProtection(v *MalwareProtectionConfigurationResult) *UnprocessedDataSourcesResult {
	s.MalwareProtection = 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" type:"string" required:"true"`

	// The tag keys to remove from the resource.
	//
	// TagKeys is a required field
	TagKeys []*string `location:"querystring" locationName:"tagKeys" min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UntagResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}
	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
	}
	if s.TagKeys == nil {
		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
	}
	if s.TagKeys != nil && len(s.TagKeys) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TagKeys", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceArn sets the ResourceArn field's value.
func (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput {
	s.ResourceArn = &v
	return s
}

// SetTagKeys sets the TagKeys field's value.
func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput {
	s.TagKeys = v
	return s
}

type UntagResourceOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceOutput) GoString() string {
	return s.String()
}

type UpdateDetectorInput struct {
	_ struct{} `type:"structure"`

	// Describes which data sources will be updated.
	//
	// There might be regional differences because some data sources might not be
	// available in all the Amazon Web Services Regions where GuardDuty is presently
	// supported. For more information, see Regions and endpoints (https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_regions.html).
	//
	// Deprecated: This parameter is deprecated, use Features instead
	DataSources *DataSourceConfigurations `locationName:"dataSources" deprecated:"true" type:"structure"`

	// The unique ID of the detector to update.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// Specifies whether the detector is enabled or not enabled.
	Enable *bool `locationName:"enable" type:"boolean"`

	// Provides the features that will be updated for the detector.
	Features []*DetectorFeatureConfiguration `locationName:"features" type:"list"`

	// An enum value that specifies how frequently findings are exported, such as
	// to CloudWatch Events.
	FindingPublishingFrequency *string `locationName:"findingPublishingFrequency" type:"string" enum:"FindingPublishingFrequency"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDetectorInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDetectorInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateDetectorInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateDetectorInput"}
	if s.DetectorId == nil {
		invalidParams.Add(request.NewErrParamRequired("DetectorId"))
	}
	if s.DetectorId != nil && len(*s.DetectorId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DetectorId", 1))
	}
	if s.DataSources != nil {
		if err := s.DataSources.Validate(); err != nil {
			invalidParams.AddNested("DataSources", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataSources sets the DataSources field's value.
func (s *UpdateDetectorInput) SetDataSources(v *DataSourceConfigurations) *UpdateDetectorInput {
	s.DataSources = v
	return s
}

// SetDetectorId sets the DetectorId field's value.
func (s *UpdateDetectorInput) SetDetectorId(v string) *UpdateDetectorInput {
	s.DetectorId = &v
	return s
}

// SetEnable sets the Enable field's value.
func (s *UpdateDetectorInput) SetEnable(v bool) *UpdateDetectorInput {
	s.Enable = &v
	return s
}

// SetFeatures sets the Features field's value.
func (s *UpdateDetectorInput) SetFeatures(v []*DetectorFeatureConfiguration) *UpdateDetectorInput {
	s.Features = v
	return s
}

// SetFindingPublishingFrequency sets the FindingPublishingFrequency field's value.
func (s *UpdateDetectorInput) SetFindingPublishingFrequency(v string) *UpdateDetectorInput {
	s.FindingPublishingFrequency = &v
	return s
}

type UpdateDetectorOutput 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 UpdateDetectorOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDetectorOutput) 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" min:"1" type:"string" enum:"FilterAction"`

	// The description of the filter. Valid characters include alphanumeric characters,
	// and special characters such as hyphen, period, colon, underscore, parentheses
	// ({ }, [ ], and ( )), forward slash, horizontal tab, vertical tab, newline,
	// form feed, return, and whitespace.
	Description *string `locationName:"description" type:"string"`

	// The unique ID of the detector that specifies the GuardDuty service where
	// you want to update a filter.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// The name of the filter.
	//
	// FilterName is a required field
	FilterName *string `location:"uri" locationName:"filterName" type:"string" required:"true"`

	// Represents the criteria to be used in the filter for querying findings.
	FindingCriteria *FindingCriteria `locationName:"findingCriteria" type:"structure"`

	// Specifies the position of the filter in the list of current filters. Also
	// specifies the order in which this filter is applied to the findings.
	Rank *int64 `locationName:"rank" min:"1" type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s 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.Action != nil && len(*s.Action) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Action", 1))
	}
	if s.DetectorId == nil {
		invalidParams.Add(request.NewErrParamRequired("DetectorId"))
	}
	if s.DetectorId != nil && len(*s.DetectorId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DetectorId", 1))
	}
	if s.FilterName == nil {
		invalidParams.Add(request.NewErrParamRequired("FilterName"))
	}
	if s.FilterName != nil && len(*s.FilterName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FilterName", 1))
	}
	if s.Rank != nil && *s.Rank < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Rank", 1))
	}

	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
}

// SetDetectorId sets the DetectorId field's value.
func (s *UpdateFilterInput) SetDetectorId(v string) *UpdateFilterInput {
	s.DetectorId = &v
	return s
}

// SetFilterName sets the FilterName field's value.
func (s *UpdateFilterInput) SetFilterName(v string) *UpdateFilterInput {
	s.FilterName = &v
	return s
}

// SetFindingCriteria sets the FindingCriteria field's value.
func (s *UpdateFilterInput) SetFindingCriteria(v *FindingCriteria) *UpdateFilterInput {
	s.FindingCriteria = v
	return s
}

// SetRank sets the Rank field's value.
func (s *UpdateFilterInput) SetRank(v int64) *UpdateFilterInput {
	s.Rank = &v
	return s
}

type UpdateFilterOutput struct {
	_ struct{} `type:"structure"`

	// The name of the filter.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"3" 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()
}

// SetName sets the Name field's value.
func (s *UpdateFilterOutput) SetName(v string) *UpdateFilterOutput {
	s.Name = &v
	return s
}

type UpdateFindingsFeedbackInput struct {
	_ struct{} `type:"structure"`

	// Additional feedback about the GuardDuty findings.
	Comments *string `locationName:"comments" type:"string"`

	// The ID of the detector associated with the findings to update feedback for.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// The feedback for the finding.
	//
	// Feedback is a required field
	Feedback *string `locationName:"feedback" type:"string" required:"true" enum:"Feedback"`

	// The IDs of the findings that you want to mark as useful or not useful.
	//
	// FindingIds is a required field
	FindingIds []*string `locationName:"findingIds" 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 UpdateFindingsFeedbackInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateFindingsFeedbackInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateFindingsFeedbackInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateFindingsFeedbackInput"}
	if s.DetectorId == nil {
		invalidParams.Add(request.NewErrParamRequired("DetectorId"))
	}
	if s.DetectorId != nil && len(*s.DetectorId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DetectorId", 1))
	}
	if s.Feedback == nil {
		invalidParams.Add(request.NewErrParamRequired("Feedback"))
	}
	if s.FindingIds == nil {
		invalidParams.Add(request.NewErrParamRequired("FindingIds"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetComments sets the Comments field's value.
func (s *UpdateFindingsFeedbackInput) SetComments(v string) *UpdateFindingsFeedbackInput {
	s.Comments = &v
	return s
}

// SetDetectorId sets the DetectorId field's value.
func (s *UpdateFindingsFeedbackInput) SetDetectorId(v string) *UpdateFindingsFeedbackInput {
	s.DetectorId = &v
	return s
}

// SetFeedback sets the Feedback field's value.
func (s *UpdateFindingsFeedbackInput) SetFeedback(v string) *UpdateFindingsFeedbackInput {
	s.Feedback = &v
	return s
}

// SetFindingIds sets the FindingIds field's value.
func (s *UpdateFindingsFeedbackInput) SetFindingIds(v []*string) *UpdateFindingsFeedbackInput {
	s.FindingIds = v
	return s
}

type UpdateFindingsFeedbackOutput 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 UpdateFindingsFeedbackOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateFindingsFeedbackOutput) GoString() string {
	return s.String()
}

type UpdateIPSetInput struct {
	_ struct{} `type:"structure"`

	// The updated Boolean value that specifies whether the IPSet is active or not.
	Activate *bool `locationName:"activate" type:"boolean"`

	// The detectorID that specifies the GuardDuty service whose IPSet you want
	// to update.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// The unique ID that specifies the IPSet that you want to update.
	//
	// IpSetId is a required field
	IpSetId *string `location:"uri" locationName:"ipSetId" type:"string" required:"true"`

	// The updated URI of the file that contains the IPSet.
	Location *string `locationName:"location" min:"1" type:"string"`

	// The unique ID that specifies the IPSet that you want to update.
	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 UpdateIPSetInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateIPSetInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateIPSetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateIPSetInput"}
	if s.DetectorId == nil {
		invalidParams.Add(request.NewErrParamRequired("DetectorId"))
	}
	if s.DetectorId != nil && len(*s.DetectorId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DetectorId", 1))
	}
	if s.IpSetId == nil {
		invalidParams.Add(request.NewErrParamRequired("IpSetId"))
	}
	if s.IpSetId != nil && len(*s.IpSetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("IpSetId", 1))
	}
	if s.Location != nil && len(*s.Location) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Location", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActivate sets the Activate field's value.
func (s *UpdateIPSetInput) SetActivate(v bool) *UpdateIPSetInput {
	s.Activate = &v
	return s
}

// SetDetectorId sets the DetectorId field's value.
func (s *UpdateIPSetInput) SetDetectorId(v string) *UpdateIPSetInput {
	s.DetectorId = &v
	return s
}

// SetIpSetId sets the IpSetId field's value.
func (s *UpdateIPSetInput) SetIpSetId(v string) *UpdateIPSetInput {
	s.IpSetId = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *UpdateIPSetInput) SetLocation(v string) *UpdateIPSetInput {
	s.Location = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateIPSetInput) SetName(v string) *UpdateIPSetInput {
	s.Name = &v
	return s
}

type UpdateIPSetOutput 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 UpdateIPSetOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateIPSetOutput) GoString() string {
	return s.String()
}

type UpdateMalwareScanSettingsInput struct {
	_ struct{} `type:"structure"`

	// The unique ID of the detector that specifies the GuardDuty service where
	// you want to update scan settings.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// An enum value representing possible snapshot preservation settings.
	EbsSnapshotPreservation *string `locationName:"ebsSnapshotPreservation" type:"string" enum:"EbsSnapshotPreservation"`

	// Represents the criteria to be used in the filter for selecting resources
	// to scan.
	ScanResourceCriteria *ScanResourceCriteria `locationName:"scanResourceCriteria" 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 UpdateMalwareScanSettingsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateMalwareScanSettingsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateMalwareScanSettingsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateMalwareScanSettingsInput"}
	if s.DetectorId == nil {
		invalidParams.Add(request.NewErrParamRequired("DetectorId"))
	}
	if s.DetectorId != nil && len(*s.DetectorId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DetectorId", 1))
	}
	if s.ScanResourceCriteria != nil {
		if err := s.ScanResourceCriteria.Validate(); err != nil {
			invalidParams.AddNested("ScanResourceCriteria", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDetectorId sets the DetectorId field's value.
func (s *UpdateMalwareScanSettingsInput) SetDetectorId(v string) *UpdateMalwareScanSettingsInput {
	s.DetectorId = &v
	return s
}

// SetEbsSnapshotPreservation sets the EbsSnapshotPreservation field's value.
func (s *UpdateMalwareScanSettingsInput) SetEbsSnapshotPreservation(v string) *UpdateMalwareScanSettingsInput {
	s.EbsSnapshotPreservation = &v
	return s
}

// SetScanResourceCriteria sets the ScanResourceCriteria field's value.
func (s *UpdateMalwareScanSettingsInput) SetScanResourceCriteria(v *ScanResourceCriteria) *UpdateMalwareScanSettingsInput {
	s.ScanResourceCriteria = v
	return s
}

type UpdateMalwareScanSettingsOutput 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 UpdateMalwareScanSettingsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateMalwareScanSettingsOutput) GoString() string {
	return s.String()
}

type UpdateMemberDetectorsInput struct {
	_ struct{} `type:"structure"`

	// A list of member account IDs to be updated.
	//
	// AccountIds is a required field
	AccountIds []*string `locationName:"accountIds" min:"1" type:"list" required:"true"`

	// Describes which data sources will be updated.
	//
	// Deprecated: This parameter is deprecated, use Features instead
	DataSources *DataSourceConfigurations `locationName:"dataSources" deprecated:"true" type:"structure"`

	// The detector ID of the administrator account.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// A list of features that will be updated for the specified member accounts.
	Features []*MemberFeaturesConfiguration `locationName:"features" 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 UpdateMemberDetectorsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateMemberDetectorsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateMemberDetectorsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateMemberDetectorsInput"}
	if s.AccountIds == nil {
		invalidParams.Add(request.NewErrParamRequired("AccountIds"))
	}
	if s.AccountIds != nil && len(s.AccountIds) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AccountIds", 1))
	}
	if s.DetectorId == nil {
		invalidParams.Add(request.NewErrParamRequired("DetectorId"))
	}
	if s.DetectorId != nil && len(*s.DetectorId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DetectorId", 1))
	}
	if s.DataSources != nil {
		if err := s.DataSources.Validate(); err != nil {
			invalidParams.AddNested("DataSources", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccountIds sets the AccountIds field's value.
func (s *UpdateMemberDetectorsInput) SetAccountIds(v []*string) *UpdateMemberDetectorsInput {
	s.AccountIds = v
	return s
}

// SetDataSources sets the DataSources field's value.
func (s *UpdateMemberDetectorsInput) SetDataSources(v *DataSourceConfigurations) *UpdateMemberDetectorsInput {
	s.DataSources = v
	return s
}

// SetDetectorId sets the DetectorId field's value.
func (s *UpdateMemberDetectorsInput) SetDetectorId(v string) *UpdateMemberDetectorsInput {
	s.DetectorId = &v
	return s
}

// SetFeatures sets the Features field's value.
func (s *UpdateMemberDetectorsInput) SetFeatures(v []*MemberFeaturesConfiguration) *UpdateMemberDetectorsInput {
	s.Features = v
	return s
}

type UpdateMemberDetectorsOutput struct {
	_ struct{} `type:"structure"`

	// A list of member account IDs that were unable to be processed along with
	// an explanation for why they were not processed.
	//
	// UnprocessedAccounts is a required field
	UnprocessedAccounts []*UnprocessedAccount `locationName:"unprocessedAccounts" 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 UpdateMemberDetectorsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateMemberDetectorsOutput) GoString() string {
	return s.String()
}

// SetUnprocessedAccounts sets the UnprocessedAccounts field's value.
func (s *UpdateMemberDetectorsOutput) SetUnprocessedAccounts(v []*UnprocessedAccount) *UpdateMemberDetectorsOutput {
	s.UnprocessedAccounts = v
	return s
}

type UpdateOrganizationConfigurationInput struct {
	_ struct{} `type:"structure"`

	// Represents whether or not to automatically enable member accounts in the
	// organization.
	//
	// Even though this is still supported, we recommend using AutoEnableOrganizationMembers
	// to achieve the similar results. You must provide a value for either autoEnableOrganizationMembers
	// or autoEnable.
	//
	// Deprecated: This field is deprecated, use AutoEnableOrganizationMembers instead
	AutoEnable *bool `locationName:"autoEnable" deprecated:"true" type:"boolean"`

	// Indicates the auto-enablement configuration of GuardDuty for the member accounts
	// in the organization. You must provide a value for either autoEnableOrganizationMembers
	// or autoEnable.
	//
	// Use one of the following configuration values for autoEnableOrganizationMembers:
	//
	//    * NEW: Indicates that when a new account joins the organization, they
	//    will have GuardDuty enabled automatically.
	//
	//    * ALL: Indicates that all accounts in the organization have GuardDuty
	//    enabled automatically. This includes NEW accounts that join the organization
	//    and accounts that may have been suspended or removed from the organization
	//    in GuardDuty. It may take up to 24 hours to update the configuration for
	//    all the member accounts.
	//
	//    * NONE: Indicates that GuardDuty will not be automatically enabled for
	//    any account in the organization. The administrator must manage GuardDuty
	//    for each account in the organization individually.
	AutoEnableOrganizationMembers *string `locationName:"autoEnableOrganizationMembers" type:"string" enum:"AutoEnableMembers"`

	// Describes which data sources will be updated.
	//
	// Deprecated: This parameter is deprecated, use Features instead
	DataSources *OrganizationDataSourceConfigurations `locationName:"dataSources" deprecated:"true" type:"structure"`

	// The ID of the detector that configures the delegated administrator.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// A list of features that will be configured for the organization.
	Features []*OrganizationFeatureConfiguration `locationName:"features" 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 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.DetectorId == nil {
		invalidParams.Add(request.NewErrParamRequired("DetectorId"))
	}
	if s.DetectorId != nil && len(*s.DetectorId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DetectorId", 1))
	}
	if s.DataSources != nil {
		if err := s.DataSources.Validate(); err != nil {
			invalidParams.AddNested("DataSources", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAutoEnable sets the AutoEnable field's value.
func (s *UpdateOrganizationConfigurationInput) SetAutoEnable(v bool) *UpdateOrganizationConfigurationInput {
	s.AutoEnable = &v
	return s
}

// SetAutoEnableOrganizationMembers sets the AutoEnableOrganizationMembers field's value.
func (s *UpdateOrganizationConfigurationInput) SetAutoEnableOrganizationMembers(v string) *UpdateOrganizationConfigurationInput {
	s.AutoEnableOrganizationMembers = &v
	return s
}

// SetDataSources sets the DataSources field's value.
func (s *UpdateOrganizationConfigurationInput) SetDataSources(v *OrganizationDataSourceConfigurations) *UpdateOrganizationConfigurationInput {
	s.DataSources = v
	return s
}

// SetDetectorId sets the DetectorId field's value.
func (s *UpdateOrganizationConfigurationInput) SetDetectorId(v string) *UpdateOrganizationConfigurationInput {
	s.DetectorId = &v
	return s
}

// SetFeatures sets the Features field's value.
func (s *UpdateOrganizationConfigurationInput) SetFeatures(v []*OrganizationFeatureConfiguration) *UpdateOrganizationConfigurationInput {
	s.Features = v
	return s
}

type UpdateOrganizationConfigurationOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateOrganizationConfigurationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateOrganizationConfigurationOutput) GoString() string {
	return s.String()
}

type UpdatePublishingDestinationInput struct {
	_ struct{} `type:"structure"`

	// The ID of the publishing destination to update.
	//
	// DestinationId is a required field
	DestinationId *string `location:"uri" locationName:"destinationId" type:"string" required:"true"`

	// A DestinationProperties object that includes the DestinationArn and KmsKeyArn
	// of the publishing destination.
	DestinationProperties *DestinationProperties `locationName:"destinationProperties" type:"structure"`

	// The ID of the detector associated with the publishing destinations to update.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" 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 UpdatePublishingDestinationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdatePublishingDestinationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdatePublishingDestinationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdatePublishingDestinationInput"}
	if s.DestinationId == nil {
		invalidParams.Add(request.NewErrParamRequired("DestinationId"))
	}
	if s.DestinationId != nil && len(*s.DestinationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DestinationId", 1))
	}
	if s.DetectorId == nil {
		invalidParams.Add(request.NewErrParamRequired("DetectorId"))
	}
	if s.DetectorId != nil && len(*s.DetectorId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DetectorId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDestinationId sets the DestinationId field's value.
func (s *UpdatePublishingDestinationInput) SetDestinationId(v string) *UpdatePublishingDestinationInput {
	s.DestinationId = &v
	return s
}

// SetDestinationProperties sets the DestinationProperties field's value.
func (s *UpdatePublishingDestinationInput) SetDestinationProperties(v *DestinationProperties) *UpdatePublishingDestinationInput {
	s.DestinationProperties = v
	return s
}

// SetDetectorId sets the DetectorId field's value.
func (s *UpdatePublishingDestinationInput) SetDetectorId(v string) *UpdatePublishingDestinationInput {
	s.DetectorId = &v
	return s
}

type UpdatePublishingDestinationOutput 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 UpdatePublishingDestinationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdatePublishingDestinationOutput) GoString() string {
	return s.String()
}

type UpdateThreatIntelSetInput struct {
	_ struct{} `type:"structure"`

	// The updated Boolean value that specifies whether the ThreateIntelSet is active
	// or not.
	Activate *bool `locationName:"activate" type:"boolean"`

	// The detectorID that specifies the GuardDuty service whose ThreatIntelSet
	// you want to update.
	//
	// DetectorId is a required field
	DetectorId *string `location:"uri" locationName:"detectorId" min:"1" type:"string" required:"true"`

	// The updated URI of the file that contains the ThreateIntelSet.
	Location *string `locationName:"location" min:"1" type:"string"`

	// The unique ID that specifies the ThreatIntelSet that you want to update.
	Name *string `locationName:"name" min:"1" type:"string"`

	// The unique ID that specifies the ThreatIntelSet that you want to update.
	//
	// ThreatIntelSetId is a required field
	ThreatIntelSetId *string `location:"uri" locationName:"threatIntelSetId" 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 UpdateThreatIntelSetInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateThreatIntelSetInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateThreatIntelSetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateThreatIntelSetInput"}
	if s.DetectorId == nil {
		invalidParams.Add(request.NewErrParamRequired("DetectorId"))
	}
	if s.DetectorId != nil && len(*s.DetectorId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DetectorId", 1))
	}
	if s.Location != nil && len(*s.Location) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Location", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.ThreatIntelSetId == nil {
		invalidParams.Add(request.NewErrParamRequired("ThreatIntelSetId"))
	}
	if s.ThreatIntelSetId != nil && len(*s.ThreatIntelSetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ThreatIntelSetId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActivate sets the Activate field's value.
func (s *UpdateThreatIntelSetInput) SetActivate(v bool) *UpdateThreatIntelSetInput {
	s.Activate = &v
	return s
}

// SetDetectorId sets the DetectorId field's value.
func (s *UpdateThreatIntelSetInput) SetDetectorId(v string) *UpdateThreatIntelSetInput {
	s.DetectorId = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *UpdateThreatIntelSetInput) SetLocation(v string) *UpdateThreatIntelSetInput {
	s.Location = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateThreatIntelSetInput) SetName(v string) *UpdateThreatIntelSetInput {
	s.Name = &v
	return s
}

// SetThreatIntelSetId sets the ThreatIntelSetId field's value.
func (s *UpdateThreatIntelSetInput) SetThreatIntelSetId(v string) *UpdateThreatIntelSetInput {
	s.ThreatIntelSetId = &v
	return s
}

type UpdateThreatIntelSetOutput 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 UpdateThreatIntelSetOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateThreatIntelSetOutput) GoString() string {
	return s.String()
}

// Contains information on the total of usage based on account IDs.
type UsageAccountResult struct {
	_ struct{} `type:"structure"`

	// The Account ID that generated usage.
	AccountId *string `locationName:"accountId" min:"12" type:"string"`

	// Represents the total of usage for the Account ID.
	Total *Total `locationName:"total" 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 UsageAccountResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UsageAccountResult) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *UsageAccountResult) SetAccountId(v string) *UsageAccountResult {
	s.AccountId = &v
	return s
}

// SetTotal sets the Total field's value.
func (s *UsageAccountResult) SetTotal(v *Total) *UsageAccountResult {
	s.Total = v
	return s
}

// Contains information about the criteria used to query usage statistics.
type UsageCriteria struct {
	_ struct{} `type:"structure"`

	// The account IDs to aggregate usage statistics from.
	AccountIds []*string `locationName:"accountIds" min:"1" type:"list"`

	// The data sources to aggregate usage statistics from.
	//
	// Deprecated: This parameter is deprecated, use Features instead
	DataSources []*string `locationName:"dataSources" deprecated:"true" type:"list" enum:"DataSource"`

	// The features to aggregate usage statistics from.
	Features []*string `locationName:"features" type:"list" enum:"UsageFeature"`

	// The resources to aggregate usage statistics from. Only accepts exact resource
	// names.
	Resources []*string `locationName:"resources" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UsageCriteria) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UsageCriteria) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UsageCriteria) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UsageCriteria"}
	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 *UsageCriteria) SetAccountIds(v []*string) *UsageCriteria {
	s.AccountIds = v
	return s
}

// SetDataSources sets the DataSources field's value.
func (s *UsageCriteria) SetDataSources(v []*string) *UsageCriteria {
	s.DataSources = v
	return s
}

// SetFeatures sets the Features field's value.
func (s *UsageCriteria) SetFeatures(v []*string) *UsageCriteria {
	s.Features = v
	return s
}

// SetResources sets the Resources field's value.
func (s *UsageCriteria) SetResources(v []*string) *UsageCriteria {
	s.Resources = v
	return s
}

// Contains information on the result of usage based on data source type.
type UsageDataSourceResult struct {
	_ struct{} `type:"structure"`

	// The data source type that generated usage.
	DataSource *string `locationName:"dataSource" type:"string" enum:"DataSource"`

	// Represents the total of usage for the specified data source.
	Total *Total `locationName:"total" 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 UsageDataSourceResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UsageDataSourceResult) GoString() string {
	return s.String()
}

// SetDataSource sets the DataSource field's value.
func (s *UsageDataSourceResult) SetDataSource(v string) *UsageDataSourceResult {
	s.DataSource = &v
	return s
}

// SetTotal sets the Total field's value.
func (s *UsageDataSourceResult) SetTotal(v *Total) *UsageDataSourceResult {
	s.Total = v
	return s
}

// Contains information about the result of the total usage based on the feature.
type UsageFeatureResult struct {
	_ struct{} `type:"structure"`

	// The feature that generated the usage cost.
	Feature *string `locationName:"feature" type:"string" enum:"UsageFeature"`

	// Contains the total usage with the corresponding currency unit for that value.
	Total *Total `locationName:"total" 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 UsageFeatureResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UsageFeatureResult) GoString() string {
	return s.String()
}

// SetFeature sets the Feature field's value.
func (s *UsageFeatureResult) SetFeature(v string) *UsageFeatureResult {
	s.Feature = &v
	return s
}

// SetTotal sets the Total field's value.
func (s *UsageFeatureResult) SetTotal(v *Total) *UsageFeatureResult {
	s.Total = v
	return s
}

// Contains information on the sum of usage based on an Amazon Web Services
// resource.
type UsageResourceResult struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services resource that generated usage.
	Resource *string `locationName:"resource" type:"string"`

	// Represents the sum total of usage for the specified resource type.
	Total *Total `locationName:"total" 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 UsageResourceResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UsageResourceResult) GoString() string {
	return s.String()
}

// SetResource sets the Resource field's value.
func (s *UsageResourceResult) SetResource(v string) *UsageResourceResult {
	s.Resource = &v
	return s
}

// SetTotal sets the Total field's value.
func (s *UsageResourceResult) SetTotal(v *Total) *UsageResourceResult {
	s.Total = v
	return s
}

// Contains the result of GuardDuty usage. If a UsageStatisticType is provided
// the result for other types will be null.
type UsageStatistics struct {
	_ struct{} `type:"structure"`

	// The usage statistic sum organized by account ID.
	SumByAccount []*UsageAccountResult `locationName:"sumByAccount" type:"list"`

	// The usage statistic sum organized by on data source.
	SumByDataSource []*UsageDataSourceResult `locationName:"sumByDataSource" type:"list"`

	// The usage statistic sum organized by feature.
	SumByFeature []*UsageFeatureResult `locationName:"sumByFeature" type:"list"`

	// The usage statistic sum organized by resource.
	SumByResource []*UsageResourceResult `locationName:"sumByResource" type:"list"`

	// Lists the top 50 accounts by feature that have generated the most GuardDuty
	// usage, in the order from most to least expensive.
	//
	// Currently, this doesn't support RDS_LOGIN_EVENTS.
	TopAccountsByFeature []*UsageTopAccountsResult `locationName:"topAccountsByFeature" type:"list"`

	// Lists the top 50 resources that have generated the most GuardDuty usage,
	// in order from most to least expensive.
	TopResources []*UsageResourceResult `locationName:"topResources" 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 UsageStatistics) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UsageStatistics) GoString() string {
	return s.String()
}

// SetSumByAccount sets the SumByAccount field's value.
func (s *UsageStatistics) SetSumByAccount(v []*UsageAccountResult) *UsageStatistics {
	s.SumByAccount = v
	return s
}

// SetSumByDataSource sets the SumByDataSource field's value.
func (s *UsageStatistics) SetSumByDataSource(v []*UsageDataSourceResult) *UsageStatistics {
	s.SumByDataSource = v
	return s
}

// SetSumByFeature sets the SumByFeature field's value.
func (s *UsageStatistics) SetSumByFeature(v []*UsageFeatureResult) *UsageStatistics {
	s.SumByFeature = v
	return s
}

// SetSumByResource sets the SumByResource field's value.
func (s *UsageStatistics) SetSumByResource(v []*UsageResourceResult) *UsageStatistics {
	s.SumByResource = v
	return s
}

// SetTopAccountsByFeature sets the TopAccountsByFeature field's value.
func (s *UsageStatistics) SetTopAccountsByFeature(v []*UsageTopAccountsResult) *UsageStatistics {
	s.TopAccountsByFeature = v
	return s
}

// SetTopResources sets the TopResources field's value.
func (s *UsageStatistics) SetTopResources(v []*UsageResourceResult) *UsageStatistics {
	s.TopResources = v
	return s
}

// Contains information on the total of usage based on the topmost 50 account
// IDs.
type UsageTopAccountResult struct {
	_ struct{} `type:"structure"`

	// The unique account ID.
	AccountId *string `locationName:"accountId" min:"12" type:"string"`

	// Contains the total usage with the corresponding currency unit for that value.
	Total *Total `locationName:"total" 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 UsageTopAccountResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UsageTopAccountResult) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *UsageTopAccountResult) SetAccountId(v string) *UsageTopAccountResult {
	s.AccountId = &v
	return s
}

// SetTotal sets the Total field's value.
func (s *UsageTopAccountResult) SetTotal(v *Total) *UsageTopAccountResult {
	s.Total = v
	return s
}

// Information about the usage statistics, calculated by top accounts by feature.
type UsageTopAccountsResult struct {
	_ struct{} `type:"structure"`

	// The accounts that contributed to the total usage cost.
	Accounts []*UsageTopAccountResult `locationName:"accounts" type:"list"`

	// Features by which you can generate the usage statistics.
	//
	// RDS_LOGIN_EVENTS is currently not supported with topAccountsByFeature.
	Feature *string `locationName:"feature" type:"string" enum:"UsageFeature"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UsageTopAccountsResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UsageTopAccountsResult) GoString() string {
	return s.String()
}

// SetAccounts sets the Accounts field's value.
func (s *UsageTopAccountsResult) SetAccounts(v []*UsageTopAccountResult) *UsageTopAccountsResult {
	s.Accounts = v
	return s
}

// SetFeature sets the Feature field's value.
func (s *UsageTopAccountsResult) SetFeature(v string) *UsageTopAccountsResult {
	s.Feature = &v
	return s
}

// Volume used by the Kubernetes workload.
type Volume struct {
	_ struct{} `type:"structure"`

	// Represents a pre-existing file or directory on the host machine that the
	// volume maps to.
	HostPath *HostPath `locationName:"hostPath" type:"structure"`

	// Volume name.
	Name *string `locationName:"name" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Volume) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Volume) GoString() string {
	return s.String()
}

// SetHostPath sets the HostPath field's value.
func (s *Volume) SetHostPath(v *HostPath) *Volume {
	s.HostPath = v
	return s
}

// SetName sets the Name field's value.
func (s *Volume) SetName(v string) *Volume {
	s.Name = &v
	return s
}

// Contains EBS volume details.
type VolumeDetail struct {
	_ struct{} `type:"structure"`

	// The device name for the EBS volume.
	DeviceName *string `locationName:"deviceName" type:"string"`

	// EBS volume encryption type.
	EncryptionType *string `locationName:"encryptionType" type:"string"`

	// KMS key Arn used to encrypt the EBS volume.
	KmsKeyArn *string `locationName:"kmsKeyArn" type:"string"`

	// Snapshot Arn of the EBS volume.
	SnapshotArn *string `locationName:"snapshotArn" type:"string"`

	// EBS volume Arn information.
	VolumeArn *string `locationName:"volumeArn" type:"string"`

	// EBS volume size in GB.
	VolumeSizeInGB *int64 `locationName:"volumeSizeInGB" type:"integer"`

	// The EBS volume type.
	VolumeType *string `locationName:"volumeType" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VolumeDetail) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VolumeDetail) GoString() string {
	return s.String()
}

// SetDeviceName sets the DeviceName field's value.
func (s *VolumeDetail) SetDeviceName(v string) *VolumeDetail {
	s.DeviceName = &v
	return s
}

// SetEncryptionType sets the EncryptionType field's value.
func (s *VolumeDetail) SetEncryptionType(v string) *VolumeDetail {
	s.EncryptionType = &v
	return s
}

// SetKmsKeyArn sets the KmsKeyArn field's value.
func (s *VolumeDetail) SetKmsKeyArn(v string) *VolumeDetail {
	s.KmsKeyArn = &v
	return s
}

// SetSnapshotArn sets the SnapshotArn field's value.
func (s *VolumeDetail) SetSnapshotArn(v string) *VolumeDetail {
	s.SnapshotArn = &v
	return s
}

// SetVolumeArn sets the VolumeArn field's value.
func (s *VolumeDetail) SetVolumeArn(v string) *VolumeDetail {
	s.VolumeArn = &v
	return s
}

// SetVolumeSizeInGB sets the VolumeSizeInGB field's value.
func (s *VolumeDetail) SetVolumeSizeInGB(v int64) *VolumeDetail {
	s.VolumeSizeInGB = &v
	return s
}

// SetVolumeType sets the VolumeType field's value.
func (s *VolumeDetail) SetVolumeType(v string) *VolumeDetail {
	s.VolumeType = &v
	return s
}

// Container volume mount.
type VolumeMount struct {
	_ struct{} `type:"structure"`

	// Volume mount path.
	MountPath *string `locationName:"mountPath" type:"string"`

	// Volume mount name.
	Name *string `locationName:"name" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VolumeMount) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VolumeMount) GoString() string {
	return s.String()
}

// SetMountPath sets the MountPath field's value.
func (s *VolumeMount) SetMountPath(v string) *VolumeMount {
	s.MountPath = &v
	return s
}

// SetName sets the Name field's value.
func (s *VolumeMount) SetName(v string) *VolumeMount {
	s.Name = &v
	return s
}

// Amazon Virtual Private Cloud configuration details associated with your Lambda
// function.
type VpcConfig struct {
	_ struct{} `type:"structure"`

	// The identifier of the security group attached to the Lambda function.
	SecurityGroups []*SecurityGroup `locationName:"securityGroups" type:"list"`

	// The identifiers of the subnets that are associated with your Lambda function.
	SubnetIds []*string `locationName:"subnetIds" type:"list"`

	// The identifier of the Amazon Virtual Private Cloud.
	VpcId *string `locationName:"vpcId" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VpcConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VpcConfig) GoString() string {
	return s.String()
}

// SetSecurityGroups sets the SecurityGroups field's value.
func (s *VpcConfig) SetSecurityGroups(v []*SecurityGroup) *VpcConfig {
	s.SecurityGroups = v
	return s
}

// SetSubnetIds sets the SubnetIds field's value.
func (s *VpcConfig) SetSubnetIds(v []*string) *VpcConfig {
	s.SubnetIds = v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *VpcConfig) SetVpcId(v string) *VpcConfig {
	s.VpcId = &v
	return s
}

const (
	// AdminStatusEnabled is a AdminStatus enum value
	AdminStatusEnabled = "ENABLED"

	// AdminStatusDisableInProgress is a AdminStatus enum value
	AdminStatusDisableInProgress = "DISABLE_IN_PROGRESS"
)

// AdminStatus_Values returns all elements of the AdminStatus enum
func AdminStatus_Values() []string {
	return []string{
		AdminStatusEnabled,
		AdminStatusDisableInProgress,
	}
}

const (
	// AutoEnableMembersNew is a AutoEnableMembers enum value
	AutoEnableMembersNew = "NEW"

	// AutoEnableMembersAll is a AutoEnableMembers enum value
	AutoEnableMembersAll = "ALL"

	// AutoEnableMembersNone is a AutoEnableMembers enum value
	AutoEnableMembersNone = "NONE"
)

// AutoEnableMembers_Values returns all elements of the AutoEnableMembers enum
func AutoEnableMembers_Values() []string {
	return []string{
		AutoEnableMembersNew,
		AutoEnableMembersAll,
		AutoEnableMembersNone,
	}
}

const (
	// CoverageFilterCriterionKeyAccountId is a CoverageFilterCriterionKey enum value
	CoverageFilterCriterionKeyAccountId = "ACCOUNT_ID"

	// CoverageFilterCriterionKeyClusterName is a CoverageFilterCriterionKey enum value
	CoverageFilterCriterionKeyClusterName = "CLUSTER_NAME"

	// CoverageFilterCriterionKeyResourceType is a CoverageFilterCriterionKey enum value
	CoverageFilterCriterionKeyResourceType = "RESOURCE_TYPE"

	// CoverageFilterCriterionKeyCoverageStatus is a CoverageFilterCriterionKey enum value
	CoverageFilterCriterionKeyCoverageStatus = "COVERAGE_STATUS"

	// CoverageFilterCriterionKeyAddonVersion is a CoverageFilterCriterionKey enum value
	CoverageFilterCriterionKeyAddonVersion = "ADDON_VERSION"

	// CoverageFilterCriterionKeyManagementType is a CoverageFilterCriterionKey enum value
	CoverageFilterCriterionKeyManagementType = "MANAGEMENT_TYPE"

	// CoverageFilterCriterionKeyEksClusterName is a CoverageFilterCriterionKey enum value
	CoverageFilterCriterionKeyEksClusterName = "EKS_CLUSTER_NAME"

	// CoverageFilterCriterionKeyEcsClusterName is a CoverageFilterCriterionKey enum value
	CoverageFilterCriterionKeyEcsClusterName = "ECS_CLUSTER_NAME"

	// CoverageFilterCriterionKeyAgentVersion is a CoverageFilterCriterionKey enum value
	CoverageFilterCriterionKeyAgentVersion = "AGENT_VERSION"

	// CoverageFilterCriterionKeyInstanceId is a CoverageFilterCriterionKey enum value
	CoverageFilterCriterionKeyInstanceId = "INSTANCE_ID"

	// CoverageFilterCriterionKeyClusterArn is a CoverageFilterCriterionKey enum value
	CoverageFilterCriterionKeyClusterArn = "CLUSTER_ARN"
)

// CoverageFilterCriterionKey_Values returns all elements of the CoverageFilterCriterionKey enum
func CoverageFilterCriterionKey_Values() []string {
	return []string{
		CoverageFilterCriterionKeyAccountId,
		CoverageFilterCriterionKeyClusterName,
		CoverageFilterCriterionKeyResourceType,
		CoverageFilterCriterionKeyCoverageStatus,
		CoverageFilterCriterionKeyAddonVersion,
		CoverageFilterCriterionKeyManagementType,
		CoverageFilterCriterionKeyEksClusterName,
		CoverageFilterCriterionKeyEcsClusterName,
		CoverageFilterCriterionKeyAgentVersion,
		CoverageFilterCriterionKeyInstanceId,
		CoverageFilterCriterionKeyClusterArn,
	}
}

const (
	// CoverageSortKeyAccountId is a CoverageSortKey enum value
	CoverageSortKeyAccountId = "ACCOUNT_ID"

	// CoverageSortKeyClusterName is a CoverageSortKey enum value
	CoverageSortKeyClusterName = "CLUSTER_NAME"

	// CoverageSortKeyCoverageStatus is a CoverageSortKey enum value
	CoverageSortKeyCoverageStatus = "COVERAGE_STATUS"

	// CoverageSortKeyIssue is a CoverageSortKey enum value
	CoverageSortKeyIssue = "ISSUE"

	// CoverageSortKeyAddonVersion is a CoverageSortKey enum value
	CoverageSortKeyAddonVersion = "ADDON_VERSION"

	// CoverageSortKeyUpdatedAt is a CoverageSortKey enum value
	CoverageSortKeyUpdatedAt = "UPDATED_AT"

	// CoverageSortKeyEksClusterName is a CoverageSortKey enum value
	CoverageSortKeyEksClusterName = "EKS_CLUSTER_NAME"

	// CoverageSortKeyEcsClusterName is a CoverageSortKey enum value
	CoverageSortKeyEcsClusterName = "ECS_CLUSTER_NAME"

	// CoverageSortKeyInstanceId is a CoverageSortKey enum value
	CoverageSortKeyInstanceId = "INSTANCE_ID"
)

// CoverageSortKey_Values returns all elements of the CoverageSortKey enum
func CoverageSortKey_Values() []string {
	return []string{
		CoverageSortKeyAccountId,
		CoverageSortKeyClusterName,
		CoverageSortKeyCoverageStatus,
		CoverageSortKeyIssue,
		CoverageSortKeyAddonVersion,
		CoverageSortKeyUpdatedAt,
		CoverageSortKeyEksClusterName,
		CoverageSortKeyEcsClusterName,
		CoverageSortKeyInstanceId,
	}
}

const (
	// CoverageStatisticsTypeCountByResourceType is a CoverageStatisticsType enum value
	CoverageStatisticsTypeCountByResourceType = "COUNT_BY_RESOURCE_TYPE"

	// CoverageStatisticsTypeCountByCoverageStatus is a CoverageStatisticsType enum value
	CoverageStatisticsTypeCountByCoverageStatus = "COUNT_BY_COVERAGE_STATUS"
)

// CoverageStatisticsType_Values returns all elements of the CoverageStatisticsType enum
func CoverageStatisticsType_Values() []string {
	return []string{
		CoverageStatisticsTypeCountByResourceType,
		CoverageStatisticsTypeCountByCoverageStatus,
	}
}

const (
	// CoverageStatusHealthy is a CoverageStatus enum value
	CoverageStatusHealthy = "HEALTHY"

	// CoverageStatusUnhealthy is a CoverageStatus enum value
	CoverageStatusUnhealthy = "UNHEALTHY"
)

// CoverageStatus_Values returns all elements of the CoverageStatus enum
func CoverageStatus_Values() []string {
	return []string{
		CoverageStatusHealthy,
		CoverageStatusUnhealthy,
	}
}

const (
	// CriterionKeyEc2InstanceArn is a CriterionKey enum value
	CriterionKeyEc2InstanceArn = "EC2_INSTANCE_ARN"

	// CriterionKeyScanId is a CriterionKey enum value
	CriterionKeyScanId = "SCAN_ID"

	// CriterionKeyAccountId is a CriterionKey enum value
	CriterionKeyAccountId = "ACCOUNT_ID"

	// CriterionKeyGuarddutyFindingId is a CriterionKey enum value
	CriterionKeyGuarddutyFindingId = "GUARDDUTY_FINDING_ID"

	// CriterionKeyScanStartTime is a CriterionKey enum value
	CriterionKeyScanStartTime = "SCAN_START_TIME"

	// CriterionKeyScanStatus is a CriterionKey enum value
	CriterionKeyScanStatus = "SCAN_STATUS"

	// CriterionKeyScanType is a CriterionKey enum value
	CriterionKeyScanType = "SCAN_TYPE"
)

// CriterionKey_Values returns all elements of the CriterionKey enum
func CriterionKey_Values() []string {
	return []string{
		CriterionKeyEc2InstanceArn,
		CriterionKeyScanId,
		CriterionKeyAccountId,
		CriterionKeyGuarddutyFindingId,
		CriterionKeyScanStartTime,
		CriterionKeyScanStatus,
		CriterionKeyScanType,
	}
}

const (
	// DataSourceFlowLogs is a DataSource enum value
	DataSourceFlowLogs = "FLOW_LOGS"

	// DataSourceCloudTrail is a DataSource enum value
	DataSourceCloudTrail = "CLOUD_TRAIL"

	// DataSourceDnsLogs is a DataSource enum value
	DataSourceDnsLogs = "DNS_LOGS"

	// DataSourceS3Logs is a DataSource enum value
	DataSourceS3Logs = "S3_LOGS"

	// DataSourceKubernetesAuditLogs is a DataSource enum value
	DataSourceKubernetesAuditLogs = "KUBERNETES_AUDIT_LOGS"

	// DataSourceEc2MalwareScan is a DataSource enum value
	DataSourceEc2MalwareScan = "EC2_MALWARE_SCAN"
)

// DataSource_Values returns all elements of the DataSource enum
func DataSource_Values() []string {
	return []string{
		DataSourceFlowLogs,
		DataSourceCloudTrail,
		DataSourceDnsLogs,
		DataSourceS3Logs,
		DataSourceKubernetesAuditLogs,
		DataSourceEc2MalwareScan,
	}
}

const (
	// DataSourceStatusEnabled is a DataSourceStatus enum value
	DataSourceStatusEnabled = "ENABLED"

	// DataSourceStatusDisabled is a DataSourceStatus enum value
	DataSourceStatusDisabled = "DISABLED"
)

// DataSourceStatus_Values returns all elements of the DataSourceStatus enum
func DataSourceStatus_Values() []string {
	return []string{
		DataSourceStatusEnabled,
		DataSourceStatusDisabled,
	}
}

const (
	// DestinationTypeS3 is a DestinationType enum value
	DestinationTypeS3 = "S3"
)

// DestinationType_Values returns all elements of the DestinationType enum
func DestinationType_Values() []string {
	return []string{
		DestinationTypeS3,
	}
}

const (
	// DetectorFeatureS3DataEvents is a DetectorFeature enum value
	DetectorFeatureS3DataEvents = "S3_DATA_EVENTS"

	// DetectorFeatureEksAuditLogs is a DetectorFeature enum value
	DetectorFeatureEksAuditLogs = "EKS_AUDIT_LOGS"

	// DetectorFeatureEbsMalwareProtection is a DetectorFeature enum value
	DetectorFeatureEbsMalwareProtection = "EBS_MALWARE_PROTECTION"

	// DetectorFeatureRdsLoginEvents is a DetectorFeature enum value
	DetectorFeatureRdsLoginEvents = "RDS_LOGIN_EVENTS"

	// DetectorFeatureEksRuntimeMonitoring is a DetectorFeature enum value
	DetectorFeatureEksRuntimeMonitoring = "EKS_RUNTIME_MONITORING"

	// DetectorFeatureLambdaNetworkLogs is a DetectorFeature enum value
	DetectorFeatureLambdaNetworkLogs = "LAMBDA_NETWORK_LOGS"

	// DetectorFeatureRuntimeMonitoring is a DetectorFeature enum value
	DetectorFeatureRuntimeMonitoring = "RUNTIME_MONITORING"
)

// DetectorFeature_Values returns all elements of the DetectorFeature enum
func DetectorFeature_Values() []string {
	return []string{
		DetectorFeatureS3DataEvents,
		DetectorFeatureEksAuditLogs,
		DetectorFeatureEbsMalwareProtection,
		DetectorFeatureRdsLoginEvents,
		DetectorFeatureEksRuntimeMonitoring,
		DetectorFeatureLambdaNetworkLogs,
		DetectorFeatureRuntimeMonitoring,
	}
}

const (
	// DetectorFeatureResultFlowLogs is a DetectorFeatureResult enum value
	DetectorFeatureResultFlowLogs = "FLOW_LOGS"

	// DetectorFeatureResultCloudTrail is a DetectorFeatureResult enum value
	DetectorFeatureResultCloudTrail = "CLOUD_TRAIL"

	// DetectorFeatureResultDnsLogs is a DetectorFeatureResult enum value
	DetectorFeatureResultDnsLogs = "DNS_LOGS"

	// DetectorFeatureResultS3DataEvents is a DetectorFeatureResult enum value
	DetectorFeatureResultS3DataEvents = "S3_DATA_EVENTS"

	// DetectorFeatureResultEksAuditLogs is a DetectorFeatureResult enum value
	DetectorFeatureResultEksAuditLogs = "EKS_AUDIT_LOGS"

	// DetectorFeatureResultEbsMalwareProtection is a DetectorFeatureResult enum value
	DetectorFeatureResultEbsMalwareProtection = "EBS_MALWARE_PROTECTION"

	// DetectorFeatureResultRdsLoginEvents is a DetectorFeatureResult enum value
	DetectorFeatureResultRdsLoginEvents = "RDS_LOGIN_EVENTS"

	// DetectorFeatureResultEksRuntimeMonitoring is a DetectorFeatureResult enum value
	DetectorFeatureResultEksRuntimeMonitoring = "EKS_RUNTIME_MONITORING"

	// DetectorFeatureResultLambdaNetworkLogs is a DetectorFeatureResult enum value
	DetectorFeatureResultLambdaNetworkLogs = "LAMBDA_NETWORK_LOGS"

	// DetectorFeatureResultRuntimeMonitoring is a DetectorFeatureResult enum value
	DetectorFeatureResultRuntimeMonitoring = "RUNTIME_MONITORING"
)

// DetectorFeatureResult_Values returns all elements of the DetectorFeatureResult enum
func DetectorFeatureResult_Values() []string {
	return []string{
		DetectorFeatureResultFlowLogs,
		DetectorFeatureResultCloudTrail,
		DetectorFeatureResultDnsLogs,
		DetectorFeatureResultS3DataEvents,
		DetectorFeatureResultEksAuditLogs,
		DetectorFeatureResultEbsMalwareProtection,
		DetectorFeatureResultRdsLoginEvents,
		DetectorFeatureResultEksRuntimeMonitoring,
		DetectorFeatureResultLambdaNetworkLogs,
		DetectorFeatureResultRuntimeMonitoring,
	}
}

const (
	// DetectorStatusEnabled is a DetectorStatus enum value
	DetectorStatusEnabled = "ENABLED"

	// DetectorStatusDisabled is a DetectorStatus enum value
	DetectorStatusDisabled = "DISABLED"
)

// DetectorStatus_Values returns all elements of the DetectorStatus enum
func DetectorStatus_Values() []string {
	return []string{
		DetectorStatusEnabled,
		DetectorStatusDisabled,
	}
}

const (
	// EbsSnapshotPreservationNoRetention is a EbsSnapshotPreservation enum value
	EbsSnapshotPreservationNoRetention = "NO_RETENTION"

	// EbsSnapshotPreservationRetentionWithFinding is a EbsSnapshotPreservation enum value
	EbsSnapshotPreservationRetentionWithFinding = "RETENTION_WITH_FINDING"
)

// EbsSnapshotPreservation_Values returns all elements of the EbsSnapshotPreservation enum
func EbsSnapshotPreservation_Values() []string {
	return []string{
		EbsSnapshotPreservationNoRetention,
		EbsSnapshotPreservationRetentionWithFinding,
	}
}

const (
	// FeatureAdditionalConfigurationEksAddonManagement is a FeatureAdditionalConfiguration enum value
	FeatureAdditionalConfigurationEksAddonManagement = "EKS_ADDON_MANAGEMENT"

	// FeatureAdditionalConfigurationEcsFargateAgentManagement is a FeatureAdditionalConfiguration enum value
	FeatureAdditionalConfigurationEcsFargateAgentManagement = "ECS_FARGATE_AGENT_MANAGEMENT"
)

// FeatureAdditionalConfiguration_Values returns all elements of the FeatureAdditionalConfiguration enum
func FeatureAdditionalConfiguration_Values() []string {
	return []string{
		FeatureAdditionalConfigurationEksAddonManagement,
		FeatureAdditionalConfigurationEcsFargateAgentManagement,
	}
}

const (
	// FeatureStatusEnabled is a FeatureStatus enum value
	FeatureStatusEnabled = "ENABLED"

	// FeatureStatusDisabled is a FeatureStatus enum value
	FeatureStatusDisabled = "DISABLED"
)

// FeatureStatus_Values returns all elements of the FeatureStatus enum
func FeatureStatus_Values() []string {
	return []string{
		FeatureStatusEnabled,
		FeatureStatusDisabled,
	}
}

const (
	// FeedbackUseful is a Feedback enum value
	FeedbackUseful = "USEFUL"

	// FeedbackNotUseful is a Feedback enum value
	FeedbackNotUseful = "NOT_USEFUL"
)

// Feedback_Values returns all elements of the Feedback enum
func Feedback_Values() []string {
	return []string{
		FeedbackUseful,
		FeedbackNotUseful,
	}
}

const (
	// FilterActionNoop is a FilterAction enum value
	FilterActionNoop = "NOOP"

	// FilterActionArchive is a FilterAction enum value
	FilterActionArchive = "ARCHIVE"
)

// FilterAction_Values returns all elements of the FilterAction enum
func FilterAction_Values() []string {
	return []string{
		FilterActionNoop,
		FilterActionArchive,
	}
}

const (
	// FindingPublishingFrequencyFifteenMinutes is a FindingPublishingFrequency enum value
	FindingPublishingFrequencyFifteenMinutes = "FIFTEEN_MINUTES"

	// FindingPublishingFrequencyOneHour is a FindingPublishingFrequency enum value
	FindingPublishingFrequencyOneHour = "ONE_HOUR"

	// FindingPublishingFrequencySixHours is a FindingPublishingFrequency enum value
	FindingPublishingFrequencySixHours = "SIX_HOURS"
)

// FindingPublishingFrequency_Values returns all elements of the FindingPublishingFrequency enum
func FindingPublishingFrequency_Values() []string {
	return []string{
		FindingPublishingFrequencyFifteenMinutes,
		FindingPublishingFrequencyOneHour,
		FindingPublishingFrequencySixHours,
	}
}

const (
	// FindingStatisticTypeCountBySeverity is a FindingStatisticType enum value
	FindingStatisticTypeCountBySeverity = "COUNT_BY_SEVERITY"
)

// FindingStatisticType_Values returns all elements of the FindingStatisticType enum
func FindingStatisticType_Values() []string {
	return []string{
		FindingStatisticTypeCountBySeverity,
	}
}

const (
	// FreeTrialFeatureResultFlowLogs is a FreeTrialFeatureResult enum value
	FreeTrialFeatureResultFlowLogs = "FLOW_LOGS"

	// FreeTrialFeatureResultCloudTrail is a FreeTrialFeatureResult enum value
	FreeTrialFeatureResultCloudTrail = "CLOUD_TRAIL"

	// FreeTrialFeatureResultDnsLogs is a FreeTrialFeatureResult enum value
	FreeTrialFeatureResultDnsLogs = "DNS_LOGS"

	// FreeTrialFeatureResultS3DataEvents is a FreeTrialFeatureResult enum value
	FreeTrialFeatureResultS3DataEvents = "S3_DATA_EVENTS"

	// FreeTrialFeatureResultEksAuditLogs is a FreeTrialFeatureResult enum value
	FreeTrialFeatureResultEksAuditLogs = "EKS_AUDIT_LOGS"

	// FreeTrialFeatureResultEbsMalwareProtection is a FreeTrialFeatureResult enum value
	FreeTrialFeatureResultEbsMalwareProtection = "EBS_MALWARE_PROTECTION"

	// FreeTrialFeatureResultRdsLoginEvents is a FreeTrialFeatureResult enum value
	FreeTrialFeatureResultRdsLoginEvents = "RDS_LOGIN_EVENTS"

	// FreeTrialFeatureResultEksRuntimeMonitoring is a FreeTrialFeatureResult enum value
	FreeTrialFeatureResultEksRuntimeMonitoring = "EKS_RUNTIME_MONITORING"

	// FreeTrialFeatureResultLambdaNetworkLogs is a FreeTrialFeatureResult enum value
	FreeTrialFeatureResultLambdaNetworkLogs = "LAMBDA_NETWORK_LOGS"

	// FreeTrialFeatureResultFargateRuntimeMonitoring is a FreeTrialFeatureResult enum value
	FreeTrialFeatureResultFargateRuntimeMonitoring = "FARGATE_RUNTIME_MONITORING"

	// FreeTrialFeatureResultEc2RuntimeMonitoring is a FreeTrialFeatureResult enum value
	FreeTrialFeatureResultEc2RuntimeMonitoring = "EC2_RUNTIME_MONITORING"
)

// FreeTrialFeatureResult_Values returns all elements of the FreeTrialFeatureResult enum
func FreeTrialFeatureResult_Values() []string {
	return []string{
		FreeTrialFeatureResultFlowLogs,
		FreeTrialFeatureResultCloudTrail,
		FreeTrialFeatureResultDnsLogs,
		FreeTrialFeatureResultS3DataEvents,
		FreeTrialFeatureResultEksAuditLogs,
		FreeTrialFeatureResultEbsMalwareProtection,
		FreeTrialFeatureResultRdsLoginEvents,
		FreeTrialFeatureResultEksRuntimeMonitoring,
		FreeTrialFeatureResultLambdaNetworkLogs,
		FreeTrialFeatureResultFargateRuntimeMonitoring,
		FreeTrialFeatureResultEc2RuntimeMonitoring,
	}
}

const (
	// IpSetFormatTxt is a IpSetFormat enum value
	IpSetFormatTxt = "TXT"

	// IpSetFormatStix is a IpSetFormat enum value
	IpSetFormatStix = "STIX"

	// IpSetFormatOtxCsv is a IpSetFormat enum value
	IpSetFormatOtxCsv = "OTX_CSV"

	// IpSetFormatAlienVault is a IpSetFormat enum value
	IpSetFormatAlienVault = "ALIEN_VAULT"

	// IpSetFormatProofPoint is a IpSetFormat enum value
	IpSetFormatProofPoint = "PROOF_POINT"

	// IpSetFormatFireEye is a IpSetFormat enum value
	IpSetFormatFireEye = "FIRE_EYE"
)

// IpSetFormat_Values returns all elements of the IpSetFormat enum
func IpSetFormat_Values() []string {
	return []string{
		IpSetFormatTxt,
		IpSetFormatStix,
		IpSetFormatOtxCsv,
		IpSetFormatAlienVault,
		IpSetFormatProofPoint,
		IpSetFormatFireEye,
	}
}

const (
	// IpSetStatusInactive is a IpSetStatus enum value
	IpSetStatusInactive = "INACTIVE"

	// IpSetStatusActivating is a IpSetStatus enum value
	IpSetStatusActivating = "ACTIVATING"

	// IpSetStatusActive is a IpSetStatus enum value
	IpSetStatusActive = "ACTIVE"

	// IpSetStatusDeactivating is a IpSetStatus enum value
	IpSetStatusDeactivating = "DEACTIVATING"

	// IpSetStatusError is a IpSetStatus enum value
	IpSetStatusError = "ERROR"

	// IpSetStatusDeletePending is a IpSetStatus enum value
	IpSetStatusDeletePending = "DELETE_PENDING"

	// IpSetStatusDeleted is a IpSetStatus enum value
	IpSetStatusDeleted = "DELETED"
)

// IpSetStatus_Values returns all elements of the IpSetStatus enum
func IpSetStatus_Values() []string {
	return []string{
		IpSetStatusInactive,
		IpSetStatusActivating,
		IpSetStatusActive,
		IpSetStatusDeactivating,
		IpSetStatusError,
		IpSetStatusDeletePending,
		IpSetStatusDeleted,
	}
}

const (
	// ManagementTypeAutoManaged is a ManagementType enum value
	ManagementTypeAutoManaged = "AUTO_MANAGED"

	// ManagementTypeManual is a ManagementType enum value
	ManagementTypeManual = "MANUAL"

	// ManagementTypeDisabled is a ManagementType enum value
	ManagementTypeDisabled = "DISABLED"
)

// ManagementType_Values returns all elements of the ManagementType enum
func ManagementType_Values() []string {
	return []string{
		ManagementTypeAutoManaged,
		ManagementTypeManual,
		ManagementTypeDisabled,
	}
}

const (
	// OrderByAsc is a OrderBy enum value
	OrderByAsc = "ASC"

	// OrderByDesc is a OrderBy enum value
	OrderByDesc = "DESC"
)

// OrderBy_Values returns all elements of the OrderBy enum
func OrderBy_Values() []string {
	return []string{
		OrderByAsc,
		OrderByDesc,
	}
}

const (
	// OrgFeatureS3DataEvents is a OrgFeature enum value
	OrgFeatureS3DataEvents = "S3_DATA_EVENTS"

	// OrgFeatureEksAuditLogs is a OrgFeature enum value
	OrgFeatureEksAuditLogs = "EKS_AUDIT_LOGS"

	// OrgFeatureEbsMalwareProtection is a OrgFeature enum value
	OrgFeatureEbsMalwareProtection = "EBS_MALWARE_PROTECTION"

	// OrgFeatureRdsLoginEvents is a OrgFeature enum value
	OrgFeatureRdsLoginEvents = "RDS_LOGIN_EVENTS"

	// OrgFeatureEksRuntimeMonitoring is a OrgFeature enum value
	OrgFeatureEksRuntimeMonitoring = "EKS_RUNTIME_MONITORING"

	// OrgFeatureLambdaNetworkLogs is a OrgFeature enum value
	OrgFeatureLambdaNetworkLogs = "LAMBDA_NETWORK_LOGS"

	// OrgFeatureRuntimeMonitoring is a OrgFeature enum value
	OrgFeatureRuntimeMonitoring = "RUNTIME_MONITORING"
)

// OrgFeature_Values returns all elements of the OrgFeature enum
func OrgFeature_Values() []string {
	return []string{
		OrgFeatureS3DataEvents,
		OrgFeatureEksAuditLogs,
		OrgFeatureEbsMalwareProtection,
		OrgFeatureRdsLoginEvents,
		OrgFeatureEksRuntimeMonitoring,
		OrgFeatureLambdaNetworkLogs,
		OrgFeatureRuntimeMonitoring,
	}
}

const (
	// OrgFeatureAdditionalConfigurationEksAddonManagement is a OrgFeatureAdditionalConfiguration enum value
	OrgFeatureAdditionalConfigurationEksAddonManagement = "EKS_ADDON_MANAGEMENT"

	// OrgFeatureAdditionalConfigurationEcsFargateAgentManagement is a OrgFeatureAdditionalConfiguration enum value
	OrgFeatureAdditionalConfigurationEcsFargateAgentManagement = "ECS_FARGATE_AGENT_MANAGEMENT"
)

// OrgFeatureAdditionalConfiguration_Values returns all elements of the OrgFeatureAdditionalConfiguration enum
func OrgFeatureAdditionalConfiguration_Values() []string {
	return []string{
		OrgFeatureAdditionalConfigurationEksAddonManagement,
		OrgFeatureAdditionalConfigurationEcsFargateAgentManagement,
	}
}

const (
	// OrgFeatureStatusNew is a OrgFeatureStatus enum value
	OrgFeatureStatusNew = "NEW"

	// OrgFeatureStatusNone is a OrgFeatureStatus enum value
	OrgFeatureStatusNone = "NONE"

	// OrgFeatureStatusAll is a OrgFeatureStatus enum value
	OrgFeatureStatusAll = "ALL"
)

// OrgFeatureStatus_Values returns all elements of the OrgFeatureStatus enum
func OrgFeatureStatus_Values() []string {
	return []string{
		OrgFeatureStatusNew,
		OrgFeatureStatusNone,
		OrgFeatureStatusAll,
	}
}

const (
	// ProfileSubtypeFrequent is a ProfileSubtype enum value
	ProfileSubtypeFrequent = "FREQUENT"

	// ProfileSubtypeInfrequent is a ProfileSubtype enum value
	ProfileSubtypeInfrequent = "INFREQUENT"

	// ProfileSubtypeUnseen is a ProfileSubtype enum value
	ProfileSubtypeUnseen = "UNSEEN"

	// ProfileSubtypeRare is a ProfileSubtype enum value
	ProfileSubtypeRare = "RARE"
)

// ProfileSubtype_Values returns all elements of the ProfileSubtype enum
func ProfileSubtype_Values() []string {
	return []string{
		ProfileSubtypeFrequent,
		ProfileSubtypeInfrequent,
		ProfileSubtypeUnseen,
		ProfileSubtypeRare,
	}
}

const (
	// ProfileTypeFrequency is a ProfileType enum value
	ProfileTypeFrequency = "FREQUENCY"
)

// ProfileType_Values returns all elements of the ProfileType enum
func ProfileType_Values() []string {
	return []string{
		ProfileTypeFrequency,
	}
}

const (
	// PublishingStatusPendingVerification is a PublishingStatus enum value
	PublishingStatusPendingVerification = "PENDING_VERIFICATION"

	// PublishingStatusPublishing is a PublishingStatus enum value
	PublishingStatusPublishing = "PUBLISHING"

	// PublishingStatusUnableToPublishFixDestinationProperty is a PublishingStatus enum value
	PublishingStatusUnableToPublishFixDestinationProperty = "UNABLE_TO_PUBLISH_FIX_DESTINATION_PROPERTY"

	// PublishingStatusStopped is a PublishingStatus enum value
	PublishingStatusStopped = "STOPPED"
)

// PublishingStatus_Values returns all elements of the PublishingStatus enum
func PublishingStatus_Values() []string {
	return []string{
		PublishingStatusPendingVerification,
		PublishingStatusPublishing,
		PublishingStatusUnableToPublishFixDestinationProperty,
		PublishingStatusStopped,
	}
}

const (
	// ResourceTypeEks is a ResourceType enum value
	ResourceTypeEks = "EKS"

	// ResourceTypeEcs is a ResourceType enum value
	ResourceTypeEcs = "ECS"

	// ResourceTypeEc2 is a ResourceType enum value
	ResourceTypeEc2 = "EC2"
)

// ResourceType_Values returns all elements of the ResourceType enum
func ResourceType_Values() []string {
	return []string{
		ResourceTypeEks,
		ResourceTypeEcs,
		ResourceTypeEc2,
	}
}

// An enum value representing possible resource properties to match with given
// scan condition.
const (
	// ScanCriterionKeyEc2InstanceTag is a ScanCriterionKey enum value
	ScanCriterionKeyEc2InstanceTag = "EC2_INSTANCE_TAG"
)

// ScanCriterionKey_Values returns all elements of the ScanCriterionKey enum
func ScanCriterionKey_Values() []string {
	return []string{
		ScanCriterionKeyEc2InstanceTag,
	}
}

const (
	// ScanResultClean is a ScanResult enum value
	ScanResultClean = "CLEAN"

	// ScanResultInfected is a ScanResult enum value
	ScanResultInfected = "INFECTED"
)

// ScanResult_Values returns all elements of the ScanResult enum
func ScanResult_Values() []string {
	return []string{
		ScanResultClean,
		ScanResultInfected,
	}
}

const (
	// ScanStatusRunning is a ScanStatus enum value
	ScanStatusRunning = "RUNNING"

	// ScanStatusCompleted is a ScanStatus enum value
	ScanStatusCompleted = "COMPLETED"

	// ScanStatusFailed is a ScanStatus enum value
	ScanStatusFailed = "FAILED"

	// ScanStatusSkipped is a ScanStatus enum value
	ScanStatusSkipped = "SKIPPED"
)

// ScanStatus_Values returns all elements of the ScanStatus enum
func ScanStatus_Values() []string {
	return []string{
		ScanStatusRunning,
		ScanStatusCompleted,
		ScanStatusFailed,
		ScanStatusSkipped,
	}
}

const (
	// ScanTypeGuarddutyInitiated is a ScanType enum value
	ScanTypeGuarddutyInitiated = "GUARDDUTY_INITIATED"

	// ScanTypeOnDemand is a ScanType enum value
	ScanTypeOnDemand = "ON_DEMAND"
)

// ScanType_Values returns all elements of the ScanType enum
func ScanType_Values() []string {
	return []string{
		ScanTypeGuarddutyInitiated,
		ScanTypeOnDemand,
	}
}

const (
	// ThreatIntelSetFormatTxt is a ThreatIntelSetFormat enum value
	ThreatIntelSetFormatTxt = "TXT"

	// ThreatIntelSetFormatStix is a ThreatIntelSetFormat enum value
	ThreatIntelSetFormatStix = "STIX"

	// ThreatIntelSetFormatOtxCsv is a ThreatIntelSetFormat enum value
	ThreatIntelSetFormatOtxCsv = "OTX_CSV"

	// ThreatIntelSetFormatAlienVault is a ThreatIntelSetFormat enum value
	ThreatIntelSetFormatAlienVault = "ALIEN_VAULT"

	// ThreatIntelSetFormatProofPoint is a ThreatIntelSetFormat enum value
	ThreatIntelSetFormatProofPoint = "PROOF_POINT"

	// ThreatIntelSetFormatFireEye is a ThreatIntelSetFormat enum value
	ThreatIntelSetFormatFireEye = "FIRE_EYE"
)

// ThreatIntelSetFormat_Values returns all elements of the ThreatIntelSetFormat enum
func ThreatIntelSetFormat_Values() []string {
	return []string{
		ThreatIntelSetFormatTxt,
		ThreatIntelSetFormatStix,
		ThreatIntelSetFormatOtxCsv,
		ThreatIntelSetFormatAlienVault,
		ThreatIntelSetFormatProofPoint,
		ThreatIntelSetFormatFireEye,
	}
}

const (
	// ThreatIntelSetStatusInactive is a ThreatIntelSetStatus enum value
	ThreatIntelSetStatusInactive = "INACTIVE"

	// ThreatIntelSetStatusActivating is a ThreatIntelSetStatus enum value
	ThreatIntelSetStatusActivating = "ACTIVATING"

	// ThreatIntelSetStatusActive is a ThreatIntelSetStatus enum value
	ThreatIntelSetStatusActive = "ACTIVE"

	// ThreatIntelSetStatusDeactivating is a ThreatIntelSetStatus enum value
	ThreatIntelSetStatusDeactivating = "DEACTIVATING"

	// ThreatIntelSetStatusError is a ThreatIntelSetStatus enum value
	ThreatIntelSetStatusError = "ERROR"

	// ThreatIntelSetStatusDeletePending is a ThreatIntelSetStatus enum value
	ThreatIntelSetStatusDeletePending = "DELETE_PENDING"

	// ThreatIntelSetStatusDeleted is a ThreatIntelSetStatus enum value
	ThreatIntelSetStatusDeleted = "DELETED"
)

// ThreatIntelSetStatus_Values returns all elements of the ThreatIntelSetStatus enum
func ThreatIntelSetStatus_Values() []string {
	return []string{
		ThreatIntelSetStatusInactive,
		ThreatIntelSetStatusActivating,
		ThreatIntelSetStatusActive,
		ThreatIntelSetStatusDeactivating,
		ThreatIntelSetStatusError,
		ThreatIntelSetStatusDeletePending,
		ThreatIntelSetStatusDeleted,
	}
}

const (
	// UsageFeatureFlowLogs is a UsageFeature enum value
	UsageFeatureFlowLogs = "FLOW_LOGS"

	// UsageFeatureCloudTrail is a UsageFeature enum value
	UsageFeatureCloudTrail = "CLOUD_TRAIL"

	// UsageFeatureDnsLogs is a UsageFeature enum value
	UsageFeatureDnsLogs = "DNS_LOGS"

	// UsageFeatureS3DataEvents is a UsageFeature enum value
	UsageFeatureS3DataEvents = "S3_DATA_EVENTS"

	// UsageFeatureEksAuditLogs is a UsageFeature enum value
	UsageFeatureEksAuditLogs = "EKS_AUDIT_LOGS"

	// UsageFeatureEbsMalwareProtection is a UsageFeature enum value
	UsageFeatureEbsMalwareProtection = "EBS_MALWARE_PROTECTION"

	// UsageFeatureRdsLoginEvents is a UsageFeature enum value
	UsageFeatureRdsLoginEvents = "RDS_LOGIN_EVENTS"

	// UsageFeatureLambdaNetworkLogs is a UsageFeature enum value
	UsageFeatureLambdaNetworkLogs = "LAMBDA_NETWORK_LOGS"

	// UsageFeatureEksRuntimeMonitoring is a UsageFeature enum value
	UsageFeatureEksRuntimeMonitoring = "EKS_RUNTIME_MONITORING"

	// UsageFeatureFargateRuntimeMonitoring is a UsageFeature enum value
	UsageFeatureFargateRuntimeMonitoring = "FARGATE_RUNTIME_MONITORING"

	// UsageFeatureEc2RuntimeMonitoring is a UsageFeature enum value
	UsageFeatureEc2RuntimeMonitoring = "EC2_RUNTIME_MONITORING"
)

// UsageFeature_Values returns all elements of the UsageFeature enum
func UsageFeature_Values() []string {
	return []string{
		UsageFeatureFlowLogs,
		UsageFeatureCloudTrail,
		UsageFeatureDnsLogs,
		UsageFeatureS3DataEvents,
		UsageFeatureEksAuditLogs,
		UsageFeatureEbsMalwareProtection,
		UsageFeatureRdsLoginEvents,
		UsageFeatureLambdaNetworkLogs,
		UsageFeatureEksRuntimeMonitoring,
		UsageFeatureFargateRuntimeMonitoring,
		UsageFeatureEc2RuntimeMonitoring,
	}
}

const (
	// UsageStatisticTypeSumByAccount is a UsageStatisticType enum value
	UsageStatisticTypeSumByAccount = "SUM_BY_ACCOUNT"

	// UsageStatisticTypeSumByDataSource is a UsageStatisticType enum value
	UsageStatisticTypeSumByDataSource = "SUM_BY_DATA_SOURCE"

	// UsageStatisticTypeSumByResource is a UsageStatisticType enum value
	UsageStatisticTypeSumByResource = "SUM_BY_RESOURCE"

	// UsageStatisticTypeTopResources is a UsageStatisticType enum value
	UsageStatisticTypeTopResources = "TOP_RESOURCES"

	// UsageStatisticTypeSumByFeatures is a UsageStatisticType enum value
	UsageStatisticTypeSumByFeatures = "SUM_BY_FEATURES"

	// UsageStatisticTypeTopAccountsByFeature is a UsageStatisticType enum value
	UsageStatisticTypeTopAccountsByFeature = "TOP_ACCOUNTS_BY_FEATURE"
)

// UsageStatisticType_Values returns all elements of the UsageStatisticType enum
func UsageStatisticType_Values() []string {
	return []string{
		UsageStatisticTypeSumByAccount,
		UsageStatisticTypeSumByDataSource,
		UsageStatisticTypeSumByResource,
		UsageStatisticTypeTopResources,
		UsageStatisticTypeSumByFeatures,
		UsageStatisticTypeTopAccountsByFeature,
	}
}
