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

package macie2

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 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/macie2-2020-01-01/AcceptInvitation
func (c *Macie2) AcceptInvitationRequest(input *AcceptInvitationInput) (req *request.Request, output *AcceptInvitationOutput) {
	op := &request.Operation{
		Name:       opAcceptInvitation,
		HTTPMethod: "POST",
		HTTPPath:   "/invitations/accept",
	}

	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 Macie 2.
//
// Accepts an Amazon Macie membership invitation that was received from a specific
// 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 Macie 2's
// API operation AcceptInvitation for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/AcceptInvitation
func (c *Macie2) 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.
func (c *Macie2) 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 opBatchGetCustomDataIdentifiers = "BatchGetCustomDataIdentifiers"

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

	if input == nil {
		input = &BatchGetCustomDataIdentifiersInput{}
	}

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

// BatchGetCustomDataIdentifiers API operation for Amazon Macie 2.
//
// Retrieves information about one or more custom data identifiers.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation BatchGetCustomDataIdentifiers for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/BatchGetCustomDataIdentifiers
func (c *Macie2) BatchGetCustomDataIdentifiers(input *BatchGetCustomDataIdentifiersInput) (*BatchGetCustomDataIdentifiersOutput, error) {
	req, out := c.BatchGetCustomDataIdentifiersRequest(input)
	return out, req.Send()
}

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

const opBatchUpdateAutomatedDiscoveryAccounts = "BatchUpdateAutomatedDiscoveryAccounts"

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

	if input == nil {
		input = &BatchUpdateAutomatedDiscoveryAccountsInput{}
	}

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

// BatchUpdateAutomatedDiscoveryAccounts API operation for Amazon Macie 2.
//
// Changes the status of automated sensitive data discovery for one or more
// 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 Macie 2's
// API operation BatchUpdateAutomatedDiscoveryAccounts for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/BatchUpdateAutomatedDiscoveryAccounts
func (c *Macie2) BatchUpdateAutomatedDiscoveryAccounts(input *BatchUpdateAutomatedDiscoveryAccountsInput) (*BatchUpdateAutomatedDiscoveryAccountsOutput, error) {
	req, out := c.BatchUpdateAutomatedDiscoveryAccountsRequest(input)
	return out, req.Send()
}

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

const opCreateAllowList = "CreateAllowList"

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

	if input == nil {
		input = &CreateAllowListInput{}
	}

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

// CreateAllowList API operation for Amazon Macie 2.
//
// Creates and defines the settings for an allow list.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation CreateAllowList for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/CreateAllowList
func (c *Macie2) CreateAllowList(input *CreateAllowListInput) (*CreateAllowListOutput, error) {
	req, out := c.CreateAllowListRequest(input)
	return out, req.Send()
}

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

const opCreateClassificationJob = "CreateClassificationJob"

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

	if input == nil {
		input = &CreateClassificationJobInput{}
	}

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

// CreateClassificationJob API operation for Amazon Macie 2.
//
// Creates and defines the settings for a classification job.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation CreateClassificationJob for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/CreateClassificationJob
func (c *Macie2) CreateClassificationJob(input *CreateClassificationJobInput) (*CreateClassificationJobOutput, error) {
	req, out := c.CreateClassificationJobRequest(input)
	return out, req.Send()
}

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

const opCreateCustomDataIdentifier = "CreateCustomDataIdentifier"

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

	if input == nil {
		input = &CreateCustomDataIdentifierInput{}
	}

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

// CreateCustomDataIdentifier API operation for Amazon Macie 2.
//
// Creates and defines the criteria and other settings for a custom data identifier.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation CreateCustomDataIdentifier for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/CreateCustomDataIdentifier
func (c *Macie2) CreateCustomDataIdentifier(input *CreateCustomDataIdentifierInput) (*CreateCustomDataIdentifierOutput, error) {
	req, out := c.CreateCustomDataIdentifierRequest(input)
	return out, req.Send()
}

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

const opCreateFindingsFilter = "CreateFindingsFilter"

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

	if input == nil {
		input = &CreateFindingsFilterInput{}
	}

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

// CreateFindingsFilter API operation for Amazon Macie 2.
//
// Creates and defines the criteria and other settings for a findings filter.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Macie 2's
// API operation CreateFindingsFilter for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/CreateFindingsFilter
func (c *Macie2) CreateFindingsFilter(input *CreateFindingsFilterInput) (*CreateFindingsFilterOutput, error) {
	req, out := c.CreateFindingsFilterRequest(input)
	return out, req.Send()
}

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

const opCreateInvitations = "CreateInvitations"

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

	if input == nil {
		input = &CreateInvitationsInput{}
	}

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

// CreateInvitations API operation for Amazon Macie 2.
//
// Sends an Amazon Macie membership invitation to one or more 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 Macie 2's
// API operation CreateInvitations for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/CreateInvitations
func (c *Macie2) CreateInvitations(input *CreateInvitationsInput) (*CreateInvitationsOutput, error) {
	req, out := c.CreateInvitationsRequest(input)
	return out, req.Send()
}

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

const opCreateMember = "CreateMember"

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

	if input == nil {
		input = &CreateMemberInput{}
	}

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

// CreateMember API operation for Amazon Macie 2.
//
// Associates an account with an Amazon Macie 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 Macie 2's
// API operation CreateMember for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/CreateMember
func (c *Macie2) CreateMember(input *CreateMemberInput) (*CreateMemberOutput, error) {
	req, out := c.CreateMemberRequest(input)
	return out, req.Send()
}

// CreateMemberWithContext is the same as CreateMember with the addition of
// the ability to pass a context and additional request options.
//
// See CreateMember for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Macie2) CreateMemberWithContext(ctx aws.Context, input *CreateMemberInput, opts ...request.Option) (*CreateMemberOutput, error) {
	req, out := c.CreateMemberRequest(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/macie2-2020-01-01/CreateSampleFindings
func (c *Macie2) CreateSampleFindingsRequest(input *CreateSampleFindingsInput) (req *request.Request, output *CreateSampleFindingsOutput) {
	op := &request.Operation{
		Name:       opCreateSampleFindings,
		HTTPMethod: "POST",
		HTTPPath:   "/findings/sample",
	}

	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 Macie 2.
//
// Creates sample findings.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation CreateSampleFindings for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/CreateSampleFindings
func (c *Macie2) 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 *Macie2) 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 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/macie2-2020-01-01/DeclineInvitations
func (c *Macie2) DeclineInvitationsRequest(input *DeclineInvitationsInput) (req *request.Request, output *DeclineInvitationsOutput) {
	op := &request.Operation{
		Name:       opDeclineInvitations,
		HTTPMethod: "POST",
		HTTPPath:   "/invitations/decline",
	}

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

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

// DeclineInvitations API operation for Amazon Macie 2.
//
// Declines Amazon Macie membership invitations that were received from specific
// 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 Macie 2's
// API operation DeclineInvitations for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/DeclineInvitations
func (c *Macie2) 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 *Macie2) 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 opDeleteAllowList = "DeleteAllowList"

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

	if input == nil {
		input = &DeleteAllowListInput{}
	}

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

// DeleteAllowList API operation for Amazon Macie 2.
//
// Deletes an allow list.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation DeleteAllowList for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/DeleteAllowList
func (c *Macie2) DeleteAllowList(input *DeleteAllowListInput) (*DeleteAllowListOutput, error) {
	req, out := c.DeleteAllowListRequest(input)
	return out, req.Send()
}

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

const opDeleteCustomDataIdentifier = "DeleteCustomDataIdentifier"

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

	if input == nil {
		input = &DeleteCustomDataIdentifierInput{}
	}

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

// DeleteCustomDataIdentifier API operation for Amazon Macie 2.
//
// Soft deletes a custom data identifier.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation DeleteCustomDataIdentifier for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/DeleteCustomDataIdentifier
func (c *Macie2) DeleteCustomDataIdentifier(input *DeleteCustomDataIdentifierInput) (*DeleteCustomDataIdentifierOutput, error) {
	req, out := c.DeleteCustomDataIdentifierRequest(input)
	return out, req.Send()
}

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

const opDeleteFindingsFilter = "DeleteFindingsFilter"

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

	if input == nil {
		input = &DeleteFindingsFilterInput{}
	}

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

// DeleteFindingsFilter API operation for Amazon Macie 2.
//
// Deletes a findings filter.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Macie 2's
// API operation DeleteFindingsFilter for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/DeleteFindingsFilter
func (c *Macie2) DeleteFindingsFilter(input *DeleteFindingsFilterInput) (*DeleteFindingsFilterOutput, error) {
	req, out := c.DeleteFindingsFilterRequest(input)
	return out, req.Send()
}

// DeleteFindingsFilterWithContext is the same as DeleteFindingsFilter with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteFindingsFilter for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Macie2) DeleteFindingsFilterWithContext(ctx aws.Context, input *DeleteFindingsFilterInput, opts ...request.Option) (*DeleteFindingsFilterOutput, error) {
	req, out := c.DeleteFindingsFilterRequest(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/macie2-2020-01-01/DeleteInvitations
func (c *Macie2) DeleteInvitationsRequest(input *DeleteInvitationsInput) (req *request.Request, output *DeleteInvitationsOutput) {
	op := &request.Operation{
		Name:       opDeleteInvitations,
		HTTPMethod: "POST",
		HTTPPath:   "/invitations/delete",
	}

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

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

// DeleteInvitations API operation for Amazon Macie 2.
//
// Deletes Amazon Macie membership invitations that were received from specific
// 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 Macie 2's
// API operation DeleteInvitations for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/DeleteInvitations
func (c *Macie2) 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 *Macie2) 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 opDeleteMember = "DeleteMember"

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

	if input == nil {
		input = &DeleteMemberInput{}
	}

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

// DeleteMember API operation for Amazon Macie 2.
//
// Deletes the association between an Amazon Macie administrator account and
// an 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 Macie 2's
// API operation DeleteMember for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/DeleteMember
func (c *Macie2) DeleteMember(input *DeleteMemberInput) (*DeleteMemberOutput, error) {
	req, out := c.DeleteMemberRequest(input)
	return out, req.Send()
}

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

const opDescribeBuckets = "DescribeBuckets"

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

	if input == nil {
		input = &DescribeBucketsInput{}
	}

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

// DescribeBuckets API operation for Amazon Macie 2.
//
// Retrieves (queries) statistical data and other information about one or more
// S3 buckets that Amazon Macie monitors and analyzes for an 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 Macie 2's
// API operation DescribeBuckets for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/DescribeBuckets
func (c *Macie2) DescribeBuckets(input *DescribeBucketsInput) (*DescribeBucketsOutput, error) {
	req, out := c.DescribeBucketsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opDescribeClassificationJob = "DescribeClassificationJob"

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

	if input == nil {
		input = &DescribeClassificationJobInput{}
	}

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

// DescribeClassificationJob API operation for Amazon Macie 2.
//
// Retrieves the status and settings for a classification job.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation DescribeClassificationJob for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/DescribeClassificationJob
func (c *Macie2) DescribeClassificationJob(input *DescribeClassificationJobInput) (*DescribeClassificationJobOutput, error) {
	req, out := c.DescribeClassificationJobRequest(input)
	return out, req.Send()
}

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

const opDescribeOrganizationConfiguration = "DescribeOrganizationConfiguration"

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

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

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

// DescribeOrganizationConfiguration API operation for Amazon Macie 2.
//
// Retrieves the Amazon Macie configuration settings for an organization in
// Organizations.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation DescribeOrganizationConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/DescribeOrganizationConfiguration
func (c *Macie2) 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 *Macie2) DescribeOrganizationConfigurationWithContext(ctx aws.Context, input *DescribeOrganizationConfigurationInput, opts ...request.Option) (*DescribeOrganizationConfigurationOutput, error) {
	req, out := c.DescribeOrganizationConfigurationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDisableMacie = "DisableMacie"

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

	if input == nil {
		input = &DisableMacieInput{}
	}

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

// DisableMacie API operation for Amazon Macie 2.
//
// Disables Amazon Macie and deletes all settings and resources for a Macie
// 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 Macie 2's
// API operation DisableMacie for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/DisableMacie
func (c *Macie2) DisableMacie(input *DisableMacieInput) (*DisableMacieOutput, error) {
	req, out := c.DisableMacieRequest(input)
	return out, req.Send()
}

// DisableMacieWithContext is the same as DisableMacie with the addition of
// the ability to pass a context and additional request options.
//
// See DisableMacie for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Macie2) DisableMacieWithContext(ctx aws.Context, input *DisableMacieInput, opts ...request.Option) (*DisableMacieOutput, error) {
	req, out := c.DisableMacieRequest(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/macie2-2020-01-01/DisableOrganizationAdminAccount
func (c *Macie2) DisableOrganizationAdminAccountRequest(input *DisableOrganizationAdminAccountInput) (req *request.Request, output *DisableOrganizationAdminAccountOutput) {
	op := &request.Operation{
		Name:       opDisableOrganizationAdminAccount,
		HTTPMethod: "DELETE",
		HTTPPath:   "/admin",
	}

	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 Macie 2.
//
// Disables an account as the delegated Amazon Macie administrator account for
// an organization in Organizations.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation DisableOrganizationAdminAccount for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/DisableOrganizationAdminAccount
func (c *Macie2) 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 *Macie2) 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/macie2-2020-01-01/DisassociateFromAdministratorAccount
func (c *Macie2) DisassociateFromAdministratorAccountRequest(input *DisassociateFromAdministratorAccountInput) (req *request.Request, output *DisassociateFromAdministratorAccountOutput) {
	op := &request.Operation{
		Name:       opDisassociateFromAdministratorAccount,
		HTTPMethod: "POST",
		HTTPPath:   "/administrator/disassociate",
	}

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

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

// DisassociateFromAdministratorAccount API operation for Amazon Macie 2.
//
// Disassociates a member account from its Amazon Macie 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 Macie 2's
// API operation DisassociateFromAdministratorAccount for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/DisassociateFromAdministratorAccount
func (c *Macie2) 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 *Macie2) 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/macie2-2020-01-01/DisassociateFromMasterAccount
func (c *Macie2) DisassociateFromMasterAccountRequest(input *DisassociateFromMasterAccountInput) (req *request.Request, output *DisassociateFromMasterAccountOutput) {
	op := &request.Operation{
		Name:       opDisassociateFromMasterAccount,
		HTTPMethod: "POST",
		HTTPPath:   "/master/disassociate",
	}

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

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

// DisassociateFromMasterAccount API operation for Amazon Macie 2.
//
// (Deprecated) Disassociates a member account from its Amazon Macie administrator
// account. This operation has been replaced by the DisassociateFromAdministratorAccount
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation DisassociateFromMasterAccount for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/DisassociateFromMasterAccount
func (c *Macie2) 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.
func (c *Macie2) 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 opDisassociateMember = "DisassociateMember"

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

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

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

// DisassociateMember API operation for Amazon Macie 2.
//
// Disassociates an Amazon Macie administrator account from 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 Macie 2's
// API operation DisassociateMember for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/DisassociateMember
func (c *Macie2) DisassociateMember(input *DisassociateMemberInput) (*DisassociateMemberOutput, error) {
	req, out := c.DisassociateMemberRequest(input)
	return out, req.Send()
}

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

const opEnableMacie = "EnableMacie"

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

	if input == nil {
		input = &EnableMacieInput{}
	}

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

// EnableMacie API operation for Amazon Macie 2.
//
// Enables Amazon Macie and specifies the configuration settings for a Macie
// 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 Macie 2's
// API operation EnableMacie for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/EnableMacie
func (c *Macie2) EnableMacie(input *EnableMacieInput) (*EnableMacieOutput, error) {
	req, out := c.EnableMacieRequest(input)
	return out, req.Send()
}

// EnableMacieWithContext is the same as EnableMacie with the addition of
// the ability to pass a context and additional request options.
//
// See EnableMacie for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Macie2) EnableMacieWithContext(ctx aws.Context, input *EnableMacieInput, opts ...request.Option) (*EnableMacieOutput, error) {
	req, out := c.EnableMacieRequest(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/macie2-2020-01-01/EnableOrganizationAdminAccount
func (c *Macie2) EnableOrganizationAdminAccountRequest(input *EnableOrganizationAdminAccountInput) (req *request.Request, output *EnableOrganizationAdminAccountOutput) {
	op := &request.Operation{
		Name:       opEnableOrganizationAdminAccount,
		HTTPMethod: "POST",
		HTTPPath:   "/admin",
	}

	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 Macie 2.
//
// Designates an account as the delegated Amazon Macie administrator account
// for an organization in Organizations.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation EnableOrganizationAdminAccount for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/EnableOrganizationAdminAccount
func (c *Macie2) 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 *Macie2) 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/macie2-2020-01-01/GetAdministratorAccount
func (c *Macie2) GetAdministratorAccountRequest(input *GetAdministratorAccountInput) (req *request.Request, output *GetAdministratorAccountOutput) {
	op := &request.Operation{
		Name:       opGetAdministratorAccount,
		HTTPMethod: "GET",
		HTTPPath:   "/administrator",
	}

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

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

// GetAdministratorAccount API operation for Amazon Macie 2.
//
// Retrieves information about the Amazon Macie administrator account for an
// 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 Macie 2's
// API operation GetAdministratorAccount for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/GetAdministratorAccount
func (c *Macie2) 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 *Macie2) 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 opGetAllowList = "GetAllowList"

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

	if input == nil {
		input = &GetAllowListInput{}
	}

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

// GetAllowList API operation for Amazon Macie 2.
//
// Retrieves the settings and status of an allow list.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation GetAllowList for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/GetAllowList
func (c *Macie2) GetAllowList(input *GetAllowListInput) (*GetAllowListOutput, error) {
	req, out := c.GetAllowListRequest(input)
	return out, req.Send()
}

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

const opGetAutomatedDiscoveryConfiguration = "GetAutomatedDiscoveryConfiguration"

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

	if input == nil {
		input = &GetAutomatedDiscoveryConfigurationInput{}
	}

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

// GetAutomatedDiscoveryConfiguration API operation for Amazon Macie 2.
//
// Retrieves the configuration settings and status of automated sensitive data
// discovery for an organization or standalone 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 Macie 2's
// API operation GetAutomatedDiscoveryConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/GetAutomatedDiscoveryConfiguration
func (c *Macie2) GetAutomatedDiscoveryConfiguration(input *GetAutomatedDiscoveryConfigurationInput) (*GetAutomatedDiscoveryConfigurationOutput, error) {
	req, out := c.GetAutomatedDiscoveryConfigurationRequest(input)
	return out, req.Send()
}

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

const opGetBucketStatistics = "GetBucketStatistics"

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

	if input == nil {
		input = &GetBucketStatisticsInput{}
	}

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

// GetBucketStatistics API operation for Amazon Macie 2.
//
// Retrieves (queries) aggregated statistical data about all the S3 buckets
// that Amazon Macie monitors and analyzes for an 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 Macie 2's
// API operation GetBucketStatistics for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/GetBucketStatistics
func (c *Macie2) GetBucketStatistics(input *GetBucketStatisticsInput) (*GetBucketStatisticsOutput, error) {
	req, out := c.GetBucketStatisticsRequest(input)
	return out, req.Send()
}

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

const opGetClassificationExportConfiguration = "GetClassificationExportConfiguration"

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

	if input == nil {
		input = &GetClassificationExportConfigurationInput{}
	}

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

// GetClassificationExportConfiguration API operation for Amazon Macie 2.
//
// Retrieves the configuration settings for storing data classification results.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Macie 2's
// API operation GetClassificationExportConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/GetClassificationExportConfiguration
func (c *Macie2) GetClassificationExportConfiguration(input *GetClassificationExportConfigurationInput) (*GetClassificationExportConfigurationOutput, error) {
	req, out := c.GetClassificationExportConfigurationRequest(input)
	return out, req.Send()
}

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

const opGetClassificationScope = "GetClassificationScope"

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

	if input == nil {
		input = &GetClassificationScopeInput{}
	}

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

// GetClassificationScope API operation for Amazon Macie 2.
//
// Retrieves the classification scope settings for an 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 Macie 2's
// API operation GetClassificationScope for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/GetClassificationScope
func (c *Macie2) GetClassificationScope(input *GetClassificationScopeInput) (*GetClassificationScopeOutput, error) {
	req, out := c.GetClassificationScopeRequest(input)
	return out, req.Send()
}

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

const opGetCustomDataIdentifier = "GetCustomDataIdentifier"

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

	if input == nil {
		input = &GetCustomDataIdentifierInput{}
	}

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

// GetCustomDataIdentifier API operation for Amazon Macie 2.
//
// Retrieves the criteria and other settings for a custom data identifier.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation GetCustomDataIdentifier for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/GetCustomDataIdentifier
func (c *Macie2) GetCustomDataIdentifier(input *GetCustomDataIdentifierInput) (*GetCustomDataIdentifierOutput, error) {
	req, out := c.GetCustomDataIdentifierRequest(input)
	return out, req.Send()
}

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

const opGetFindingStatistics = "GetFindingStatistics"

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

	if input == nil {
		input = &GetFindingStatisticsInput{}
	}

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

// GetFindingStatistics API operation for Amazon Macie 2.
//
// Retrieves (queries) aggregated statistical data about findings.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation GetFindingStatistics for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/GetFindingStatistics
func (c *Macie2) GetFindingStatistics(input *GetFindingStatisticsInput) (*GetFindingStatisticsOutput, error) {
	req, out := c.GetFindingStatisticsRequest(input)
	return out, req.Send()
}

// GetFindingStatisticsWithContext is the same as GetFindingStatistics with the addition of
// the ability to pass a context and additional request options.
//
// See GetFindingStatistics for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Macie2) GetFindingStatisticsWithContext(ctx aws.Context, input *GetFindingStatisticsInput, opts ...request.Option) (*GetFindingStatisticsOutput, error) {
	req, out := c.GetFindingStatisticsRequest(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/macie2-2020-01-01/GetFindings
func (c *Macie2) GetFindingsRequest(input *GetFindingsInput) (req *request.Request, output *GetFindingsOutput) {
	op := &request.Operation{
		Name:       opGetFindings,
		HTTPMethod: "POST",
		HTTPPath:   "/findings/describe",
	}

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

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

// GetFindings API operation for Amazon Macie 2.
//
// Retrieves the details of one or more findings.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation GetFindings for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/GetFindings
func (c *Macie2) 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 *Macie2) 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 opGetFindingsFilter = "GetFindingsFilter"

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

	if input == nil {
		input = &GetFindingsFilterInput{}
	}

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

// GetFindingsFilter API operation for Amazon Macie 2.
//
// Retrieves the criteria and other settings for a findings filter.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Macie 2's
// API operation GetFindingsFilter for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/GetFindingsFilter
func (c *Macie2) GetFindingsFilter(input *GetFindingsFilterInput) (*GetFindingsFilterOutput, error) {
	req, out := c.GetFindingsFilterRequest(input)
	return out, req.Send()
}

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

const opGetFindingsPublicationConfiguration = "GetFindingsPublicationConfiguration"

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

	if input == nil {
		input = &GetFindingsPublicationConfigurationInput{}
	}

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

// GetFindingsPublicationConfiguration API operation for Amazon Macie 2.
//
// Retrieves the configuration settings for publishing findings to Security
// Hub.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Macie 2's
// API operation GetFindingsPublicationConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/GetFindingsPublicationConfiguration
func (c *Macie2) GetFindingsPublicationConfiguration(input *GetFindingsPublicationConfigurationInput) (*GetFindingsPublicationConfigurationOutput, error) {
	req, out := c.GetFindingsPublicationConfigurationRequest(input)
	return out, req.Send()
}

// GetFindingsPublicationConfigurationWithContext is the same as GetFindingsPublicationConfiguration with the addition of
// the ability to pass a context and additional request options.
//
// See GetFindingsPublicationConfiguration for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Macie2) GetFindingsPublicationConfigurationWithContext(ctx aws.Context, input *GetFindingsPublicationConfigurationInput, opts ...request.Option) (*GetFindingsPublicationConfigurationOutput, error) {
	req, out := c.GetFindingsPublicationConfigurationRequest(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/macie2-2020-01-01/GetInvitationsCount
func (c *Macie2) GetInvitationsCountRequest(input *GetInvitationsCountInput) (req *request.Request, output *GetInvitationsCountOutput) {
	op := &request.Operation{
		Name:       opGetInvitationsCount,
		HTTPMethod: "GET",
		HTTPPath:   "/invitations/count",
	}

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

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

// GetInvitationsCount API operation for Amazon Macie 2.
//
// Retrieves the count of Amazon Macie membership invitations that were received
// by an 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 Macie 2's
// API operation GetInvitationsCount for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/GetInvitationsCount
func (c *Macie2) 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 *Macie2) 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 opGetMacieSession = "GetMacieSession"

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

	if input == nil {
		input = &GetMacieSessionInput{}
	}

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

// GetMacieSession API operation for Amazon Macie 2.
//
// Retrieves the status and configuration settings for an Amazon Macie 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 Macie 2's
// API operation GetMacieSession for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/GetMacieSession
func (c *Macie2) GetMacieSession(input *GetMacieSessionInput) (*GetMacieSessionOutput, error) {
	req, out := c.GetMacieSessionRequest(input)
	return out, req.Send()
}

// GetMacieSessionWithContext is the same as GetMacieSession with the addition of
// the ability to pass a context and additional request options.
//
// See GetMacieSession for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Macie2) GetMacieSessionWithContext(ctx aws.Context, input *GetMacieSessionInput, opts ...request.Option) (*GetMacieSessionOutput, error) {
	req, out := c.GetMacieSessionRequest(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/macie2-2020-01-01/GetMasterAccount
func (c *Macie2) GetMasterAccountRequest(input *GetMasterAccountInput) (req *request.Request, output *GetMasterAccountOutput) {
	op := &request.Operation{
		Name:       opGetMasterAccount,
		HTTPMethod: "GET",
		HTTPPath:   "/master",
	}

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

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

// GetMasterAccount API operation for Amazon Macie 2.
//
// (Deprecated) Retrieves information about the Amazon Macie administrator account
// for an account. This operation has been replaced by the GetAdministratorAccount
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation GetMasterAccount for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/GetMasterAccount
func (c *Macie2) 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.
func (c *Macie2) 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 opGetMember = "GetMember"

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

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

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

// GetMember API operation for Amazon Macie 2.
//
// Retrieves information about an account that's associated with an Amazon Macie
// 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 Macie 2's
// API operation GetMember for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/GetMember
func (c *Macie2) GetMember(input *GetMemberInput) (*GetMemberOutput, error) {
	req, out := c.GetMemberRequest(input)
	return out, req.Send()
}

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

const opGetResourceProfile = "GetResourceProfile"

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

	if input == nil {
		input = &GetResourceProfileInput{}
	}

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

// GetResourceProfile API operation for Amazon Macie 2.
//
// Retrieves (queries) sensitive data discovery statistics and the sensitivity
// score for an S3 bucket.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation GetResourceProfile for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/GetResourceProfile
func (c *Macie2) GetResourceProfile(input *GetResourceProfileInput) (*GetResourceProfileOutput, error) {
	req, out := c.GetResourceProfileRequest(input)
	return out, req.Send()
}

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

const opGetRevealConfiguration = "GetRevealConfiguration"

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

	if input == nil {
		input = &GetRevealConfigurationInput{}
	}

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

// GetRevealConfiguration API operation for Amazon Macie 2.
//
// Retrieves the status and configuration settings for retrieving occurrences
// of sensitive data reported by findings.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation GetRevealConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/GetRevealConfiguration
func (c *Macie2) GetRevealConfiguration(input *GetRevealConfigurationInput) (*GetRevealConfigurationOutput, error) {
	req, out := c.GetRevealConfigurationRequest(input)
	return out, req.Send()
}

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

const opGetSensitiveDataOccurrences = "GetSensitiveDataOccurrences"

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

	if input == nil {
		input = &GetSensitiveDataOccurrencesInput{}
	}

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

// GetSensitiveDataOccurrences API operation for Amazon Macie 2.
//
// Retrieves occurrences of sensitive data reported by a finding.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation GetSensitiveDataOccurrences for usage and error information.
//
// Returned Error Types:
//
//   - UnprocessableEntityException
//     Provides information about an error that occurred due to an unprocessable
//     entity.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/GetSensitiveDataOccurrences
func (c *Macie2) GetSensitiveDataOccurrences(input *GetSensitiveDataOccurrencesInput) (*GetSensitiveDataOccurrencesOutput, error) {
	req, out := c.GetSensitiveDataOccurrencesRequest(input)
	return out, req.Send()
}

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

const opGetSensitiveDataOccurrencesAvailability = "GetSensitiveDataOccurrencesAvailability"

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

	if input == nil {
		input = &GetSensitiveDataOccurrencesAvailabilityInput{}
	}

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

// GetSensitiveDataOccurrencesAvailability API operation for Amazon Macie 2.
//
// Checks whether occurrences of sensitive data can be retrieved for a finding.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation GetSensitiveDataOccurrencesAvailability for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/GetSensitiveDataOccurrencesAvailability
func (c *Macie2) GetSensitiveDataOccurrencesAvailability(input *GetSensitiveDataOccurrencesAvailabilityInput) (*GetSensitiveDataOccurrencesAvailabilityOutput, error) {
	req, out := c.GetSensitiveDataOccurrencesAvailabilityRequest(input)
	return out, req.Send()
}

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

const opGetSensitivityInspectionTemplate = "GetSensitivityInspectionTemplate"

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

	if input == nil {
		input = &GetSensitivityInspectionTemplateInput{}
	}

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

// GetSensitivityInspectionTemplate API operation for Amazon Macie 2.
//
// Retrieves the settings for the sensitivity inspection template for an 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 Macie 2's
// API operation GetSensitivityInspectionTemplate for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/GetSensitivityInspectionTemplate
func (c *Macie2) GetSensitivityInspectionTemplate(input *GetSensitivityInspectionTemplateInput) (*GetSensitivityInspectionTemplateOutput, error) {
	req, out := c.GetSensitivityInspectionTemplateRequest(input)
	return out, req.Send()
}

// GetSensitivityInspectionTemplateWithContext is the same as GetSensitivityInspectionTemplate with the addition of
// the ability to pass a context and additional request options.
//
// See GetSensitivityInspectionTemplate for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Macie2) GetSensitivityInspectionTemplateWithContext(ctx aws.Context, input *GetSensitivityInspectionTemplateInput, opts ...request.Option) (*GetSensitivityInspectionTemplateOutput, error) {
	req, out := c.GetSensitivityInspectionTemplateRequest(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/macie2-2020-01-01/GetUsageStatistics
func (c *Macie2) GetUsageStatisticsRequest(input *GetUsageStatisticsInput) (req *request.Request, output *GetUsageStatisticsOutput) {
	op := &request.Operation{
		Name:       opGetUsageStatistics,
		HTTPMethod: "POST",
		HTTPPath:   "/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 Macie 2.
//
// Retrieves (queries) quotas and aggregated usage data for one or more 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 Macie 2's
// API operation GetUsageStatistics for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/GetUsageStatistics
func (c *Macie2) 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 *Macie2) 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 *macie2.GetUsageStatisticsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *Macie2) 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 *Macie2) 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 opGetUsageTotals = "GetUsageTotals"

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

	if input == nil {
		input = &GetUsageTotalsInput{}
	}

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

// GetUsageTotals API operation for Amazon Macie 2.
//
// Retrieves (queries) aggregated usage data for an 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 Macie 2's
// API operation GetUsageTotals for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/GetUsageTotals
func (c *Macie2) GetUsageTotals(input *GetUsageTotalsInput) (*GetUsageTotalsOutput, error) {
	req, out := c.GetUsageTotalsRequest(input)
	return out, req.Send()
}

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

const opListAllowLists = "ListAllowLists"

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

	if input == nil {
		input = &ListAllowListsInput{}
	}

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

// ListAllowLists API operation for Amazon Macie 2.
//
// Retrieves a subset of information about all the allow lists for an 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 Macie 2's
// API operation ListAllowLists for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/ListAllowLists
func (c *Macie2) ListAllowLists(input *ListAllowListsInput) (*ListAllowListsOutput, error) {
	req, out := c.ListAllowListsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListAutomatedDiscoveryAccounts = "ListAutomatedDiscoveryAccounts"

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

	if input == nil {
		input = &ListAutomatedDiscoveryAccountsInput{}
	}

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

// ListAutomatedDiscoveryAccounts API operation for Amazon Macie 2.
//
// Retrieves the status of automated sensitive data discovery for one or more
// 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 Macie 2's
// API operation ListAutomatedDiscoveryAccounts for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/ListAutomatedDiscoveryAccounts
func (c *Macie2) ListAutomatedDiscoveryAccounts(input *ListAutomatedDiscoveryAccountsInput) (*ListAutomatedDiscoveryAccountsOutput, error) {
	req, out := c.ListAutomatedDiscoveryAccountsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListClassificationJobs = "ListClassificationJobs"

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

	if input == nil {
		input = &ListClassificationJobsInput{}
	}

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

// ListClassificationJobs API operation for Amazon Macie 2.
//
// Retrieves a subset of information about one or more classification jobs.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation ListClassificationJobs for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/ListClassificationJobs
func (c *Macie2) ListClassificationJobs(input *ListClassificationJobsInput) (*ListClassificationJobsOutput, error) {
	req, out := c.ListClassificationJobsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListClassificationScopes = "ListClassificationScopes"

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

	if input == nil {
		input = &ListClassificationScopesInput{}
	}

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

// ListClassificationScopes API operation for Amazon Macie 2.
//
// Retrieves a subset of information about the classification scope for an 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 Macie 2's
// API operation ListClassificationScopes for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/ListClassificationScopes
func (c *Macie2) ListClassificationScopes(input *ListClassificationScopesInput) (*ListClassificationScopesOutput, error) {
	req, out := c.ListClassificationScopesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListCustomDataIdentifiers = "ListCustomDataIdentifiers"

// ListCustomDataIdentifiersRequest generates a "aws/request.Request" representing the
// client's request for the ListCustomDataIdentifiers operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See ListCustomDataIdentifiers for more information on using the ListCustomDataIdentifiers
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the ListCustomDataIdentifiersRequest method.
//	req, resp := client.ListCustomDataIdentifiersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/ListCustomDataIdentifiers
func (c *Macie2) ListCustomDataIdentifiersRequest(input *ListCustomDataIdentifiersInput) (req *request.Request, output *ListCustomDataIdentifiersOutput) {
	op := &request.Operation{
		Name:       opListCustomDataIdentifiers,
		HTTPMethod: "POST",
		HTTPPath:   "/custom-data-identifiers/list",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListCustomDataIdentifiersInput{}
	}

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

// ListCustomDataIdentifiers API operation for Amazon Macie 2.
//
// Retrieves a subset of information about all the custom data identifiers for
// an 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 Macie 2's
// API operation ListCustomDataIdentifiers for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/ListCustomDataIdentifiers
func (c *Macie2) ListCustomDataIdentifiers(input *ListCustomDataIdentifiersInput) (*ListCustomDataIdentifiersOutput, error) {
	req, out := c.ListCustomDataIdentifiersRequest(input)
	return out, req.Send()
}

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

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

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

	for p.Next() {
		if !fn(p.Page().(*ListCustomDataIdentifiersOutput), !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/macie2-2020-01-01/ListFindings
func (c *Macie2) ListFindingsRequest(input *ListFindingsInput) (req *request.Request, output *ListFindingsOutput) {
	op := &request.Operation{
		Name:       opListFindings,
		HTTPMethod: "POST",
		HTTPPath:   "/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 Macie 2.
//
// Retrieves a subset of information about one or more findings.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation ListFindings for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/ListFindings
func (c *Macie2) 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 *Macie2) 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 *macie2.ListFindingsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *Macie2) 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 *Macie2) 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 opListFindingsFilters = "ListFindingsFilters"

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

	if input == nil {
		input = &ListFindingsFiltersInput{}
	}

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

// ListFindingsFilters API operation for Amazon Macie 2.
//
// Retrieves a subset of information about all the findings filters for an 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 Macie 2's
// API operation ListFindingsFilters for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/ListFindingsFilters
func (c *Macie2) ListFindingsFilters(input *ListFindingsFiltersInput) (*ListFindingsFiltersOutput, error) {
	req, out := c.ListFindingsFiltersRequest(input)
	return out, req.Send()
}

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

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

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

	for p.Next() {
		if !fn(p.Page().(*ListFindingsFiltersOutput), !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/macie2-2020-01-01/ListInvitations
func (c *Macie2) ListInvitationsRequest(input *ListInvitationsInput) (req *request.Request, output *ListInvitationsOutput) {
	op := &request.Operation{
		Name:       opListInvitations,
		HTTPMethod: "GET",
		HTTPPath:   "/invitations",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

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

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

// ListInvitations API operation for Amazon Macie 2.
//
// Retrieves information about Amazon Macie membership invitations that were
// received by an 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 Macie 2's
// API operation ListInvitations for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/ListInvitations
func (c *Macie2) 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 *Macie2) 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 *macie2.ListInvitationsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *Macie2) 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 *Macie2) 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 opListManagedDataIdentifiers = "ListManagedDataIdentifiers"

// ListManagedDataIdentifiersRequest generates a "aws/request.Request" representing the
// client's request for the ListManagedDataIdentifiers operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See ListManagedDataIdentifiers for more information on using the ListManagedDataIdentifiers
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the ListManagedDataIdentifiersRequest method.
//	req, resp := client.ListManagedDataIdentifiersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/ListManagedDataIdentifiers
func (c *Macie2) ListManagedDataIdentifiersRequest(input *ListManagedDataIdentifiersInput) (req *request.Request, output *ListManagedDataIdentifiersOutput) {
	op := &request.Operation{
		Name:       opListManagedDataIdentifiers,
		HTTPMethod: "POST",
		HTTPPath:   "/managed-data-identifiers/list",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListManagedDataIdentifiersInput{}
	}

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

// ListManagedDataIdentifiers API operation for Amazon Macie 2.
//
// Retrieves information about all the managed data identifiers that Amazon
// Macie currently provides.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation ListManagedDataIdentifiers for usage and error information.
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/ListManagedDataIdentifiers
func (c *Macie2) ListManagedDataIdentifiers(input *ListManagedDataIdentifiersInput) (*ListManagedDataIdentifiersOutput, error) {
	req, out := c.ListManagedDataIdentifiersRequest(input)
	return out, req.Send()
}

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

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

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

	for p.Next() {
		if !fn(p.Page().(*ListManagedDataIdentifiersOutput), !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/macie2-2020-01-01/ListMembers
func (c *Macie2) ListMembersRequest(input *ListMembersInput) (req *request.Request, output *ListMembersOutput) {
	op := &request.Operation{
		Name:       opListMembers,
		HTTPMethod: "GET",
		HTTPPath:   "/members",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

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

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

// ListMembers API operation for Amazon Macie 2.
//
// Retrieves information about the accounts that are associated with an Amazon
// Macie 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 Macie 2's
// API operation ListMembers for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/ListMembers
func (c *Macie2) 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 *Macie2) 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 *macie2.ListMembersOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *Macie2) 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 *Macie2) 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/macie2-2020-01-01/ListOrganizationAdminAccounts
func (c *Macie2) 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 Macie 2.
//
// Retrieves information about the delegated Amazon Macie administrator account
// for an organization in Organizations.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation ListOrganizationAdminAccounts for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/ListOrganizationAdminAccounts
func (c *Macie2) 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 *Macie2) 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 *macie2.ListOrganizationAdminAccountsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *Macie2) 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 *Macie2) 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 opListResourceProfileArtifacts = "ListResourceProfileArtifacts"

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

	if input == nil {
		input = &ListResourceProfileArtifactsInput{}
	}

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

// ListResourceProfileArtifacts API operation for Amazon Macie 2.
//
// Retrieves information about objects that Amazon Macie selected from an S3
// bucket for automated sensitive data discovery.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation ListResourceProfileArtifacts for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/ListResourceProfileArtifacts
func (c *Macie2) ListResourceProfileArtifacts(input *ListResourceProfileArtifactsInput) (*ListResourceProfileArtifactsOutput, error) {
	req, out := c.ListResourceProfileArtifactsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListResourceProfileDetections = "ListResourceProfileDetections"

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

	if input == nil {
		input = &ListResourceProfileDetectionsInput{}
	}

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

// ListResourceProfileDetections API operation for Amazon Macie 2.
//
// Retrieves information about the types and amount of sensitive data that Amazon
// Macie found in an S3 bucket.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation ListResourceProfileDetections for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/ListResourceProfileDetections
func (c *Macie2) ListResourceProfileDetections(input *ListResourceProfileDetectionsInput) (*ListResourceProfileDetectionsOutput, error) {
	req, out := c.ListResourceProfileDetectionsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListSensitivityInspectionTemplates = "ListSensitivityInspectionTemplates"

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

	if input == nil {
		input = &ListSensitivityInspectionTemplatesInput{}
	}

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

// ListSensitivityInspectionTemplates API operation for Amazon Macie 2.
//
// Retrieves a subset of information about the sensitivity inspection template
// for an 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 Macie 2's
// API operation ListSensitivityInspectionTemplates for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/ListSensitivityInspectionTemplates
func (c *Macie2) ListSensitivityInspectionTemplates(input *ListSensitivityInspectionTemplatesInput) (*ListSensitivityInspectionTemplatesOutput, error) {
	req, out := c.ListSensitivityInspectionTemplatesRequest(input)
	return out, req.Send()
}

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

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

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

	for p.Next() {
		if !fn(p.Page().(*ListSensitivityInspectionTemplatesOutput), !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/macie2-2020-01-01/ListTagsForResource
func (c *Macie2) 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 Macie 2.
//
// Retrieves the tags (keys and values) that are associated with an Amazon Macie
// 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 Macie 2's
// API operation ListTagsForResource for usage and error information.
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/ListTagsForResource
func (c *Macie2) 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 *Macie2) 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 opPutClassificationExportConfiguration = "PutClassificationExportConfiguration"

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

	if input == nil {
		input = &PutClassificationExportConfigurationInput{}
	}

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

// PutClassificationExportConfiguration API operation for Amazon Macie 2.
//
// Adds or updates the configuration settings for storing data classification
// results.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Macie 2's
// API operation PutClassificationExportConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/PutClassificationExportConfiguration
func (c *Macie2) PutClassificationExportConfiguration(input *PutClassificationExportConfigurationInput) (*PutClassificationExportConfigurationOutput, error) {
	req, out := c.PutClassificationExportConfigurationRequest(input)
	return out, req.Send()
}

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

const opPutFindingsPublicationConfiguration = "PutFindingsPublicationConfiguration"

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

	if input == nil {
		input = &PutFindingsPublicationConfigurationInput{}
	}

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

// PutFindingsPublicationConfiguration API operation for Amazon Macie 2.
//
// Updates the configuration settings for publishing findings to Security Hub.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Macie 2's
// API operation PutFindingsPublicationConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/PutFindingsPublicationConfiguration
func (c *Macie2) PutFindingsPublicationConfiguration(input *PutFindingsPublicationConfigurationInput) (*PutFindingsPublicationConfigurationOutput, error) {
	req, out := c.PutFindingsPublicationConfigurationRequest(input)
	return out, req.Send()
}

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

const opSearchResources = "SearchResources"

// SearchResourcesRequest generates a "aws/request.Request" representing the
// client's request for the SearchResources operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See SearchResources for more information on using the SearchResources
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the SearchResourcesRequest method.
//	req, resp := client.SearchResourcesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/SearchResources
func (c *Macie2) SearchResourcesRequest(input *SearchResourcesInput) (req *request.Request, output *SearchResourcesOutput) {
	op := &request.Operation{
		Name:       opSearchResources,
		HTTPMethod: "POST",
		HTTPPath:   "/datasources/search-resources",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &SearchResourcesInput{}
	}

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

// SearchResources API operation for Amazon Macie 2.
//
// Retrieves (queries) statistical data and other information about Amazon Web
// Services resources that Amazon Macie monitors and analyzes.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation SearchResources for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/SearchResources
func (c *Macie2) SearchResources(input *SearchResourcesInput) (*SearchResourcesOutput, error) {
	req, out := c.SearchResourcesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opTagResource = "TagResource"

// TagResourceRequest generates a "aws/request.Request" representing the
// client's request for the TagResource operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See TagResource for more information on using the TagResource
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the TagResourceRequest method.
//	req, resp := client.TagResourceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/TagResource
func (c *Macie2) 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 Macie 2.
//
// Adds or updates one or more tags (keys and values) that are associated with
// an Amazon Macie 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 Macie 2's
// API operation TagResource for usage and error information.
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/TagResource
func (c *Macie2) 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 *Macie2) 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 opTestCustomDataIdentifier = "TestCustomDataIdentifier"

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

	if input == nil {
		input = &TestCustomDataIdentifierInput{}
	}

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

// TestCustomDataIdentifier API operation for Amazon Macie 2.
//
// Tests criteria for a custom data identifier.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation TestCustomDataIdentifier for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/TestCustomDataIdentifier
func (c *Macie2) TestCustomDataIdentifier(input *TestCustomDataIdentifierInput) (*TestCustomDataIdentifierOutput, error) {
	req, out := c.TestCustomDataIdentifierRequest(input)
	return out, req.Send()
}

// TestCustomDataIdentifierWithContext is the same as TestCustomDataIdentifier with the addition of
// the ability to pass a context and additional request options.
//
// See TestCustomDataIdentifier for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Macie2) TestCustomDataIdentifierWithContext(ctx aws.Context, input *TestCustomDataIdentifierInput, opts ...request.Option) (*TestCustomDataIdentifierOutput, error) {
	req, out := c.TestCustomDataIdentifierRequest(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/macie2-2020-01-01/UntagResource
func (c *Macie2) 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 Macie 2.
//
// Removes one or more tags (keys and values) from an Amazon Macie 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 Macie 2's
// API operation UntagResource for usage and error information.
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/UntagResource
func (c *Macie2) 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 *Macie2) 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 opUpdateAllowList = "UpdateAllowList"

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

	if input == nil {
		input = &UpdateAllowListInput{}
	}

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

// UpdateAllowList API operation for Amazon Macie 2.
//
// Updates the settings for an allow list.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation UpdateAllowList for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/UpdateAllowList
func (c *Macie2) UpdateAllowList(input *UpdateAllowListInput) (*UpdateAllowListOutput, error) {
	req, out := c.UpdateAllowListRequest(input)
	return out, req.Send()
}

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

const opUpdateAutomatedDiscoveryConfiguration = "UpdateAutomatedDiscoveryConfiguration"

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

	if input == nil {
		input = &UpdateAutomatedDiscoveryConfigurationInput{}
	}

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

// UpdateAutomatedDiscoveryConfiguration API operation for Amazon Macie 2.
//
// Changes the configuration settings and status of automated sensitive data
// discovery for an organization or standalone 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 Macie 2's
// API operation UpdateAutomatedDiscoveryConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/UpdateAutomatedDiscoveryConfiguration
func (c *Macie2) UpdateAutomatedDiscoveryConfiguration(input *UpdateAutomatedDiscoveryConfigurationInput) (*UpdateAutomatedDiscoveryConfigurationOutput, error) {
	req, out := c.UpdateAutomatedDiscoveryConfigurationRequest(input)
	return out, req.Send()
}

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

const opUpdateClassificationJob = "UpdateClassificationJob"

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

	if input == nil {
		input = &UpdateClassificationJobInput{}
	}

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

// UpdateClassificationJob API operation for Amazon Macie 2.
//
// Changes the status of a classification job.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation UpdateClassificationJob for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/UpdateClassificationJob
func (c *Macie2) UpdateClassificationJob(input *UpdateClassificationJobInput) (*UpdateClassificationJobOutput, error) {
	req, out := c.UpdateClassificationJobRequest(input)
	return out, req.Send()
}

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

const opUpdateClassificationScope = "UpdateClassificationScope"

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

	if input == nil {
		input = &UpdateClassificationScopeInput{}
	}

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

// UpdateClassificationScope API operation for Amazon Macie 2.
//
// Updates the classification scope settings for an 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 Macie 2's
// API operation UpdateClassificationScope for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/UpdateClassificationScope
func (c *Macie2) UpdateClassificationScope(input *UpdateClassificationScopeInput) (*UpdateClassificationScopeOutput, error) {
	req, out := c.UpdateClassificationScopeRequest(input)
	return out, req.Send()
}

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

const opUpdateFindingsFilter = "UpdateFindingsFilter"

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

	if input == nil {
		input = &UpdateFindingsFilterInput{}
	}

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

// UpdateFindingsFilter API operation for Amazon Macie 2.
//
// Updates the criteria and other settings for a findings filter.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Macie 2's
// API operation UpdateFindingsFilter for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/UpdateFindingsFilter
func (c *Macie2) UpdateFindingsFilter(input *UpdateFindingsFilterInput) (*UpdateFindingsFilterOutput, error) {
	req, out := c.UpdateFindingsFilterRequest(input)
	return out, req.Send()
}

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

const opUpdateMacieSession = "UpdateMacieSession"

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

	if input == nil {
		input = &UpdateMacieSessionInput{}
	}

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

// UpdateMacieSession API operation for Amazon Macie 2.
//
// Suspends or re-enables Amazon Macie, or updates the configuration settings
// for a Macie 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 Macie 2's
// API operation UpdateMacieSession for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/UpdateMacieSession
func (c *Macie2) UpdateMacieSession(input *UpdateMacieSessionInput) (*UpdateMacieSessionOutput, error) {
	req, out := c.UpdateMacieSessionRequest(input)
	return out, req.Send()
}

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

const opUpdateMemberSession = "UpdateMemberSession"

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

	if input == nil {
		input = &UpdateMemberSessionInput{}
	}

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

// UpdateMemberSession API operation for Amazon Macie 2.
//
// Enables an Amazon Macie administrator to suspend or re-enable Macie for 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 Macie 2's
// API operation UpdateMemberSession for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/UpdateMemberSession
func (c *Macie2) UpdateMemberSession(input *UpdateMemberSessionInput) (*UpdateMemberSessionOutput, error) {
	req, out := c.UpdateMemberSessionRequest(input)
	return out, req.Send()
}

// UpdateMemberSessionWithContext is the same as UpdateMemberSession with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateMemberSession for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Macie2) UpdateMemberSessionWithContext(ctx aws.Context, input *UpdateMemberSessionInput, opts ...request.Option) (*UpdateMemberSessionOutput, error) {
	req, out := c.UpdateMemberSessionRequest(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/macie2-2020-01-01/UpdateOrganizationConfiguration
func (c *Macie2) UpdateOrganizationConfigurationRequest(input *UpdateOrganizationConfigurationInput) (req *request.Request, output *UpdateOrganizationConfigurationOutput) {
	op := &request.Operation{
		Name:       opUpdateOrganizationConfiguration,
		HTTPMethod: "PATCH",
		HTTPPath:   "/admin/configuration",
	}

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

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

// UpdateOrganizationConfiguration API operation for Amazon Macie 2.
//
// Updates the Amazon Macie configuration settings for an organization in Organizations.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation UpdateOrganizationConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ConflictException
//     Provides information about an error that occurred due to a versioning conflict
//     for a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/UpdateOrganizationConfiguration
func (c *Macie2) 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 *Macie2) 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 opUpdateResourceProfile = "UpdateResourceProfile"

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

	if input == nil {
		input = &UpdateResourceProfileInput{}
	}

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

// UpdateResourceProfile API operation for Amazon Macie 2.
//
// Updates the sensitivity score for an S3 bucket.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation UpdateResourceProfile for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/UpdateResourceProfile
func (c *Macie2) UpdateResourceProfile(input *UpdateResourceProfileInput) (*UpdateResourceProfileOutput, error) {
	req, out := c.UpdateResourceProfileRequest(input)
	return out, req.Send()
}

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

const opUpdateResourceProfileDetections = "UpdateResourceProfileDetections"

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

	if input == nil {
		input = &UpdateResourceProfileDetectionsInput{}
	}

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

// UpdateResourceProfileDetections API operation for Amazon Macie 2.
//
// Updates the sensitivity scoring settings for an S3 bucket.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation UpdateResourceProfileDetections for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - ServiceQuotaExceededException
//     Provides information about an error that occurred due to one or more service
//     quotas for an account.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/UpdateResourceProfileDetections
func (c *Macie2) UpdateResourceProfileDetections(input *UpdateResourceProfileDetectionsInput) (*UpdateResourceProfileDetectionsOutput, error) {
	req, out := c.UpdateResourceProfileDetectionsRequest(input)
	return out, req.Send()
}

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

const opUpdateRevealConfiguration = "UpdateRevealConfiguration"

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

	if input == nil {
		input = &UpdateRevealConfigurationInput{}
	}

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

// UpdateRevealConfiguration API operation for Amazon Macie 2.
//
// Updates the status and configuration settings for retrieving occurrences
// of sensitive data reported by findings.
//
// Returns awserr.Error for service API and SDK errors. Use runtime 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 Macie 2's
// API operation UpdateRevealConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/UpdateRevealConfiguration
func (c *Macie2) UpdateRevealConfiguration(input *UpdateRevealConfigurationInput) (*UpdateRevealConfigurationOutput, error) {
	req, out := c.UpdateRevealConfigurationRequest(input)
	return out, req.Send()
}

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

const opUpdateSensitivityInspectionTemplate = "UpdateSensitivityInspectionTemplate"

// UpdateSensitivityInspectionTemplateRequest generates a "aws/request.Request" representing the
// client's request for the UpdateSensitivityInspectionTemplate operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateSensitivityInspectionTemplate for more information on using the UpdateSensitivityInspectionTemplate
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateSensitivityInspectionTemplateRequest method.
//	req, resp := client.UpdateSensitivityInspectionTemplateRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/UpdateSensitivityInspectionTemplate
func (c *Macie2) UpdateSensitivityInspectionTemplateRequest(input *UpdateSensitivityInspectionTemplateInput) (req *request.Request, output *UpdateSensitivityInspectionTemplateOutput) {
	op := &request.Operation{
		Name:       opUpdateSensitivityInspectionTemplate,
		HTTPMethod: "PUT",
		HTTPPath:   "/templates/sensitivity-inspections/{id}",
	}

	if input == nil {
		input = &UpdateSensitivityInspectionTemplateInput{}
	}

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

// UpdateSensitivityInspectionTemplate API operation for Amazon Macie 2.
//
// Updates the settings for the sensitivity inspection template for an 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 Macie 2's
// API operation UpdateSensitivityInspectionTemplate for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     Provides information about an error that occurred because a specified resource
//     wasn't found.
//
//   - ThrottlingException
//     Provides information about an error that occurred because too many requests
//     were sent during a certain amount of time.
//
//   - ValidationException
//     Provides information about an error that occurred due to a syntax error in
//     a request.
//
//   - InternalServerException
//     Provides information about an error that occurred due to an unknown internal
//     server error, exception, or failure.
//
//   - AccessDeniedException
//     Provides information about an error that occurred due to insufficient access
//     to a specified resource.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/UpdateSensitivityInspectionTemplate
func (c *Macie2) UpdateSensitivityInspectionTemplate(input *UpdateSensitivityInspectionTemplateInput) (*UpdateSensitivityInspectionTemplateOutput, error) {
	req, out := c.UpdateSensitivityInspectionTemplateRequest(input)
	return out, req.Send()
}

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

// Specifies an Amazon Macie membership invitation to accept. In the request,
// you have to specify the ID for the Amazon Web Services account that sent
// the invitation. Otherwise, a validation error occurs. To specify this ID,
// we recommend that you use the administratorAccountId property instead of
// the masterAccount property. The masterAccount property has been deprecated
// and is retained only for backward compatibility.
type AcceptInvitationInput struct {
	_ struct{} `type:"structure"`

	AdministratorAccountId *string `locationName:"administratorAccountId" type:"string"`

	// InvitationId is a required field
	InvitationId *string `locationName:"invitationId" type:"string" required:"true"`

	MasterAccount *string `locationName:"masterAccount" type:"string"`
}

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

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

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

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

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

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

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

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

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

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

// Provides information about the permissions settings of the bucket-level access
// control list (ACL) for an S3 bucket.
type AccessControlList struct {
	_ struct{} `type:"structure"`

	AllowsPublicReadAccess *bool `locationName:"allowsPublicReadAccess" type:"boolean"`

	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
}

// Provides information about an error that occurred due to insufficient access
// to a specified resource.
type AccessDeniedException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

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

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

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

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

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

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

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

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

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

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

// Specifies the details of an account to associate with an Amazon Macie administrator
// account.
type AccountDetail struct {
	_ struct{} `type:"structure"`

	// AccountId is a required field
	AccountId *string `locationName:"accountId" type:"string" required:"true"`

	// Email is a required field
	Email *string `locationName:"email" 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.Email == nil {
		invalidParams.Add(request.NewErrParamRequired("Email"))
	}

	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 information about the account-level permissions settings that apply
// to an S3 bucket.
type AccountLevelPermissions struct {
	_ struct{} `type:"structure"`

	// Provides information about the block public access settings for an S3 bucket.
	// These settings can apply to a bucket at the account or bucket level. For
	// detailed information about each setting, see Blocking public access to your
	// Amazon S3 storage (https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html)
	// in the Amazon Simple Storage Service User Guide.
	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
}

// Provides information about the delegated Amazon Macie administrator account
// for an organization in Organizations.
type AdminAccount struct {
	_ struct{} `type:"structure"`

	AccountId *string `locationName:"accountId" type:"string"`

	// The current status of an account as the delegated Amazon Macie administrator
	// account for an organization in Organizations. Possible values are:
	Status *string `locationName:"status" type:"string" enum:"AdminStatus"`
}

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

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

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

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

// Specifies the criteria for an allow list. The criteria must specify a regular
// expression (regex) or an S3 object (s3WordsList). It can't specify both.
type AllowListCriteria struct {
	_ struct{} `type:"structure"`

	Regex *string `locationName:"regex" min:"1" type:"string"`

	// Provides information about an S3 object that lists specific text to ignore.
	S3WordsList *S3WordsList `locationName:"s3WordsList" 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 AllowListCriteria) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetRegex sets the Regex field's value.
func (s *AllowListCriteria) SetRegex(v string) *AllowListCriteria {
	s.Regex = &v
	return s
}

// SetS3WordsList sets the S3WordsList field's value.
func (s *AllowListCriteria) SetS3WordsList(v *S3WordsList) *AllowListCriteria {
	s.S3WordsList = v
	return s
}

// Provides information about the current status of an allow list, which indicates
// whether Amazon Macie can access and use the list's criteria.
type AllowListStatus struct {
	_ struct{} `type:"structure"`

	// Indicates the current status of an allow list. Depending on the type of criteria
	// that the list specifies, possible values are:
	//
	// Code is a required field
	Code *string `locationName:"code" type:"string" required:"true" enum:"AllowListStatusCode"`

	Description *string `locationName:"description" 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 AllowListStatus) String() string {
	return awsutil.Prettify(s)
}

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

// SetCode sets the Code field's value.
func (s *AllowListStatus) SetCode(v string) *AllowListStatus {
	s.Code = &v
	return s
}

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

// Provides a subset of information about an allow list.
type AllowListSummary struct {
	_ struct{} `type:"structure"`

	Arn *string `locationName:"arn" min:"71" type:"string"`

	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	Description *string `locationName:"description" min:"1" type:"string"`

	Id *string `locationName:"id" min:"22" type:"string"`

	Name *string `locationName:"name" min:"1" type:"string"`

	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`
}

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

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

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

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

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

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

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

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

// Provides information about an API operation that an entity invoked for an
// affected resource.
type ApiCallDetails struct {
	_ struct{} `type:"structure"`

	Api *string `locationName:"api" type:"string"`

	ApiServiceName *string `locationName:"apiServiceName" type:"string"`

	FirstSeen *time.Time `locationName:"firstSeen" type:"timestamp" timestampFormat:"iso8601"`

	LastSeen *time.Time `locationName:"lastSeen" type:"timestamp" timestampFormat:"iso8601"`
}

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

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

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

// SetApiServiceName sets the ApiServiceName field's value.
func (s *ApiCallDetails) SetApiServiceName(v string) *ApiCallDetails {
	s.ApiServiceName = &v
	return s
}

// SetFirstSeen sets the FirstSeen field's value.
func (s *ApiCallDetails) SetFirstSeen(v time.Time) *ApiCallDetails {
	s.FirstSeen = &v
	return s
}

// SetLastSeen sets the LastSeen field's value.
func (s *ApiCallDetails) SetLastSeen(v time.Time) *ApiCallDetails {
	s.LastSeen = &v
	return s
}

// Provides information about an identity that performed an action on an affected
// resource by using temporary security credentials. The credentials were obtained
// using the AssumeRole operation of the Security Token Service (STS) API.
type AssumedRole struct {
	_ struct{} `type:"structure"`

	AccessKeyId *string `locationName:"accessKeyId" type:"string"`

	AccountId *string `locationName:"accountId" type:"string"`

	Arn *string `locationName:"arn" type:"string"`

	PrincipalId *string `locationName:"principalId" type:"string"`

	// Provides information about a session that was created for an entity that
	// performed an action by using temporary security credentials.
	SessionContext *SessionContext `locationName:"sessionContext" 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 AssumedRole) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

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

// SetSessionContext sets the SessionContext field's value.
func (s *AssumedRole) SetSessionContext(v *SessionContext) *AssumedRole {
	s.SessionContext = v
	return s
}

// Provides information about the status of automated sensitive data discovery
// for an Amazon Macie account.
type AutomatedDiscoveryAccount struct {
	_ struct{} `type:"structure"`

	AccountId *string `locationName:"accountId" type:"string"`

	// The status of automated sensitive data discovery for an Amazon Macie account.
	// Valid values are:
	Status *string `locationName:"status" type:"string" enum:"AutomatedDiscoveryAccountStatus"`
}

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

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

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

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

// Changes the status of automated sensitive data discovery for an Amazon Macie
// account.
type AutomatedDiscoveryAccountUpdate struct {
	_ struct{} `type:"structure"`

	AccountId *string `locationName:"accountId" type:"string"`

	// The status of automated sensitive data discovery for an Amazon Macie account.
	// Valid values are:
	Status *string `locationName:"status" type:"string" enum:"AutomatedDiscoveryAccountStatus"`
}

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

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

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

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

// Provides information about a request that failed to change the status of
// automated sensitive data discovery for an Amazon Macie account.
type AutomatedDiscoveryAccountUpdateError struct {
	_ struct{} `type:"structure"`

	AccountId *string `locationName:"accountId" type:"string"`

	// The error code that indicates why a request failed to change the status of
	// automated sensitive data discovery for an Amazon Macie account. Possible
	// values are:
	ErrorCode *string `locationName:"errorCode" type:"string" enum:"AutomatedDiscoveryAccountUpdateErrorCode"`
}

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

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

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

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

// Provides information about an Amazon Web Services account and entity that
// performed an action on an affected resource. The action was performed using
// the credentials for an Amazon Web Services account other than your own account.
type AwsAccount struct {
	_ struct{} `type:"structure"`

	AccountId *string `locationName:"accountId" type:"string"`

	PrincipalId *string `locationName:"principalId" type:"string"`
}

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

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

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

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

// Provides information about an Amazon Web Service that performed an action
// on an affected resource.
type AwsService struct {
	_ struct{} `type:"structure"`

	InvokedBy *string `locationName:"invokedBy" type:"string"`
}

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

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

// SetInvokedBy sets the InvokedBy field's value.
func (s *AwsService) SetInvokedBy(v string) *AwsService {
	s.InvokedBy = &v
	return s
}

// Provides information about a custom data identifier.
type BatchGetCustomDataIdentifierSummary struct {
	_ struct{} `type:"structure"`

	Arn *string `locationName:"arn" type:"string"`

	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	Deleted *bool `locationName:"deleted" type:"boolean"`

	Description *string `locationName:"description" type:"string"`

	Id *string `locationName:"id" type:"string"`

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

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

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

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

// SetDeleted sets the Deleted field's value.
func (s *BatchGetCustomDataIdentifierSummary) SetDeleted(v bool) *BatchGetCustomDataIdentifierSummary {
	s.Deleted = &v
	return s
}

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

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

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

// Specifies one or more custom data identifiers to retrieve information about.
type BatchGetCustomDataIdentifiersInput struct {
	_ struct{} `type:"structure"`

	Ids []*string `locationName:"ids" 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 BatchGetCustomDataIdentifiersInput) String() string {
	return awsutil.Prettify(s)
}

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

// SetIds sets the Ids field's value.
func (s *BatchGetCustomDataIdentifiersInput) SetIds(v []*string) *BatchGetCustomDataIdentifiersInput {
	s.Ids = v
	return s
}

// Provides information about one or more custom data identifiers.
type BatchGetCustomDataIdentifiersOutput struct {
	_ struct{} `type:"structure"`

	CustomDataIdentifiers []*BatchGetCustomDataIdentifierSummary `locationName:"customDataIdentifiers" type:"list"`

	NotFoundIdentifierIds []*string `locationName:"notFoundIdentifierIds" 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 BatchGetCustomDataIdentifiersOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetCustomDataIdentifiers sets the CustomDataIdentifiers field's value.
func (s *BatchGetCustomDataIdentifiersOutput) SetCustomDataIdentifiers(v []*BatchGetCustomDataIdentifierSummary) *BatchGetCustomDataIdentifiersOutput {
	s.CustomDataIdentifiers = v
	return s
}

// SetNotFoundIdentifierIds sets the NotFoundIdentifierIds field's value.
func (s *BatchGetCustomDataIdentifiersOutput) SetNotFoundIdentifierIds(v []*string) *BatchGetCustomDataIdentifiersOutput {
	s.NotFoundIdentifierIds = v
	return s
}

// Changes the status of automated sensitive data discovery for one or more
// Amazon Macie accounts.
type BatchUpdateAutomatedDiscoveryAccountsInput struct {
	_ struct{} `type:"structure"`

	Accounts []*AutomatedDiscoveryAccountUpdate `locationName:"accounts" 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 BatchUpdateAutomatedDiscoveryAccountsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

// Provides the results of a request to change the status of automated sensitive
// data discovery for one or more Amazon Macie accounts.
type BatchUpdateAutomatedDiscoveryAccountsOutput struct {
	_ struct{} `type:"structure"`

	Errors []*AutomatedDiscoveryAccountUpdateError `locationName:"errors" 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 BatchUpdateAutomatedDiscoveryAccountsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetErrors sets the Errors field's value.
func (s *BatchUpdateAutomatedDiscoveryAccountsOutput) SetErrors(v []*AutomatedDiscoveryAccountUpdateError) *BatchUpdateAutomatedDiscoveryAccountsOutput {
	s.Errors = v
	return s
}

// Provides information about the block public access settings for an S3 bucket.
// These settings can apply to a bucket at the account or bucket level. For
// detailed information about each setting, see Blocking public access to your
// Amazon S3 storage (https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html)
// in the Amazon Simple Storage Service User Guide.
type BlockPublicAccess struct {
	_ struct{} `type:"structure"`

	BlockPublicAcls *bool `locationName:"blockPublicAcls" type:"boolean"`

	BlockPublicPolicy *bool `locationName:"blockPublicPolicy" type:"boolean"`

	IgnorePublicAcls *bool `locationName:"ignorePublicAcls" type:"boolean"`

	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
}

// Provides information about the number of S3 buckets that are publicly accessible
// due to a combination of permissions settings for each bucket.
type BucketCountByEffectivePermission struct {
	_ struct{} `type:"structure"`

	PubliclyAccessible *int64 `locationName:"publiclyAccessible" type:"long"`

	PubliclyReadable *int64 `locationName:"publiclyReadable" type:"long"`

	PubliclyWritable *int64 `locationName:"publiclyWritable" type:"long"`

	Unknown *int64 `locationName:"unknown" 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 BucketCountByEffectivePermission) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetPubliclyReadable sets the PubliclyReadable field's value.
func (s *BucketCountByEffectivePermission) SetPubliclyReadable(v int64) *BucketCountByEffectivePermission {
	s.PubliclyReadable = &v
	return s
}

// SetPubliclyWritable sets the PubliclyWritable field's value.
func (s *BucketCountByEffectivePermission) SetPubliclyWritable(v int64) *BucketCountByEffectivePermission {
	s.PubliclyWritable = &v
	return s
}

// SetUnknown sets the Unknown field's value.
func (s *BucketCountByEffectivePermission) SetUnknown(v int64) *BucketCountByEffectivePermission {
	s.Unknown = &v
	return s
}

// Provides information about the number of S3 buckets whose settings do or
// don't specify default server-side encryption behavior for objects that are
// added to the buckets. For detailed information about these settings, see
// Setting default server-side encryption behavior for Amazon S3 buckets (https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html)
// in the Amazon Simple Storage Service User Guide.
type BucketCountByEncryptionType struct {
	_ struct{} `type:"structure"`

	KmsManaged *int64 `locationName:"kmsManaged" type:"long"`

	S3Managed *int64 `locationName:"s3Managed" type:"long"`

	Unencrypted *int64 `locationName:"unencrypted" type:"long"`

	Unknown *int64 `locationName:"unknown" 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 BucketCountByEncryptionType) String() string {
	return awsutil.Prettify(s)
}

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

// SetKmsManaged sets the KmsManaged field's value.
func (s *BucketCountByEncryptionType) SetKmsManaged(v int64) *BucketCountByEncryptionType {
	s.KmsManaged = &v
	return s
}

// SetS3Managed sets the S3Managed field's value.
func (s *BucketCountByEncryptionType) SetS3Managed(v int64) *BucketCountByEncryptionType {
	s.S3Managed = &v
	return s
}

// SetUnencrypted sets the Unencrypted field's value.
func (s *BucketCountByEncryptionType) SetUnencrypted(v int64) *BucketCountByEncryptionType {
	s.Unencrypted = &v
	return s
}

// SetUnknown sets the Unknown field's value.
func (s *BucketCountByEncryptionType) SetUnknown(v int64) *BucketCountByEncryptionType {
	s.Unknown = &v
	return s
}

// Provides information about the number of S3 buckets that are or aren't shared
// with other Amazon Web Services accounts, Amazon CloudFront origin access
// identities (OAIs), or CloudFront origin access controls (OACs). In this data,
// an Amazon Macie organization is defined as a set of Macie accounts that are
// centrally managed as a group of related accounts through Organizations or
// by Macie invitation.
type BucketCountBySharedAccessType struct {
	_ struct{} `type:"structure"`

	External *int64 `locationName:"external" type:"long"`

	Internal *int64 `locationName:"internal" type:"long"`

	NotShared *int64 `locationName:"notShared" type:"long"`

	Unknown *int64 `locationName:"unknown" 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 BucketCountBySharedAccessType) String() string {
	return awsutil.Prettify(s)
}

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

// SetExternal sets the External field's value.
func (s *BucketCountBySharedAccessType) SetExternal(v int64) *BucketCountBySharedAccessType {
	s.External = &v
	return s
}

// SetInternal sets the Internal field's value.
func (s *BucketCountBySharedAccessType) SetInternal(v int64) *BucketCountBySharedAccessType {
	s.Internal = &v
	return s
}

// SetNotShared sets the NotShared field's value.
func (s *BucketCountBySharedAccessType) SetNotShared(v int64) *BucketCountBySharedAccessType {
	s.NotShared = &v
	return s
}

// SetUnknown sets the Unknown field's value.
func (s *BucketCountBySharedAccessType) SetUnknown(v int64) *BucketCountBySharedAccessType {
	s.Unknown = &v
	return s
}

// Provides information about the number of S3 buckets whose bucket policies
// do or don't require server-side encryption of objects when objects are added
// to the buckets.
type BucketCountPolicyAllowsUnencryptedObjectUploads struct {
	_ struct{} `type:"structure"`

	AllowsUnencryptedObjectUploads *int64 `locationName:"allowsUnencryptedObjectUploads" type:"long"`

	DeniesUnencryptedObjectUploads *int64 `locationName:"deniesUnencryptedObjectUploads" type:"long"`

	Unknown *int64 `locationName:"unknown" 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 BucketCountPolicyAllowsUnencryptedObjectUploads) String() string {
	return awsutil.Prettify(s)
}

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

// SetAllowsUnencryptedObjectUploads sets the AllowsUnencryptedObjectUploads field's value.
func (s *BucketCountPolicyAllowsUnencryptedObjectUploads) SetAllowsUnencryptedObjectUploads(v int64) *BucketCountPolicyAllowsUnencryptedObjectUploads {
	s.AllowsUnencryptedObjectUploads = &v
	return s
}

// SetDeniesUnencryptedObjectUploads sets the DeniesUnencryptedObjectUploads field's value.
func (s *BucketCountPolicyAllowsUnencryptedObjectUploads) SetDeniesUnencryptedObjectUploads(v int64) *BucketCountPolicyAllowsUnencryptedObjectUploads {
	s.DeniesUnencryptedObjectUploads = &v
	return s
}

// SetUnknown sets the Unknown field's value.
func (s *BucketCountPolicyAllowsUnencryptedObjectUploads) SetUnknown(v int64) *BucketCountPolicyAllowsUnencryptedObjectUploads {
	s.Unknown = &v
	return s
}

// Specifies the operator to use in a property-based condition that filters
// the results of a query for information about S3 buckets.
type BucketCriteriaAdditionalProperties struct {
	_ struct{} `type:"structure"`

	Eq []*string `locationName:"eq" type:"list"`

	Gt *int64 `locationName:"gt" type:"long"`

	Gte *int64 `locationName:"gte" type:"long"`

	Lt *int64 `locationName:"lt" type:"long"`

	Lte *int64 `locationName:"lte" type:"long"`

	Neq []*string `locationName:"neq" type:"list"`

	Prefix *string `locationName:"prefix" type:"string"`
}

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

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

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

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

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

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

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

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

// SetPrefix sets the Prefix field's value.
func (s *BucketCriteriaAdditionalProperties) SetPrefix(v string) *BucketCriteriaAdditionalProperties {
	s.Prefix = &v
	return s
}

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

	// Provides information about the permissions settings of the bucket-level access
	// control list (ACL) for an S3 bucket.
	AccessControlList *AccessControlList `locationName:"accessControlList" type:"structure"`

	// Provides information about the block public access settings for an S3 bucket.
	// These settings can apply to a bucket at the account or bucket level. For
	// detailed information about each setting, see Blocking public access to your
	// Amazon S3 storage (https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html)
	// in the Amazon Simple Storage Service User Guide.
	BlockPublicAccess *BlockPublicAccess `locationName:"blockPublicAccess" type:"structure"`

	// Provides information about the permissions settings of the bucket policy
	// for an 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
}

// Provides statistical data and other information about an S3 bucket that Amazon
// Macie monitors and analyzes for your account. By default, object count and
// storage size values include data for object parts that are the result of
// incomplete multipart uploads. For more information, see How Macie monitors
// Amazon S3 data security (https://docs.aws.amazon.com/macie/latest/user/monitoring-s3-how-it-works.html)
// in the Amazon Macie User Guide.
//
// If an error occurs when Macie attempts to retrieve and process metadata from
// Amazon S3 for the bucket or the bucket's objects, the value for the versioning
// property is false and the value for most other properties is null. Key exceptions
// are accountId, bucketArn, bucketCreatedAt, bucketName, lastUpdated, and region.
// To identify the cause of the error, refer to the errorCode and errorMessage
// values.
type BucketMetadata struct {
	_ struct{} `type:"structure"`

	AccountId *string `locationName:"accountId" type:"string"`

	AllowsUnencryptedObjectUploads *string `locationName:"allowsUnencryptedObjectUploads" type:"string" enum:"AllowsUnencryptedObjectUploads"`

	// Specifies whether automated sensitive data discovery is currently configured
	// to analyze objects in an S3 bucket. Possible values are:
	AutomatedDiscoveryMonitoringStatus *string `locationName:"automatedDiscoveryMonitoringStatus" type:"string" enum:"AutomatedDiscoveryMonitoringStatus"`

	BucketArn *string `locationName:"bucketArn" type:"string"`

	BucketCreatedAt *time.Time `locationName:"bucketCreatedAt" type:"timestamp" timestampFormat:"iso8601"`

	BucketName *string `locationName:"bucketName" type:"string"`

	ClassifiableObjectCount *int64 `locationName:"classifiableObjectCount" type:"long"`

	ClassifiableSizeInBytes *int64 `locationName:"classifiableSizeInBytes" type:"long"`

	// The error code for an error that prevented Amazon Macie from retrieving and
	// processing information about an S3 bucket and the bucket's objects.
	ErrorCode *string `locationName:"errorCode" type:"string" enum:"BucketMetadataErrorCode"`

	ErrorMessage *string `locationName:"errorMessage" type:"string"`

	// Specifies whether any one-time or recurring classification jobs are configured
	// to analyze objects in an S3 bucket, and, if so, the details of the job that
	// ran most recently.
	JobDetails *JobDetails `locationName:"jobDetails" type:"structure"`

	LastAutomatedDiscoveryTime *time.Time `locationName:"lastAutomatedDiscoveryTime" type:"timestamp" timestampFormat:"iso8601"`

	LastUpdated *time.Time `locationName:"lastUpdated" type:"timestamp" timestampFormat:"iso8601"`

	ObjectCount *int64 `locationName:"objectCount" type:"long"`

	// Provides information about the number of objects that are in an S3 bucket
	// and use certain types of server-side encryption, use client-side encryption,
	// or aren't encrypted.
	ObjectCountByEncryptionType *ObjectCountByEncryptionType `locationName:"objectCountByEncryptionType" type:"structure"`

	// Provides information about the permissions settings that determine whether
	// an S3 bucket is publicly accessible.
	PublicAccess *BucketPublicAccess `locationName:"publicAccess" type:"structure"`

	Region *string `locationName:"region" type:"string"`

	// Provides information about settings that define whether one or more objects
	// in an S3 bucket are replicated to S3 buckets for other Amazon Web Services
	// accounts and, if so, which accounts.
	ReplicationDetails *ReplicationDetails `locationName:"replicationDetails" type:"structure"`

	SensitivityScore *int64 `locationName:"sensitivityScore" type:"integer"`

	// Provides information about the default server-side encryption settings for
	// an S3 bucket. For detailed information about these settings, see Setting
	// default server-side encryption behavior for Amazon S3 buckets (https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html)
	// in the Amazon Simple Storage Service User Guide.
	ServerSideEncryption *BucketServerSideEncryption `locationName:"serverSideEncryption" type:"structure"`

	SharedAccess *string `locationName:"sharedAccess" type:"string" enum:"SharedAccess"`

	SizeInBytes *int64 `locationName:"sizeInBytes" type:"long"`

	SizeInBytesCompressed *int64 `locationName:"sizeInBytesCompressed" type:"long"`

	Tags []*KeyValuePair `locationName:"tags" type:"list"`

	// Provides information about the total storage size (in bytes) or number of
	// objects that Amazon Macie can't analyze in one or more S3 buckets. In a BucketMetadata
	// or MatchingBucket object, this data is for a specific bucket. In a GetBucketStatisticsResponse
	// object, this data is aggregated for all the buckets in the query results.
	// If versioning is enabled for a bucket, storage size values are based on the
	// size of the latest version of each applicable object in the bucket.
	UnclassifiableObjectCount *ObjectLevelStatistics `locationName:"unclassifiableObjectCount" type:"structure"`

	// Provides information about the total storage size (in bytes) or number of
	// objects that Amazon Macie can't analyze in one or more S3 buckets. In a BucketMetadata
	// or MatchingBucket object, this data is for a specific bucket. In a GetBucketStatisticsResponse
	// object, this data is aggregated for all the buckets in the query results.
	// If versioning is enabled for a bucket, storage size values are based on the
	// size of the latest version of each applicable object in the bucket.
	UnclassifiableObjectSizeInBytes *ObjectLevelStatistics `locationName:"unclassifiableObjectSizeInBytes" type:"structure"`

	Versioning *bool `locationName:"versioning" 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 BucketMetadata) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetAllowsUnencryptedObjectUploads sets the AllowsUnencryptedObjectUploads field's value.
func (s *BucketMetadata) SetAllowsUnencryptedObjectUploads(v string) *BucketMetadata {
	s.AllowsUnencryptedObjectUploads = &v
	return s
}

// SetAutomatedDiscoveryMonitoringStatus sets the AutomatedDiscoveryMonitoringStatus field's value.
func (s *BucketMetadata) SetAutomatedDiscoveryMonitoringStatus(v string) *BucketMetadata {
	s.AutomatedDiscoveryMonitoringStatus = &v
	return s
}

// SetBucketArn sets the BucketArn field's value.
func (s *BucketMetadata) SetBucketArn(v string) *BucketMetadata {
	s.BucketArn = &v
	return s
}

// SetBucketCreatedAt sets the BucketCreatedAt field's value.
func (s *BucketMetadata) SetBucketCreatedAt(v time.Time) *BucketMetadata {
	s.BucketCreatedAt = &v
	return s
}

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

// SetClassifiableObjectCount sets the ClassifiableObjectCount field's value.
func (s *BucketMetadata) SetClassifiableObjectCount(v int64) *BucketMetadata {
	s.ClassifiableObjectCount = &v
	return s
}

// SetClassifiableSizeInBytes sets the ClassifiableSizeInBytes field's value.
func (s *BucketMetadata) SetClassifiableSizeInBytes(v int64) *BucketMetadata {
	s.ClassifiableSizeInBytes = &v
	return s
}

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

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

// SetJobDetails sets the JobDetails field's value.
func (s *BucketMetadata) SetJobDetails(v *JobDetails) *BucketMetadata {
	s.JobDetails = v
	return s
}

// SetLastAutomatedDiscoveryTime sets the LastAutomatedDiscoveryTime field's value.
func (s *BucketMetadata) SetLastAutomatedDiscoveryTime(v time.Time) *BucketMetadata {
	s.LastAutomatedDiscoveryTime = &v
	return s
}

// SetLastUpdated sets the LastUpdated field's value.
func (s *BucketMetadata) SetLastUpdated(v time.Time) *BucketMetadata {
	s.LastUpdated = &v
	return s
}

// SetObjectCount sets the ObjectCount field's value.
func (s *BucketMetadata) SetObjectCount(v int64) *BucketMetadata {
	s.ObjectCount = &v
	return s
}

// SetObjectCountByEncryptionType sets the ObjectCountByEncryptionType field's value.
func (s *BucketMetadata) SetObjectCountByEncryptionType(v *ObjectCountByEncryptionType) *BucketMetadata {
	s.ObjectCountByEncryptionType = v
	return s
}

// SetPublicAccess sets the PublicAccess field's value.
func (s *BucketMetadata) SetPublicAccess(v *BucketPublicAccess) *BucketMetadata {
	s.PublicAccess = v
	return s
}

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

// SetReplicationDetails sets the ReplicationDetails field's value.
func (s *BucketMetadata) SetReplicationDetails(v *ReplicationDetails) *BucketMetadata {
	s.ReplicationDetails = v
	return s
}

// SetSensitivityScore sets the SensitivityScore field's value.
func (s *BucketMetadata) SetSensitivityScore(v int64) *BucketMetadata {
	s.SensitivityScore = &v
	return s
}

// SetServerSideEncryption sets the ServerSideEncryption field's value.
func (s *BucketMetadata) SetServerSideEncryption(v *BucketServerSideEncryption) *BucketMetadata {
	s.ServerSideEncryption = v
	return s
}

// SetSharedAccess sets the SharedAccess field's value.
func (s *BucketMetadata) SetSharedAccess(v string) *BucketMetadata {
	s.SharedAccess = &v
	return s
}

// SetSizeInBytes sets the SizeInBytes field's value.
func (s *BucketMetadata) SetSizeInBytes(v int64) *BucketMetadata {
	s.SizeInBytes = &v
	return s
}

// SetSizeInBytesCompressed sets the SizeInBytesCompressed field's value.
func (s *BucketMetadata) SetSizeInBytesCompressed(v int64) *BucketMetadata {
	s.SizeInBytesCompressed = &v
	return s
}

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

// SetUnclassifiableObjectCount sets the UnclassifiableObjectCount field's value.
func (s *BucketMetadata) SetUnclassifiableObjectCount(v *ObjectLevelStatistics) *BucketMetadata {
	s.UnclassifiableObjectCount = v
	return s
}

// SetUnclassifiableObjectSizeInBytes sets the UnclassifiableObjectSizeInBytes field's value.
func (s *BucketMetadata) SetUnclassifiableObjectSizeInBytes(v *ObjectLevelStatistics) *BucketMetadata {
	s.UnclassifiableObjectSizeInBytes = v
	return s
}

// SetVersioning sets the Versioning field's value.
func (s *BucketMetadata) SetVersioning(v bool) *BucketMetadata {
	s.Versioning = &v
	return s
}

// Provides information about the account-level and bucket-level permissions
// settings for an S3 bucket.
type BucketPermissionConfiguration struct {
	_ struct{} `type:"structure"`

	// Provides information about the account-level permissions settings that apply
	// to an S3 bucket.
	AccountLevelPermissions *AccountLevelPermissions `locationName:"accountLevelPermissions" type:"structure"`

	// Provides information about the bucket-level permissions settings for an 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 BucketPermissionConfiguration) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// Provides information about the permissions settings of the bucket policy
// for an S3 bucket.
type BucketPolicy struct {
	_ struct{} `type:"structure"`

	AllowsPublicReadAccess *bool `locationName:"allowsPublicReadAccess" type:"boolean"`

	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
}

// Provides information about the permissions settings that determine whether
// an S3 bucket is publicly accessible.
type BucketPublicAccess struct {
	_ struct{} `type:"structure"`

	EffectivePermission *string `locationName:"effectivePermission" type:"string" enum:"EffectivePermission"`

	// Provides information about the account-level and bucket-level permissions
	// settings for an S3 bucket.
	PermissionConfiguration *BucketPermissionConfiguration `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 BucketPublicAccess) String() string {
	return awsutil.Prettify(s)
}

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

// SetEffectivePermission sets the EffectivePermission field's value.
func (s *BucketPublicAccess) SetEffectivePermission(v string) *BucketPublicAccess {
	s.EffectivePermission = &v
	return s
}

// SetPermissionConfiguration sets the PermissionConfiguration field's value.
func (s *BucketPublicAccess) SetPermissionConfiguration(v *BucketPermissionConfiguration) *BucketPublicAccess {
	s.PermissionConfiguration = v
	return s
}

// Provides information about the default server-side encryption settings for
// an S3 bucket. For detailed information about these settings, see Setting
// default server-side encryption behavior for Amazon S3 buckets (https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html)
// in the Amazon Simple Storage Service User Guide.
type BucketServerSideEncryption struct {
	_ struct{} `type:"structure"`

	KmsMasterKeyId *string `locationName:"kmsMasterKeyId" type:"string"`

	Type *string `locationName:"type" type:"string" enum:"Type"`
}

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

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

// SetKmsMasterKeyId sets the KmsMasterKeyId field's value.
func (s *BucketServerSideEncryption) SetKmsMasterKeyId(v string) *BucketServerSideEncryption {
	s.KmsMasterKeyId = &v
	return s
}

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

// Specifies criteria for sorting the results of a query for information about
// S3 buckets.
type BucketSortCriteria struct {
	_ struct{} `type:"structure"`

	AttributeName *string `locationName:"attributeName" type:"string"`

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

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

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

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

// Provides aggregated statistical data for sensitive data discovery metrics
// that apply to S3 buckets, grouped by bucket sensitivity score (sensitivityScore).
// If automated sensitive data discovery is currently disabled for your account,
// the value for each metric is 0.
type BucketStatisticsBySensitivity struct {
	_ struct{} `type:"structure"`

	// Provides aggregated statistical data for sensitive data discovery metrics
	// that apply to S3 buckets. Each field contains aggregated data for all the
	// buckets that have a sensitivity score (sensitivityScore) of a specified value
	// or within a specified range (BucketStatisticsBySensitivity). If automated
	// sensitive data discovery is currently disabled for your account, the value
	// for each field is 0.
	ClassificationError *SensitivityAggregations `locationName:"classificationError" type:"structure"`

	// Provides aggregated statistical data for sensitive data discovery metrics
	// that apply to S3 buckets. Each field contains aggregated data for all the
	// buckets that have a sensitivity score (sensitivityScore) of a specified value
	// or within a specified range (BucketStatisticsBySensitivity). If automated
	// sensitive data discovery is currently disabled for your account, the value
	// for each field is 0.
	NotClassified *SensitivityAggregations `locationName:"notClassified" type:"structure"`

	// Provides aggregated statistical data for sensitive data discovery metrics
	// that apply to S3 buckets. Each field contains aggregated data for all the
	// buckets that have a sensitivity score (sensitivityScore) of a specified value
	// or within a specified range (BucketStatisticsBySensitivity). If automated
	// sensitive data discovery is currently disabled for your account, the value
	// for each field is 0.
	NotSensitive *SensitivityAggregations `locationName:"notSensitive" type:"structure"`

	// Provides aggregated statistical data for sensitive data discovery metrics
	// that apply to S3 buckets. Each field contains aggregated data for all the
	// buckets that have a sensitivity score (sensitivityScore) of a specified value
	// or within a specified range (BucketStatisticsBySensitivity). If automated
	// sensitive data discovery is currently disabled for your account, the value
	// for each field is 0.
	Sensitive *SensitivityAggregations `locationName:"sensitive" 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 BucketStatisticsBySensitivity) String() string {
	return awsutil.Prettify(s)
}

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

// SetClassificationError sets the ClassificationError field's value.
func (s *BucketStatisticsBySensitivity) SetClassificationError(v *SensitivityAggregations) *BucketStatisticsBySensitivity {
	s.ClassificationError = v
	return s
}

// SetNotClassified sets the NotClassified field's value.
func (s *BucketStatisticsBySensitivity) SetNotClassified(v *SensitivityAggregations) *BucketStatisticsBySensitivity {
	s.NotClassified = v
	return s
}

// SetNotSensitive sets the NotSensitive field's value.
func (s *BucketStatisticsBySensitivity) SetNotSensitive(v *SensitivityAggregations) *BucketStatisticsBySensitivity {
	s.NotSensitive = v
	return s
}

// SetSensitive sets the Sensitive field's value.
func (s *BucketStatisticsBySensitivity) SetSensitive(v *SensitivityAggregations) *BucketStatisticsBySensitivity {
	s.Sensitive = v
	return s
}

// Specifies the location of an occurrence of sensitive data in a Microsoft
// Excel workbook, CSV file, or TSV file.
type Cell struct {
	_ struct{} `type:"structure"`

	CellReference *string `locationName:"cellReference" type:"string"`

	Column *int64 `locationName:"column" type:"long"`

	ColumnName *string `locationName:"columnName" type:"string"`

	Row *int64 `locationName:"row" type:"long"`
}

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

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

// SetCellReference sets the CellReference field's value.
func (s *Cell) SetCellReference(v string) *Cell {
	s.CellReference = &v
	return s
}

// SetColumn sets the Column field's value.
func (s *Cell) SetColumn(v int64) *Cell {
	s.Column = &v
	return s
}

// SetColumnName sets the ColumnName field's value.
func (s *Cell) SetColumnName(v string) *Cell {
	s.ColumnName = &v
	return s
}

// SetRow sets the Row field's value.
func (s *Cell) SetRow(v int64) *Cell {
	s.Row = &v
	return s
}

// Provides information about a sensitive data finding and the details of the
// finding.
type ClassificationDetails struct {
	_ struct{} `type:"structure"`

	DetailedResultsLocation *string `locationName:"detailedResultsLocation" type:"string"`

	JobArn *string `locationName:"jobArn" type:"string"`

	JobId *string `locationName:"jobId" type:"string"`

	// Specifies how Amazon Macie found the sensitive data that produced a finding.
	// Possible values are:
	OriginType *string `locationName:"originType" type:"string" enum:"OriginType"`

	// Provides the details of a sensitive data finding, including the types, number
	// of occurrences, and locations of the sensitive data that was detected.
	Result *ClassificationResult `locationName:"result" 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 ClassificationDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetDetailedResultsLocation sets the DetailedResultsLocation field's value.
func (s *ClassificationDetails) SetDetailedResultsLocation(v string) *ClassificationDetails {
	s.DetailedResultsLocation = &v
	return s
}

// SetJobArn sets the JobArn field's value.
func (s *ClassificationDetails) SetJobArn(v string) *ClassificationDetails {
	s.JobArn = &v
	return s
}

// SetJobId sets the JobId field's value.
func (s *ClassificationDetails) SetJobId(v string) *ClassificationDetails {
	s.JobId = &v
	return s
}

// SetOriginType sets the OriginType field's value.
func (s *ClassificationDetails) SetOriginType(v string) *ClassificationDetails {
	s.OriginType = &v
	return s
}

// SetResult sets the Result field's value.
func (s *ClassificationDetails) SetResult(v *ClassificationResult) *ClassificationDetails {
	s.Result = v
	return s
}

// Specifies where to store data classification results, and the encryption
// settings to use when storing results in that location. The location must
// be an S3 general purpose bucket.
type ClassificationExportConfiguration struct {
	_ struct{} `type:"structure"`

	// Specifies an S3 bucket to store data classification results in, and the encryption
	// settings to use when storing results in that bucket.
	S3Destination *S3Destination `locationName:"s3Destination" 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 ClassificationExportConfiguration) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// Provides the details of a sensitive data finding, including the types, number
// of occurrences, and locations of the sensitive data that was detected.
type ClassificationResult struct {
	_ struct{} `type:"structure"`

	AdditionalOccurrences *bool `locationName:"additionalOccurrences" type:"boolean"`

	// Provides information about custom data identifiers that produced a sensitive
	// data finding, and the number of occurrences of the data that they detected
	// for the finding.
	CustomDataIdentifiers *CustomDataIdentifiers `locationName:"customDataIdentifiers" type:"structure"`

	MimeType *string `locationName:"mimeType" type:"string"`

	// Provides information about the category and number of occurrences of sensitive
	// data that produced a finding.
	SensitiveData []*SensitiveDataItem `locationName:"sensitiveData" type:"list"`

	SizeClassified *int64 `locationName:"sizeClassified" type:"long"`

	// Provides information about the status of a sensitive data finding.
	Status *ClassificationResultStatus `locationName:"status" type:"structure"`
}

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

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

// SetAdditionalOccurrences sets the AdditionalOccurrences field's value.
func (s *ClassificationResult) SetAdditionalOccurrences(v bool) *ClassificationResult {
	s.AdditionalOccurrences = &v
	return s
}

// SetCustomDataIdentifiers sets the CustomDataIdentifiers field's value.
func (s *ClassificationResult) SetCustomDataIdentifiers(v *CustomDataIdentifiers) *ClassificationResult {
	s.CustomDataIdentifiers = v
	return s
}

// SetMimeType sets the MimeType field's value.
func (s *ClassificationResult) SetMimeType(v string) *ClassificationResult {
	s.MimeType = &v
	return s
}

// SetSensitiveData sets the SensitiveData field's value.
func (s *ClassificationResult) SetSensitiveData(v []*SensitiveDataItem) *ClassificationResult {
	s.SensitiveData = v
	return s
}

// SetSizeClassified sets the SizeClassified field's value.
func (s *ClassificationResult) SetSizeClassified(v int64) *ClassificationResult {
	s.SizeClassified = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ClassificationResult) SetStatus(v *ClassificationResultStatus) *ClassificationResult {
	s.Status = v
	return s
}

// Provides information about the status of a sensitive data finding.
type ClassificationResultStatus struct {
	_ struct{} `type:"structure"`

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

	Reason *string `locationName:"reason" type:"string"`
}

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

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

// SetCode sets the Code field's value.
func (s *ClassificationResultStatus) SetCode(v string) *ClassificationResultStatus {
	s.Code = &v
	return s
}

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

// Provides information about the classification scope for an Amazon Macie account.
// Macie uses the scope's settings when it performs automated sensitive data
// discovery for the account.
type ClassificationScopeSummary struct {
	_ struct{} `type:"structure"`

	// The unique identifier the classification scope.
	Id *string `locationName:"id" type:"string"`

	// The name of the classification scope.
	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 ClassificationScopeSummary) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// Provides information about an error that occurred due to a versioning conflict
// for a specified resource.
type ConflictException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

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

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

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

// Specifies the settings for an allow list. When Amazon Macie processes the
// request, Macie tests the list's criteria. If the criteria specify a regular
// expression that Macie can't compile or an S3 object that Macie can't retrieve
// or parse, an error occurs.
type CreateAllowListInput struct {
	_ struct{} `type:"structure"`

	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`

	// Specifies the criteria for an allow list. The criteria must specify a regular
	// expression (regex) or an S3 object (s3WordsList). It can't specify both.
	//
	// Criteria is a required field
	Criteria *AllowListCriteria `locationName:"criteria" type:"structure" required:"true"`

	Description *string `locationName:"description" min:"1" type:"string"`

	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true"`

	// A string-to-string map of key-value pairs that specifies the tags (keys and
	// values) for an Amazon Macie resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

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

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

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

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

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

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

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

// Provides information about an allow list that was created in response to
// a request.
type CreateAllowListOutput struct {
	_ struct{} `type:"structure"`

	Arn *string `locationName:"arn" min:"71" type:"string"`

	Id *string `locationName:"id" min:"22" type:"string"`
}

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

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

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

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

// Specifies the scope, schedule, and other settings for a classification job.
// You can't change any settings for a classification job after you create it.
// This helps to ensure that you have an immutable history of sensitive data
// findings and discovery results for data privacy and protection audits or
// investigations.
type CreateClassificationJobInput struct {
	_ struct{} `type:"structure"`

	AllowListIds []*string `locationName:"allowListIds" type:"list"`

	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`

	CustomDataIdentifierIds []*string `locationName:"customDataIdentifierIds" type:"list"`

	Description *string `locationName:"description" type:"string"`

	InitialRun *bool `locationName:"initialRun" type:"boolean"`

	// The schedule for running a classification job. Valid values are:
	//
	// JobType is a required field
	JobType *string `locationName:"jobType" type:"string" required:"true" enum:"JobType"`

	ManagedDataIdentifierIds []*string `locationName:"managedDataIdentifierIds" type:"list"`

	// The selection type that determines which managed data identifiers a classification
	// job uses to analyze data. Valid values are:
	ManagedDataIdentifierSelector *string `locationName:"managedDataIdentifierSelector" type:"string" enum:"ManagedDataIdentifierSelector"`

	// Name is a required field
	Name *string `locationName:"name" type:"string" required:"true"`

	// Specifies which S3 buckets contain the objects that a classification job
	// analyzes, and the scope of that analysis. The bucket specification can be
	// static (bucketDefinitions) or dynamic (bucketCriteria). If it's static, the
	// job analyzes objects in the same predefined set of buckets each time the
	// job runs. If it's dynamic, the job analyzes objects in any buckets that match
	// the specified criteria each time the job starts to run.
	//
	// S3JobDefinition is a required field
	S3JobDefinition *S3JobDefinition `locationName:"s3JobDefinition" type:"structure" required:"true"`

	SamplingPercentage *int64 `locationName:"samplingPercentage" type:"integer"`

	// Specifies the recurrence pattern for running a classification job.
	ScheduleFrequency *JobScheduleFrequency `locationName:"scheduleFrequency" type:"structure"`

	// A string-to-string map of key-value pairs that specifies the tags (keys and
	// values) for an Amazon Macie resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

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

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

// SetAllowListIds sets the AllowListIds field's value.
func (s *CreateClassificationJobInput) SetAllowListIds(v []*string) *CreateClassificationJobInput {
	s.AllowListIds = v
	return s
}

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

// SetCustomDataIdentifierIds sets the CustomDataIdentifierIds field's value.
func (s *CreateClassificationJobInput) SetCustomDataIdentifierIds(v []*string) *CreateClassificationJobInput {
	s.CustomDataIdentifierIds = v
	return s
}

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

// SetInitialRun sets the InitialRun field's value.
func (s *CreateClassificationJobInput) SetInitialRun(v bool) *CreateClassificationJobInput {
	s.InitialRun = &v
	return s
}

// SetJobType sets the JobType field's value.
func (s *CreateClassificationJobInput) SetJobType(v string) *CreateClassificationJobInput {
	s.JobType = &v
	return s
}

// SetManagedDataIdentifierIds sets the ManagedDataIdentifierIds field's value.
func (s *CreateClassificationJobInput) SetManagedDataIdentifierIds(v []*string) *CreateClassificationJobInput {
	s.ManagedDataIdentifierIds = v
	return s
}

// SetManagedDataIdentifierSelector sets the ManagedDataIdentifierSelector field's value.
func (s *CreateClassificationJobInput) SetManagedDataIdentifierSelector(v string) *CreateClassificationJobInput {
	s.ManagedDataIdentifierSelector = &v
	return s
}

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

// SetS3JobDefinition sets the S3JobDefinition field's value.
func (s *CreateClassificationJobInput) SetS3JobDefinition(v *S3JobDefinition) *CreateClassificationJobInput {
	s.S3JobDefinition = v
	return s
}

// SetSamplingPercentage sets the SamplingPercentage field's value.
func (s *CreateClassificationJobInput) SetSamplingPercentage(v int64) *CreateClassificationJobInput {
	s.SamplingPercentage = &v
	return s
}

// SetScheduleFrequency sets the ScheduleFrequency field's value.
func (s *CreateClassificationJobInput) SetScheduleFrequency(v *JobScheduleFrequency) *CreateClassificationJobInput {
	s.ScheduleFrequency = v
	return s
}

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

// Provides information about a classification job that was created in response
// to a request.
type CreateClassificationJobOutput struct {
	_ struct{} `type:"structure"`

	JobArn *string `locationName:"jobArn" type:"string"`

	JobId *string `locationName:"jobId" type:"string"`
}

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

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

// SetJobArn sets the JobArn field's value.
func (s *CreateClassificationJobOutput) SetJobArn(v string) *CreateClassificationJobOutput {
	s.JobArn = &v
	return s
}

// SetJobId sets the JobId field's value.
func (s *CreateClassificationJobOutput) SetJobId(v string) *CreateClassificationJobOutput {
	s.JobId = &v
	return s
}

// Specifies the detection criteria and other settings for a custom data identifier.
// You can't change a custom data identifier after you create it. This helps
// to ensure that you have an immutable history of sensitive data findings and
// discovery results for data privacy and protection audits or investigations.
type CreateCustomDataIdentifierInput struct {
	_ struct{} `type:"structure"`

	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`

	Description *string `locationName:"description" type:"string"`

	IgnoreWords []*string `locationName:"ignoreWords" type:"list"`

	Keywords []*string `locationName:"keywords" type:"list"`

	MaximumMatchDistance *int64 `locationName:"maximumMatchDistance" type:"integer"`

	// Name is a required field
	Name *string `locationName:"name" type:"string" required:"true"`

	// Regex is a required field
	Regex *string `locationName:"regex" type:"string" required:"true"`

	// The severity to assign to findings that the custom data identifier produces,
	// based on the number of occurrences of text that matches the custom data identifier's
	// detection criteria. You can specify as many as three SeverityLevel objects
	// in this array, one for each severity: LOW, MEDIUM, or HIGH. If you specify
	// more than one, the occurrences thresholds must be in ascending order by severity,
	// moving from LOW to HIGH. For example, 1 for LOW, 50 for MEDIUM, and 100 for
	// HIGH. If an S3 object contains fewer occurrences than the lowest specified
	// threshold, Amazon Macie doesn't create a finding.
	//
	// If you don't specify any values for this array, Macie creates findings for
	// S3 objects that contain at least one occurrence of text that matches the
	// detection criteria, and Macie automatically assigns the MEDIUM severity to
	// those findings.
	SeverityLevels []*SeverityLevel `locationName:"severityLevels" type:"list"`

	// A string-to-string map of key-value pairs that specifies the tags (keys and
	// values) for an Amazon Macie resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

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

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

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

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

// SetIgnoreWords sets the IgnoreWords field's value.
func (s *CreateCustomDataIdentifierInput) SetIgnoreWords(v []*string) *CreateCustomDataIdentifierInput {
	s.IgnoreWords = v
	return s
}

// SetKeywords sets the Keywords field's value.
func (s *CreateCustomDataIdentifierInput) SetKeywords(v []*string) *CreateCustomDataIdentifierInput {
	s.Keywords = v
	return s
}

// SetMaximumMatchDistance sets the MaximumMatchDistance field's value.
func (s *CreateCustomDataIdentifierInput) SetMaximumMatchDistance(v int64) *CreateCustomDataIdentifierInput {
	s.MaximumMatchDistance = &v
	return s
}

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

// SetRegex sets the Regex field's value.
func (s *CreateCustomDataIdentifierInput) SetRegex(v string) *CreateCustomDataIdentifierInput {
	s.Regex = &v
	return s
}

// SetSeverityLevels sets the SeverityLevels field's value.
func (s *CreateCustomDataIdentifierInput) SetSeverityLevels(v []*SeverityLevel) *CreateCustomDataIdentifierInput {
	s.SeverityLevels = v
	return s
}

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

// Provides information about a custom data identifier that was created in response
// to a request.
type CreateCustomDataIdentifierOutput struct {
	_ struct{} `type:"structure"`

	CustomDataIdentifierId *string `locationName:"customDataIdentifierId" type:"string"`
}

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

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

// SetCustomDataIdentifierId sets the CustomDataIdentifierId field's value.
func (s *CreateCustomDataIdentifierOutput) SetCustomDataIdentifierId(v string) *CreateCustomDataIdentifierOutput {
	s.CustomDataIdentifierId = &v
	return s
}

// Specifies the criteria and other settings for a new findings filter.
type CreateFindingsFilterInput struct {
	_ struct{} `type:"structure"`

	// The action to perform on findings that match the filter criteria. To suppress
	// (automatically archive) findings that match the criteria, set this value
	// to ARCHIVE. Valid values are:
	//
	// Action is a required field
	Action *string `locationName:"action" type:"string" required:"true" enum:"FindingsFilterAction"`

	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`

	Description *string `locationName:"description" type:"string"`

	// Specifies, as a map, one or more property-based conditions that filter the
	// results of a query for findings.
	//
	// FindingCriteria is a required field
	FindingCriteria *FindingCriteria `locationName:"findingCriteria" type:"structure" required:"true"`

	// Name is a required field
	Name *string `locationName:"name" type:"string" required:"true"`

	Position *int64 `locationName:"position" type:"integer"`

	// A string-to-string map of key-value pairs that specifies the tags (keys and
	// values) for an Amazon Macie resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

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

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

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

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

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

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

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

// SetPosition sets the Position field's value.
func (s *CreateFindingsFilterInput) SetPosition(v int64) *CreateFindingsFilterInput {
	s.Position = &v
	return s
}

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

// Provides information about a findings filter that was created in response
// to a request.
type CreateFindingsFilterOutput struct {
	_ struct{} `type:"structure"`

	Arn *string `locationName:"arn" type:"string"`

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

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

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

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

// Specifies the settings for an Amazon Macie membership invitation. When you
// send an invitation, Macie notifies the recipient by creating an Health event
// for the recipient's account and, if Macie is already enabled for the account,
// displaying an Accounts badge and notification on the recipient's console.
// You can optionally notify the recipient by also sending the invitation as
// an email message.
type CreateInvitationsInput struct {
	_ struct{} `type:"structure"`

	// AccountIds is a required field
	AccountIds []*string `locationName:"accountIds" type:"list" required:"true"`

	DisableEmailNotification *bool `locationName:"disableEmailNotification" type:"boolean"`

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

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

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

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

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

// SetDisableEmailNotification sets the DisableEmailNotification field's value.
func (s *CreateInvitationsInput) SetDisableEmailNotification(v bool) *CreateInvitationsInput {
	s.DisableEmailNotification = &v
	return s
}

// SetMessage sets the Message field's value.
func (s *CreateInvitationsInput) SetMessage(v string) *CreateInvitationsInput {
	s.Message = &v
	return s
}

// Provides information about an unprocessed request to send an Amazon Macie
// membership invitation to a specific account.
type CreateInvitationsOutput struct {
	_ struct{} `type:"structure"`

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

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

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

// Specifies an Amazon Web Services account to associate with an Amazon Macie
// administrator account.
type CreateMemberInput struct {
	_ struct{} `type:"structure"`

	// Specifies the details of an account to associate with an Amazon Macie administrator
	// account.
	//
	// Account is a required field
	Account *AccountDetail `locationName:"account" type:"structure" required:"true"`

	// A string-to-string map of key-value pairs that specifies the tags (keys and
	// values) for an Amazon Macie resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

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

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

// SetAccount sets the Account field's value.
func (s *CreateMemberInput) SetAccount(v *AccountDetail) *CreateMemberInput {
	s.Account = v
	return s
}

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

// Provides information about a request to associate an account with an Amazon
// Macie administrator account.
type CreateMemberOutput struct {
	_ struct{} `type:"structure"`

	Arn *string `locationName:"arn" type:"string"`
}

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

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

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

// Specifies the types of sample findings to create.
type CreateSampleFindingsInput struct {
	_ struct{} `type:"structure"`

	FindingTypes []*string `locationName:"findingTypes" type:"list" enum:"FindingType"`
}

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

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

// Specifies one or more property- and tag-based conditions that define criteria
// for including or excluding S3 buckets from a classification job.
type CriteriaBlockForJob struct {
	_ struct{} `type:"structure"`

	And []*CriteriaForJob `locationName:"and" 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 CriteriaBlockForJob) String() string {
	return awsutil.Prettify(s)
}

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

// SetAnd sets the And field's value.
func (s *CriteriaBlockForJob) SetAnd(v []*CriteriaForJob) *CriteriaBlockForJob {
	s.And = v
	return s
}

// Specifies a property- or tag-based condition that defines criteria for including
// or excluding S3 buckets from a classification job.
type CriteriaForJob struct {
	_ struct{} `type:"structure"`

	// Specifies a property-based condition that determines whether an S3 bucket
	// is included or excluded from a classification job.
	SimpleCriterion *SimpleCriterionForJob `locationName:"simpleCriterion" type:"structure"`

	// Specifies a tag-based condition that determines whether an S3 bucket is included
	// or excluded from a classification job.
	TagCriterion *TagCriterionForJob `locationName:"tagCriterion" 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 CriteriaForJob) String() string {
	return awsutil.Prettify(s)
}

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

// SetSimpleCriterion sets the SimpleCriterion field's value.
func (s *CriteriaForJob) SetSimpleCriterion(v *SimpleCriterionForJob) *CriteriaForJob {
	s.SimpleCriterion = v
	return s
}

// SetTagCriterion sets the TagCriterion field's value.
func (s *CriteriaForJob) SetTagCriterion(v *TagCriterionForJob) *CriteriaForJob {
	s.TagCriterion = v
	return s
}

// Specifies the operator to use in a property-based condition that filters
// the results of a query for findings. For detailed information and examples
// of each operator, see Fundamentals of filtering findings (https://docs.aws.amazon.com/macie/latest/user/findings-filter-basics.html)
// in the Amazon Macie User Guide.
type CriterionAdditionalProperties struct {
	_ struct{} `type:"structure"`

	Eq []*string `locationName:"eq" type:"list"`

	EqExactMatch []*string `locationName:"eqExactMatch" type:"list"`

	Gt *int64 `locationName:"gt" type:"long"`

	Gte *int64 `locationName:"gte" type:"long"`

	Lt *int64 `locationName:"lt" type:"long"`

	Lte *int64 `locationName:"lte" type:"long"`

	Neq []*string `locationName:"neq" 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 CriterionAdditionalProperties) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetEqExactMatch sets the EqExactMatch field's value.
func (s *CriterionAdditionalProperties) SetEqExactMatch(v []*string) *CriterionAdditionalProperties {
	s.EqExactMatch = v
	return s
}

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

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

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

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

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

// Provides information about a custom data identifier.
type CustomDataIdentifierSummary struct {
	_ struct{} `type:"structure"`

	Arn *string `locationName:"arn" type:"string"`

	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	Description *string `locationName:"description" type:"string"`

	Id *string `locationName:"id" type:"string"`

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

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

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

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

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

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

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

// Provides information about custom data identifiers that produced a sensitive
// data finding, and the number of occurrences of the data that they detected
// for the finding.
type CustomDataIdentifiers struct {
	_ struct{} `type:"structure"`

	// Provides information about custom data identifiers that produced a sensitive
	// data finding, and the number of occurrences of the data that each identifier
	// detected.
	Detections []*CustomDetection `locationName:"detections" type:"list"`

	TotalCount *int64 `locationName:"totalCount" 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 CustomDataIdentifiers) String() string {
	return awsutil.Prettify(s)
}

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

// SetDetections sets the Detections field's value.
func (s *CustomDataIdentifiers) SetDetections(v []*CustomDetection) *CustomDataIdentifiers {
	s.Detections = v
	return s
}

// SetTotalCount sets the TotalCount field's value.
func (s *CustomDataIdentifiers) SetTotalCount(v int64) *CustomDataIdentifiers {
	s.TotalCount = &v
	return s
}

// Provides information about a custom data identifier that produced a sensitive
// data finding, and the sensitive data that it detected for the finding.
type CustomDetection struct {
	_ struct{} `type:"structure"`

	Arn *string `locationName:"arn" type:"string"`

	Count *int64 `locationName:"count" type:"long"`

	Name *string `locationName:"name" type:"string"`

	// Specifies the location of 1-15 occurrences of sensitive data that was detected
	// by a managed data identifier or a custom data identifier and produced a sensitive
	// data finding.
	Occurrences *Occurrences `locationName:"occurrences" type:"structure"`
}

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

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

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

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

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

// SetOccurrences sets the Occurrences field's value.
func (s *CustomDetection) SetOccurrences(v *Occurrences) *CustomDetection {
	s.Occurrences = v
	return s
}

// Specifies that a classification job runs once a day, every day. This is an
// empty object.
type DailySchedule 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 DailySchedule) String() string {
	return awsutil.Prettify(s)
}

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

// Specifies one or more accounts that sent Amazon Macie membership invitations
// to decline.
type DeclineInvitationsInput struct {
	_ struct{} `type:"structure"`

	// AccountIds is a required field
	AccountIds []*string `locationName:"accountIds" type:"list" required:"true"`
}

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

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

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

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

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

// Provides information about unprocessed requests to decline Amazon Macie membership
// invitations that were received from specific accounts.
type DeclineInvitationsOutput struct {
	_ struct{} `type:"structure"`

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

// Provides information about a type of sensitive data that was detected by
// a managed data identifier and produced a sensitive data finding.
type DefaultDetection struct {
	_ struct{} `type:"structure"`

	Count *int64 `locationName:"count" type:"long"`

	// Specifies the location of 1-15 occurrences of sensitive data that was detected
	// by a managed data identifier or a custom data identifier and produced a sensitive
	// data finding.
	Occurrences *Occurrences `locationName:"occurrences" type:"structure"`

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

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

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

// SetOccurrences sets the Occurrences field's value.
func (s *DefaultDetection) SetOccurrences(v *Occurrences) *DefaultDetection {
	s.Occurrences = v
	return s
}

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

type DeleteAllowListInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// Id is a required field
	Id *string `location:"uri" locationName:"id" type:"string" required:"true"`

	IgnoreJobChecks *string `location:"querystring" locationName:"ignoreJobChecks" type:"string"`
}

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

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

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

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

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

// SetIgnoreJobChecks sets the IgnoreJobChecks field's value.
func (s *DeleteAllowListInput) SetIgnoreJobChecks(v string) *DeleteAllowListInput {
	s.IgnoreJobChecks = &v
	return s
}

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

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

type DeleteCustomDataIdentifierInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// Id is a required field
	Id *string `location:"uri" locationName:"id" 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 DeleteCustomDataIdentifierInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

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

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

type DeleteFindingsFilterInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// Id is a required field
	Id *string `location:"uri" locationName:"id" 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 DeleteFindingsFilterInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

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

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

// Specifies one or more accounts that sent Amazon Macie membership invitations
// to delete.
type DeleteInvitationsInput struct {
	_ struct{} `type:"structure"`

	// AccountIds is a required field
	AccountIds []*string `locationName:"accountIds" type:"list" required:"true"`
}

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

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

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

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

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

// Provides information about unprocessed requests to delete Amazon Macie membership
// invitations that were received from specific accounts.
type DeleteInvitationsOutput struct {
	_ struct{} `type:"structure"`

	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 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 DeleteMemberInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// Id is a required field
	Id *string `location:"uri" locationName:"id" 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 DeleteMemberInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

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

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

// Specifies criteria for filtering, sorting, and paginating the results of
// a query for statistical data and other information about S3 buckets.
type DescribeBucketsInput struct {
	_ struct{} `type:"structure"`

	// Specifies, as a map, one or more property-based conditions that filter the
	// results of a query for information about S3 buckets.
	Criteria map[string]*BucketCriteriaAdditionalProperties `locationName:"criteria" type:"map"`

	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	NextToken *string `locationName:"nextToken" type:"string"`

	// Specifies criteria for sorting the results of a query for information about
	// S3 buckets.
	SortCriteria *BucketSortCriteria `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 DescribeBucketsInput) String() string {
	return awsutil.Prettify(s)
}

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

// SetCriteria sets the Criteria field's value.
func (s *DescribeBucketsInput) SetCriteria(v map[string]*BucketCriteriaAdditionalProperties) *DescribeBucketsInput {
	s.Criteria = v
	return s
}

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

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

// SetSortCriteria sets the SortCriteria field's value.
func (s *DescribeBucketsInput) SetSortCriteria(v *BucketSortCriteria) *DescribeBucketsInput {
	s.SortCriteria = v
	return s
}

// Provides the results of a query that retrieved statistical data and other
// information about one or more S3 buckets that Amazon Macie monitors and analyzes
// for your account.
type DescribeBucketsOutput struct {
	_ struct{} `type:"structure"`

	Buckets []*BucketMetadata `locationName:"buckets" type:"list"`

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

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

// SetBuckets sets the Buckets field's value.
func (s *DescribeBucketsOutput) SetBuckets(v []*BucketMetadata) *DescribeBucketsOutput {
	s.Buckets = v
	return s
}

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

type DescribeClassificationJobInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// JobId is a required field
	JobId *string `location:"uri" locationName:"jobId" 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 DescribeClassificationJobInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetJobId sets the JobId field's value.
func (s *DescribeClassificationJobInput) SetJobId(v string) *DescribeClassificationJobInput {
	s.JobId = &v
	return s
}

// Provides information about a classification job, including the current configuration
// settings and status of the job.
type DescribeClassificationJobOutput struct {
	_ struct{} `type:"structure"`

	AllowListIds []*string `locationName:"allowListIds" type:"list"`

	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`

	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	CustomDataIdentifierIds []*string `locationName:"customDataIdentifierIds" type:"list"`

	Description *string `locationName:"description" type:"string"`

	InitialRun *bool `locationName:"initialRun" type:"boolean"`

	JobArn *string `locationName:"jobArn" type:"string"`

	JobId *string `locationName:"jobId" type:"string"`

	// The status of a classification job. Possible values are:
	JobStatus *string `locationName:"jobStatus" type:"string" enum:"JobStatus"`

	// The schedule for running a classification job. Valid values are:
	JobType *string `locationName:"jobType" type:"string" enum:"JobType"`

	// Specifies whether any account- or bucket-level access errors occurred when
	// a classification job ran. For information about using logging data to investigate
	// these errors, see Monitoring sensitive data discovery jobs (https://docs.aws.amazon.com/macie/latest/user/discovery-jobs-monitor-cw-logs.html)
	// in the Amazon Macie User Guide.
	LastRunErrorStatus *LastRunErrorStatus `locationName:"lastRunErrorStatus" type:"structure"`

	LastRunTime *time.Time `locationName:"lastRunTime" type:"timestamp" timestampFormat:"iso8601"`

	ManagedDataIdentifierIds []*string `locationName:"managedDataIdentifierIds" type:"list"`

	// The selection type that determines which managed data identifiers a classification
	// job uses to analyze data. Valid values are:
	ManagedDataIdentifierSelector *string `locationName:"managedDataIdentifierSelector" type:"string" enum:"ManagedDataIdentifierSelector"`

	Name *string `locationName:"name" type:"string"`

	// Specifies which S3 buckets contain the objects that a classification job
	// analyzes, and the scope of that analysis. The bucket specification can be
	// static (bucketDefinitions) or dynamic (bucketCriteria). If it's static, the
	// job analyzes objects in the same predefined set of buckets each time the
	// job runs. If it's dynamic, the job analyzes objects in any buckets that match
	// the specified criteria each time the job starts to run.
	S3JobDefinition *S3JobDefinition `locationName:"s3JobDefinition" type:"structure"`

	SamplingPercentage *int64 `locationName:"samplingPercentage" type:"integer"`

	// Specifies the recurrence pattern for running a classification job.
	ScheduleFrequency *JobScheduleFrequency `locationName:"scheduleFrequency" type:"structure"`

	// Provides processing statistics for a classification job.
	Statistics *Statistics `locationName:"statistics" type:"structure"`

	// A string-to-string map of key-value pairs that specifies the tags (keys and
	// values) for an Amazon Macie resource.
	Tags map[string]*string `locationName:"tags" type:"map"`

	// Provides information about when a classification job was paused. For a one-time
	// job, this object also specifies when the job will expire and be cancelled
	// if it isn't resumed. For a recurring job, this object also specifies when
	// the paused job run will expire and be cancelled if it isn't resumed. This
	// object is present only if a job's current status (jobStatus) is USER_PAUSED.
	// The information in this object applies only to a job that was paused while
	// it had a status of RUNNING.
	UserPausedDetails *UserPausedDetails `locationName:"userPausedDetails" 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 DescribeClassificationJobOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetAllowListIds sets the AllowListIds field's value.
func (s *DescribeClassificationJobOutput) SetAllowListIds(v []*string) *DescribeClassificationJobOutput {
	s.AllowListIds = v
	return s
}

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

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

// SetCustomDataIdentifierIds sets the CustomDataIdentifierIds field's value.
func (s *DescribeClassificationJobOutput) SetCustomDataIdentifierIds(v []*string) *DescribeClassificationJobOutput {
	s.CustomDataIdentifierIds = v
	return s
}

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

// SetInitialRun sets the InitialRun field's value.
func (s *DescribeClassificationJobOutput) SetInitialRun(v bool) *DescribeClassificationJobOutput {
	s.InitialRun = &v
	return s
}

// SetJobArn sets the JobArn field's value.
func (s *DescribeClassificationJobOutput) SetJobArn(v string) *DescribeClassificationJobOutput {
	s.JobArn = &v
	return s
}

// SetJobId sets the JobId field's value.
func (s *DescribeClassificationJobOutput) SetJobId(v string) *DescribeClassificationJobOutput {
	s.JobId = &v
	return s
}

// SetJobStatus sets the JobStatus field's value.
func (s *DescribeClassificationJobOutput) SetJobStatus(v string) *DescribeClassificationJobOutput {
	s.JobStatus = &v
	return s
}

// SetJobType sets the JobType field's value.
func (s *DescribeClassificationJobOutput) SetJobType(v string) *DescribeClassificationJobOutput {
	s.JobType = &v
	return s
}

// SetLastRunErrorStatus sets the LastRunErrorStatus field's value.
func (s *DescribeClassificationJobOutput) SetLastRunErrorStatus(v *LastRunErrorStatus) *DescribeClassificationJobOutput {
	s.LastRunErrorStatus = v
	return s
}

// SetLastRunTime sets the LastRunTime field's value.
func (s *DescribeClassificationJobOutput) SetLastRunTime(v time.Time) *DescribeClassificationJobOutput {
	s.LastRunTime = &v
	return s
}

// SetManagedDataIdentifierIds sets the ManagedDataIdentifierIds field's value.
func (s *DescribeClassificationJobOutput) SetManagedDataIdentifierIds(v []*string) *DescribeClassificationJobOutput {
	s.ManagedDataIdentifierIds = v
	return s
}

// SetManagedDataIdentifierSelector sets the ManagedDataIdentifierSelector field's value.
func (s *DescribeClassificationJobOutput) SetManagedDataIdentifierSelector(v string) *DescribeClassificationJobOutput {
	s.ManagedDataIdentifierSelector = &v
	return s
}

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

// SetS3JobDefinition sets the S3JobDefinition field's value.
func (s *DescribeClassificationJobOutput) SetS3JobDefinition(v *S3JobDefinition) *DescribeClassificationJobOutput {
	s.S3JobDefinition = v
	return s
}

// SetSamplingPercentage sets the SamplingPercentage field's value.
func (s *DescribeClassificationJobOutput) SetSamplingPercentage(v int64) *DescribeClassificationJobOutput {
	s.SamplingPercentage = &v
	return s
}

// SetScheduleFrequency sets the ScheduleFrequency field's value.
func (s *DescribeClassificationJobOutput) SetScheduleFrequency(v *JobScheduleFrequency) *DescribeClassificationJobOutput {
	s.ScheduleFrequency = v
	return s
}

// SetStatistics sets the Statistics field's value.
func (s *DescribeClassificationJobOutput) SetStatistics(v *Statistics) *DescribeClassificationJobOutput {
	s.Statistics = v
	return s
}

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

// SetUserPausedDetails sets the UserPausedDetails field's value.
func (s *DescribeClassificationJobOutput) SetUserPausedDetails(v *UserPausedDetails) *DescribeClassificationJobOutput {
	s.UserPausedDetails = v
	return s
}

type DescribeOrganizationConfigurationInput struct {
	_ struct{} `type:"structure" nopayload:"true"`
}

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

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

// Provides information about the Amazon Macie configuration for an organization
// in Organizations.
type DescribeOrganizationConfigurationOutput struct {
	_ struct{} `type:"structure"`

	AutoEnable *bool `locationName:"autoEnable" type:"boolean"`

	MaxAccountLimitReached *bool `locationName:"maxAccountLimitReached" type:"boolean"`
}

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

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

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

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

// Specifies 1-10 occurrences of a specific type of sensitive data reported
// by a finding.
type DetectedDataDetails struct {
	_ struct{} `type:"structure"`

	// Value is a required field
	Value *string `locationName:"value" min:"1" type:"string" required:"true"`
}

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

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

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

// Provides information about a type of sensitive data that Amazon Macie found
// in an S3 bucket while performing automated sensitive data discovery for an
// account. The information also specifies the custom or managed data identifier
// that detected the data. This information is available only if automated sensitive
// data discovery has been enabled for the account.
type Detection struct {
	_ struct{} `type:"structure"`

	Arn *string `locationName:"arn" type:"string"`

	Count *int64 `locationName:"count" type:"long"`

	Id *string `locationName:"id" type:"string"`

	Name *string `locationName:"name" type:"string"`

	Suppressed *bool `locationName:"suppressed" type:"boolean"`

	// The type of data identifier that detected a specific type of sensitive data
	// in an S3 bucket. Possible values are:
	Type *string `locationName:"type" type:"string" enum:"DataIdentifierType"`
}

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

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

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

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

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

// SetSuppressed sets the Suppressed field's value.
func (s *Detection) SetSuppressed(v bool) *Detection {
	s.Suppressed = &v
	return s
}

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

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

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

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

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

type DisableOrganizationAdminAccountInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// AdminAccountId is a required field
	AdminAccountId *string `location:"querystring" 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"`
}

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

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

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

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

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

type DisassociateFromMasterAccountInput struct {
	_ struct{} `type:"structure" nopayload:"true"`
}

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

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

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

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

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

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

	// Id is a required field
	Id *string `location:"uri" locationName:"id" type:"string" required:"true"`
}

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

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

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

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

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

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

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

// Provides information about the domain name of the device that an entity used
// to perform an action on an affected resource.
type DomainDetails struct {
	_ struct{} `type:"structure"`

	DomainName *string `locationName:"domainName" type:"string"`
}

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

// SetDomainName sets the DomainName field's value.
func (s *DomainDetails) SetDomainName(v string) *DomainDetails {
	s.DomainName = &v
	return s
}

// Enables Amazon Macie and specifies the configuration settings for a Macie
// account.
type EnableMacieInput struct {
	_ struct{} `type:"structure"`

	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`

	// The frequency with which Amazon Macie publishes updates to policy findings
	// for an account. This includes publishing updates to Security Hub and Amazon
	// EventBridge (formerly Amazon CloudWatch Events). For more information, see
	// Monitoring and processing findings (https://docs.aws.amazon.com/macie/latest/user/findings-monitor.html)
	// in the Amazon Macie User Guide. Valid values are:
	FindingPublishingFrequency *string `locationName:"findingPublishingFrequency" type:"string" enum:"FindingPublishingFrequency"`

	// The status of an Amazon Macie account. Valid values are:
	Status *string `locationName:"status" type:"string" enum:"MacieStatus"`
}

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

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

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

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

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

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

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

// Specifies an account to designate as the delegated Amazon Macie administrator
// account for an organization in Organizations. To submit this request, you
// must be a user of the Organizations management account.
type EnableOrganizationAdminAccountInput struct {
	_ struct{} `type:"structure"`

	// AdminAccountId is a required field
	AdminAccountId *string `locationName:"adminAccountId" type:"string" required:"true"`

	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
}

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

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

// Provides information about an identity that performed an action on an affected
// resource by using temporary security credentials. The credentials were obtained
// using the GetFederationToken operation of the Security Token Service (STS)
// API.
type FederatedUser struct {
	_ struct{} `type:"structure"`

	AccessKeyId *string `locationName:"accessKeyId" type:"string"`

	AccountId *string `locationName:"accountId" type:"string"`

	Arn *string `locationName:"arn" type:"string"`

	PrincipalId *string `locationName:"principalId" type:"string"`

	// Provides information about a session that was created for an entity that
	// performed an action by using temporary security credentials.
	SessionContext *SessionContext `locationName:"sessionContext" 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 FederatedUser) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

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

// SetSessionContext sets the SessionContext field's value.
func (s *FederatedUser) SetSessionContext(v *SessionContext) *FederatedUser {
	s.SessionContext = v
	return s
}

// Provides the details of a finding.
type Finding struct {
	_ struct{} `type:"structure"`

	AccountId *string `locationName:"accountId" type:"string"`

	Archived *bool `locationName:"archived" type:"boolean"`

	// The category of the finding. Possible values are:
	Category *string `locationName:"category" type:"string" enum:"FindingCategory"`

	// Provides information about a sensitive data finding and the details of the
	// finding.
	ClassificationDetails *ClassificationDetails `locationName:"classificationDetails" type:"structure"`

	Count *int64 `locationName:"count" type:"long"`

	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	Description *string `locationName:"description" type:"string"`

	Id *string `locationName:"id" type:"string"`

	Partition *string `locationName:"partition" type:"string"`

	// Provides the details of a policy finding.
	PolicyDetails *PolicyDetails `locationName:"policyDetails" type:"structure"`

	Region *string `locationName:"region" type:"string"`

	// Provides information about the resources that a finding applies to.
	ResourcesAffected *ResourcesAffected `locationName:"resourcesAffected" type:"structure"`

	Sample *bool `locationName:"sample" type:"boolean"`

	SchemaVersion *string `locationName:"schemaVersion" type:"string"`

	// Provides the numerical and qualitative representations of a finding's severity.
	Severity *Severity `locationName:"severity" type:"structure"`

	Title *string `locationName:"title" type:"string"`

	// The type of finding. For details about each type, see Types of Amazon Macie
	// findings (https://docs.aws.amazon.com/macie/latest/user/findings-types.html)
	// in the Amazon Macie User Guide. Possible values are:
	Type *string `locationName:"type" type:"string" enum:"FindingType"`

	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`
}

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

// SetArchived sets the Archived field's value.
func (s *Finding) SetArchived(v bool) *Finding {
	s.Archived = &v
	return s
}

// SetCategory sets the Category field's value.
func (s *Finding) SetCategory(v string) *Finding {
	s.Category = &v
	return s
}

// SetClassificationDetails sets the ClassificationDetails field's value.
func (s *Finding) SetClassificationDetails(v *ClassificationDetails) *Finding {
	s.ClassificationDetails = v
	return s
}

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

// SetCreatedAt sets the CreatedAt field's value.
func (s *Finding) SetCreatedAt(v time.Time) *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
}

// SetPolicyDetails sets the PolicyDetails field's value.
func (s *Finding) SetPolicyDetails(v *PolicyDetails) *Finding {
	s.PolicyDetails = v
	return s
}

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

// SetResourcesAffected sets the ResourcesAffected field's value.
func (s *Finding) SetResourcesAffected(v *ResourcesAffected) *Finding {
	s.ResourcesAffected = v
	return s
}

// SetSample sets the Sample field's value.
func (s *Finding) SetSample(v bool) *Finding {
	s.Sample = &v
	return s
}

// SetSchemaVersion sets the SchemaVersion field's value.
func (s *Finding) SetSchemaVersion(v string) *Finding {
	s.SchemaVersion = &v
	return s
}

// SetSeverity sets the Severity field's value.
func (s *Finding) SetSeverity(v *Severity) *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 time.Time) *Finding {
	s.UpdatedAt = &v
	return s
}

// Provides information about an action that occurred for a resource and produced
// a policy finding.
type FindingAction struct {
	_ struct{} `type:"structure"`

	// The type of action that occurred for the resource and produced the policy
	// finding:
	ActionType *string `locationName:"actionType" type:"string" enum:"FindingActionType"`

	// Provides information about an API operation that an entity invoked for an
	// affected resource.
	ApiCallDetails *ApiCallDetails `locationName:"apiCallDetails" 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 FindingAction) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetApiCallDetails sets the ApiCallDetails field's value.
func (s *FindingAction) SetApiCallDetails(v *ApiCallDetails) *FindingAction {
	s.ApiCallDetails = v
	return s
}

// Provides information about an entity that performed an action that produced
// a policy finding for a resource.
type FindingActor struct {
	_ struct{} `type:"structure"`

	// Provides information about the domain name of the device that an entity used
	// to perform an action on an affected resource.
	DomainDetails *DomainDetails `locationName:"domainDetails" type:"structure"`

	// Provides information about the IP address of the device that an entity used
	// to perform an action on an affected resource.
	IpAddressDetails *IpAddressDetails `locationName:"ipAddressDetails" type:"structure"`

	// Provides information about the type and other characteristics of an entity
	// that performed an action on an affected resource.
	UserIdentity *UserIdentity `locationName:"userIdentity" 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 FindingActor) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetIpAddressDetails sets the IpAddressDetails field's value.
func (s *FindingActor) SetIpAddressDetails(v *IpAddressDetails) *FindingActor {
	s.IpAddressDetails = v
	return s
}

// SetUserIdentity sets the UserIdentity field's value.
func (s *FindingActor) SetUserIdentity(v *UserIdentity) *FindingActor {
	s.UserIdentity = v
	return s
}

// Specifies, as a map, one or more property-based conditions that filter the
// results of a query for findings.
type FindingCriteria struct {
	_ struct{} `type:"structure"`

	// Specifies a condition that defines a property, operator, and one or more
	// values to filter the results of a query for findings. The number of values
	// depends on the property and operator specified by the condition. For information
	// about defining filter conditions, see Fundamentals of filtering findings
	// (https://docs.aws.amazon.com/macie/latest/user/findings-filter-basics.html)
	// in the Amazon Macie User Guide.
	Criterion map[string]*CriterionAdditionalProperties `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]*CriterionAdditionalProperties) *FindingCriteria {
	s.Criterion = v
	return s
}

// Specifies criteria for sorting the results of a query that retrieves aggregated
// statistical data about findings.
type FindingStatisticsSortCriteria struct {
	_ struct{} `type:"structure"`

	// The grouping to sort the results by. Valid values are:
	AttributeName *string `locationName:"attributeName" type:"string" enum:"FindingStatisticsSortAttributeName"`

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

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

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

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

// Provides information about a findings filter.
type FindingsFilterListItem struct {
	_ struct{} `type:"structure"`

	// The action to perform on findings that match the filter criteria. To suppress
	// (automatically archive) findings that match the criteria, set this value
	// to ARCHIVE. Valid values are:
	Action *string `locationName:"action" type:"string" enum:"FindingsFilterAction"`

	Arn *string `locationName:"arn" type:"string"`

	Id *string `locationName:"id" type:"string"`

	Name *string `locationName:"name" type:"string"`

	// A string-to-string map of key-value pairs that specifies the tags (keys and
	// values) for an Amazon Macie resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

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

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

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

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

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

type GetAdministratorAccountInput struct {
	_ struct{} `type:"structure" nopayload:"true"`
}

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

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

// Provides information about the Amazon Macie administrator account for an
// account. If the accounts are associated by a Macie membership invitation,
// the response also provides information about that invitation.
type GetAdministratorAccountOutput struct {
	_ struct{} `type:"structure"`

	// Provides information about an Amazon Macie membership invitation.
	Administrator *Invitation `locationName:"administrator" type:"structure"`
}

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

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

// SetAdministrator sets the Administrator field's value.
func (s *GetAdministratorAccountOutput) SetAdministrator(v *Invitation) *GetAdministratorAccountOutput {
	s.Administrator = v
	return s
}

type GetAllowListInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// Id is a required field
	Id *string `location:"uri" locationName:"id" 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 GetAllowListInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// Provides information about the settings and status of an allow list.
type GetAllowListOutput struct {
	_ struct{} `type:"structure"`

	Arn *string `locationName:"arn" min:"71" type:"string"`

	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// Specifies the criteria for an allow list. The criteria must specify a regular
	// expression (regex) or an S3 object (s3WordsList). It can't specify both.
	Criteria *AllowListCriteria `locationName:"criteria" type:"structure"`

	Description *string `locationName:"description" min:"1" type:"string"`

	Id *string `locationName:"id" min:"22" type:"string"`

	Name *string `locationName:"name" min:"1" type:"string"`

	// Provides information about the current status of an allow list, which indicates
	// whether Amazon Macie can access and use the list's criteria.
	Status *AllowListStatus `locationName:"status" type:"structure"`

	// A string-to-string map of key-value pairs that specifies the tags (keys and
	// values) for an Amazon Macie resource.
	Tags map[string]*string `locationName:"tags" type:"map"`

	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`
}

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

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

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

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

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

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

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

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

// SetStatus sets the Status field's value.
func (s *GetAllowListOutput) SetStatus(v *AllowListStatus) *GetAllowListOutput {
	s.Status = v
	return s
}

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

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

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

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

// Provides information about the configuration settings and status of automated
// sensitive data discovery for an organization in Amazon Macie or a standalone
// Macie account.
type GetAutomatedDiscoveryConfigurationOutput struct {
	_ struct{} `type:"structure"`

	// Specifies whether to automatically enable automated sensitive data discovery
	// for accounts that are part of an organization in Amazon Macie. Valid values
	// are:
	AutoEnableOrganizationMembers *string `locationName:"autoEnableOrganizationMembers" type:"string" enum:"AutoEnableMode"`

	// The unique identifier the classification scope.
	ClassificationScopeId *string `locationName:"classificationScopeId" type:"string"`

	// Specifies a date and time in UTC and extended ISO 8601 format.
	DisabledAt *time.Time `locationName:"disabledAt" type:"timestamp" timestampFormat:"iso8601"`

	// Specifies a date and time in UTC and extended ISO 8601 format.
	FirstEnabledAt *time.Time `locationName:"firstEnabledAt" type:"timestamp" timestampFormat:"iso8601"`

	// Specifies a date and time in UTC and extended ISO 8601 format.
	LastUpdatedAt *time.Time `locationName:"lastUpdatedAt" type:"timestamp" timestampFormat:"iso8601"`

	// The unique identifier for the sensitivity inspection template.
	SensitivityInspectionTemplateId *string `locationName:"sensitivityInspectionTemplateId" type:"string"`

	// The status of the automated sensitive data discovery configuration for an
	// organization in Amazon Macie or a standalone Macie account. Valid values
	// are:
	Status *string `locationName:"status" type:"string" enum:"AutomatedDiscoveryStatus"`
}

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

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

// SetAutoEnableOrganizationMembers sets the AutoEnableOrganizationMembers field's value.
func (s *GetAutomatedDiscoveryConfigurationOutput) SetAutoEnableOrganizationMembers(v string) *GetAutomatedDiscoveryConfigurationOutput {
	s.AutoEnableOrganizationMembers = &v
	return s
}

// SetClassificationScopeId sets the ClassificationScopeId field's value.
func (s *GetAutomatedDiscoveryConfigurationOutput) SetClassificationScopeId(v string) *GetAutomatedDiscoveryConfigurationOutput {
	s.ClassificationScopeId = &v
	return s
}

// SetDisabledAt sets the DisabledAt field's value.
func (s *GetAutomatedDiscoveryConfigurationOutput) SetDisabledAt(v time.Time) *GetAutomatedDiscoveryConfigurationOutput {
	s.DisabledAt = &v
	return s
}

// SetFirstEnabledAt sets the FirstEnabledAt field's value.
func (s *GetAutomatedDiscoveryConfigurationOutput) SetFirstEnabledAt(v time.Time) *GetAutomatedDiscoveryConfigurationOutput {
	s.FirstEnabledAt = &v
	return s
}

// SetLastUpdatedAt sets the LastUpdatedAt field's value.
func (s *GetAutomatedDiscoveryConfigurationOutput) SetLastUpdatedAt(v time.Time) *GetAutomatedDiscoveryConfigurationOutput {
	s.LastUpdatedAt = &v
	return s
}

// SetSensitivityInspectionTemplateId sets the SensitivityInspectionTemplateId field's value.
func (s *GetAutomatedDiscoveryConfigurationOutput) SetSensitivityInspectionTemplateId(v string) *GetAutomatedDiscoveryConfigurationOutput {
	s.SensitivityInspectionTemplateId = &v
	return s
}

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

// Specifies the account that owns the S3 buckets to retrieve aggregated statistical
// data for.
type GetBucketStatisticsInput struct {
	_ struct{} `type:"structure"`

	AccountId *string `locationName:"accountId" type:"string"`
}

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

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

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

// Provides the results of a query that retrieved aggregated statistical data
// for all the S3 buckets that Amazon Macie monitors and analyzes for your account.
// By default, object count and storage size values include data for object
// parts that are the result of incomplete multipart uploads. For more information,
// see How Macie monitors Amazon S3 data security (https://docs.aws.amazon.com/macie/latest/user/monitoring-s3-how-it-works.html)
// in the Amazon Macie User Guide.
type GetBucketStatisticsOutput struct {
	_ struct{} `type:"structure"`

	BucketCount *int64 `locationName:"bucketCount" type:"long"`

	// Provides information about the number of S3 buckets that are publicly accessible
	// due to a combination of permissions settings for each bucket.
	BucketCountByEffectivePermission *BucketCountByEffectivePermission `locationName:"bucketCountByEffectivePermission" type:"structure"`

	// Provides information about the number of S3 buckets whose settings do or
	// don't specify default server-side encryption behavior for objects that are
	// added to the buckets. For detailed information about these settings, see
	// Setting default server-side encryption behavior for Amazon S3 buckets (https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html)
	// in the Amazon Simple Storage Service User Guide.
	BucketCountByEncryptionType *BucketCountByEncryptionType `locationName:"bucketCountByEncryptionType" type:"structure"`

	// Provides information about the number of S3 buckets whose bucket policies
	// do or don't require server-side encryption of objects when objects are added
	// to the buckets.
	BucketCountByObjectEncryptionRequirement *BucketCountPolicyAllowsUnencryptedObjectUploads `locationName:"bucketCountByObjectEncryptionRequirement" type:"structure"`

	// Provides information about the number of S3 buckets that are or aren't shared
	// with other Amazon Web Services accounts, Amazon CloudFront origin access
	// identities (OAIs), or CloudFront origin access controls (OACs). In this data,
	// an Amazon Macie organization is defined as a set of Macie accounts that are
	// centrally managed as a group of related accounts through Organizations or
	// by Macie invitation.
	BucketCountBySharedAccessType *BucketCountBySharedAccessType `locationName:"bucketCountBySharedAccessType" type:"structure"`

	// Provides aggregated statistical data for sensitive data discovery metrics
	// that apply to S3 buckets, grouped by bucket sensitivity score (sensitivityScore).
	// If automated sensitive data discovery is currently disabled for your account,
	// the value for each metric is 0.
	BucketStatisticsBySensitivity *BucketStatisticsBySensitivity `locationName:"bucketStatisticsBySensitivity" type:"structure"`

	ClassifiableObjectCount *int64 `locationName:"classifiableObjectCount" type:"long"`

	ClassifiableSizeInBytes *int64 `locationName:"classifiableSizeInBytes" type:"long"`

	LastUpdated *time.Time `locationName:"lastUpdated" type:"timestamp" timestampFormat:"iso8601"`

	ObjectCount *int64 `locationName:"objectCount" type:"long"`

	SizeInBytes *int64 `locationName:"sizeInBytes" type:"long"`

	SizeInBytesCompressed *int64 `locationName:"sizeInBytesCompressed" type:"long"`

	// Provides information about the total storage size (in bytes) or number of
	// objects that Amazon Macie can't analyze in one or more S3 buckets. In a BucketMetadata
	// or MatchingBucket object, this data is for a specific bucket. In a GetBucketStatisticsResponse
	// object, this data is aggregated for all the buckets in the query results.
	// If versioning is enabled for a bucket, storage size values are based on the
	// size of the latest version of each applicable object in the bucket.
	UnclassifiableObjectCount *ObjectLevelStatistics `locationName:"unclassifiableObjectCount" type:"structure"`

	// Provides information about the total storage size (in bytes) or number of
	// objects that Amazon Macie can't analyze in one or more S3 buckets. In a BucketMetadata
	// or MatchingBucket object, this data is for a specific bucket. In a GetBucketStatisticsResponse
	// object, this data is aggregated for all the buckets in the query results.
	// If versioning is enabled for a bucket, storage size values are based on the
	// size of the latest version of each applicable object in the bucket.
	UnclassifiableObjectSizeInBytes *ObjectLevelStatistics `locationName:"unclassifiableObjectSizeInBytes" 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 GetBucketStatisticsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetBucketCount sets the BucketCount field's value.
func (s *GetBucketStatisticsOutput) SetBucketCount(v int64) *GetBucketStatisticsOutput {
	s.BucketCount = &v
	return s
}

// SetBucketCountByEffectivePermission sets the BucketCountByEffectivePermission field's value.
func (s *GetBucketStatisticsOutput) SetBucketCountByEffectivePermission(v *BucketCountByEffectivePermission) *GetBucketStatisticsOutput {
	s.BucketCountByEffectivePermission = v
	return s
}

// SetBucketCountByEncryptionType sets the BucketCountByEncryptionType field's value.
func (s *GetBucketStatisticsOutput) SetBucketCountByEncryptionType(v *BucketCountByEncryptionType) *GetBucketStatisticsOutput {
	s.BucketCountByEncryptionType = v
	return s
}

// SetBucketCountByObjectEncryptionRequirement sets the BucketCountByObjectEncryptionRequirement field's value.
func (s *GetBucketStatisticsOutput) SetBucketCountByObjectEncryptionRequirement(v *BucketCountPolicyAllowsUnencryptedObjectUploads) *GetBucketStatisticsOutput {
	s.BucketCountByObjectEncryptionRequirement = v
	return s
}

// SetBucketCountBySharedAccessType sets the BucketCountBySharedAccessType field's value.
func (s *GetBucketStatisticsOutput) SetBucketCountBySharedAccessType(v *BucketCountBySharedAccessType) *GetBucketStatisticsOutput {
	s.BucketCountBySharedAccessType = v
	return s
}

// SetBucketStatisticsBySensitivity sets the BucketStatisticsBySensitivity field's value.
func (s *GetBucketStatisticsOutput) SetBucketStatisticsBySensitivity(v *BucketStatisticsBySensitivity) *GetBucketStatisticsOutput {
	s.BucketStatisticsBySensitivity = v
	return s
}

// SetClassifiableObjectCount sets the ClassifiableObjectCount field's value.
func (s *GetBucketStatisticsOutput) SetClassifiableObjectCount(v int64) *GetBucketStatisticsOutput {
	s.ClassifiableObjectCount = &v
	return s
}

// SetClassifiableSizeInBytes sets the ClassifiableSizeInBytes field's value.
func (s *GetBucketStatisticsOutput) SetClassifiableSizeInBytes(v int64) *GetBucketStatisticsOutput {
	s.ClassifiableSizeInBytes = &v
	return s
}

// SetLastUpdated sets the LastUpdated field's value.
func (s *GetBucketStatisticsOutput) SetLastUpdated(v time.Time) *GetBucketStatisticsOutput {
	s.LastUpdated = &v
	return s
}

// SetObjectCount sets the ObjectCount field's value.
func (s *GetBucketStatisticsOutput) SetObjectCount(v int64) *GetBucketStatisticsOutput {
	s.ObjectCount = &v
	return s
}

// SetSizeInBytes sets the SizeInBytes field's value.
func (s *GetBucketStatisticsOutput) SetSizeInBytes(v int64) *GetBucketStatisticsOutput {
	s.SizeInBytes = &v
	return s
}

// SetSizeInBytesCompressed sets the SizeInBytesCompressed field's value.
func (s *GetBucketStatisticsOutput) SetSizeInBytesCompressed(v int64) *GetBucketStatisticsOutput {
	s.SizeInBytesCompressed = &v
	return s
}

// SetUnclassifiableObjectCount sets the UnclassifiableObjectCount field's value.
func (s *GetBucketStatisticsOutput) SetUnclassifiableObjectCount(v *ObjectLevelStatistics) *GetBucketStatisticsOutput {
	s.UnclassifiableObjectCount = v
	return s
}

// SetUnclassifiableObjectSizeInBytes sets the UnclassifiableObjectSizeInBytes field's value.
func (s *GetBucketStatisticsOutput) SetUnclassifiableObjectSizeInBytes(v *ObjectLevelStatistics) *GetBucketStatisticsOutput {
	s.UnclassifiableObjectSizeInBytes = v
	return s
}

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

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

// Provides information about the current configuration settings for storing
// data classification results.
type GetClassificationExportConfigurationOutput struct {
	_ struct{} `type:"structure"`

	// Specifies where to store data classification results, and the encryption
	// settings to use when storing results in that location. The location must
	// be an S3 general purpose bucket.
	Configuration *ClassificationExportConfiguration `locationName:"configuration" 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 GetClassificationExportConfigurationOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetConfiguration sets the Configuration field's value.
func (s *GetClassificationExportConfigurationOutput) SetConfiguration(v *ClassificationExportConfiguration) *GetClassificationExportConfigurationOutput {
	s.Configuration = v
	return s
}

type GetClassificationScopeInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// Id is a required field
	Id *string `location:"uri" locationName:"id" 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 GetClassificationScopeInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// Provides information about the classification scope settings for an Amazon
// Macie account. Macie uses these settings when it performs automated sensitive
// data discovery for the account.
type GetClassificationScopeOutput struct {
	_ struct{} `type:"structure"`

	// The unique identifier the classification scope.
	Id *string `locationName:"id" type:"string"`

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

	// Specifies the S3 buckets that are excluded from automated sensitive data
	// discovery for an Amazon Macie account.
	S3 *S3ClassificationScope `locationName:"s3" 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 GetClassificationScopeOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetS3 sets the S3 field's value.
func (s *GetClassificationScopeOutput) SetS3(v *S3ClassificationScope) *GetClassificationScopeOutput {
	s.S3 = v
	return s
}

type GetCustomDataIdentifierInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// Id is a required field
	Id *string `location:"uri" locationName:"id" 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 GetCustomDataIdentifierInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// Provides information about the detection criteria and other settings for
// a custom data identifier.
type GetCustomDataIdentifierOutput struct {
	_ struct{} `type:"structure"`

	Arn *string `locationName:"arn" type:"string"`

	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	Deleted *bool `locationName:"deleted" type:"boolean"`

	Description *string `locationName:"description" type:"string"`

	Id *string `locationName:"id" type:"string"`

	IgnoreWords []*string `locationName:"ignoreWords" type:"list"`

	Keywords []*string `locationName:"keywords" type:"list"`

	MaximumMatchDistance *int64 `locationName:"maximumMatchDistance" type:"integer"`

	Name *string `locationName:"name" type:"string"`

	Regex *string `locationName:"regex" type:"string"`

	// The severity to assign to findings that the custom data identifier produces,
	// based on the number of occurrences of text that matches the custom data identifier's
	// detection criteria. You can specify as many as three SeverityLevel objects
	// in this array, one for each severity: LOW, MEDIUM, or HIGH. If you specify
	// more than one, the occurrences thresholds must be in ascending order by severity,
	// moving from LOW to HIGH. For example, 1 for LOW, 50 for MEDIUM, and 100 for
	// HIGH. If an S3 object contains fewer occurrences than the lowest specified
	// threshold, Amazon Macie doesn't create a finding.
	//
	// If you don't specify any values for this array, Macie creates findings for
	// S3 objects that contain at least one occurrence of text that matches the
	// detection criteria, and Macie automatically assigns the MEDIUM severity to
	// those findings.
	SeverityLevels []*SeverityLevel `locationName:"severityLevels" type:"list"`

	// A string-to-string map of key-value pairs that specifies the tags (keys and
	// values) for an Amazon Macie resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

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

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

// SetDeleted sets the Deleted field's value.
func (s *GetCustomDataIdentifierOutput) SetDeleted(v bool) *GetCustomDataIdentifierOutput {
	s.Deleted = &v
	return s
}

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

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

// SetIgnoreWords sets the IgnoreWords field's value.
func (s *GetCustomDataIdentifierOutput) SetIgnoreWords(v []*string) *GetCustomDataIdentifierOutput {
	s.IgnoreWords = v
	return s
}

// SetKeywords sets the Keywords field's value.
func (s *GetCustomDataIdentifierOutput) SetKeywords(v []*string) *GetCustomDataIdentifierOutput {
	s.Keywords = v
	return s
}

// SetMaximumMatchDistance sets the MaximumMatchDistance field's value.
func (s *GetCustomDataIdentifierOutput) SetMaximumMatchDistance(v int64) *GetCustomDataIdentifierOutput {
	s.MaximumMatchDistance = &v
	return s
}

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

// SetRegex sets the Regex field's value.
func (s *GetCustomDataIdentifierOutput) SetRegex(v string) *GetCustomDataIdentifierOutput {
	s.Regex = &v
	return s
}

// SetSeverityLevels sets the SeverityLevels field's value.
func (s *GetCustomDataIdentifierOutput) SetSeverityLevels(v []*SeverityLevel) *GetCustomDataIdentifierOutput {
	s.SeverityLevels = v
	return s
}

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

// Specifies criteria for filtering, grouping, sorting, and paginating the results
// of a query that retrieves aggregated statistical data about findings.
type GetFindingStatisticsInput struct {
	_ struct{} `type:"structure"`

	// Specifies, as a map, one or more property-based conditions that filter the
	// results of a query for findings.
	FindingCriteria *FindingCriteria `locationName:"findingCriteria" type:"structure"`

	// GroupBy is a required field
	GroupBy *string `locationName:"groupBy" type:"string" required:"true" enum:"GroupBy"`

	Size *int64 `locationName:"size" type:"integer"`

	// Specifies criteria for sorting the results of a query that retrieves aggregated
	// statistical data about findings.
	SortCriteria *FindingStatisticsSortCriteria `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 GetFindingStatisticsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// SetGroupBy sets the GroupBy field's value.
func (s *GetFindingStatisticsInput) SetGroupBy(v string) *GetFindingStatisticsInput {
	s.GroupBy = &v
	return s
}

// SetSize sets the Size field's value.
func (s *GetFindingStatisticsInput) SetSize(v int64) *GetFindingStatisticsInput {
	s.Size = &v
	return s
}

// SetSortCriteria sets the SortCriteria field's value.
func (s *GetFindingStatisticsInput) SetSortCriteria(v *FindingStatisticsSortCriteria) *GetFindingStatisticsInput {
	s.SortCriteria = v
	return s
}

// Provides the results of a query that retrieved aggregated statistical data
// about findings.
type GetFindingStatisticsOutput struct {
	_ struct{} `type:"structure"`

	CountsByGroup []*GroupCount `locationName:"countsByGroup" 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 GetFindingStatisticsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetCountsByGroup sets the CountsByGroup field's value.
func (s *GetFindingStatisticsOutput) SetCountsByGroup(v []*GroupCount) *GetFindingStatisticsOutput {
	s.CountsByGroup = v
	return s
}

type GetFindingsFilterInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// Id is a required field
	Id *string `location:"uri" locationName:"id" 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 GetFindingsFilterInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// Provides information about the criteria and other settings for a findings
// filter.
type GetFindingsFilterOutput struct {
	_ struct{} `type:"structure"`

	// The action to perform on findings that match the filter criteria. To suppress
	// (automatically archive) findings that match the criteria, set this value
	// to ARCHIVE. Valid values are:
	Action *string `locationName:"action" type:"string" enum:"FindingsFilterAction"`

	Arn *string `locationName:"arn" type:"string"`

	Description *string `locationName:"description" type:"string"`

	// Specifies, as a map, one or more property-based conditions that filter the
	// results of a query for findings.
	FindingCriteria *FindingCriteria `locationName:"findingCriteria" type:"structure"`

	Id *string `locationName:"id" type:"string"`

	Name *string `locationName:"name" type:"string"`

	Position *int64 `locationName:"position" type:"integer"`

	// A string-to-string map of key-value pairs that specifies the tags (keys and
	// values) for an Amazon Macie resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

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

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

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

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

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

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

// SetPosition sets the Position field's value.
func (s *GetFindingsFilterOutput) SetPosition(v int64) *GetFindingsFilterOutput {
	s.Position = &v
	return s
}

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

// Specifies one or more findings to retrieve.
type GetFindingsInput struct {
	_ struct{} `type:"structure"`

	// FindingIds is a required field
	FindingIds []*string `locationName:"findingIds" type:"list" required:"true"`

	// Specifies criteria for sorting the results of a request for 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.FindingIds == nil {
		invalidParams.Add(request.NewErrParamRequired("FindingIds"))
	}

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

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

// Provides the results of a request for one or more findings.
type GetFindingsOutput struct {
	_ struct{} `type:"structure"`

	Findings []*Finding `locationName:"findings" 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 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 GetFindingsPublicationConfigurationInput 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 GetFindingsPublicationConfigurationInput) String() string {
	return awsutil.Prettify(s)
}

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

// Provides information about the current configuration settings for publishing
// findings to Security Hub automatically.
type GetFindingsPublicationConfigurationOutput struct {
	_ struct{} `type:"structure"`

	// Specifies configuration settings that determine which findings are published
	// to Security Hub automatically. For information about how Macie publishes
	// findings to Security Hub, see Amazon Macie integration with Security Hub
	// (https://docs.aws.amazon.com/macie/latest/user/securityhub-integration.html)
	// in the Amazon Macie User Guide.
	SecurityHubConfiguration *SecurityHubConfiguration `locationName:"securityHubConfiguration" 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 GetFindingsPublicationConfigurationOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetSecurityHubConfiguration sets the SecurityHubConfiguration field's value.
func (s *GetFindingsPublicationConfigurationOutput) SetSecurityHubConfiguration(v *SecurityHubConfiguration) *GetFindingsPublicationConfigurationOutput {
	s.SecurityHubConfiguration = 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()
}

// Provides the count of all the Amazon Macie membership invitations that were
// received by an account, not including the currently accepted invitation.
type GetInvitationsCountOutput struct {
	_ struct{} `type:"structure"`

	InvitationsCount *int64 `locationName:"invitationsCount" 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 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 GetMacieSessionInput 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 GetMacieSessionInput) String() string {
	return awsutil.Prettify(s)
}

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

// Provides information about the status and configuration settings for an Amazon
// Macie account.
type GetMacieSessionOutput struct {
	_ struct{} `type:"structure"`

	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// The frequency with which Amazon Macie publishes updates to policy findings
	// for an account. This includes publishing updates to Security Hub and Amazon
	// EventBridge (formerly Amazon CloudWatch Events). For more information, see
	// Monitoring and processing findings (https://docs.aws.amazon.com/macie/latest/user/findings-monitor.html)
	// in the Amazon Macie User Guide. Valid values are:
	FindingPublishingFrequency *string `locationName:"findingPublishingFrequency" type:"string" enum:"FindingPublishingFrequency"`

	ServiceRole *string `locationName:"serviceRole" type:"string"`

	// The status of an Amazon Macie account. Valid values are:
	Status *string `locationName:"status" type:"string" enum:"MacieStatus"`

	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`
}

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

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

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

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

// SetServiceRole sets the ServiceRole field's value.
func (s *GetMacieSessionOutput) SetServiceRole(v string) *GetMacieSessionOutput {
	s.ServiceRole = &v
	return s
}

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

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

type GetMasterAccountInput struct {
	_ struct{} `type:"structure" nopayload:"true"`
}

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

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

// (Deprecated) Provides information about the Amazon Macie administrator account
// for an account. If the accounts are associated by a Macie membership invitation,
// the response also provides information about that invitation.
type GetMasterAccountOutput struct {
	_ struct{} `type:"structure"`

	// Provides information about an Amazon Macie membership invitation.
	Master *Invitation `locationName:"master" type:"structure"`
}

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

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

// SetMaster sets the Master field's value.
func (s *GetMasterAccountOutput) SetMaster(v *Invitation) *GetMasterAccountOutput {
	s.Master = v
	return s
}

type GetMemberInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// Id is a required field
	Id *string `location:"uri" locationName:"id" type:"string" required:"true"`
}

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

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

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

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

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

// Provides information about an account that's associated with an Amazon Macie
// administrator account.
type GetMemberOutput struct {
	_ struct{} `type:"structure"`

	AccountId *string `locationName:"accountId" type:"string"`

	AdministratorAccountId *string `locationName:"administratorAccountId" type:"string"`

	Arn *string `locationName:"arn" type:"string"`

	Email *string `locationName:"email" type:"string"`

	InvitedAt *time.Time `locationName:"invitedAt" type:"timestamp" timestampFormat:"iso8601"`

	MasterAccountId *string `locationName:"masterAccountId" type:"string"`

	// The current status of the relationship between an account and an associated
	// Amazon Macie administrator account. Possible values are:
	RelationshipStatus *string `locationName:"relationshipStatus" type:"string" enum:"RelationshipStatus"`

	// A string-to-string map of key-value pairs that specifies the tags (keys and
	// values) for an Amazon Macie resource.
	Tags map[string]*string `locationName:"tags" type:"map"`

	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`
}

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

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

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

// SetAdministratorAccountId sets the AdministratorAccountId field's value.
func (s *GetMemberOutput) SetAdministratorAccountId(v string) *GetMemberOutput {
	s.AdministratorAccountId = &v
	return s
}

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

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

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

// SetMasterAccountId sets the MasterAccountId field's value.
func (s *GetMemberOutput) SetMasterAccountId(v string) *GetMemberOutput {
	s.MasterAccountId = &v
	return s
}

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

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

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

type GetResourceProfileInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// ResourceArn is a required field
	ResourceArn *string `location:"querystring" 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 GetResourceProfileInput) String() string {
	return awsutil.Prettify(s)
}

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

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

// Provides sensitive data discovery statistics and the sensitivity score for
// an S3 bucket that Amazon Macie monitors and analyzes for an account. This
// data is available only if automated sensitive data discovery has been enabled
// for the account.
type GetResourceProfileOutput struct {
	_ struct{} `type:"structure"`

	ProfileUpdatedAt *time.Time `locationName:"profileUpdatedAt" type:"timestamp" timestampFormat:"iso8601"`

	SensitivityScore *int64 `locationName:"sensitivityScore" type:"integer"`

	SensitivityScoreOverridden *bool `locationName:"sensitivityScoreOverridden" type:"boolean"`

	// Provides statistical data for sensitive data discovery metrics that apply
	// to an S3 bucket that Amazon Macie monitors and analyzes for an account, if
	// automated sensitive data discovery has been enabled for the account. The
	// data captures the results of automated sensitive data discovery activities
	// that Macie has performed for the bucket.
	Statistics *ResourceStatistics `locationName:"statistics" 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 GetResourceProfileOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetProfileUpdatedAt sets the ProfileUpdatedAt field's value.
func (s *GetResourceProfileOutput) SetProfileUpdatedAt(v time.Time) *GetResourceProfileOutput {
	s.ProfileUpdatedAt = &v
	return s
}

// SetSensitivityScore sets the SensitivityScore field's value.
func (s *GetResourceProfileOutput) SetSensitivityScore(v int64) *GetResourceProfileOutput {
	s.SensitivityScore = &v
	return s
}

// SetSensitivityScoreOverridden sets the SensitivityScoreOverridden field's value.
func (s *GetResourceProfileOutput) SetSensitivityScoreOverridden(v bool) *GetResourceProfileOutput {
	s.SensitivityScoreOverridden = &v
	return s
}

// SetStatistics sets the Statistics field's value.
func (s *GetResourceProfileOutput) SetStatistics(v *ResourceStatistics) *GetResourceProfileOutput {
	s.Statistics = v
	return s
}

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

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

// Provides information about the configuration settings for retrieving occurrences
// of sensitive data reported by findings, and the status of the configuration
// for an Amazon Macie account.
type GetRevealConfigurationOutput struct {
	_ struct{} `type:"structure"`

	// Specifies the status of the Amazon Macie configuration for retrieving occurrences
	// of sensitive data reported by findings, and the Key Management Service (KMS)
	// key to use to encrypt sensitive data that's retrieved. When you enable the
	// configuration for the first time, your request must specify an KMS key. Otherwise,
	// an error occurs.
	Configuration *RevealConfiguration `locationName:"configuration" type:"structure"`

	// Provides information about the access method and settings that are used to
	// retrieve occurrences of sensitive data reported by findings.
	RetrievalConfiguration *RetrievalConfiguration `locationName:"retrievalConfiguration" 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 GetRevealConfigurationOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetConfiguration sets the Configuration field's value.
func (s *GetRevealConfigurationOutput) SetConfiguration(v *RevealConfiguration) *GetRevealConfigurationOutput {
	s.Configuration = v
	return s
}

// SetRetrievalConfiguration sets the RetrievalConfiguration field's value.
func (s *GetRevealConfigurationOutput) SetRetrievalConfiguration(v *RetrievalConfiguration) *GetRevealConfigurationOutput {
	s.RetrievalConfiguration = v
	return s
}

type GetSensitiveDataOccurrencesAvailabilityInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// FindingId is a required field
	FindingId *string `location:"uri" locationName:"findingId" 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 GetSensitiveDataOccurrencesAvailabilityInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetFindingId sets the FindingId field's value.
func (s *GetSensitiveDataOccurrencesAvailabilityInput) SetFindingId(v string) *GetSensitiveDataOccurrencesAvailabilityInput {
	s.FindingId = &v
	return s
}

// Provides information about whether occurrences of sensitive data can be retrieved
// for a finding and, if not, why the data can't be retrieved.
type GetSensitiveDataOccurrencesAvailabilityOutput struct {
	_ struct{} `type:"structure"`

	// Specifies whether occurrences of sensitive data can be retrieved for a finding.
	// Possible values are:
	Code *string `locationName:"code" type:"string" enum:"AvailabilityCode"`

	Reasons []*string `locationName:"reasons" type:"list" enum:"UnavailabilityReasonCode"`
}

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

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

// SetCode sets the Code field's value.
func (s *GetSensitiveDataOccurrencesAvailabilityOutput) SetCode(v string) *GetSensitiveDataOccurrencesAvailabilityOutput {
	s.Code = &v
	return s
}

// SetReasons sets the Reasons field's value.
func (s *GetSensitiveDataOccurrencesAvailabilityOutput) SetReasons(v []*string) *GetSensitiveDataOccurrencesAvailabilityOutput {
	s.Reasons = v
	return s
}

type GetSensitiveDataOccurrencesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// FindingId is a required field
	FindingId *string `location:"uri" locationName:"findingId" 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 GetSensitiveDataOccurrencesInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetFindingId sets the FindingId field's value.
func (s *GetSensitiveDataOccurrencesInput) SetFindingId(v string) *GetSensitiveDataOccurrencesInput {
	s.FindingId = &v
	return s
}

// Provides the results of a request to retrieve occurrences of sensitive data
// reported by a finding.
type GetSensitiveDataOccurrencesOutput struct {
	_ struct{} `type:"structure"`

	Error *string `locationName:"error" type:"string"`

	// Specifies a type of sensitive data reported by a finding and provides occurrences
	// of the specified type of sensitive data.
	SensitiveDataOccurrences map[string][]*DetectedDataDetails `locationName:"sensitiveDataOccurrences" type:"map"`

	// The status of a request to retrieve occurrences of sensitive data reported
	// by a finding. Possible values are:
	Status *string `locationName:"status" type:"string" enum:"RevealRequestStatus"`
}

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

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

// SetError sets the Error field's value.
func (s *GetSensitiveDataOccurrencesOutput) SetError(v string) *GetSensitiveDataOccurrencesOutput {
	s.Error = &v
	return s
}

// SetSensitiveDataOccurrences sets the SensitiveDataOccurrences field's value.
func (s *GetSensitiveDataOccurrencesOutput) SetSensitiveDataOccurrences(v map[string][]*DetectedDataDetails) *GetSensitiveDataOccurrencesOutput {
	s.SensitiveDataOccurrences = v
	return s
}

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

type GetSensitivityInspectionTemplateInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// Id is a required field
	Id *string `location:"uri" locationName:"id" 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 GetSensitivityInspectionTemplateInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// Provides information about the settings for the sensitivity inspection template
// for an Amazon Macie account.
type GetSensitivityInspectionTemplateOutput struct {
	_ struct{} `type:"structure"`

	Description *string `locationName:"description" type:"string"`

	// Specifies managed data identifiers to exclude (not use) when performing automated
	// sensitive data discovery. For information about the managed data identifiers
	// that Amazon Macie currently provides, see Using managed data identifiers
	// (https://docs.aws.amazon.com/macie/latest/user/managed-data-identifiers.html)
	// in the Amazon Macie User Guide.
	Excludes *SensitivityInspectionTemplateExcludes `locationName:"excludes" type:"structure"`

	// Specifies the allow lists, custom data identifiers, and managed data identifiers
	// to include (use) when performing automated sensitive data discovery. The
	// configuration must specify at least one custom data identifier or managed
	// data identifier. For information about the managed data identifiers that
	// Amazon Macie currently provides, see Using managed data identifiers (https://docs.aws.amazon.com/macie/latest/user/managed-data-identifiers.html)
	// in the Amazon Macie User Guide.
	Includes *SensitivityInspectionTemplateIncludes `locationName:"includes" type:"structure"`

	Name *string `locationName:"name" type:"string"`

	// The unique identifier for the sensitivity inspection template.
	SensitivityInspectionTemplateId *string `locationName:"sensitivityInspectionTemplateId" type:"string"`
}

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

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

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

// SetExcludes sets the Excludes field's value.
func (s *GetSensitivityInspectionTemplateOutput) SetExcludes(v *SensitivityInspectionTemplateExcludes) *GetSensitivityInspectionTemplateOutput {
	s.Excludes = v
	return s
}

// SetIncludes sets the Includes field's value.
func (s *GetSensitivityInspectionTemplateOutput) SetIncludes(v *SensitivityInspectionTemplateIncludes) *GetSensitivityInspectionTemplateOutput {
	s.Includes = v
	return s
}

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

// SetSensitivityInspectionTemplateId sets the SensitivityInspectionTemplateId field's value.
func (s *GetSensitivityInspectionTemplateOutput) SetSensitivityInspectionTemplateId(v string) *GetSensitivityInspectionTemplateOutput {
	s.SensitivityInspectionTemplateId = &v
	return s
}

// Specifies criteria for filtering, sorting, and paginating the results of
// a query for quotas and aggregated usage data for one or more Amazon Macie
// accounts.
type GetUsageStatisticsInput struct {
	_ struct{} `type:"structure"`

	FilterBy []*UsageStatisticsFilter `locationName:"filterBy" type:"list"`

	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	NextToken *string `locationName:"nextToken" type:"string"`

	// Specifies criteria for sorting the results of a query for Amazon Macie account
	// quotas and usage data.
	SortBy *UsageStatisticsSortBy `locationName:"sortBy" type:"structure"`

	// An inclusive time period that Amazon Macie usage data applies to. Possible
	// values are:
	TimeRange *string `locationName:"timeRange" type:"string" enum:"TimeRange"`
}

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

// SetFilterBy sets the FilterBy field's value.
func (s *GetUsageStatisticsInput) SetFilterBy(v []*UsageStatisticsFilter) *GetUsageStatisticsInput {
	s.FilterBy = 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
}

// SetSortBy sets the SortBy field's value.
func (s *GetUsageStatisticsInput) SetSortBy(v *UsageStatisticsSortBy) *GetUsageStatisticsInput {
	s.SortBy = v
	return s
}

// SetTimeRange sets the TimeRange field's value.
func (s *GetUsageStatisticsInput) SetTimeRange(v string) *GetUsageStatisticsInput {
	s.TimeRange = &v
	return s
}

// Provides the results of a query that retrieved quotas and aggregated usage
// data for one or more Amazon Macie accounts.
type GetUsageStatisticsOutput struct {
	_ struct{} `type:"structure"`

	NextToken *string `locationName:"nextToken" type:"string"`

	Records []*UsageRecord `locationName:"records" type:"list"`

	// An inclusive time period that Amazon Macie usage data applies to. Possible
	// values are:
	TimeRange *string `locationName:"timeRange" type:"string" enum:"TimeRange"`
}

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

// SetRecords sets the Records field's value.
func (s *GetUsageStatisticsOutput) SetRecords(v []*UsageRecord) *GetUsageStatisticsOutput {
	s.Records = v
	return s
}

// SetTimeRange sets the TimeRange field's value.
func (s *GetUsageStatisticsOutput) SetTimeRange(v string) *GetUsageStatisticsOutput {
	s.TimeRange = &v
	return s
}

type GetUsageTotalsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	TimeRange *string `location:"querystring" locationName:"timeRange" type:"string"`
}

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

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

// SetTimeRange sets the TimeRange field's value.
func (s *GetUsageTotalsInput) SetTimeRange(v string) *GetUsageTotalsInput {
	s.TimeRange = &v
	return s
}

// Provides the results of a query that retrieved aggregated usage data for
// an Amazon Macie account.
type GetUsageTotalsOutput struct {
	_ struct{} `type:"structure"`

	// An inclusive time period that Amazon Macie usage data applies to. Possible
	// values are:
	TimeRange *string `locationName:"timeRange" type:"string" enum:"TimeRange"`

	UsageTotals []*UsageTotal `locationName:"usageTotals" 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 GetUsageTotalsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetTimeRange sets the TimeRange field's value.
func (s *GetUsageTotalsOutput) SetTimeRange(v string) *GetUsageTotalsOutput {
	s.TimeRange = &v
	return s
}

// SetUsageTotals sets the UsageTotals field's value.
func (s *GetUsageTotalsOutput) SetUsageTotals(v []*UsageTotal) *GetUsageTotalsOutput {
	s.UsageTotals = v
	return s
}

// Provides a group of results for a query that retrieved aggregated statistical
// data about findings.
type GroupCount struct {
	_ struct{} `type:"structure"`

	Count *int64 `locationName:"count" type:"long"`

	GroupKey *string `locationName:"groupKey" type:"string"`
}

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

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

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

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

// Provides information about an Identity and Access Management (IAM) user who
// performed an action on an affected resource.
type IamUser struct {
	_ struct{} `type:"structure"`

	AccountId *string `locationName:"accountId" type:"string"`

	Arn *string `locationName:"arn" type:"string"`

	PrincipalId *string `locationName:"principalId" type:"string"`

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

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

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

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

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

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

// Provides information about an error that occurred due to an unknown internal
// server error, exception, or failure.
type InternalServerException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

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

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

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

func newErrorInternalServerException(v protocol.ResponseMetadata) error {
	return &InternalServerException{
		RespMetadata: v,
	}
}

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

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

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

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

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

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

// Provides information about an Amazon Macie membership invitation.
type Invitation struct {
	_ struct{} `type:"structure"`

	AccountId *string `locationName:"accountId" type:"string"`

	InvitationId *string `locationName:"invitationId" type:"string"`

	InvitedAt *time.Time `locationName:"invitedAt" type:"timestamp" timestampFormat:"iso8601"`

	// The current status of the relationship between an account and an associated
	// Amazon Macie administrator account. Possible values are:
	RelationshipStatus *string `locationName:"relationshipStatus" type:"string" enum:"RelationshipStatus"`
}

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

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

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

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

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

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

// Provides information about the IP address of the device that an entity used
// to perform an action on an affected resource.
type IpAddressDetails struct {
	_ struct{} `type:"structure"`

	IpAddressV4 *string `locationName:"ipAddressV4" type:"string"`

	// Provides information about the city that an IP address originated from.
	IpCity *IpCity `locationName:"ipCity" type:"structure"`

	// Provides information about the country that an IP address originated from.
	IpCountry *IpCountry `locationName:"ipCountry" type:"structure"`

	// Provides geographic coordinates that indicate where a specified IP address
	// originated from.
	IpGeoLocation *IpGeoLocation `locationName:"ipGeoLocation" type:"structure"`

	// Provides information about the registered owner of an IP address.
	IpOwner *IpOwner `locationName:"ipOwner" 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 IpAddressDetails) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetIpCity sets the IpCity field's value.
func (s *IpAddressDetails) SetIpCity(v *IpCity) *IpAddressDetails {
	s.IpCity = v
	return s
}

// SetIpCountry sets the IpCountry field's value.
func (s *IpAddressDetails) SetIpCountry(v *IpCountry) *IpAddressDetails {
	s.IpCountry = v
	return s
}

// SetIpGeoLocation sets the IpGeoLocation field's value.
func (s *IpAddressDetails) SetIpGeoLocation(v *IpGeoLocation) *IpAddressDetails {
	s.IpGeoLocation = v
	return s
}

// SetIpOwner sets the IpOwner field's value.
func (s *IpAddressDetails) SetIpOwner(v *IpOwner) *IpAddressDetails {
	s.IpOwner = v
	return s
}

// Provides information about the city that an IP address originated from.
type IpCity struct {
	_ struct{} `type:"structure"`

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

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

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

// Provides information about the country that an IP address originated from.
type IpCountry struct {
	_ struct{} `type:"structure"`

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

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

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

// SetCode sets the Code field's value.
func (s *IpCountry) SetCode(v string) *IpCountry {
	s.Code = &v
	return s
}

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

// Provides geographic coordinates that indicate where a specified IP address
// originated from.
type IpGeoLocation struct {
	_ struct{} `type:"structure"`

	Lat *float64 `locationName:"lat" type:"double"`

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

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

// SetLat sets the Lat field's value.
func (s *IpGeoLocation) SetLat(v float64) *IpGeoLocation {
	s.Lat = &v
	return s
}

// SetLon sets the Lon field's value.
func (s *IpGeoLocation) SetLon(v float64) *IpGeoLocation {
	s.Lon = &v
	return s
}

// Provides information about the registered owner of an IP address.
type IpOwner struct {
	_ struct{} `type:"structure"`

	Asn *string `locationName:"asn" type:"string"`

	AsnOrg *string `locationName:"asnOrg" type:"string"`

	Isp *string `locationName:"isp" type:"string"`

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

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

// SetAsn sets the Asn field's value.
func (s *IpOwner) SetAsn(v string) *IpOwner {
	s.Asn = &v
	return s
}

// SetAsnOrg sets the AsnOrg field's value.
func (s *IpOwner) SetAsnOrg(v string) *IpOwner {
	s.AsnOrg = &v
	return s
}

// SetIsp sets the Isp field's value.
func (s *IpOwner) SetIsp(v string) *IpOwner {
	s.Isp = &v
	return s
}

// SetOrg sets the Org field's value.
func (s *IpOwner) SetOrg(v string) *IpOwner {
	s.Org = &v
	return s
}

// Specifies whether any one-time or recurring classification jobs are configured
// to analyze objects in an S3 bucket, and, if so, the details of the job that
// ran most recently.
type JobDetails struct {
	_ struct{} `type:"structure"`

	IsDefinedInJob *string `locationName:"isDefinedInJob" type:"string" enum:"IsDefinedInJob"`

	IsMonitoredByJob *string `locationName:"isMonitoredByJob" type:"string" enum:"IsMonitoredByJob"`

	LastJobId *string `locationName:"lastJobId" type:"string"`

	LastJobRunTime *time.Time `locationName:"lastJobRunTime" type:"timestamp" timestampFormat:"iso8601"`
}

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

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

// SetIsDefinedInJob sets the IsDefinedInJob field's value.
func (s *JobDetails) SetIsDefinedInJob(v string) *JobDetails {
	s.IsDefinedInJob = &v
	return s
}

// SetIsMonitoredByJob sets the IsMonitoredByJob field's value.
func (s *JobDetails) SetIsMonitoredByJob(v string) *JobDetails {
	s.IsMonitoredByJob = &v
	return s
}

// SetLastJobId sets the LastJobId field's value.
func (s *JobDetails) SetLastJobId(v string) *JobDetails {
	s.LastJobId = &v
	return s
}

// SetLastJobRunTime sets the LastJobRunTime field's value.
func (s *JobDetails) SetLastJobRunTime(v time.Time) *JobDetails {
	s.LastJobRunTime = &v
	return s
}

// Specifies the recurrence pattern for running a classification job.
type JobScheduleFrequency struct {
	_ struct{} `type:"structure"`

	// Specifies that a classification job runs once a day, every day. This is an
	// empty object.
	DailySchedule *DailySchedule `locationName:"dailySchedule" type:"structure"`

	// Specifies a monthly recurrence pattern for running a classification job.
	MonthlySchedule *MonthlySchedule `locationName:"monthlySchedule" type:"structure"`

	// Specifies a weekly recurrence pattern for running a classification job.
	WeeklySchedule *WeeklySchedule `locationName:"weeklySchedule" 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 JobScheduleFrequency) String() string {
	return awsutil.Prettify(s)
}

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

// SetDailySchedule sets the DailySchedule field's value.
func (s *JobScheduleFrequency) SetDailySchedule(v *DailySchedule) *JobScheduleFrequency {
	s.DailySchedule = v
	return s
}

// SetMonthlySchedule sets the MonthlySchedule field's value.
func (s *JobScheduleFrequency) SetMonthlySchedule(v *MonthlySchedule) *JobScheduleFrequency {
	s.MonthlySchedule = v
	return s
}

// SetWeeklySchedule sets the WeeklySchedule field's value.
func (s *JobScheduleFrequency) SetWeeklySchedule(v *WeeklySchedule) *JobScheduleFrequency {
	s.WeeklySchedule = v
	return s
}

// Specifies a property- or tag-based condition that defines criteria for including
// or excluding S3 objects from a classification job. A JobScopeTerm object
// can contain only one simpleScopeTerm object or one tagScopeTerm object.
type JobScopeTerm struct {
	_ struct{} `type:"structure"`

	// Specifies a property-based condition that determines whether an S3 object
	// is included or excluded from a classification job.
	SimpleScopeTerm *SimpleScopeTerm `locationName:"simpleScopeTerm" type:"structure"`

	// Specifies a tag-based condition that determines whether an S3 object is included
	// or excluded from a classification job.
	TagScopeTerm *TagScopeTerm `locationName:"tagScopeTerm" 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 JobScopeTerm) String() string {
	return awsutil.Prettify(s)
}

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

// SetSimpleScopeTerm sets the SimpleScopeTerm field's value.
func (s *JobScopeTerm) SetSimpleScopeTerm(v *SimpleScopeTerm) *JobScopeTerm {
	s.SimpleScopeTerm = v
	return s
}

// SetTagScopeTerm sets the TagScopeTerm field's value.
func (s *JobScopeTerm) SetTagScopeTerm(v *TagScopeTerm) *JobScopeTerm {
	s.TagScopeTerm = v
	return s
}

// Specifies one or more property- and tag-based conditions that define criteria
// for including or excluding S3 objects from a classification job.
type JobScopingBlock struct {
	_ struct{} `type:"structure"`

	And []*JobScopeTerm `locationName:"and" 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 JobScopingBlock) String() string {
	return awsutil.Prettify(s)
}

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

// SetAnd sets the And field's value.
func (s *JobScopingBlock) SetAnd(v []*JobScopeTerm) *JobScopingBlock {
	s.And = v
	return s
}

// Provides information about a classification job, including the current status
// of the job.
type JobSummary struct {
	_ struct{} `type:"structure"`

	// Specifies property- and tag-based conditions that define criteria for including
	// or excluding S3 buckets from a classification job. Exclude conditions take
	// precedence over include conditions.
	BucketCriteria *S3BucketCriteriaForJob `locationName:"bucketCriteria" type:"structure"`

	BucketDefinitions []*S3BucketDefinitionForJob `locationName:"bucketDefinitions" type:"list"`

	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	JobId *string `locationName:"jobId" type:"string"`

	// The status of a classification job. Possible values are:
	JobStatus *string `locationName:"jobStatus" type:"string" enum:"JobStatus"`

	// The schedule for running a classification job. Valid values are:
	JobType *string `locationName:"jobType" type:"string" enum:"JobType"`

	// Specifies whether any account- or bucket-level access errors occurred when
	// a classification job ran. For information about using logging data to investigate
	// these errors, see Monitoring sensitive data discovery jobs (https://docs.aws.amazon.com/macie/latest/user/discovery-jobs-monitor-cw-logs.html)
	// in the Amazon Macie User Guide.
	LastRunErrorStatus *LastRunErrorStatus `locationName:"lastRunErrorStatus" type:"structure"`

	Name *string `locationName:"name" type:"string"`

	// Provides information about when a classification job was paused. For a one-time
	// job, this object also specifies when the job will expire and be cancelled
	// if it isn't resumed. For a recurring job, this object also specifies when
	// the paused job run will expire and be cancelled if it isn't resumed. This
	// object is present only if a job's current status (jobStatus) is USER_PAUSED.
	// The information in this object applies only to a job that was paused while
	// it had a status of RUNNING.
	UserPausedDetails *UserPausedDetails `locationName:"userPausedDetails" 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 JobSummary) String() string {
	return awsutil.Prettify(s)
}

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

// SetBucketCriteria sets the BucketCriteria field's value.
func (s *JobSummary) SetBucketCriteria(v *S3BucketCriteriaForJob) *JobSummary {
	s.BucketCriteria = v
	return s
}

// SetBucketDefinitions sets the BucketDefinitions field's value.
func (s *JobSummary) SetBucketDefinitions(v []*S3BucketDefinitionForJob) *JobSummary {
	s.BucketDefinitions = v
	return s
}

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

// SetJobId sets the JobId field's value.
func (s *JobSummary) SetJobId(v string) *JobSummary {
	s.JobId = &v
	return s
}

// SetJobStatus sets the JobStatus field's value.
func (s *JobSummary) SetJobStatus(v string) *JobSummary {
	s.JobStatus = &v
	return s
}

// SetJobType sets the JobType field's value.
func (s *JobSummary) SetJobType(v string) *JobSummary {
	s.JobType = &v
	return s
}

// SetLastRunErrorStatus sets the LastRunErrorStatus field's value.
func (s *JobSummary) SetLastRunErrorStatus(v *LastRunErrorStatus) *JobSummary {
	s.LastRunErrorStatus = v
	return s
}

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

// SetUserPausedDetails sets the UserPausedDetails field's value.
func (s *JobSummary) SetUserPausedDetails(v *UserPausedDetails) *JobSummary {
	s.UserPausedDetails = v
	return s
}

// Provides information about the tags that are associated with an S3 bucket
// or object. Each tag consists of a required tag key and an associated tag
// value.
type KeyValuePair struct {
	_ struct{} `type:"structure"`

	Key *string `locationName:"key" type:"string"`

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

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

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

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

// Specifies whether any account- or bucket-level access errors occurred when
// a classification job ran. For information about using logging data to investigate
// these errors, see Monitoring sensitive data discovery jobs (https://docs.aws.amazon.com/macie/latest/user/discovery-jobs-monitor-cw-logs.html)
// in the Amazon Macie User Guide.
type LastRunErrorStatus struct {
	_ struct{} `type:"structure"`

	// Specifies whether any account- or bucket-level access errors occurred during
	// the run of a one-time classification job or the most recent run of a recurring
	// classification job. Possible values are:
	Code *string `locationName:"code" type:"string" enum:"LastRunErrorStatusCode"`
}

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

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

// SetCode sets the Code field's value.
func (s *LastRunErrorStatus) SetCode(v string) *LastRunErrorStatus {
	s.Code = &v
	return s
}

type ListAllowListsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

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

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

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

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

// Provides the results of a request for information about allow lists.
type ListAllowListsOutput struct {
	_ struct{} `type:"structure"`

	AllowLists []*AllowListSummary `locationName:"allowLists" type:"list"`

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

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

// SetAllowLists sets the AllowLists field's value.
func (s *ListAllowListsOutput) SetAllowLists(v []*AllowListSummary) *ListAllowListsOutput {
	s.AllowLists = v
	return s
}

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

type ListAutomatedDiscoveryAccountsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	AccountIds []*string `location:"querystring" locationName:"accountIds" type:"list"`

	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

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

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

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

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

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

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

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

// Provides information about the status of automated sensitive data discovery
// for one or more Amazon Macie accounts.
type ListAutomatedDiscoveryAccountsOutput struct {
	_ struct{} `type:"structure"`

	Items []*AutomatedDiscoveryAccount `locationName:"items" type:"list"`

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

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

// SetItems sets the Items field's value.
func (s *ListAutomatedDiscoveryAccountsOutput) SetItems(v []*AutomatedDiscoveryAccount) *ListAutomatedDiscoveryAccountsOutput {
	s.Items = v
	return s
}

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

// Specifies criteria for filtering, sorting, and paginating the results of
// a request for information about classification jobs.
type ListClassificationJobsInput struct {
	_ struct{} `type:"structure"`

	// Specifies criteria for filtering the results of a request for information
	// about classification jobs.
	FilterCriteria *ListJobsFilterCriteria `locationName:"filterCriteria" type:"structure"`

	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	NextToken *string `locationName:"nextToken" type:"string"`

	// Specifies criteria for sorting the results of a request for information about
	// classification jobs.
	SortCriteria *ListJobsSortCriteria `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 ListClassificationJobsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// SetSortCriteria sets the SortCriteria field's value.
func (s *ListClassificationJobsInput) SetSortCriteria(v *ListJobsSortCriteria) *ListClassificationJobsInput {
	s.SortCriteria = v
	return s
}

// Provides the results of a request for information about one or more classification
// jobs.
type ListClassificationJobsOutput struct {
	_ struct{} `type:"structure"`

	Items []*JobSummary `locationName:"items" type:"list"`

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

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

// SetItems sets the Items field's value.
func (s *ListClassificationJobsOutput) SetItems(v []*JobSummary) *ListClassificationJobsOutput {
	s.Items = v
	return s
}

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

type ListClassificationScopesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	Name *string `location:"querystring" locationName:"name" type:"string"`

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

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

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

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

// Provides the results of a request for information about the classification
// scope for an Amazon Macie account. Macie uses the scope's settings when it
// performs automated sensitive data discovery for the account.
type ListClassificationScopesOutput struct {
	_ struct{} `type:"structure"`

	ClassificationScopes []*ClassificationScopeSummary `locationName:"classificationScopes" type:"list"`

	// Specifies which page of results to return in a paginated response.
	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 ListClassificationScopesOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetClassificationScopes sets the ClassificationScopes field's value.
func (s *ListClassificationScopesOutput) SetClassificationScopes(v []*ClassificationScopeSummary) *ListClassificationScopesOutput {
	s.ClassificationScopes = v
	return s
}

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

// Specifies criteria for paginating the results of a request for information
// about custom data identifiers.
type ListCustomDataIdentifiersInput struct {
	_ struct{} `type:"structure"`

	MaxResults *int64 `locationName:"maxResults" type:"integer"`

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

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

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

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

// Provides the results of a request for information about custom data identifiers.
type ListCustomDataIdentifiersOutput struct {
	_ struct{} `type:"structure"`

	Items []*CustomDataIdentifierSummary `locationName:"items" type:"list"`

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

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

// SetItems sets the Items field's value.
func (s *ListCustomDataIdentifiersOutput) SetItems(v []*CustomDataIdentifierSummary) *ListCustomDataIdentifiersOutput {
	s.Items = v
	return s
}

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

type ListFindingsFiltersInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

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

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

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

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

// Provides information about all the findings filters for an account.
type ListFindingsFiltersOutput struct {
	_ struct{} `type:"structure"`

	FindingsFilterListItems []*FindingsFilterListItem `locationName:"findingsFilterListItems" type:"list"`

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

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

// SetFindingsFilterListItems sets the FindingsFilterListItems field's value.
func (s *ListFindingsFiltersOutput) SetFindingsFilterListItems(v []*FindingsFilterListItem) *ListFindingsFiltersOutput {
	s.FindingsFilterListItems = v
	return s
}

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

// Specifies criteria for filtering, sorting, and paginating the results of
// a request for information about findings.
type ListFindingsInput struct {
	_ struct{} `type:"structure"`

	// Specifies, as a map, one or more property-based conditions that filter the
	// results of a query for findings.
	FindingCriteria *FindingCriteria `locationName:"findingCriteria" type:"structure"`

	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	NextToken *string `locationName:"nextToken" type:"string"`

	// Specifies criteria for sorting the results of a request for 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()
}

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

// Provides the results of a request for information about one or more findings.
type ListFindingsOutput struct {
	_ struct{} `type:"structure"`

	FindingIds []*string `locationName:"findingIds" type:"list"`

	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 ListInvitationsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	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
}

// Provides information about the Amazon Macie membership invitations that were
// received by an account.
type ListInvitationsOutput struct {
	_ struct{} `type:"structure"`

	Invitations []*Invitation `locationName:"invitations" type:"list"`

	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
}

// Specifies criteria for filtering the results of a request for information
// about classification jobs.
type ListJobsFilterCriteria struct {
	_ struct{} `type:"structure"`

	Excludes []*ListJobsFilterTerm `locationName:"excludes" type:"list"`

	Includes []*ListJobsFilterTerm `locationName:"includes" 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 ListJobsFilterCriteria) String() string {
	return awsutil.Prettify(s)
}

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

// SetExcludes sets the Excludes field's value.
func (s *ListJobsFilterCriteria) SetExcludes(v []*ListJobsFilterTerm) *ListJobsFilterCriteria {
	s.Excludes = v
	return s
}

// SetIncludes sets the Includes field's value.
func (s *ListJobsFilterCriteria) SetIncludes(v []*ListJobsFilterTerm) *ListJobsFilterCriteria {
	s.Includes = v
	return s
}

// Specifies a condition that filters the results of a request for information
// about classification jobs. Each condition consists of a property, an operator,
// and one or more values.
type ListJobsFilterTerm struct {
	_ struct{} `type:"structure"`

	// The operator to use in a condition. Depending on the type of condition, possible
	// values are:
	Comparator *string `locationName:"comparator" type:"string" enum:"JobComparator"`

	// The property to use to filter the results. Valid values are:
	Key *string `locationName:"key" type:"string" enum:"ListJobsFilterKey"`

	Values []*string `locationName:"values" 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 ListJobsFilterTerm) String() string {
	return awsutil.Prettify(s)
}

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

// SetComparator sets the Comparator field's value.
func (s *ListJobsFilterTerm) SetComparator(v string) *ListJobsFilterTerm {
	s.Comparator = &v
	return s
}

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

// SetValues sets the Values field's value.
func (s *ListJobsFilterTerm) SetValues(v []*string) *ListJobsFilterTerm {
	s.Values = v
	return s
}

// Specifies criteria for sorting the results of a request for information about
// classification jobs.
type ListJobsSortCriteria struct {
	_ struct{} `type:"structure"`

	// The property to sort the results by. Valid values are:
	AttributeName *string `locationName:"attributeName" type:"string" enum:"ListJobsSortAttributeName"`

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

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

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

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

// Specifies criteria for paginating the results of a request for information
// about managed data identifiers.
type ListManagedDataIdentifiersInput struct {
	_ struct{} `type:"structure"`

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

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

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

// Provides information about the managed data identifiers that Amazon Macie
// currently provides.
type ListManagedDataIdentifiersOutput struct {
	_ struct{} `type:"structure"`

	Items []*ManagedDataIdentifierSummary `locationName:"items" type:"list"`

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

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

// SetItems sets the Items field's value.
func (s *ListManagedDataIdentifiersOutput) SetItems(v []*ManagedDataIdentifierSummary) *ListManagedDataIdentifiersOutput {
	s.Items = v
	return s
}

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

type ListMembersInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`

	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.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListMembersInput) SetMaxResults(v int64) *ListMembersInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListMembersInput) SetNextToken(v string) *ListMembersInput {
	s.NextToken = &v
	return s
}

// SetOnlyAssociated sets the OnlyAssociated field's value.
func (s *ListMembersInput) SetOnlyAssociated(v string) *ListMembersInput {
	s.OnlyAssociated = &v
	return s
}

// Provides information about the accounts that are associated with an Amazon
// Macie administrator account.
type ListMembersOutput struct {
	_ struct{} `type:"structure"`

	Members []*Member `locationName:"members" type:"list"`

	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"`

	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	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
}

// Provides information about the delegated Amazon Macie administrator accounts
// for an organization in Organizations.
type ListOrganizationAdminAccountsOutput struct {
	_ struct{} `type:"structure"`

	AdminAccounts []*AdminAccount `locationName:"adminAccounts" type:"list"`

	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 ListResourceProfileArtifactsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`

	// ResourceArn is a required field
	ResourceArn *string `location:"querystring" 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 ListResourceProfileArtifactsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListResourceProfileArtifactsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListResourceProfileArtifactsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListResourceProfileArtifactsInput"}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetNextToken sets the NextToken field's value.
func (s *ListResourceProfileArtifactsInput) SetNextToken(v string) *ListResourceProfileArtifactsInput {
	s.NextToken = &v
	return s
}

// SetResourceArn sets the ResourceArn field's value.
func (s *ListResourceProfileArtifactsInput) SetResourceArn(v string) *ListResourceProfileArtifactsInput {
	s.ResourceArn = &v
	return s
}

// Provides information about objects that Amazon Macie selected from an S3
// bucket while performing automated sensitive data discovery for an account.
// This information is available only if automated sensitive data discovery
// has been enabled for the account.
type ListResourceProfileArtifactsOutput struct {
	_ struct{} `type:"structure"`

	Artifacts []*ResourceProfileArtifact `locationName:"artifacts" type:"list"`

	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 ListResourceProfileArtifactsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListResourceProfileArtifactsOutput) GoString() string {
	return s.String()
}

// SetArtifacts sets the Artifacts field's value.
func (s *ListResourceProfileArtifactsOutput) SetArtifacts(v []*ResourceProfileArtifact) *ListResourceProfileArtifactsOutput {
	s.Artifacts = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListResourceProfileArtifactsOutput) SetNextToken(v string) *ListResourceProfileArtifactsOutput {
	s.NextToken = &v
	return s
}

type ListResourceProfileDetectionsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`

	// ResourceArn is a required field
	ResourceArn *string `location:"querystring" 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 ListResourceProfileDetectionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListResourceProfileDetectionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListResourceProfileDetectionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListResourceProfileDetectionsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListResourceProfileDetectionsInput) SetMaxResults(v int64) *ListResourceProfileDetectionsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListResourceProfileDetectionsInput) SetNextToken(v string) *ListResourceProfileDetectionsInput {
	s.NextToken = &v
	return s
}

// SetResourceArn sets the ResourceArn field's value.
func (s *ListResourceProfileDetectionsInput) SetResourceArn(v string) *ListResourceProfileDetectionsInput {
	s.ResourceArn = &v
	return s
}

// Provides information about the types and amount of sensitive data that Amazon
// Macie found in an S3 bucket while performing automated sensitive data discovery
// for an account. This information is available only if automated sensitive
// data discovery has been enabled for the account.
type ListResourceProfileDetectionsOutput struct {
	_ struct{} `type:"structure"`

	Detections []*Detection `locationName:"detections" type:"list"`

	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 ListResourceProfileDetectionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListResourceProfileDetectionsOutput) GoString() string {
	return s.String()
}

// SetDetections sets the Detections field's value.
func (s *ListResourceProfileDetectionsOutput) SetDetections(v []*Detection) *ListResourceProfileDetectionsOutput {
	s.Detections = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListResourceProfileDetectionsOutput) SetNextToken(v string) *ListResourceProfileDetectionsOutput {
	s.NextToken = &v
	return s
}

type ListSensitivityInspectionTemplatesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	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 ListSensitivityInspectionTemplatesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSensitivityInspectionTemplatesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListSensitivityInspectionTemplatesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListSensitivityInspectionTemplatesInput"}
	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 *ListSensitivityInspectionTemplatesInput) SetMaxResults(v int64) *ListSensitivityInspectionTemplatesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListSensitivityInspectionTemplatesInput) SetNextToken(v string) *ListSensitivityInspectionTemplatesInput {
	s.NextToken = &v
	return s
}

// Provides the results of a request for information about the sensitivity inspection
// template for an Amazon Macie account.
type ListSensitivityInspectionTemplatesOutput struct {
	_ struct{} `type:"structure"`

	NextToken *string `locationName:"nextToken" type:"string"`

	SensitivityInspectionTemplates []*SensitivityInspectionTemplatesEntry `locationName:"sensitivityInspectionTemplates" 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 ListSensitivityInspectionTemplatesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSensitivityInspectionTemplatesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListSensitivityInspectionTemplatesOutput) SetNextToken(v string) *ListSensitivityInspectionTemplatesOutput {
	s.NextToken = &v
	return s
}

// SetSensitivityInspectionTemplates sets the SensitivityInspectionTemplates field's value.
func (s *ListSensitivityInspectionTemplatesOutput) SetSensitivityInspectionTemplates(v []*SensitivityInspectionTemplatesEntry) *ListSensitivityInspectionTemplatesOutput {
	s.SensitivityInspectionTemplates = v
	return s
}

type ListTagsForResourceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// 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
}

// Provides information about the tags (keys and values) that are associated
// with an Amazon Macie resource.
type ListTagsForResourceOutput struct {
	_ struct{} `type:"structure"`

	// A string-to-string map of key-value pairs that specifies the tags (keys and
	// values) for an Amazon Macie resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTagsForResourceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTagsForResourceOutput) GoString() string {
	return s.String()
}

// SetTags sets the Tags field's value.
func (s *ListTagsForResourceOutput) SetTags(v map[string]*string) *ListTagsForResourceOutput {
	s.Tags = v
	return s
}

// Provides information about a managed data identifier. For additional information,
// see Using managed data identifiers (https://docs.aws.amazon.com/macie/latest/user/managed-data-identifiers.html)
// in the Amazon Macie User Guide.
type ManagedDataIdentifierSummary struct {
	_ struct{} `type:"structure"`

	// For a finding, the category of sensitive data that was detected and produced
	// the finding. For a managed data identifier, the category of sensitive data
	// that the managed data identifier detects. Possible values are:
	Category *string `locationName:"category" type:"string" enum:"SensitiveDataItemCategory"`

	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 ManagedDataIdentifierSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ManagedDataIdentifierSummary) GoString() string {
	return s.String()
}

// SetCategory sets the Category field's value.
func (s *ManagedDataIdentifierSummary) SetCategory(v string) *ManagedDataIdentifierSummary {
	s.Category = &v
	return s
}

// SetId sets the Id field's value.
func (s *ManagedDataIdentifierSummary) SetId(v string) *ManagedDataIdentifierSummary {
	s.Id = &v
	return s
}

// Provides statistical data and other information about an S3 bucket that Amazon
// Macie monitors and analyzes for your account. By default, object count and
// storage size values include data for object parts that are the result of
// incomplete multipart uploads. For more information, see How Macie monitors
// Amazon S3 data security (https://docs.aws.amazon.com/macie/latest/user/monitoring-s3-how-it-works.html)
// in the Amazon Macie User Guide.
//
// If an error occurs when Macie attempts to retrieve and process information
// about the bucket or the bucket's objects, the value for most of these properties
// is null. Key exceptions are accountId and bucketName. To identify the cause
// of the error, refer to the errorCode and errorMessage values.
type MatchingBucket struct {
	_ struct{} `type:"structure"`

	AccountId *string `locationName:"accountId" type:"string"`

	// Specifies whether automated sensitive data discovery is currently configured
	// to analyze objects in an S3 bucket. Possible values are:
	AutomatedDiscoveryMonitoringStatus *string `locationName:"automatedDiscoveryMonitoringStatus" type:"string" enum:"AutomatedDiscoveryMonitoringStatus"`

	BucketName *string `locationName:"bucketName" type:"string"`

	ClassifiableObjectCount *int64 `locationName:"classifiableObjectCount" type:"long"`

	ClassifiableSizeInBytes *int64 `locationName:"classifiableSizeInBytes" type:"long"`

	// The error code for an error that prevented Amazon Macie from retrieving and
	// processing information about an S3 bucket and the bucket's objects.
	ErrorCode *string `locationName:"errorCode" type:"string" enum:"BucketMetadataErrorCode"`

	ErrorMessage *string `locationName:"errorMessage" type:"string"`

	// Specifies whether any one-time or recurring classification jobs are configured
	// to analyze objects in an S3 bucket, and, if so, the details of the job that
	// ran most recently.
	JobDetails *JobDetails `locationName:"jobDetails" type:"structure"`

	LastAutomatedDiscoveryTime *time.Time `locationName:"lastAutomatedDiscoveryTime" type:"timestamp" timestampFormat:"iso8601"`

	ObjectCount *int64 `locationName:"objectCount" type:"long"`

	// Provides information about the number of objects that are in an S3 bucket
	// and use certain types of server-side encryption, use client-side encryption,
	// or aren't encrypted.
	ObjectCountByEncryptionType *ObjectCountByEncryptionType `locationName:"objectCountByEncryptionType" type:"structure"`

	SensitivityScore *int64 `locationName:"sensitivityScore" type:"integer"`

	SizeInBytes *int64 `locationName:"sizeInBytes" type:"long"`

	SizeInBytesCompressed *int64 `locationName:"sizeInBytesCompressed" type:"long"`

	// Provides information about the total storage size (in bytes) or number of
	// objects that Amazon Macie can't analyze in one or more S3 buckets. In a BucketMetadata
	// or MatchingBucket object, this data is for a specific bucket. In a GetBucketStatisticsResponse
	// object, this data is aggregated for all the buckets in the query results.
	// If versioning is enabled for a bucket, storage size values are based on the
	// size of the latest version of each applicable object in the bucket.
	UnclassifiableObjectCount *ObjectLevelStatistics `locationName:"unclassifiableObjectCount" type:"structure"`

	// Provides information about the total storage size (in bytes) or number of
	// objects that Amazon Macie can't analyze in one or more S3 buckets. In a BucketMetadata
	// or MatchingBucket object, this data is for a specific bucket. In a GetBucketStatisticsResponse
	// object, this data is aggregated for all the buckets in the query results.
	// If versioning is enabled for a bucket, storage size values are based on the
	// size of the latest version of each applicable object in the bucket.
	UnclassifiableObjectSizeInBytes *ObjectLevelStatistics `locationName:"unclassifiableObjectSizeInBytes" 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 MatchingBucket) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MatchingBucket) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *MatchingBucket) SetAccountId(v string) *MatchingBucket {
	s.AccountId = &v
	return s
}

// SetAutomatedDiscoveryMonitoringStatus sets the AutomatedDiscoveryMonitoringStatus field's value.
func (s *MatchingBucket) SetAutomatedDiscoveryMonitoringStatus(v string) *MatchingBucket {
	s.AutomatedDiscoveryMonitoringStatus = &v
	return s
}

// SetBucketName sets the BucketName field's value.
func (s *MatchingBucket) SetBucketName(v string) *MatchingBucket {
	s.BucketName = &v
	return s
}

// SetClassifiableObjectCount sets the ClassifiableObjectCount field's value.
func (s *MatchingBucket) SetClassifiableObjectCount(v int64) *MatchingBucket {
	s.ClassifiableObjectCount = &v
	return s
}

// SetClassifiableSizeInBytes sets the ClassifiableSizeInBytes field's value.
func (s *MatchingBucket) SetClassifiableSizeInBytes(v int64) *MatchingBucket {
	s.ClassifiableSizeInBytes = &v
	return s
}

// SetErrorCode sets the ErrorCode field's value.
func (s *MatchingBucket) SetErrorCode(v string) *MatchingBucket {
	s.ErrorCode = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *MatchingBucket) SetErrorMessage(v string) *MatchingBucket {
	s.ErrorMessage = &v
	return s
}

// SetJobDetails sets the JobDetails field's value.
func (s *MatchingBucket) SetJobDetails(v *JobDetails) *MatchingBucket {
	s.JobDetails = v
	return s
}

// SetLastAutomatedDiscoveryTime sets the LastAutomatedDiscoveryTime field's value.
func (s *MatchingBucket) SetLastAutomatedDiscoveryTime(v time.Time) *MatchingBucket {
	s.LastAutomatedDiscoveryTime = &v
	return s
}

// SetObjectCount sets the ObjectCount field's value.
func (s *MatchingBucket) SetObjectCount(v int64) *MatchingBucket {
	s.ObjectCount = &v
	return s
}

// SetObjectCountByEncryptionType sets the ObjectCountByEncryptionType field's value.
func (s *MatchingBucket) SetObjectCountByEncryptionType(v *ObjectCountByEncryptionType) *MatchingBucket {
	s.ObjectCountByEncryptionType = v
	return s
}

// SetSensitivityScore sets the SensitivityScore field's value.
func (s *MatchingBucket) SetSensitivityScore(v int64) *MatchingBucket {
	s.SensitivityScore = &v
	return s
}

// SetSizeInBytes sets the SizeInBytes field's value.
func (s *MatchingBucket) SetSizeInBytes(v int64) *MatchingBucket {
	s.SizeInBytes = &v
	return s
}

// SetSizeInBytesCompressed sets the SizeInBytesCompressed field's value.
func (s *MatchingBucket) SetSizeInBytesCompressed(v int64) *MatchingBucket {
	s.SizeInBytesCompressed = &v
	return s
}

// SetUnclassifiableObjectCount sets the UnclassifiableObjectCount field's value.
func (s *MatchingBucket) SetUnclassifiableObjectCount(v *ObjectLevelStatistics) *MatchingBucket {
	s.UnclassifiableObjectCount = v
	return s
}

// SetUnclassifiableObjectSizeInBytes sets the UnclassifiableObjectSizeInBytes field's value.
func (s *MatchingBucket) SetUnclassifiableObjectSizeInBytes(v *ObjectLevelStatistics) *MatchingBucket {
	s.UnclassifiableObjectSizeInBytes = v
	return s
}

// Provides statistical data and other information about an Amazon Web Services
// resource that Amazon Macie monitors and analyzes for your account.
type MatchingResource struct {
	_ struct{} `type:"structure"`

	// Provides statistical data and other information about an S3 bucket that Amazon
	// Macie monitors and analyzes for your account. By default, object count and
	// storage size values include data for object parts that are the result of
	// incomplete multipart uploads. For more information, see How Macie monitors
	// Amazon S3 data security (https://docs.aws.amazon.com/macie/latest/user/monitoring-s3-how-it-works.html)
	// in the Amazon Macie User Guide.
	//
	// If an error occurs when Macie attempts to retrieve and process information
	// about the bucket or the bucket's objects, the value for most of these properties
	// is null. Key exceptions are accountId and bucketName. To identify the cause
	// of the error, refer to the errorCode and errorMessage values.
	MatchingBucket *MatchingBucket `locationName:"matchingBucket" 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 MatchingResource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MatchingResource) GoString() string {
	return s.String()
}

// SetMatchingBucket sets the MatchingBucket field's value.
func (s *MatchingResource) SetMatchingBucket(v *MatchingBucket) *MatchingResource {
	s.MatchingBucket = v
	return s
}

// Provides information about an account that's associated with an Amazon Macie
// administrator account.
type Member struct {
	_ struct{} `type:"structure"`

	AccountId *string `locationName:"accountId" type:"string"`

	AdministratorAccountId *string `locationName:"administratorAccountId" type:"string"`

	Arn *string `locationName:"arn" type:"string"`

	Email *string `locationName:"email" type:"string"`

	InvitedAt *time.Time `locationName:"invitedAt" type:"timestamp" timestampFormat:"iso8601"`

	MasterAccountId *string `locationName:"masterAccountId" type:"string"`

	// The current status of the relationship between an account and an associated
	// Amazon Macie administrator account. Possible values are:
	RelationshipStatus *string `locationName:"relationshipStatus" type:"string" enum:"RelationshipStatus"`

	// A string-to-string map of key-value pairs that specifies the tags (keys and
	// values) for an Amazon Macie resource.
	Tags map[string]*string `locationName:"tags" type:"map"`

	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Member) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Member) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *Member) SetAccountId(v string) *Member {
	s.AccountId = &v
	return s
}

// SetAdministratorAccountId sets the AdministratorAccountId field's value.
func (s *Member) SetAdministratorAccountId(v string) *Member {
	s.AdministratorAccountId = &v
	return s
}

// SetArn sets the Arn field's value.
func (s *Member) SetArn(v string) *Member {
	s.Arn = &v
	return s
}

// SetEmail sets the Email field's value.
func (s *Member) SetEmail(v string) *Member {
	s.Email = &v
	return s
}

// SetInvitedAt sets the InvitedAt field's value.
func (s *Member) SetInvitedAt(v time.Time) *Member {
	s.InvitedAt = &v
	return s
}

// SetMasterAccountId sets the MasterAccountId field's value.
func (s *Member) SetMasterAccountId(v string) *Member {
	s.MasterAccountId = &v
	return s
}

// SetRelationshipStatus sets the RelationshipStatus field's value.
func (s *Member) SetRelationshipStatus(v string) *Member {
	s.RelationshipStatus = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *Member) SetTags(v map[string]*string) *Member {
	s.Tags = v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *Member) SetUpdatedAt(v time.Time) *Member {
	s.UpdatedAt = &v
	return s
}

// Specifies a monthly recurrence pattern for running a classification job.
type MonthlySchedule struct {
	_ struct{} `type:"structure"`

	DayOfMonth *int64 `locationName:"dayOfMonth" 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 MonthlySchedule) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MonthlySchedule) GoString() string {
	return s.String()
}

// SetDayOfMonth sets the DayOfMonth field's value.
func (s *MonthlySchedule) SetDayOfMonth(v int64) *MonthlySchedule {
	s.DayOfMonth = &v
	return s
}

// Provides information about the number of objects that are in an S3 bucket
// and use certain types of server-side encryption, use client-side encryption,
// or aren't encrypted.
type ObjectCountByEncryptionType struct {
	_ struct{} `type:"structure"`

	CustomerManaged *int64 `locationName:"customerManaged" type:"long"`

	KmsManaged *int64 `locationName:"kmsManaged" type:"long"`

	S3Managed *int64 `locationName:"s3Managed" type:"long"`

	Unencrypted *int64 `locationName:"unencrypted" type:"long"`

	Unknown *int64 `locationName:"unknown" 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 ObjectCountByEncryptionType) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ObjectCountByEncryptionType) GoString() string {
	return s.String()
}

// SetCustomerManaged sets the CustomerManaged field's value.
func (s *ObjectCountByEncryptionType) SetCustomerManaged(v int64) *ObjectCountByEncryptionType {
	s.CustomerManaged = &v
	return s
}

// SetKmsManaged sets the KmsManaged field's value.
func (s *ObjectCountByEncryptionType) SetKmsManaged(v int64) *ObjectCountByEncryptionType {
	s.KmsManaged = &v
	return s
}

// SetS3Managed sets the S3Managed field's value.
func (s *ObjectCountByEncryptionType) SetS3Managed(v int64) *ObjectCountByEncryptionType {
	s.S3Managed = &v
	return s
}

// SetUnencrypted sets the Unencrypted field's value.
func (s *ObjectCountByEncryptionType) SetUnencrypted(v int64) *ObjectCountByEncryptionType {
	s.Unencrypted = &v
	return s
}

// SetUnknown sets the Unknown field's value.
func (s *ObjectCountByEncryptionType) SetUnknown(v int64) *ObjectCountByEncryptionType {
	s.Unknown = &v
	return s
}

// Provides information about the total storage size (in bytes) or number of
// objects that Amazon Macie can't analyze in one or more S3 buckets. In a BucketMetadata
// or MatchingBucket object, this data is for a specific bucket. In a GetBucketStatisticsResponse
// object, this data is aggregated for all the buckets in the query results.
// If versioning is enabled for a bucket, storage size values are based on the
// size of the latest version of each applicable object in the bucket.
type ObjectLevelStatistics struct {
	_ struct{} `type:"structure"`

	FileType *int64 `locationName:"fileType" type:"long"`

	StorageClass *int64 `locationName:"storageClass" type:"long"`

	Total *int64 `locationName:"total" 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 ObjectLevelStatistics) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ObjectLevelStatistics) GoString() string {
	return s.String()
}

// SetFileType sets the FileType field's value.
func (s *ObjectLevelStatistics) SetFileType(v int64) *ObjectLevelStatistics {
	s.FileType = &v
	return s
}

// SetStorageClass sets the StorageClass field's value.
func (s *ObjectLevelStatistics) SetStorageClass(v int64) *ObjectLevelStatistics {
	s.StorageClass = &v
	return s
}

// SetTotal sets the Total field's value.
func (s *ObjectLevelStatistics) SetTotal(v int64) *ObjectLevelStatistics {
	s.Total = &v
	return s
}

// Specifies the location of 1-15 occurrences of sensitive data that was detected
// by a managed data identifier or a custom data identifier and produced a sensitive
// data finding.
type Occurrences struct {
	_ struct{} `type:"structure"`

	// Specifies the location of occurrences of sensitive data in a Microsoft Excel
	// workbook, CSV file, or TSV file.
	Cells []*Cell `locationName:"cells" type:"list"`

	// Specifies the locations of occurrences of sensitive data in a non-binary
	// text file.
	LineRanges []*Range `locationName:"lineRanges" type:"list"`

	// Specifies the locations of occurrences of sensitive data in a non-binary
	// text file.
	OffsetRanges []*Range `locationName:"offsetRanges" type:"list"`

	// Specifies the location of occurrences of sensitive data in an Adobe Portable
	// Document Format file.
	Pages []*Page `locationName:"pages" type:"list"`

	// Specifies the locations of occurrences of sensitive data in an Apache Avro
	// object container or a structured data file.
	Records []*Record `locationName:"records" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Occurrences) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Occurrences) GoString() string {
	return s.String()
}

// SetCells sets the Cells field's value.
func (s *Occurrences) SetCells(v []*Cell) *Occurrences {
	s.Cells = v
	return s
}

// SetLineRanges sets the LineRanges field's value.
func (s *Occurrences) SetLineRanges(v []*Range) *Occurrences {
	s.LineRanges = v
	return s
}

// SetOffsetRanges sets the OffsetRanges field's value.
func (s *Occurrences) SetOffsetRanges(v []*Range) *Occurrences {
	s.OffsetRanges = v
	return s
}

// SetPages sets the Pages field's value.
func (s *Occurrences) SetPages(v []*Page) *Occurrences {
	s.Pages = v
	return s
}

// SetRecords sets the Records field's value.
func (s *Occurrences) SetRecords(v []*Record) *Occurrences {
	s.Records = v
	return s
}

// Specifies the location of an occurrence of sensitive data in an Adobe Portable
// Document Format file.
type Page struct {
	_ struct{} `type:"structure"`

	// Specifies the location of an occurrence of sensitive data in an email message
	// or a non-binary text file such as an HTML, TXT, or XML file.
	LineRange *Range `locationName:"lineRange" type:"structure"`

	// Specifies the location of an occurrence of sensitive data in an email message
	// or a non-binary text file such as an HTML, TXT, or XML file.
	OffsetRange *Range `locationName:"offsetRange" type:"structure"`

	PageNumber *int64 `locationName:"pageNumber" type:"long"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Page) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Page) GoString() string {
	return s.String()
}

// SetLineRange sets the LineRange field's value.
func (s *Page) SetLineRange(v *Range) *Page {
	s.LineRange = v
	return s
}

// SetOffsetRange sets the OffsetRange field's value.
func (s *Page) SetOffsetRange(v *Range) *Page {
	s.OffsetRange = v
	return s
}

// SetPageNumber sets the PageNumber field's value.
func (s *Page) SetPageNumber(v int64) *Page {
	s.PageNumber = &v
	return s
}

// Provides the details of a policy finding.
type PolicyDetails struct {
	_ struct{} `type:"structure"`

	// Provides information about an action that occurred for a resource and produced
	// a policy finding.
	Action *FindingAction `locationName:"action" type:"structure"`

	// Provides information about an entity that performed an action that produced
	// a policy finding for a resource.
	Actor *FindingActor `locationName:"actor" 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 PolicyDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PolicyDetails) GoString() string {
	return s.String()
}

// SetAction sets the Action field's value.
func (s *PolicyDetails) SetAction(v *FindingAction) *PolicyDetails {
	s.Action = v
	return s
}

// SetActor sets the Actor field's value.
func (s *PolicyDetails) SetActor(v *FindingActor) *PolicyDetails {
	s.Actor = v
	return s
}

// Specifies where to store data classification results, and the encryption
// settings to use when storing results in that location.
type PutClassificationExportConfigurationInput struct {
	_ struct{} `type:"structure"`

	// Specifies where to store data classification results, and the encryption
	// settings to use when storing results in that location. The location must
	// be an S3 general purpose bucket.
	//
	// Configuration is a required field
	Configuration *ClassificationExportConfiguration `locationName:"configuration" 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 PutClassificationExportConfigurationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutClassificationExportConfigurationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PutClassificationExportConfigurationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PutClassificationExportConfigurationInput"}
	if s.Configuration == nil {
		invalidParams.Add(request.NewErrParamRequired("Configuration"))
	}
	if s.Configuration != nil {
		if err := s.Configuration.Validate(); err != nil {
			invalidParams.AddNested("Configuration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConfiguration sets the Configuration field's value.
func (s *PutClassificationExportConfigurationInput) SetConfiguration(v *ClassificationExportConfiguration) *PutClassificationExportConfigurationInput {
	s.Configuration = v
	return s
}

// Provides information about updated settings for storing data classification
// results.
type PutClassificationExportConfigurationOutput struct {
	_ struct{} `type:"structure"`

	// Specifies where to store data classification results, and the encryption
	// settings to use when storing results in that location. The location must
	// be an S3 general purpose bucket.
	Configuration *ClassificationExportConfiguration `locationName:"configuration" 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 PutClassificationExportConfigurationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutClassificationExportConfigurationOutput) GoString() string {
	return s.String()
}

// SetConfiguration sets the Configuration field's value.
func (s *PutClassificationExportConfigurationOutput) SetConfiguration(v *ClassificationExportConfiguration) *PutClassificationExportConfigurationOutput {
	s.Configuration = v
	return s
}

// Specifies configuration settings for publishing findings to Security Hub
// automatically.
type PutFindingsPublicationConfigurationInput struct {
	_ struct{} `type:"structure"`

	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`

	// Specifies configuration settings that determine which findings are published
	// to Security Hub automatically. For information about how Macie publishes
	// findings to Security Hub, see Amazon Macie integration with Security Hub
	// (https://docs.aws.amazon.com/macie/latest/user/securityhub-integration.html)
	// in the Amazon Macie User Guide.
	SecurityHubConfiguration *SecurityHubConfiguration `locationName:"securityHubConfiguration" 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 PutFindingsPublicationConfigurationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutFindingsPublicationConfigurationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PutFindingsPublicationConfigurationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PutFindingsPublicationConfigurationInput"}
	if s.SecurityHubConfiguration != nil {
		if err := s.SecurityHubConfiguration.Validate(); err != nil {
			invalidParams.AddNested("SecurityHubConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *PutFindingsPublicationConfigurationInput) SetClientToken(v string) *PutFindingsPublicationConfigurationInput {
	s.ClientToken = &v
	return s
}

// SetSecurityHubConfiguration sets the SecurityHubConfiguration field's value.
func (s *PutFindingsPublicationConfigurationInput) SetSecurityHubConfiguration(v *SecurityHubConfiguration) *PutFindingsPublicationConfigurationInput {
	s.SecurityHubConfiguration = v
	return s
}

type PutFindingsPublicationConfigurationOutput 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 PutFindingsPublicationConfigurationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutFindingsPublicationConfigurationOutput) GoString() string {
	return s.String()
}

// Specifies the location of an occurrence of sensitive data in an email message
// or a non-binary text file such as an HTML, TXT, or XML file.
type Range struct {
	_ struct{} `type:"structure"`

	End *int64 `locationName:"end" type:"long"`

	Start *int64 `locationName:"start" type:"long"`

	StartColumn *int64 `locationName:"startColumn" type:"long"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Range) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Range) GoString() string {
	return s.String()
}

// SetEnd sets the End field's value.
func (s *Range) SetEnd(v int64) *Range {
	s.End = &v
	return s
}

// SetStart sets the Start field's value.
func (s *Range) SetStart(v int64) *Range {
	s.Start = &v
	return s
}

// SetStartColumn sets the StartColumn field's value.
func (s *Range) SetStartColumn(v int64) *Range {
	s.StartColumn = &v
	return s
}

// Specifies the location of an occurrence of sensitive data in an Apache Avro
// object container, Apache Parquet file, JSON file, or JSON Lines file.
type Record struct {
	_ struct{} `type:"structure"`

	JsonPath *string `locationName:"jsonPath" type:"string"`

	RecordIndex *int64 `locationName:"recordIndex" type:"long"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Record) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Record) GoString() string {
	return s.String()
}

// SetJsonPath sets the JsonPath field's value.
func (s *Record) SetJsonPath(v string) *Record {
	s.JsonPath = &v
	return s
}

// SetRecordIndex sets the RecordIndex field's value.
func (s *Record) SetRecordIndex(v int64) *Record {
	s.RecordIndex = &v
	return s
}

// Provides information about settings that define whether one or more objects
// in an S3 bucket are replicated to S3 buckets for other Amazon Web Services
// accounts and, if so, which accounts.
type ReplicationDetails struct {
	_ struct{} `type:"structure"`

	Replicated *bool `locationName:"replicated" type:"boolean"`

	ReplicatedExternally *bool `locationName:"replicatedExternally" type:"boolean"`

	ReplicationAccounts []*string `locationName:"replicationAccounts" 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 ReplicationDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ReplicationDetails) GoString() string {
	return s.String()
}

// SetReplicated sets the Replicated field's value.
func (s *ReplicationDetails) SetReplicated(v bool) *ReplicationDetails {
	s.Replicated = &v
	return s
}

// SetReplicatedExternally sets the ReplicatedExternally field's value.
func (s *ReplicationDetails) SetReplicatedExternally(v bool) *ReplicationDetails {
	s.ReplicatedExternally = &v
	return s
}

// SetReplicationAccounts sets the ReplicationAccounts field's value.
func (s *ReplicationDetails) SetReplicationAccounts(v []*string) *ReplicationDetails {
	s.ReplicationAccounts = v
	return s
}

// Provides information about an error that occurred because a specified resource
// wasn't found.
type ResourceNotFoundException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceNotFoundException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceNotFoundException) GoString() string {
	return s.String()
}

func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {
	return &ResourceNotFoundException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ResourceNotFoundException) Code() string {
	return "ResourceNotFoundException"
}

// Message returns the exception's message.
func (s *ResourceNotFoundException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ResourceNotFoundException) OrigErr() error {
	return nil
}

func (s *ResourceNotFoundException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ResourceNotFoundException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ResourceNotFoundException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Provides information about an S3 object that Amazon Macie selected for analysis
// while performing automated sensitive data discovery for an account, and the
// status and results of the analysis. This information is available only if
// automated sensitive data discovery has been enabled for the account.
type ResourceProfileArtifact struct {
	_ struct{} `type:"structure"`

	// Arn is a required field
	Arn *string `locationName:"arn" type:"string" required:"true"`

	// ClassificationResultStatus is a required field
	ClassificationResultStatus *string `locationName:"classificationResultStatus" type:"string" required:"true"`

	Sensitive *bool `locationName:"sensitive" 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 ResourceProfileArtifact) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceProfileArtifact) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *ResourceProfileArtifact) SetArn(v string) *ResourceProfileArtifact {
	s.Arn = &v
	return s
}

// SetClassificationResultStatus sets the ClassificationResultStatus field's value.
func (s *ResourceProfileArtifact) SetClassificationResultStatus(v string) *ResourceProfileArtifact {
	s.ClassificationResultStatus = &v
	return s
}

// SetSensitive sets the Sensitive field's value.
func (s *ResourceProfileArtifact) SetSensitive(v bool) *ResourceProfileArtifact {
	s.Sensitive = &v
	return s
}

// Provides statistical data for sensitive data discovery metrics that apply
// to an S3 bucket that Amazon Macie monitors and analyzes for an account, if
// automated sensitive data discovery has been enabled for the account. The
// data captures the results of automated sensitive data discovery activities
// that Macie has performed for the bucket.
type ResourceStatistics struct {
	_ struct{} `type:"structure"`

	TotalBytesClassified *int64 `locationName:"totalBytesClassified" type:"long"`

	TotalDetections *int64 `locationName:"totalDetections" type:"long"`

	TotalDetectionsSuppressed *int64 `locationName:"totalDetectionsSuppressed" type:"long"`

	TotalItemsClassified *int64 `locationName:"totalItemsClassified" type:"long"`

	TotalItemsSensitive *int64 `locationName:"totalItemsSensitive" type:"long"`

	TotalItemsSkipped *int64 `locationName:"totalItemsSkipped" type:"long"`

	TotalItemsSkippedInvalidEncryption *int64 `locationName:"totalItemsSkippedInvalidEncryption" type:"long"`

	TotalItemsSkippedInvalidKms *int64 `locationName:"totalItemsSkippedInvalidKms" type:"long"`

	TotalItemsSkippedPermissionDenied *int64 `locationName:"totalItemsSkippedPermissionDenied" 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 ResourceStatistics) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceStatistics) GoString() string {
	return s.String()
}

// SetTotalBytesClassified sets the TotalBytesClassified field's value.
func (s *ResourceStatistics) SetTotalBytesClassified(v int64) *ResourceStatistics {
	s.TotalBytesClassified = &v
	return s
}

// SetTotalDetections sets the TotalDetections field's value.
func (s *ResourceStatistics) SetTotalDetections(v int64) *ResourceStatistics {
	s.TotalDetections = &v
	return s
}

// SetTotalDetectionsSuppressed sets the TotalDetectionsSuppressed field's value.
func (s *ResourceStatistics) SetTotalDetectionsSuppressed(v int64) *ResourceStatistics {
	s.TotalDetectionsSuppressed = &v
	return s
}

// SetTotalItemsClassified sets the TotalItemsClassified field's value.
func (s *ResourceStatistics) SetTotalItemsClassified(v int64) *ResourceStatistics {
	s.TotalItemsClassified = &v
	return s
}

// SetTotalItemsSensitive sets the TotalItemsSensitive field's value.
func (s *ResourceStatistics) SetTotalItemsSensitive(v int64) *ResourceStatistics {
	s.TotalItemsSensitive = &v
	return s
}

// SetTotalItemsSkipped sets the TotalItemsSkipped field's value.
func (s *ResourceStatistics) SetTotalItemsSkipped(v int64) *ResourceStatistics {
	s.TotalItemsSkipped = &v
	return s
}

// SetTotalItemsSkippedInvalidEncryption sets the TotalItemsSkippedInvalidEncryption field's value.
func (s *ResourceStatistics) SetTotalItemsSkippedInvalidEncryption(v int64) *ResourceStatistics {
	s.TotalItemsSkippedInvalidEncryption = &v
	return s
}

// SetTotalItemsSkippedInvalidKms sets the TotalItemsSkippedInvalidKms field's value.
func (s *ResourceStatistics) SetTotalItemsSkippedInvalidKms(v int64) *ResourceStatistics {
	s.TotalItemsSkippedInvalidKms = &v
	return s
}

// SetTotalItemsSkippedPermissionDenied sets the TotalItemsSkippedPermissionDenied field's value.
func (s *ResourceStatistics) SetTotalItemsSkippedPermissionDenied(v int64) *ResourceStatistics {
	s.TotalItemsSkippedPermissionDenied = &v
	return s
}

// Provides information about the resources that a finding applies to.
type ResourcesAffected struct {
	_ struct{} `type:"structure"`

	// Provides information about the S3 bucket that a finding applies to.
	S3Bucket *S3Bucket `locationName:"s3Bucket" type:"structure"`

	// Provides information about the S3 object that a finding applies to.
	S3Object *S3Object `locationName:"s3Object" 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 ResourcesAffected) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourcesAffected) GoString() string {
	return s.String()
}

// SetS3Bucket sets the S3Bucket field's value.
func (s *ResourcesAffected) SetS3Bucket(v *S3Bucket) *ResourcesAffected {
	s.S3Bucket = v
	return s
}

// SetS3Object sets the S3Object field's value.
func (s *ResourcesAffected) SetS3Object(v *S3Object) *ResourcesAffected {
	s.S3Object = v
	return s
}

// Provides information about the access method and settings that are used to
// retrieve occurrences of sensitive data reported by findings.
type RetrievalConfiguration struct {
	_ struct{} `type:"structure"`

	ExternalId *string `locationName:"externalId" type:"string"`

	// The access method to use when retrieving occurrences of sensitive data reported
	// by findings. Valid values are:
	//
	// RetrievalMode is a required field
	RetrievalMode *string `locationName:"retrievalMode" type:"string" required:"true" enum:"RetrievalMode"`

	RoleName *string `locationName:"roleName" 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 RetrievalConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RetrievalConfiguration) GoString() string {
	return s.String()
}

// SetExternalId sets the ExternalId field's value.
func (s *RetrievalConfiguration) SetExternalId(v string) *RetrievalConfiguration {
	s.ExternalId = &v
	return s
}

// SetRetrievalMode sets the RetrievalMode field's value.
func (s *RetrievalConfiguration) SetRetrievalMode(v string) *RetrievalConfiguration {
	s.RetrievalMode = &v
	return s
}

// SetRoleName sets the RoleName field's value.
func (s *RetrievalConfiguration) SetRoleName(v string) *RetrievalConfiguration {
	s.RoleName = &v
	return s
}

// Specifies the status of the Amazon Macie configuration for retrieving occurrences
// of sensitive data reported by findings, and the Key Management Service (KMS)
// key to use to encrypt sensitive data that's retrieved. When you enable the
// configuration for the first time, your request must specify an KMS key. Otherwise,
// an error occurs.
type RevealConfiguration struct {
	_ struct{} `type:"structure"`

	KmsKeyId *string `locationName:"kmsKeyId" min:"1" type:"string"`

	// The status of the configuration for retrieving occurrences of sensitive data
	// reported by findings. Valid values are:
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"RevealStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RevealConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RevealConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RevealConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RevealConfiguration"}
	if s.KmsKeyId != nil && len(*s.KmsKeyId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("KmsKeyId", 1))
	}
	if s.Status == nil {
		invalidParams.Add(request.NewErrParamRequired("Status"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *RevealConfiguration) SetKmsKeyId(v string) *RevealConfiguration {
	s.KmsKeyId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *RevealConfiguration) SetStatus(v string) *RevealConfiguration {
	s.Status = &v
	return s
}

// Provides information about the S3 bucket that a finding applies to.
type S3Bucket struct {
	_ struct{} `type:"structure"`

	AllowsUnencryptedObjectUploads *string `locationName:"allowsUnencryptedObjectUploads" type:"string" enum:"AllowsUnencryptedObjectUploads"`

	Arn *string `locationName:"arn" type:"string"`

	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// Provides information about the default server-side encryption settings for
	// an S3 bucket or the encryption settings for an S3 object.
	DefaultServerSideEncryption *ServerSideEncryption `locationName:"defaultServerSideEncryption" type:"structure"`

	Name *string `locationName:"name" type:"string"`

	// Provides information about the Amazon Web Services account that owns an S3
	// bucket.
	Owner *S3BucketOwner `locationName:"owner" type:"structure"`

	// Provides information about the permissions settings that determine whether
	// an S3 bucket is publicly accessible.
	PublicAccess *BucketPublicAccess `locationName:"publicAccess" type:"structure"`

	// Provides information about the tags that are associated with an S3 bucket
	// or object. Each tag consists of a required tag key and an associated tag
	// value.
	Tags []*KeyValuePair `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 S3Bucket) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3Bucket) GoString() string {
	return s.String()
}

// SetAllowsUnencryptedObjectUploads sets the AllowsUnencryptedObjectUploads field's value.
func (s *S3Bucket) SetAllowsUnencryptedObjectUploads(v string) *S3Bucket {
	s.AllowsUnencryptedObjectUploads = &v
	return s
}

// SetArn sets the Arn field's value.
func (s *S3Bucket) SetArn(v string) *S3Bucket {
	s.Arn = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *S3Bucket) SetCreatedAt(v time.Time) *S3Bucket {
	s.CreatedAt = &v
	return s
}

// SetDefaultServerSideEncryption sets the DefaultServerSideEncryption field's value.
func (s *S3Bucket) SetDefaultServerSideEncryption(v *ServerSideEncryption) *S3Bucket {
	s.DefaultServerSideEncryption = v
	return s
}

// SetName sets the Name field's value.
func (s *S3Bucket) SetName(v string) *S3Bucket {
	s.Name = &v
	return s
}

// SetOwner sets the Owner field's value.
func (s *S3Bucket) SetOwner(v *S3BucketOwner) *S3Bucket {
	s.Owner = v
	return s
}

// SetPublicAccess sets the PublicAccess field's value.
func (s *S3Bucket) SetPublicAccess(v *BucketPublicAccess) *S3Bucket {
	s.PublicAccess = v
	return s
}

// SetTags sets the Tags field's value.
func (s *S3Bucket) SetTags(v []*KeyValuePair) *S3Bucket {
	s.Tags = v
	return s
}

// Specifies property- and tag-based conditions that define criteria for including
// or excluding S3 buckets from a classification job. Exclude conditions take
// precedence over include conditions.
type S3BucketCriteriaForJob struct {
	_ struct{} `type:"structure"`

	// Specifies one or more property- and tag-based conditions that define criteria
	// for including or excluding S3 buckets from a classification job.
	Excludes *CriteriaBlockForJob `locationName:"excludes" type:"structure"`

	// Specifies one or more property- and tag-based conditions that define criteria
	// for including or excluding S3 buckets from a classification job.
	Includes *CriteriaBlockForJob `locationName:"includes" 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 S3BucketCriteriaForJob) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3BucketCriteriaForJob) GoString() string {
	return s.String()
}

// SetExcludes sets the Excludes field's value.
func (s *S3BucketCriteriaForJob) SetExcludes(v *CriteriaBlockForJob) *S3BucketCriteriaForJob {
	s.Excludes = v
	return s
}

// SetIncludes sets the Includes field's value.
func (s *S3BucketCriteriaForJob) SetIncludes(v *CriteriaBlockForJob) *S3BucketCriteriaForJob {
	s.Includes = v
	return s
}

// Specifies an Amazon Web Services account that owns S3 buckets for a classification
// job to analyze, and one or more specific buckets to analyze for that account.
type S3BucketDefinitionForJob struct {
	_ struct{} `type:"structure"`

	// AccountId is a required field
	AccountId *string `locationName:"accountId" type:"string" required:"true"`

	// Buckets is a required field
	Buckets []*string `locationName:"buckets" 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 S3BucketDefinitionForJob) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3BucketDefinitionForJob) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3BucketDefinitionForJob) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3BucketDefinitionForJob"}
	if s.AccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AccountId"))
	}
	if s.Buckets == nil {
		invalidParams.Add(request.NewErrParamRequired("Buckets"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccountId sets the AccountId field's value.
func (s *S3BucketDefinitionForJob) SetAccountId(v string) *S3BucketDefinitionForJob {
	s.AccountId = &v
	return s
}

// SetBuckets sets the Buckets field's value.
func (s *S3BucketDefinitionForJob) SetBuckets(v []*string) *S3BucketDefinitionForJob {
	s.Buckets = v
	return s
}

// Provides information about the Amazon Web Services account that owns an S3
// bucket.
type S3BucketOwner struct {
	_ struct{} `type:"structure"`

	DisplayName *string `locationName:"displayName" type:"string"`

	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 S3BucketOwner) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3BucketOwner) GoString() string {
	return s.String()
}

// SetDisplayName sets the DisplayName field's value.
func (s *S3BucketOwner) SetDisplayName(v string) *S3BucketOwner {
	s.DisplayName = &v
	return s
}

// SetId sets the Id field's value.
func (s *S3BucketOwner) SetId(v string) *S3BucketOwner {
	s.Id = &v
	return s
}

// Specifies the S3 buckets that are excluded from automated sensitive data
// discovery for an Amazon Macie account.
type S3ClassificationScope struct {
	_ struct{} `type:"structure"`

	// Specifies the names of the S3 buckets that are excluded from automated sensitive
	// data discovery.
	//
	// Excludes is a required field
	Excludes *S3ClassificationScopeExclusion `locationName:"excludes" 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 S3ClassificationScope) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3ClassificationScope) GoString() string {
	return s.String()
}

// SetExcludes sets the Excludes field's value.
func (s *S3ClassificationScope) SetExcludes(v *S3ClassificationScopeExclusion) *S3ClassificationScope {
	s.Excludes = v
	return s
}

// Specifies the names of the S3 buckets that are excluded from automated sensitive
// data discovery.
type S3ClassificationScopeExclusion struct {
	_ struct{} `type:"structure"`

	// BucketNames is a required field
	BucketNames []*string `locationName:"bucketNames" 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 S3ClassificationScopeExclusion) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3ClassificationScopeExclusion) GoString() string {
	return s.String()
}

// SetBucketNames sets the BucketNames field's value.
func (s *S3ClassificationScopeExclusion) SetBucketNames(v []*string) *S3ClassificationScopeExclusion {
	s.BucketNames = v
	return s
}

// Specifies S3 buckets to add or remove from the exclusion list defined by
// the classification scope for an Amazon Macie account.
type S3ClassificationScopeExclusionUpdate struct {
	_ struct{} `type:"structure"`

	// BucketNames is a required field
	BucketNames []*string `locationName:"bucketNames" type:"list" required:"true"`

	// Specifies how to apply changes to the S3 bucket exclusion list defined by
	// the classification scope for an Amazon Macie account. Valid values are:
	//
	// Operation is a required field
	Operation *string `locationName:"operation" type:"string" required:"true" enum:"ClassificationScopeUpdateOperation"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3ClassificationScopeExclusionUpdate) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3ClassificationScopeExclusionUpdate) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3ClassificationScopeExclusionUpdate) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3ClassificationScopeExclusionUpdate"}
	if s.BucketNames == nil {
		invalidParams.Add(request.NewErrParamRequired("BucketNames"))
	}
	if s.Operation == nil {
		invalidParams.Add(request.NewErrParamRequired("Operation"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBucketNames sets the BucketNames field's value.
func (s *S3ClassificationScopeExclusionUpdate) SetBucketNames(v []*string) *S3ClassificationScopeExclusionUpdate {
	s.BucketNames = v
	return s
}

// SetOperation sets the Operation field's value.
func (s *S3ClassificationScopeExclusionUpdate) SetOperation(v string) *S3ClassificationScopeExclusionUpdate {
	s.Operation = &v
	return s
}

// Specifies changes to the list of S3 buckets that are excluded from automated
// sensitive data discovery for an Amazon Macie account.
type S3ClassificationScopeUpdate struct {
	_ struct{} `type:"structure"`

	// Specifies S3 buckets to add or remove from the exclusion list defined by
	// the classification scope for an Amazon Macie account.
	//
	// Excludes is a required field
	Excludes *S3ClassificationScopeExclusionUpdate `locationName:"excludes" 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 S3ClassificationScopeUpdate) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3ClassificationScopeUpdate) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3ClassificationScopeUpdate) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3ClassificationScopeUpdate"}
	if s.Excludes == nil {
		invalidParams.Add(request.NewErrParamRequired("Excludes"))
	}
	if s.Excludes != nil {
		if err := s.Excludes.Validate(); err != nil {
			invalidParams.AddNested("Excludes", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetExcludes sets the Excludes field's value.
func (s *S3ClassificationScopeUpdate) SetExcludes(v *S3ClassificationScopeExclusionUpdate) *S3ClassificationScopeUpdate {
	s.Excludes = v
	return s
}

// Specifies an S3 bucket to store data classification results in, and the encryption
// settings to use when storing results in that bucket.
type S3Destination struct {
	_ struct{} `type:"structure"`

	// BucketName is a required field
	BucketName *string `locationName:"bucketName" type:"string" required:"true"`

	KeyPrefix *string `locationName:"keyPrefix" type:"string"`

	// KmsKeyArn is a required field
	KmsKeyArn *string `locationName:"kmsKeyArn" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3Destination) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3Destination) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3Destination) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3Destination"}
	if s.BucketName == nil {
		invalidParams.Add(request.NewErrParamRequired("BucketName"))
	}
	if s.KmsKeyArn == nil {
		invalidParams.Add(request.NewErrParamRequired("KmsKeyArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBucketName sets the BucketName field's value.
func (s *S3Destination) SetBucketName(v string) *S3Destination {
	s.BucketName = &v
	return s
}

// SetKeyPrefix sets the KeyPrefix field's value.
func (s *S3Destination) SetKeyPrefix(v string) *S3Destination {
	s.KeyPrefix = &v
	return s
}

// SetKmsKeyArn sets the KmsKeyArn field's value.
func (s *S3Destination) SetKmsKeyArn(v string) *S3Destination {
	s.KmsKeyArn = &v
	return s
}

// Specifies which S3 buckets contain the objects that a classification job
// analyzes, and the scope of that analysis. The bucket specification can be
// static (bucketDefinitions) or dynamic (bucketCriteria). If it's static, the
// job analyzes objects in the same predefined set of buckets each time the
// job runs. If it's dynamic, the job analyzes objects in any buckets that match
// the specified criteria each time the job starts to run.
type S3JobDefinition struct {
	_ struct{} `type:"structure"`

	// Specifies property- and tag-based conditions that define criteria for including
	// or excluding S3 buckets from a classification job. Exclude conditions take
	// precedence over include conditions.
	BucketCriteria *S3BucketCriteriaForJob `locationName:"bucketCriteria" type:"structure"`

	BucketDefinitions []*S3BucketDefinitionForJob `locationName:"bucketDefinitions" type:"list"`

	// Specifies one or more property- and tag-based conditions that define criteria
	// for including or excluding S3 objects from a classification job. Exclude
	// conditions take precedence over include conditions.
	Scoping *Scoping `locationName:"scoping" 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 S3JobDefinition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3JobDefinition) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3JobDefinition) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3JobDefinition"}
	if s.BucketDefinitions != nil {
		for i, v := range s.BucketDefinitions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "BucketDefinitions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBucketCriteria sets the BucketCriteria field's value.
func (s *S3JobDefinition) SetBucketCriteria(v *S3BucketCriteriaForJob) *S3JobDefinition {
	s.BucketCriteria = v
	return s
}

// SetBucketDefinitions sets the BucketDefinitions field's value.
func (s *S3JobDefinition) SetBucketDefinitions(v []*S3BucketDefinitionForJob) *S3JobDefinition {
	s.BucketDefinitions = v
	return s
}

// SetScoping sets the Scoping field's value.
func (s *S3JobDefinition) SetScoping(v *Scoping) *S3JobDefinition {
	s.Scoping = v
	return s
}

// Provides information about the S3 object that a finding applies to.
type S3Object struct {
	_ struct{} `type:"structure"`

	BucketArn *string `locationName:"bucketArn" type:"string"`

	ETag *string `locationName:"eTag" type:"string"`

	Extension *string `locationName:"extension" type:"string"`

	Key *string `locationName:"key" type:"string"`

	LastModified *time.Time `locationName:"lastModified" type:"timestamp" timestampFormat:"iso8601"`

	Path *string `locationName:"path" type:"string"`

	PublicAccess *bool `locationName:"publicAccess" type:"boolean"`

	// Provides information about the default server-side encryption settings for
	// an S3 bucket or the encryption settings for an S3 object.
	ServerSideEncryption *ServerSideEncryption `locationName:"serverSideEncryption" type:"structure"`

	Size *int64 `locationName:"size" type:"long"`

	// The storage class of the S3 object. Possible values are:
	StorageClass *string `locationName:"storageClass" type:"string" enum:"StorageClass"`

	// Provides information about the tags that are associated with an S3 bucket
	// or object. Each tag consists of a required tag key and an associated tag
	// value.
	Tags []*KeyValuePair `locationName:"tags" type:"list"`

	VersionId *string `locationName:"versionId" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3Object) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3Object) GoString() string {
	return s.String()
}

// SetBucketArn sets the BucketArn field's value.
func (s *S3Object) SetBucketArn(v string) *S3Object {
	s.BucketArn = &v
	return s
}

// SetETag sets the ETag field's value.
func (s *S3Object) SetETag(v string) *S3Object {
	s.ETag = &v
	return s
}

// SetExtension sets the Extension field's value.
func (s *S3Object) SetExtension(v string) *S3Object {
	s.Extension = &v
	return s
}

// SetKey sets the Key field's value.
func (s *S3Object) SetKey(v string) *S3Object {
	s.Key = &v
	return s
}

// SetLastModified sets the LastModified field's value.
func (s *S3Object) SetLastModified(v time.Time) *S3Object {
	s.LastModified = &v
	return s
}

// SetPath sets the Path field's value.
func (s *S3Object) SetPath(v string) *S3Object {
	s.Path = &v
	return s
}

// SetPublicAccess sets the PublicAccess field's value.
func (s *S3Object) SetPublicAccess(v bool) *S3Object {
	s.PublicAccess = &v
	return s
}

// SetServerSideEncryption sets the ServerSideEncryption field's value.
func (s *S3Object) SetServerSideEncryption(v *ServerSideEncryption) *S3Object {
	s.ServerSideEncryption = v
	return s
}

// SetSize sets the Size field's value.
func (s *S3Object) SetSize(v int64) *S3Object {
	s.Size = &v
	return s
}

// SetStorageClass sets the StorageClass field's value.
func (s *S3Object) SetStorageClass(v string) *S3Object {
	s.StorageClass = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *S3Object) SetTags(v []*KeyValuePair) *S3Object {
	s.Tags = v
	return s
}

// SetVersionId sets the VersionId field's value.
func (s *S3Object) SetVersionId(v string) *S3Object {
	s.VersionId = &v
	return s
}

// Provides information about an S3 object that lists specific text to ignore.
type S3WordsList struct {
	_ struct{} `type:"structure"`

	// BucketName is a required field
	BucketName *string `locationName:"bucketName" min:"3" type:"string" required:"true"`

	// ObjectKey is a required field
	ObjectKey *string `locationName:"objectKey" 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 S3WordsList) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3WordsList) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3WordsList) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3WordsList"}
	if s.BucketName == nil {
		invalidParams.Add(request.NewErrParamRequired("BucketName"))
	}
	if s.BucketName != nil && len(*s.BucketName) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("BucketName", 3))
	}
	if s.ObjectKey == nil {
		invalidParams.Add(request.NewErrParamRequired("ObjectKey"))
	}
	if s.ObjectKey != nil && len(*s.ObjectKey) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ObjectKey", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBucketName sets the BucketName field's value.
func (s *S3WordsList) SetBucketName(v string) *S3WordsList {
	s.BucketName = &v
	return s
}

// SetObjectKey sets the ObjectKey field's value.
func (s *S3WordsList) SetObjectKey(v string) *S3WordsList {
	s.ObjectKey = &v
	return s
}

// Specifies one or more property- and tag-based conditions that define criteria
// for including or excluding S3 objects from a classification job. Exclude
// conditions take precedence over include conditions.
type Scoping struct {
	_ struct{} `type:"structure"`

	// Specifies one or more property- and tag-based conditions that define criteria
	// for including or excluding S3 objects from a classification job.
	Excludes *JobScopingBlock `locationName:"excludes" type:"structure"`

	// Specifies one or more property- and tag-based conditions that define criteria
	// for including or excluding S3 objects from a classification job.
	Includes *JobScopingBlock `locationName:"includes" 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 Scoping) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Scoping) GoString() string {
	return s.String()
}

// SetExcludes sets the Excludes field's value.
func (s *Scoping) SetExcludes(v *JobScopingBlock) *Scoping {
	s.Excludes = v
	return s
}

// SetIncludes sets the Includes field's value.
func (s *Scoping) SetIncludes(v *JobScopingBlock) *Scoping {
	s.Includes = v
	return s
}

// Specifies property- and tag-based conditions that define filter criteria
// for including or excluding S3 buckets from the query results. Exclude conditions
// take precedence over include conditions.
type SearchResourcesBucketCriteria struct {
	_ struct{} `type:"structure"`

	// Specifies property- and tag-based conditions that define filter criteria
	// for including or excluding Amazon Web Services resources from the query results.
	Excludes *SearchResourcesCriteriaBlock `locationName:"excludes" type:"structure"`

	// Specifies property- and tag-based conditions that define filter criteria
	// for including or excluding Amazon Web Services resources from the query results.
	Includes *SearchResourcesCriteriaBlock `locationName:"includes" 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 SearchResourcesBucketCriteria) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchResourcesBucketCriteria) GoString() string {
	return s.String()
}

// SetExcludes sets the Excludes field's value.
func (s *SearchResourcesBucketCriteria) SetExcludes(v *SearchResourcesCriteriaBlock) *SearchResourcesBucketCriteria {
	s.Excludes = v
	return s
}

// SetIncludes sets the Includes field's value.
func (s *SearchResourcesBucketCriteria) SetIncludes(v *SearchResourcesCriteriaBlock) *SearchResourcesBucketCriteria {
	s.Includes = v
	return s
}

// Specifies a property- or tag-based filter condition for including or excluding
// Amazon Web Services resources from the query results.
type SearchResourcesCriteria struct {
	_ struct{} `type:"structure"`

	// Specifies a property-based filter condition that determines which Amazon
	// Web Services resources are included or excluded from the query results.
	SimpleCriterion *SearchResourcesSimpleCriterion `locationName:"simpleCriterion" type:"structure"`

	// Specifies a tag-based filter condition that determines which Amazon Web Services
	// resources are included or excluded from the query results.
	TagCriterion *SearchResourcesTagCriterion `locationName:"tagCriterion" 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 SearchResourcesCriteria) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchResourcesCriteria) GoString() string {
	return s.String()
}

// SetSimpleCriterion sets the SimpleCriterion field's value.
func (s *SearchResourcesCriteria) SetSimpleCriterion(v *SearchResourcesSimpleCriterion) *SearchResourcesCriteria {
	s.SimpleCriterion = v
	return s
}

// SetTagCriterion sets the TagCriterion field's value.
func (s *SearchResourcesCriteria) SetTagCriterion(v *SearchResourcesTagCriterion) *SearchResourcesCriteria {
	s.TagCriterion = v
	return s
}

// Specifies property- and tag-based conditions that define filter criteria
// for including or excluding Amazon Web Services resources from the query results.
type SearchResourcesCriteriaBlock struct {
	_ struct{} `type:"structure"`

	And []*SearchResourcesCriteria `locationName:"and" 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 SearchResourcesCriteriaBlock) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchResourcesCriteriaBlock) GoString() string {
	return s.String()
}

// SetAnd sets the And field's value.
func (s *SearchResourcesCriteriaBlock) SetAnd(v []*SearchResourcesCriteria) *SearchResourcesCriteriaBlock {
	s.And = v
	return s
}

// Specifies criteria for filtering, sorting, and paginating the results of
// a query for statistical data and other information about Amazon Web Services
// resources that Amazon Macie monitors and analyzes.
type SearchResourcesInput struct {
	_ struct{} `type:"structure"`

	// Specifies property- and tag-based conditions that define filter criteria
	// for including or excluding S3 buckets from the query results. Exclude conditions
	// take precedence over include conditions.
	BucketCriteria *SearchResourcesBucketCriteria `locationName:"bucketCriteria" type:"structure"`

	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	NextToken *string `locationName:"nextToken" type:"string"`

	// Specifies criteria for sorting the results of a query for information about
	// Amazon Web Services resources that Amazon Macie monitors and analyzes.
	SortCriteria *SearchResourcesSortCriteria `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 SearchResourcesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchResourcesInput) GoString() string {
	return s.String()
}

// SetBucketCriteria sets the BucketCriteria field's value.
func (s *SearchResourcesInput) SetBucketCriteria(v *SearchResourcesBucketCriteria) *SearchResourcesInput {
	s.BucketCriteria = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchResourcesInput) SetMaxResults(v int64) *SearchResourcesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchResourcesInput) SetNextToken(v string) *SearchResourcesInput {
	s.NextToken = &v
	return s
}

// SetSortCriteria sets the SortCriteria field's value.
func (s *SearchResourcesInput) SetSortCriteria(v *SearchResourcesSortCriteria) *SearchResourcesInput {
	s.SortCriteria = v
	return s
}

// Provides the results of a query that retrieved statistical data and other
// information about Amazon Web Services resources that Amazon Macie monitors
// and analyzes for your account.
type SearchResourcesOutput struct {
	_ struct{} `type:"structure"`

	MatchingResources []*MatchingResource `locationName:"matchingResources" type:"list"`

	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 SearchResourcesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchResourcesOutput) GoString() string {
	return s.String()
}

// SetMatchingResources sets the MatchingResources field's value.
func (s *SearchResourcesOutput) SetMatchingResources(v []*MatchingResource) *SearchResourcesOutput {
	s.MatchingResources = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchResourcesOutput) SetNextToken(v string) *SearchResourcesOutput {
	s.NextToken = &v
	return s
}

// Specifies a property-based filter condition that determines which Amazon
// Web Services resources are included or excluded from the query results.
type SearchResourcesSimpleCriterion struct {
	_ struct{} `type:"structure"`

	// The operator to use in a condition that filters the results of a query. Valid
	// values are:
	Comparator *string `locationName:"comparator" type:"string" enum:"SearchResourcesComparator"`

	// The property to use in a condition that filters the query results. Valid
	// values are:
	Key *string `locationName:"key" type:"string" enum:"SearchResourcesSimpleCriterionKey"`

	Values []*string `locationName:"values" 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 SearchResourcesSimpleCriterion) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchResourcesSimpleCriterion) GoString() string {
	return s.String()
}

// SetComparator sets the Comparator field's value.
func (s *SearchResourcesSimpleCriterion) SetComparator(v string) *SearchResourcesSimpleCriterion {
	s.Comparator = &v
	return s
}

// SetKey sets the Key field's value.
func (s *SearchResourcesSimpleCriterion) SetKey(v string) *SearchResourcesSimpleCriterion {
	s.Key = &v
	return s
}

// SetValues sets the Values field's value.
func (s *SearchResourcesSimpleCriterion) SetValues(v []*string) *SearchResourcesSimpleCriterion {
	s.Values = v
	return s
}

// Specifies criteria for sorting the results of a query for information about
// Amazon Web Services resources that Amazon Macie monitors and analyzes.
type SearchResourcesSortCriteria struct {
	_ struct{} `type:"structure"`

	// The property to sort the query results by. Valid values are:
	AttributeName *string `locationName:"attributeName" type:"string" enum:"SearchResourcesSortAttributeName"`

	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 SearchResourcesSortCriteria) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchResourcesSortCriteria) GoString() string {
	return s.String()
}

// SetAttributeName sets the AttributeName field's value.
func (s *SearchResourcesSortCriteria) SetAttributeName(v string) *SearchResourcesSortCriteria {
	s.AttributeName = &v
	return s
}

// SetOrderBy sets the OrderBy field's value.
func (s *SearchResourcesSortCriteria) SetOrderBy(v string) *SearchResourcesSortCriteria {
	s.OrderBy = &v
	return s
}

// Specifies a tag-based filter condition that determines which Amazon Web Services
// resources are included or excluded from the query results.
type SearchResourcesTagCriterion struct {
	_ struct{} `type:"structure"`

	// The operator to use in a condition that filters the results of a query. Valid
	// values are:
	Comparator *string `locationName:"comparator" type:"string" enum:"SearchResourcesComparator"`

	TagValues []*SearchResourcesTagCriterionPair `locationName:"tagValues" 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 SearchResourcesTagCriterion) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchResourcesTagCriterion) GoString() string {
	return s.String()
}

// SetComparator sets the Comparator field's value.
func (s *SearchResourcesTagCriterion) SetComparator(v string) *SearchResourcesTagCriterion {
	s.Comparator = &v
	return s
}

// SetTagValues sets the TagValues field's value.
func (s *SearchResourcesTagCriterion) SetTagValues(v []*SearchResourcesTagCriterionPair) *SearchResourcesTagCriterion {
	s.TagValues = v
	return s
}

// Specifies a tag key, a tag value, or a tag key and value (as a pair) to use
// in a tag-based filter condition for a query. Tag keys and values are case
// sensitive. Also, Amazon Macie doesn't support use of partial values or wildcard
// characters in tag-based filter conditions.
type SearchResourcesTagCriterionPair struct {
	_ struct{} `type:"structure"`

	Key *string `locationName:"key" type:"string"`

	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 SearchResourcesTagCriterionPair) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchResourcesTagCriterionPair) GoString() string {
	return s.String()
}

// SetKey sets the Key field's value.
func (s *SearchResourcesTagCriterionPair) SetKey(v string) *SearchResourcesTagCriterionPair {
	s.Key = &v
	return s
}

// SetValue sets the Value field's value.
func (s *SearchResourcesTagCriterionPair) SetValue(v string) *SearchResourcesTagCriterionPair {
	s.Value = &v
	return s
}

// Specifies configuration settings that determine which findings are published
// to Security Hub automatically. For information about how Macie publishes
// findings to Security Hub, see Amazon Macie integration with Security Hub
// (https://docs.aws.amazon.com/macie/latest/user/securityhub-integration.html)
// in the Amazon Macie User Guide.
type SecurityHubConfiguration struct {
	_ struct{} `type:"structure"`

	// PublishClassificationFindings is a required field
	PublishClassificationFindings *bool `locationName:"publishClassificationFindings" type:"boolean" required:"true"`

	// PublishPolicyFindings is a required field
	PublishPolicyFindings *bool `locationName:"publishPolicyFindings" 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 SecurityHubConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SecurityHubConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SecurityHubConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SecurityHubConfiguration"}
	if s.PublishClassificationFindings == nil {
		invalidParams.Add(request.NewErrParamRequired("PublishClassificationFindings"))
	}
	if s.PublishPolicyFindings == nil {
		invalidParams.Add(request.NewErrParamRequired("PublishPolicyFindings"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPublishClassificationFindings sets the PublishClassificationFindings field's value.
func (s *SecurityHubConfiguration) SetPublishClassificationFindings(v bool) *SecurityHubConfiguration {
	s.PublishClassificationFindings = &v
	return s
}

// SetPublishPolicyFindings sets the PublishPolicyFindings field's value.
func (s *SecurityHubConfiguration) SetPublishPolicyFindings(v bool) *SecurityHubConfiguration {
	s.PublishPolicyFindings = &v
	return s
}

// Provides information about the category, types, and occurrences of sensitive
// data that produced a sensitive data finding.
type SensitiveDataItem struct {
	_ struct{} `type:"structure"`

	// For a finding, the category of sensitive data that was detected and produced
	// the finding. For a managed data identifier, the category of sensitive data
	// that the managed data identifier detects. Possible values are:
	Category *string `locationName:"category" type:"string" enum:"SensitiveDataItemCategory"`

	// Provides information about sensitive data that was detected by managed data
	// identifiers and produced a sensitive data finding, and the number of occurrences
	// of each type of sensitive data that was detected.
	Detections []*DefaultDetection `locationName:"detections" type:"list"`

	TotalCount *int64 `locationName:"totalCount" 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 SensitiveDataItem) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SensitiveDataItem) GoString() string {
	return s.String()
}

// SetCategory sets the Category field's value.
func (s *SensitiveDataItem) SetCategory(v string) *SensitiveDataItem {
	s.Category = &v
	return s
}

// SetDetections sets the Detections field's value.
func (s *SensitiveDataItem) SetDetections(v []*DefaultDetection) *SensitiveDataItem {
	s.Detections = v
	return s
}

// SetTotalCount sets the TotalCount field's value.
func (s *SensitiveDataItem) SetTotalCount(v int64) *SensitiveDataItem {
	s.TotalCount = &v
	return s
}

// Provides aggregated statistical data for sensitive data discovery metrics
// that apply to S3 buckets. Each field contains aggregated data for all the
// buckets that have a sensitivity score (sensitivityScore) of a specified value
// or within a specified range (BucketStatisticsBySensitivity). If automated
// sensitive data discovery is currently disabled for your account, the value
// for each field is 0.
type SensitivityAggregations struct {
	_ struct{} `type:"structure"`

	ClassifiableSizeInBytes *int64 `locationName:"classifiableSizeInBytes" type:"long"`

	PubliclyAccessibleCount *int64 `locationName:"publiclyAccessibleCount" type:"long"`

	TotalCount *int64 `locationName:"totalCount" type:"long"`

	TotalSizeInBytes *int64 `locationName:"totalSizeInBytes" 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 SensitivityAggregations) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SensitivityAggregations) GoString() string {
	return s.String()
}

// SetClassifiableSizeInBytes sets the ClassifiableSizeInBytes field's value.
func (s *SensitivityAggregations) SetClassifiableSizeInBytes(v int64) *SensitivityAggregations {
	s.ClassifiableSizeInBytes = &v
	return s
}

// SetPubliclyAccessibleCount sets the PubliclyAccessibleCount field's value.
func (s *SensitivityAggregations) SetPubliclyAccessibleCount(v int64) *SensitivityAggregations {
	s.PubliclyAccessibleCount = &v
	return s
}

// SetTotalCount sets the TotalCount field's value.
func (s *SensitivityAggregations) SetTotalCount(v int64) *SensitivityAggregations {
	s.TotalCount = &v
	return s
}

// SetTotalSizeInBytes sets the TotalSizeInBytes field's value.
func (s *SensitivityAggregations) SetTotalSizeInBytes(v int64) *SensitivityAggregations {
	s.TotalSizeInBytes = &v
	return s
}

// Specifies managed data identifiers to exclude (not use) when performing automated
// sensitive data discovery. For information about the managed data identifiers
// that Amazon Macie currently provides, see Using managed data identifiers
// (https://docs.aws.amazon.com/macie/latest/user/managed-data-identifiers.html)
// in the Amazon Macie User Guide.
type SensitivityInspectionTemplateExcludes struct {
	_ struct{} `type:"structure"`

	ManagedDataIdentifierIds []*string `locationName:"managedDataIdentifierIds" 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 SensitivityInspectionTemplateExcludes) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SensitivityInspectionTemplateExcludes) GoString() string {
	return s.String()
}

// SetManagedDataIdentifierIds sets the ManagedDataIdentifierIds field's value.
func (s *SensitivityInspectionTemplateExcludes) SetManagedDataIdentifierIds(v []*string) *SensitivityInspectionTemplateExcludes {
	s.ManagedDataIdentifierIds = v
	return s
}

// Specifies the allow lists, custom data identifiers, and managed data identifiers
// to include (use) when performing automated sensitive data discovery. The
// configuration must specify at least one custom data identifier or managed
// data identifier. For information about the managed data identifiers that
// Amazon Macie currently provides, see Using managed data identifiers (https://docs.aws.amazon.com/macie/latest/user/managed-data-identifiers.html)
// in the Amazon Macie User Guide.
type SensitivityInspectionTemplateIncludes struct {
	_ struct{} `type:"structure"`

	AllowListIds []*string `locationName:"allowListIds" type:"list"`

	CustomDataIdentifierIds []*string `locationName:"customDataIdentifierIds" type:"list"`

	ManagedDataIdentifierIds []*string `locationName:"managedDataIdentifierIds" 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 SensitivityInspectionTemplateIncludes) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SensitivityInspectionTemplateIncludes) GoString() string {
	return s.String()
}

// SetAllowListIds sets the AllowListIds field's value.
func (s *SensitivityInspectionTemplateIncludes) SetAllowListIds(v []*string) *SensitivityInspectionTemplateIncludes {
	s.AllowListIds = v
	return s
}

// SetCustomDataIdentifierIds sets the CustomDataIdentifierIds field's value.
func (s *SensitivityInspectionTemplateIncludes) SetCustomDataIdentifierIds(v []*string) *SensitivityInspectionTemplateIncludes {
	s.CustomDataIdentifierIds = v
	return s
}

// SetManagedDataIdentifierIds sets the ManagedDataIdentifierIds field's value.
func (s *SensitivityInspectionTemplateIncludes) SetManagedDataIdentifierIds(v []*string) *SensitivityInspectionTemplateIncludes {
	s.ManagedDataIdentifierIds = v
	return s
}

// Provides information about the sensitivity inspection template for an Amazon
// Macie account.
type SensitivityInspectionTemplatesEntry struct {
	_ struct{} `type:"structure"`

	Id *string `locationName:"id" type:"string"`

	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 SensitivityInspectionTemplatesEntry) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SensitivityInspectionTemplatesEntry) GoString() string {
	return s.String()
}

// SetId sets the Id field's value.
func (s *SensitivityInspectionTemplatesEntry) SetId(v string) *SensitivityInspectionTemplatesEntry {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *SensitivityInspectionTemplatesEntry) SetName(v string) *SensitivityInspectionTemplatesEntry {
	s.Name = &v
	return s
}

// Provides information about the default server-side encryption settings for
// an S3 bucket or the encryption settings for an S3 object.
type ServerSideEncryption struct {
	_ struct{} `type:"structure"`

	// The server-side encryption algorithm that was used to encrypt an S3 object
	// or is used by default to encrypt objects that are added to an S3 bucket.
	// Possible values are:
	EncryptionType *string `locationName:"encryptionType" type:"string" enum:"EncryptionType"`

	KmsMasterKeyId *string `locationName:"kmsMasterKeyId" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ServerSideEncryption) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ServerSideEncryption) GoString() string {
	return s.String()
}

// SetEncryptionType sets the EncryptionType field's value.
func (s *ServerSideEncryption) SetEncryptionType(v string) *ServerSideEncryption {
	s.EncryptionType = &v
	return s
}

// SetKmsMasterKeyId sets the KmsMasterKeyId field's value.
func (s *ServerSideEncryption) SetKmsMasterKeyId(v string) *ServerSideEncryption {
	s.KmsMasterKeyId = &v
	return s
}

// Specifies a current quota for an Amazon Macie account.
type ServiceLimit struct {
	_ struct{} `type:"structure"`

	IsServiceLimited *bool `locationName:"isServiceLimited" type:"boolean"`

	Unit *string `locationName:"unit" type:"string" enum:"Unit"`

	Value *int64 `locationName:"value" 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 ServiceLimit) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ServiceLimit) GoString() string {
	return s.String()
}

// SetIsServiceLimited sets the IsServiceLimited field's value.
func (s *ServiceLimit) SetIsServiceLimited(v bool) *ServiceLimit {
	s.IsServiceLimited = &v
	return s
}

// SetUnit sets the Unit field's value.
func (s *ServiceLimit) SetUnit(v string) *ServiceLimit {
	s.Unit = &v
	return s
}

// SetValue sets the Value field's value.
func (s *ServiceLimit) SetValue(v int64) *ServiceLimit {
	s.Value = &v
	return s
}

// Provides information about an error that occurred due to one or more service
// quotas for an account.
type ServiceQuotaExceededException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ServiceQuotaExceededException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ServiceQuotaExceededException) GoString() string {
	return s.String()
}

func newErrorServiceQuotaExceededException(v protocol.ResponseMetadata) error {
	return &ServiceQuotaExceededException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ServiceQuotaExceededException) Code() string {
	return "ServiceQuotaExceededException"
}

// Message returns the exception's message.
func (s *ServiceQuotaExceededException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ServiceQuotaExceededException) OrigErr() error {
	return nil
}

func (s *ServiceQuotaExceededException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ServiceQuotaExceededException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ServiceQuotaExceededException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Provides information about a session that was created for an entity that
// performed an action by using temporary security credentials.
type SessionContext struct {
	_ struct{} `type:"structure"`

	// Provides information about the context in which temporary security credentials
	// were issued to an entity.
	Attributes *SessionContextAttributes `locationName:"attributes" type:"structure"`

	// Provides information about the source and type of temporary security credentials
	// that were issued to an entity.
	SessionIssuer *SessionIssuer `locationName:"sessionIssuer" 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 SessionContext) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SessionContext) GoString() string {
	return s.String()
}

// SetAttributes sets the Attributes field's value.
func (s *SessionContext) SetAttributes(v *SessionContextAttributes) *SessionContext {
	s.Attributes = v
	return s
}

// SetSessionIssuer sets the SessionIssuer field's value.
func (s *SessionContext) SetSessionIssuer(v *SessionIssuer) *SessionContext {
	s.SessionIssuer = v
	return s
}

// Provides information about the context in which temporary security credentials
// were issued to an entity.
type SessionContextAttributes struct {
	_ struct{} `type:"structure"`

	CreationDate *time.Time `locationName:"creationDate" type:"timestamp" timestampFormat:"iso8601"`

	MfaAuthenticated *bool `locationName:"mfaAuthenticated" 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 SessionContextAttributes) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SessionContextAttributes) GoString() string {
	return s.String()
}

// SetCreationDate sets the CreationDate field's value.
func (s *SessionContextAttributes) SetCreationDate(v time.Time) *SessionContextAttributes {
	s.CreationDate = &v
	return s
}

// SetMfaAuthenticated sets the MfaAuthenticated field's value.
func (s *SessionContextAttributes) SetMfaAuthenticated(v bool) *SessionContextAttributes {
	s.MfaAuthenticated = &v
	return s
}

// Provides information about the source and type of temporary security credentials
// that were issued to an entity.
type SessionIssuer struct {
	_ struct{} `type:"structure"`

	AccountId *string `locationName:"accountId" type:"string"`

	Arn *string `locationName:"arn" type:"string"`

	PrincipalId *string `locationName:"principalId" type:"string"`

	Type *string `locationName:"type" type:"string"`

	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 SessionIssuer) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SessionIssuer) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *SessionIssuer) SetAccountId(v string) *SessionIssuer {
	s.AccountId = &v
	return s
}

// SetArn sets the Arn field's value.
func (s *SessionIssuer) SetArn(v string) *SessionIssuer {
	s.Arn = &v
	return s
}

// SetPrincipalId sets the PrincipalId field's value.
func (s *SessionIssuer) SetPrincipalId(v string) *SessionIssuer {
	s.PrincipalId = &v
	return s
}

// SetType sets the Type field's value.
func (s *SessionIssuer) SetType(v string) *SessionIssuer {
	s.Type = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *SessionIssuer) SetUserName(v string) *SessionIssuer {
	s.UserName = &v
	return s
}

// Provides the numerical and qualitative representations of a finding's severity.
type Severity struct {
	_ struct{} `type:"structure"`

	// The qualitative representation of the finding's severity. Possible values
	// are:
	Description *string `locationName:"description" type:"string" enum:"SeverityDescription"`

	Score *int64 `locationName:"score" 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 Severity) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Severity) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *Severity) SetDescription(v string) *Severity {
	s.Description = &v
	return s
}

// SetScore sets the Score field's value.
func (s *Severity) SetScore(v int64) *Severity {
	s.Score = &v
	return s
}

// Specifies a severity level for findings that a custom data identifier produces.
// A severity level determines which severity is assigned to the findings, based
// on the number of occurrences of text that match the custom data identifier's
// detection criteria.
type SeverityLevel struct {
	_ struct{} `type:"structure"`

	// OccurrencesThreshold is a required field
	OccurrencesThreshold *int64 `locationName:"occurrencesThreshold" type:"long" required:"true"`

	// The severity of a finding, ranging from LOW, for least severe, to HIGH, for
	// most severe. Valid values are:
	//
	// Severity is a required field
	Severity *string `locationName:"severity" type:"string" required:"true" enum:"DataIdentifierSeverity"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SeverityLevel) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SeverityLevel) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SeverityLevel) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SeverityLevel"}
	if s.OccurrencesThreshold == nil {
		invalidParams.Add(request.NewErrParamRequired("OccurrencesThreshold"))
	}
	if s.Severity == nil {
		invalidParams.Add(request.NewErrParamRequired("Severity"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetOccurrencesThreshold sets the OccurrencesThreshold field's value.
func (s *SeverityLevel) SetOccurrencesThreshold(v int64) *SeverityLevel {
	s.OccurrencesThreshold = &v
	return s
}

// SetSeverity sets the Severity field's value.
func (s *SeverityLevel) SetSeverity(v string) *SeverityLevel {
	s.Severity = &v
	return s
}

// Specifies a property-based condition that determines whether an S3 bucket
// is included or excluded from a classification job.
type SimpleCriterionForJob struct {
	_ struct{} `type:"structure"`

	// The operator to use in a condition. Depending on the type of condition, possible
	// values are:
	Comparator *string `locationName:"comparator" type:"string" enum:"JobComparator"`

	// The property to use in a condition that determines whether an S3 bucket is
	// included or excluded from a classification job. Valid values are:
	Key *string `locationName:"key" type:"string" enum:"SimpleCriterionKeyForJob"`

	Values []*string `locationName:"values" 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 SimpleCriterionForJob) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SimpleCriterionForJob) GoString() string {
	return s.String()
}

// SetComparator sets the Comparator field's value.
func (s *SimpleCriterionForJob) SetComparator(v string) *SimpleCriterionForJob {
	s.Comparator = &v
	return s
}

// SetKey sets the Key field's value.
func (s *SimpleCriterionForJob) SetKey(v string) *SimpleCriterionForJob {
	s.Key = &v
	return s
}

// SetValues sets the Values field's value.
func (s *SimpleCriterionForJob) SetValues(v []*string) *SimpleCriterionForJob {
	s.Values = v
	return s
}

// Specifies a property-based condition that determines whether an S3 object
// is included or excluded from a classification job.
type SimpleScopeTerm struct {
	_ struct{} `type:"structure"`

	// The operator to use in a condition. Depending on the type of condition, possible
	// values are:
	Comparator *string `locationName:"comparator" type:"string" enum:"JobComparator"`

	// The property to use in a condition that determines whether an S3 object is
	// included or excluded from a classification job. Valid values are:
	Key *string `locationName:"key" type:"string" enum:"ScopeFilterKey"`

	Values []*string `locationName:"values" 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 SimpleScopeTerm) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SimpleScopeTerm) GoString() string {
	return s.String()
}

// SetComparator sets the Comparator field's value.
func (s *SimpleScopeTerm) SetComparator(v string) *SimpleScopeTerm {
	s.Comparator = &v
	return s
}

// SetKey sets the Key field's value.
func (s *SimpleScopeTerm) SetKey(v string) *SimpleScopeTerm {
	s.Key = &v
	return s
}

// SetValues sets the Values field's value.
func (s *SimpleScopeTerm) SetValues(v []*string) *SimpleScopeTerm {
	s.Values = v
	return s
}

// Specifies criteria for sorting the results of a request for findings.
type SortCriteria struct {
	_ struct{} `type:"structure"`

	AttributeName *string `locationName:"attributeName" type:"string"`

	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
}

// Provides processing statistics for a classification job.
type Statistics struct {
	_ struct{} `type:"structure"`

	ApproximateNumberOfObjectsToProcess *float64 `locationName:"approximateNumberOfObjectsToProcess" type:"double"`

	NumberOfRuns *float64 `locationName:"numberOfRuns" 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 Statistics) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Statistics) GoString() string {
	return s.String()
}

// SetApproximateNumberOfObjectsToProcess sets the ApproximateNumberOfObjectsToProcess field's value.
func (s *Statistics) SetApproximateNumberOfObjectsToProcess(v float64) *Statistics {
	s.ApproximateNumberOfObjectsToProcess = &v
	return s
}

// SetNumberOfRuns sets the NumberOfRuns field's value.
func (s *Statistics) SetNumberOfRuns(v float64) *Statistics {
	s.NumberOfRuns = &v
	return s
}

// Specifies a custom data identifier or managed data identifier that detected
// a type of sensitive data to start excluding or including in an S3 bucket's
// sensitivity score.
type SuppressDataIdentifier struct {
	_ struct{} `type:"structure"`

	Id *string `locationName:"id" type:"string"`

	// The type of data identifier that detected a specific type of sensitive data
	// in an S3 bucket. Possible values are:
	Type *string `locationName:"type" type:"string" enum:"DataIdentifierType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SuppressDataIdentifier) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SuppressDataIdentifier) GoString() string {
	return s.String()
}

// SetId sets the Id field's value.
func (s *SuppressDataIdentifier) SetId(v string) *SuppressDataIdentifier {
	s.Id = &v
	return s
}

// SetType sets the Type field's value.
func (s *SuppressDataIdentifier) SetType(v string) *SuppressDataIdentifier {
	s.Type = &v
	return s
}

// Specifies a tag-based condition that determines whether an S3 bucket is included
// or excluded from a classification job.
type TagCriterionForJob struct {
	_ struct{} `type:"structure"`

	// The operator to use in a condition. Depending on the type of condition, possible
	// values are:
	Comparator *string `locationName:"comparator" type:"string" enum:"JobComparator"`

	TagValues []*TagCriterionPairForJob `locationName:"tagValues" 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 TagCriterionForJob) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagCriterionForJob) GoString() string {
	return s.String()
}

// SetComparator sets the Comparator field's value.
func (s *TagCriterionForJob) SetComparator(v string) *TagCriterionForJob {
	s.Comparator = &v
	return s
}

// SetTagValues sets the TagValues field's value.
func (s *TagCriterionForJob) SetTagValues(v []*TagCriterionPairForJob) *TagCriterionForJob {
	s.TagValues = v
	return s
}

// Specifies a tag key, a tag value, or a tag key and value (as a pair) to use
// in a tag-based condition that determines whether an S3 bucket is included
// or excluded from a classification job. Tag keys and values are case sensitive.
// Also, Amazon Macie doesn't support use of partial values or wildcard characters
// in tag-based conditions.
type TagCriterionPairForJob struct {
	_ struct{} `type:"structure"`

	Key *string `locationName:"key" type:"string"`

	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 TagCriterionPairForJob) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagCriterionPairForJob) GoString() string {
	return s.String()
}

// SetKey sets the Key field's value.
func (s *TagCriterionPairForJob) SetKey(v string) *TagCriterionPairForJob {
	s.Key = &v
	return s
}

// SetValue sets the Value field's value.
func (s *TagCriterionPairForJob) SetValue(v string) *TagCriterionPairForJob {
	s.Value = &v
	return s
}

// Specifies the tags (keys and values) to associate with an Amazon Macie resource.
type TagResourceInput struct {
	_ struct{} `type:"structure"`

	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"`

	// A string-to-string map of key-value pairs that specifies the tags (keys and
	// values) for an Amazon Macie resource.
	//
	// Tags is a required field
	Tags map[string]*string `locationName:"tags" type:"map" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagResourceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TagResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TagResourceInput"}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}
	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
	}
	if s.Tags == nil {
		invalidParams.Add(request.NewErrParamRequired("Tags"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceArn sets the ResourceArn field's value.
func (s *TagResourceInput) SetResourceArn(v string) *TagResourceInput {
	s.ResourceArn = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *TagResourceInput) SetTags(v map[string]*string) *TagResourceInput {
	s.Tags = v
	return s
}

// The request succeeded. The specified tags were added or updated for the resource.
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()
}

// Specifies a tag-based condition that determines whether an S3 object is included
// or excluded from a classification job.
type TagScopeTerm struct {
	_ struct{} `type:"structure"`

	// The operator to use in a condition. Depending on the type of condition, possible
	// values are:
	Comparator *string `locationName:"comparator" type:"string" enum:"JobComparator"`

	Key *string `locationName:"key" type:"string"`

	TagValues []*TagValuePair `locationName:"tagValues" type:"list"`

	// The type of object to apply a tag-based condition to. Valid values are:
	Target *string `locationName:"target" type:"string" enum:"TagTarget"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagScopeTerm) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagScopeTerm) GoString() string {
	return s.String()
}

// SetComparator sets the Comparator field's value.
func (s *TagScopeTerm) SetComparator(v string) *TagScopeTerm {
	s.Comparator = &v
	return s
}

// SetKey sets the Key field's value.
func (s *TagScopeTerm) SetKey(v string) *TagScopeTerm {
	s.Key = &v
	return s
}

// SetTagValues sets the TagValues field's value.
func (s *TagScopeTerm) SetTagValues(v []*TagValuePair) *TagScopeTerm {
	s.TagValues = v
	return s
}

// SetTarget sets the Target field's value.
func (s *TagScopeTerm) SetTarget(v string) *TagScopeTerm {
	s.Target = &v
	return s
}

// Specifies a tag key or tag key and value pair to use in a tag-based condition
// that determines whether an S3 object is included or excluded from a classification
// job. Tag keys and values are case sensitive. Also, Amazon Macie doesn't support
// use of partial values or wildcard characters in tag-based conditions.
type TagValuePair struct {
	_ struct{} `type:"structure"`

	Key *string `locationName:"key" type:"string"`

	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 TagValuePair) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagValuePair) GoString() string {
	return s.String()
}

// SetKey sets the Key field's value.
func (s *TagValuePair) SetKey(v string) *TagValuePair {
	s.Key = &v
	return s
}

// SetValue sets the Value field's value.
func (s *TagValuePair) SetValue(v string) *TagValuePair {
	s.Value = &v
	return s
}

// Specifies the detection criteria of a custom data identifier to test.
type TestCustomDataIdentifierInput struct {
	_ struct{} `type:"structure"`

	IgnoreWords []*string `locationName:"ignoreWords" type:"list"`

	Keywords []*string `locationName:"keywords" type:"list"`

	MaximumMatchDistance *int64 `locationName:"maximumMatchDistance" type:"integer"`

	// Regex is a required field
	Regex *string `locationName:"regex" type:"string" required:"true"`

	// SampleText is a required field
	SampleText *string `locationName:"sampleText" 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 TestCustomDataIdentifierInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TestCustomDataIdentifierInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TestCustomDataIdentifierInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TestCustomDataIdentifierInput"}
	if s.Regex == nil {
		invalidParams.Add(request.NewErrParamRequired("Regex"))
	}
	if s.SampleText == nil {
		invalidParams.Add(request.NewErrParamRequired("SampleText"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetIgnoreWords sets the IgnoreWords field's value.
func (s *TestCustomDataIdentifierInput) SetIgnoreWords(v []*string) *TestCustomDataIdentifierInput {
	s.IgnoreWords = v
	return s
}

// SetKeywords sets the Keywords field's value.
func (s *TestCustomDataIdentifierInput) SetKeywords(v []*string) *TestCustomDataIdentifierInput {
	s.Keywords = v
	return s
}

// SetMaximumMatchDistance sets the MaximumMatchDistance field's value.
func (s *TestCustomDataIdentifierInput) SetMaximumMatchDistance(v int64) *TestCustomDataIdentifierInput {
	s.MaximumMatchDistance = &v
	return s
}

// SetRegex sets the Regex field's value.
func (s *TestCustomDataIdentifierInput) SetRegex(v string) *TestCustomDataIdentifierInput {
	s.Regex = &v
	return s
}

// SetSampleText sets the SampleText field's value.
func (s *TestCustomDataIdentifierInput) SetSampleText(v string) *TestCustomDataIdentifierInput {
	s.SampleText = &v
	return s
}

// Provides test results for a custom data identifier.
type TestCustomDataIdentifierOutput struct {
	_ struct{} `type:"structure"`

	MatchCount *int64 `locationName:"matchCount" 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 TestCustomDataIdentifierOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TestCustomDataIdentifierOutput) GoString() string {
	return s.String()
}

// SetMatchCount sets the MatchCount field's value.
func (s *TestCustomDataIdentifierOutput) SetMatchCount(v int64) *TestCustomDataIdentifierOutput {
	s.MatchCount = &v
	return s
}

// Provides information about an error that occurred because too many requests
// were sent during a certain amount of time.
type ThrottlingException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ThrottlingException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ThrottlingException) GoString() string {
	return s.String()
}

func newErrorThrottlingException(v protocol.ResponseMetadata) error {
	return &ThrottlingException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ThrottlingException) Code() string {
	return "ThrottlingException"
}

// Message returns the exception's message.
func (s *ThrottlingException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ThrottlingException) OrigErr() error {
	return nil
}

func (s *ThrottlingException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ThrottlingException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ThrottlingException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Provides information about an error that occurred due to an unprocessable
// entity.
type UnprocessableEntityException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnprocessableEntityException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnprocessableEntityException) GoString() string {
	return s.String()
}

func newErrorUnprocessableEntityException(v protocol.ResponseMetadata) error {
	return &UnprocessableEntityException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *UnprocessableEntityException) Code() string {
	return "UnprocessableEntityException"
}

// Message returns the exception's message.
func (s *UnprocessableEntityException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *UnprocessableEntityException) OrigErr() error {
	return nil
}

func (s *UnprocessableEntityException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *UnprocessableEntityException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *UnprocessableEntityException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Provides information about an account-related request that hasn't been processed.
type UnprocessedAccount struct {
	_ struct{} `type:"structure"`

	AccountId *string `locationName:"accountId" type:"string"`

	// The source of an issue or delay. Possible values are:
	ErrorCode *string `locationName:"errorCode" type:"string" enum:"ErrorCode"`

	ErrorMessage *string `locationName:"errorMessage" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API 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
}

// SetErrorCode sets the ErrorCode field's value.
func (s *UnprocessedAccount) SetErrorCode(v string) *UnprocessedAccount {
	s.ErrorCode = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *UnprocessedAccount) SetErrorMessage(v string) *UnprocessedAccount {
	s.ErrorMessage = &v
	return s
}

type UntagResourceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"`

	// TagKeys is a required field
	TagKeys []*string `location:"querystring" locationName:"tagKeys" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UntagResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}
	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
	}
	if s.TagKeys == nil {
		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceArn sets the ResourceArn field's value.
func (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput {
	s.ResourceArn = &v
	return s
}

// SetTagKeys sets the TagKeys field's value.
func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput {
	s.TagKeys = v
	return s
}

// The request succeeded. The specified tags were removed from the resource.
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()
}

// Changes the settings for an allow list. If you change the list's criteria,
// Amazon Macie tests the new criteria when it processes your request. If the
// criteria specify a regular expression that Macie can't compile or an S3 object
// that Macie can't retrieve or parse, an error occurs.
type UpdateAllowListInput struct {
	_ struct{} `type:"structure"`

	// Specifies the criteria for an allow list. The criteria must specify a regular
	// expression (regex) or an S3 object (s3WordsList). It can't specify both.
	//
	// Criteria is a required field
	Criteria *AllowListCriteria `locationName:"criteria" type:"structure" required:"true"`

	Description *string `locationName:"description" min:"1" type:"string"`

	// Id is a required field
	Id *string `location:"uri" locationName:"id" type:"string" required:"true"`

	// Name is a required field
	Name *string `locationName:"name" 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 UpdateAllowListInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAllowListInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateAllowListInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateAllowListInput"}
	if s.Criteria == nil {
		invalidParams.Add(request.NewErrParamRequired("Criteria"))
	}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.Id == nil {
		invalidParams.Add(request.NewErrParamRequired("Id"))
	}
	if s.Id != nil && len(*s.Id) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Id", 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.Criteria != nil {
		if err := s.Criteria.Validate(); err != nil {
			invalidParams.AddNested("Criteria", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCriteria sets the Criteria field's value.
func (s *UpdateAllowListInput) SetCriteria(v *AllowListCriteria) *UpdateAllowListInput {
	s.Criteria = v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateAllowListInput) SetDescription(v string) *UpdateAllowListInput {
	s.Description = &v
	return s
}

// SetId sets the Id field's value.
func (s *UpdateAllowListInput) SetId(v string) *UpdateAllowListInput {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateAllowListInput) SetName(v string) *UpdateAllowListInput {
	s.Name = &v
	return s
}

// Provides information about an allow list whose settings were changed in response
// to a request.
type UpdateAllowListOutput struct {
	_ struct{} `type:"structure"`

	Arn *string `locationName:"arn" min:"71" type:"string"`

	Id *string `locationName:"id" min:"22" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAllowListOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAllowListOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *UpdateAllowListOutput) SetArn(v string) *UpdateAllowListOutput {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *UpdateAllowListOutput) SetId(v string) *UpdateAllowListOutput {
	s.Id = &v
	return s
}

// Changes the configuration settings and status of automated sensitive data
// discovery for an organization in Amazon Macie or a standalone Macie account.
// To change additional settings, such as the managed data identifiers to use
// when analyzing data, update the sensitivity inspection template and classification
// scope for the organization's Macie administrator account or the standalone
// account.
type UpdateAutomatedDiscoveryConfigurationInput struct {
	_ struct{} `type:"structure"`

	// Specifies whether to automatically enable automated sensitive data discovery
	// for accounts that are part of an organization in Amazon Macie. Valid values
	// are:
	AutoEnableOrganizationMembers *string `locationName:"autoEnableOrganizationMembers" type:"string" enum:"AutoEnableMode"`

	// The status of the automated sensitive data discovery configuration for an
	// organization in Amazon Macie or a standalone Macie account. Valid values
	// are:
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"AutomatedDiscoveryStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAutomatedDiscoveryConfigurationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAutomatedDiscoveryConfigurationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateAutomatedDiscoveryConfigurationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateAutomatedDiscoveryConfigurationInput"}
	if s.Status == nil {
		invalidParams.Add(request.NewErrParamRequired("Status"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAutoEnableOrganizationMembers sets the AutoEnableOrganizationMembers field's value.
func (s *UpdateAutomatedDiscoveryConfigurationInput) SetAutoEnableOrganizationMembers(v string) *UpdateAutomatedDiscoveryConfigurationInput {
	s.AutoEnableOrganizationMembers = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateAutomatedDiscoveryConfigurationInput) SetStatus(v string) *UpdateAutomatedDiscoveryConfigurationInput {
	s.Status = &v
	return s
}

type UpdateAutomatedDiscoveryConfigurationOutput 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 UpdateAutomatedDiscoveryConfigurationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAutomatedDiscoveryConfigurationOutput) GoString() string {
	return s.String()
}

// Changes the status of a classification job. For more information about pausing,
// resuming, or cancelling jobs, see Managing sensitive data discovery jobs
// (https://docs.aws.amazon.com/macie/latest/user/discovery-jobs-manage.html)
// in the Amazon Macie User Guide.
type UpdateClassificationJobInput struct {
	_ struct{} `type:"structure"`

	// JobId is a required field
	JobId *string `location:"uri" locationName:"jobId" type:"string" required:"true"`

	// The status of a classification job. Possible values are:
	//
	// JobStatus is a required field
	JobStatus *string `locationName:"jobStatus" type:"string" required:"true" enum:"JobStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateClassificationJobInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateClassificationJobInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateClassificationJobInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateClassificationJobInput"}
	if s.JobId == nil {
		invalidParams.Add(request.NewErrParamRequired("JobId"))
	}
	if s.JobId != nil && len(*s.JobId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("JobId", 1))
	}
	if s.JobStatus == nil {
		invalidParams.Add(request.NewErrParamRequired("JobStatus"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetJobId sets the JobId field's value.
func (s *UpdateClassificationJobInput) SetJobId(v string) *UpdateClassificationJobInput {
	s.JobId = &v
	return s
}

// SetJobStatus sets the JobStatus field's value.
func (s *UpdateClassificationJobInput) SetJobStatus(v string) *UpdateClassificationJobInput {
	s.JobStatus = &v
	return s
}

type UpdateClassificationJobOutput 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 UpdateClassificationJobOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateClassificationJobOutput) GoString() string {
	return s.String()
}

// Specifies new classification scope settings for an Amazon Macie account.
// Macie uses these settings when it performs automated sensitive data discovery
// for the account. To update the settings, automated sensitive data discovery
// must be enabled for the account.
type UpdateClassificationScopeInput struct {
	_ struct{} `type:"structure"`

	// Id is a required field
	Id *string `location:"uri" locationName:"id" type:"string" required:"true"`

	// Specifies changes to the list of S3 buckets that are excluded from automated
	// sensitive data discovery for an Amazon Macie account.
	S3 *S3ClassificationScopeUpdate `locationName:"s3" 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 UpdateClassificationScopeInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateClassificationScopeInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateClassificationScopeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateClassificationScopeInput"}
	if s.Id == nil {
		invalidParams.Add(request.NewErrParamRequired("Id"))
	}
	if s.Id != nil && len(*s.Id) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
	}
	if s.S3 != nil {
		if err := s.S3.Validate(); err != nil {
			invalidParams.AddNested("S3", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetId sets the Id field's value.
func (s *UpdateClassificationScopeInput) SetId(v string) *UpdateClassificationScopeInput {
	s.Id = &v
	return s
}

// SetS3 sets the S3 field's value.
func (s *UpdateClassificationScopeInput) SetS3(v *S3ClassificationScopeUpdate) *UpdateClassificationScopeInput {
	s.S3 = v
	return s
}

type UpdateClassificationScopeOutput 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 UpdateClassificationScopeOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateClassificationScopeOutput) GoString() string {
	return s.String()
}

// Specifies the criteria and other settings for a findings filter.
type UpdateFindingsFilterInput struct {
	_ struct{} `type:"structure"`

	// The action to perform on findings that match the filter criteria. To suppress
	// (automatically archive) findings that match the criteria, set this value
	// to ARCHIVE. Valid values are:
	Action *string `locationName:"action" type:"string" enum:"FindingsFilterAction"`

	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`

	Description *string `locationName:"description" type:"string"`

	// Specifies, as a map, one or more property-based conditions that filter the
	// results of a query for findings.
	FindingCriteria *FindingCriteria `locationName:"findingCriteria" type:"structure"`

	// Id is a required field
	Id *string `location:"uri" locationName:"id" type:"string" required:"true"`

	Name *string `locationName:"name" type:"string"`

	Position *int64 `locationName:"position" 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 UpdateFindingsFilterInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateFindingsFilterInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateFindingsFilterInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateFindingsFilterInput"}
	if s.Id == nil {
		invalidParams.Add(request.NewErrParamRequired("Id"))
	}
	if s.Id != nil && len(*s.Id) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAction sets the Action field's value.
func (s *UpdateFindingsFilterInput) SetAction(v string) *UpdateFindingsFilterInput {
	s.Action = &v
	return s
}

// SetClientToken sets the ClientToken field's value.
func (s *UpdateFindingsFilterInput) SetClientToken(v string) *UpdateFindingsFilterInput {
	s.ClientToken = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateFindingsFilterInput) SetDescription(v string) *UpdateFindingsFilterInput {
	s.Description = &v
	return s
}

// SetFindingCriteria sets the FindingCriteria field's value.
func (s *UpdateFindingsFilterInput) SetFindingCriteria(v *FindingCriteria) *UpdateFindingsFilterInput {
	s.FindingCriteria = v
	return s
}

// SetId sets the Id field's value.
func (s *UpdateFindingsFilterInput) SetId(v string) *UpdateFindingsFilterInput {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateFindingsFilterInput) SetName(v string) *UpdateFindingsFilterInput {
	s.Name = &v
	return s
}

// SetPosition sets the Position field's value.
func (s *UpdateFindingsFilterInput) SetPosition(v int64) *UpdateFindingsFilterInput {
	s.Position = &v
	return s
}

// Provides information about a findings filter that was updated in response
// to a request.
type UpdateFindingsFilterOutput struct {
	_ struct{} `type:"structure"`

	Arn *string `locationName:"arn" type:"string"`

	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 UpdateFindingsFilterOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateFindingsFilterOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *UpdateFindingsFilterOutput) SetArn(v string) *UpdateFindingsFilterOutput {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *UpdateFindingsFilterOutput) SetId(v string) *UpdateFindingsFilterOutput {
	s.Id = &v
	return s
}

// Changes the status or configuration settings for an Amazon Macie account.
type UpdateMacieSessionInput struct {
	_ struct{} `type:"structure"`

	// The frequency with which Amazon Macie publishes updates to policy findings
	// for an account. This includes publishing updates to Security Hub and Amazon
	// EventBridge (formerly Amazon CloudWatch Events). For more information, see
	// Monitoring and processing findings (https://docs.aws.amazon.com/macie/latest/user/findings-monitor.html)
	// in the Amazon Macie User Guide. Valid values are:
	FindingPublishingFrequency *string `locationName:"findingPublishingFrequency" type:"string" enum:"FindingPublishingFrequency"`

	// The status of an Amazon Macie account. Valid values are:
	Status *string `locationName:"status" type:"string" enum:"MacieStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateMacieSessionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateMacieSessionInput) GoString() string {
	return s.String()
}

// SetFindingPublishingFrequency sets the FindingPublishingFrequency field's value.
func (s *UpdateMacieSessionInput) SetFindingPublishingFrequency(v string) *UpdateMacieSessionInput {
	s.FindingPublishingFrequency = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateMacieSessionInput) SetStatus(v string) *UpdateMacieSessionInput {
	s.Status = &v
	return s
}

type UpdateMacieSessionOutput 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 UpdateMacieSessionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateMacieSessionOutput) GoString() string {
	return s.String()
}

// Suspends (pauses) or re-enables Amazon Macie for a member account.
type UpdateMemberSessionInput struct {
	_ struct{} `type:"structure"`

	// Id is a required field
	Id *string `location:"uri" locationName:"id" type:"string" required:"true"`

	// The status of an Amazon Macie account. Valid values are:
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"MacieStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateMemberSessionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateMemberSessionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateMemberSessionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateMemberSessionInput"}
	if s.Id == nil {
		invalidParams.Add(request.NewErrParamRequired("Id"))
	}
	if s.Id != nil && len(*s.Id) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
	}
	if s.Status == nil {
		invalidParams.Add(request.NewErrParamRequired("Status"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetId sets the Id field's value.
func (s *UpdateMemberSessionInput) SetId(v string) *UpdateMemberSessionInput {
	s.Id = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateMemberSessionInput) SetStatus(v string) *UpdateMemberSessionInput {
	s.Status = &v
	return s
}

type UpdateMemberSessionOutput 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 UpdateMemberSessionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateMemberSessionOutput) GoString() string {
	return s.String()
}

// Specifies whether to enable Amazon Macie automatically for accounts that
// are added to an organization in Organizations, when the accounts are added
// to the organization.
type UpdateOrganizationConfigurationInput struct {
	_ struct{} `type:"structure"`

	// 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 UpdateOrganizationConfigurationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateOrganizationConfigurationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateOrganizationConfigurationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateOrganizationConfigurationInput"}
	if s.AutoEnable == nil {
		invalidParams.Add(request.NewErrParamRequired("AutoEnable"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAutoEnable sets the AutoEnable field's value.
func (s *UpdateOrganizationConfigurationInput) SetAutoEnable(v bool) *UpdateOrganizationConfigurationInput {
	s.AutoEnable = &v
	return s
}

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()
}

// Updates the sensitivity scoring settings for an S3 bucket that Amazon Macie
// monitors and analyzes for an account. The settings specify whether to exclude
// or include occurrences of specific types of sensitive data in the bucket's
// sensitivity score. To update the settings, automated sensitive data discovery
// must be enabled for the account.
type UpdateResourceProfileDetectionsInput struct {
	_ struct{} `type:"structure"`

	// ResourceArn is a required field
	ResourceArn *string `location:"querystring" locationName:"resourceArn" type:"string" required:"true"`

	SuppressDataIdentifiers []*SuppressDataIdentifier `locationName:"suppressDataIdentifiers" 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 UpdateResourceProfileDetectionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateResourceProfileDetectionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateResourceProfileDetectionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateResourceProfileDetectionsInput"}
	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 *UpdateResourceProfileDetectionsInput) SetResourceArn(v string) *UpdateResourceProfileDetectionsInput {
	s.ResourceArn = &v
	return s
}

// SetSuppressDataIdentifiers sets the SuppressDataIdentifiers field's value.
func (s *UpdateResourceProfileDetectionsInput) SetSuppressDataIdentifiers(v []*SuppressDataIdentifier) *UpdateResourceProfileDetectionsInput {
	s.SuppressDataIdentifiers = v
	return s
}

type UpdateResourceProfileDetectionsOutput 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 UpdateResourceProfileDetectionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateResourceProfileDetectionsOutput) GoString() string {
	return s.String()
}

// Specifies a new sensitivity score for an S3 bucket that Amazon Macie monitors
// and analyzes for an account. To update the score, automated sensitive data
// discovery must be enabled for the account.
type UpdateResourceProfileInput struct {
	_ struct{} `type:"structure"`

	// ResourceArn is a required field
	ResourceArn *string `location:"querystring" locationName:"resourceArn" type:"string" required:"true"`

	SensitivityScoreOverride *int64 `locationName:"sensitivityScoreOverride" 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 UpdateResourceProfileInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateResourceProfileInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateResourceProfileInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateResourceProfileInput"}
	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 *UpdateResourceProfileInput) SetResourceArn(v string) *UpdateResourceProfileInput {
	s.ResourceArn = &v
	return s
}

// SetSensitivityScoreOverride sets the SensitivityScoreOverride field's value.
func (s *UpdateResourceProfileInput) SetSensitivityScoreOverride(v int64) *UpdateResourceProfileInput {
	s.SensitivityScoreOverride = &v
	return s
}

type UpdateResourceProfileOutput 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 UpdateResourceProfileOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateResourceProfileOutput) GoString() string {
	return s.String()
}

// Specifies the access method and settings to use when retrieving occurrences
// of sensitive data reported by findings. If your request specifies an Identity
// and Access Management (IAM) role to assume, Amazon Macie verifies that the
// role exists and the attached policies are configured correctly. If there's
// an issue, Macie returns an error. For information about addressing the issue,
// see Configuration options and requirements for retrieving sensitive data
// samples (https://docs.aws.amazon.com/macie/latest/user/findings-retrieve-sd-options.html)
// in the Amazon Macie User Guide.
type UpdateRetrievalConfiguration struct {
	_ struct{} `type:"structure"`

	// The access method to use when retrieving occurrences of sensitive data reported
	// by findings. Valid values are:
	//
	// RetrievalMode is a required field
	RetrievalMode *string `locationName:"retrievalMode" type:"string" required:"true" enum:"RetrievalMode"`

	RoleName *string `locationName:"roleName" 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 UpdateRetrievalConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateRetrievalConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateRetrievalConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateRetrievalConfiguration"}
	if s.RetrievalMode == nil {
		invalidParams.Add(request.NewErrParamRequired("RetrievalMode"))
	}
	if s.RoleName != nil && len(*s.RoleName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RoleName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRetrievalMode sets the RetrievalMode field's value.
func (s *UpdateRetrievalConfiguration) SetRetrievalMode(v string) *UpdateRetrievalConfiguration {
	s.RetrievalMode = &v
	return s
}

// SetRoleName sets the RoleName field's value.
func (s *UpdateRetrievalConfiguration) SetRoleName(v string) *UpdateRetrievalConfiguration {
	s.RoleName = &v
	return s
}

// Specifies configuration settings for retrieving occurrences of sensitive
// data reported by findings, and the status of the configuration for an Amazon
// Macie account. If you don't specify retrievalConfiguration settings for an
// existing configuration, Macie sets the access method to CALLER_CREDENTIALS.
// If your current access method is ASSUME_ROLE, Macie also deletes the external
// ID and role name currently specified for the configuration. To keep these
// settings for an existing configuration, specify your current retrievalConfiguration
// settings in your request.
type UpdateRevealConfigurationInput struct {
	_ struct{} `type:"structure"`

	// Specifies the status of the Amazon Macie configuration for retrieving occurrences
	// of sensitive data reported by findings, and the Key Management Service (KMS)
	// key to use to encrypt sensitive data that's retrieved. When you enable the
	// configuration for the first time, your request must specify an KMS key. Otherwise,
	// an error occurs.
	//
	// Configuration is a required field
	Configuration *RevealConfiguration `locationName:"configuration" type:"structure" required:"true"`

	// Specifies the access method and settings to use when retrieving occurrences
	// of sensitive data reported by findings. If your request specifies an Identity
	// and Access Management (IAM) role to assume, Amazon Macie verifies that the
	// role exists and the attached policies are configured correctly. If there's
	// an issue, Macie returns an error. For information about addressing the issue,
	// see Configuration options and requirements for retrieving sensitive data
	// samples (https://docs.aws.amazon.com/macie/latest/user/findings-retrieve-sd-options.html)
	// in the Amazon Macie User Guide.
	RetrievalConfiguration *UpdateRetrievalConfiguration `locationName:"retrievalConfiguration" 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 UpdateRevealConfigurationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateRevealConfigurationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateRevealConfigurationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateRevealConfigurationInput"}
	if s.Configuration == nil {
		invalidParams.Add(request.NewErrParamRequired("Configuration"))
	}
	if s.Configuration != nil {
		if err := s.Configuration.Validate(); err != nil {
			invalidParams.AddNested("Configuration", err.(request.ErrInvalidParams))
		}
	}
	if s.RetrievalConfiguration != nil {
		if err := s.RetrievalConfiguration.Validate(); err != nil {
			invalidParams.AddNested("RetrievalConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConfiguration sets the Configuration field's value.
func (s *UpdateRevealConfigurationInput) SetConfiguration(v *RevealConfiguration) *UpdateRevealConfigurationInput {
	s.Configuration = v
	return s
}

// SetRetrievalConfiguration sets the RetrievalConfiguration field's value.
func (s *UpdateRevealConfigurationInput) SetRetrievalConfiguration(v *UpdateRetrievalConfiguration) *UpdateRevealConfigurationInput {
	s.RetrievalConfiguration = v
	return s
}

// Provides information about updated configuration settings for retrieving
// occurrences of sensitive data reported by findings, and the status of the
// configuration for an Amazon Macie account.
type UpdateRevealConfigurationOutput struct {
	_ struct{} `type:"structure"`

	// Specifies the status of the Amazon Macie configuration for retrieving occurrences
	// of sensitive data reported by findings, and the Key Management Service (KMS)
	// key to use to encrypt sensitive data that's retrieved. When you enable the
	// configuration for the first time, your request must specify an KMS key. Otherwise,
	// an error occurs.
	Configuration *RevealConfiguration `locationName:"configuration" type:"structure"`

	// Provides information about the access method and settings that are used to
	// retrieve occurrences of sensitive data reported by findings.
	RetrievalConfiguration *RetrievalConfiguration `locationName:"retrievalConfiguration" 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 UpdateRevealConfigurationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateRevealConfigurationOutput) GoString() string {
	return s.String()
}

// SetConfiguration sets the Configuration field's value.
func (s *UpdateRevealConfigurationOutput) SetConfiguration(v *RevealConfiguration) *UpdateRevealConfigurationOutput {
	s.Configuration = v
	return s
}

// SetRetrievalConfiguration sets the RetrievalConfiguration field's value.
func (s *UpdateRevealConfigurationOutput) SetRetrievalConfiguration(v *RetrievalConfiguration) *UpdateRevealConfigurationOutput {
	s.RetrievalConfiguration = v
	return s
}

// Specifies settings for the sensitivity inspection template for an Amazon
// Macie account. To update the settings, automated sensitive data discovery
// must be enabled for the account.
type UpdateSensitivityInspectionTemplateInput struct {
	_ struct{} `type:"structure"`

	Description *string `locationName:"description" type:"string"`

	// Specifies managed data identifiers to exclude (not use) when performing automated
	// sensitive data discovery. For information about the managed data identifiers
	// that Amazon Macie currently provides, see Using managed data identifiers
	// (https://docs.aws.amazon.com/macie/latest/user/managed-data-identifiers.html)
	// in the Amazon Macie User Guide.
	Excludes *SensitivityInspectionTemplateExcludes `locationName:"excludes" type:"structure"`

	// Id is a required field
	Id *string `location:"uri" locationName:"id" type:"string" required:"true"`

	// Specifies the allow lists, custom data identifiers, and managed data identifiers
	// to include (use) when performing automated sensitive data discovery. The
	// configuration must specify at least one custom data identifier or managed
	// data identifier. For information about the managed data identifiers that
	// Amazon Macie currently provides, see Using managed data identifiers (https://docs.aws.amazon.com/macie/latest/user/managed-data-identifiers.html)
	// in the Amazon Macie User Guide.
	Includes *SensitivityInspectionTemplateIncludes `locationName:"includes" 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 UpdateSensitivityInspectionTemplateInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSensitivityInspectionTemplateInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateSensitivityInspectionTemplateInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateSensitivityInspectionTemplateInput"}
	if s.Id == nil {
		invalidParams.Add(request.NewErrParamRequired("Id"))
	}
	if s.Id != nil && len(*s.Id) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *UpdateSensitivityInspectionTemplateInput) SetDescription(v string) *UpdateSensitivityInspectionTemplateInput {
	s.Description = &v
	return s
}

// SetExcludes sets the Excludes field's value.
func (s *UpdateSensitivityInspectionTemplateInput) SetExcludes(v *SensitivityInspectionTemplateExcludes) *UpdateSensitivityInspectionTemplateInput {
	s.Excludes = v
	return s
}

// SetId sets the Id field's value.
func (s *UpdateSensitivityInspectionTemplateInput) SetId(v string) *UpdateSensitivityInspectionTemplateInput {
	s.Id = &v
	return s
}

// SetIncludes sets the Includes field's value.
func (s *UpdateSensitivityInspectionTemplateInput) SetIncludes(v *SensitivityInspectionTemplateIncludes) *UpdateSensitivityInspectionTemplateInput {
	s.Includes = v
	return s
}

type UpdateSensitivityInspectionTemplateOutput 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 UpdateSensitivityInspectionTemplateOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSensitivityInspectionTemplateOutput) GoString() string {
	return s.String()
}

// Provides data for a specific usage metric and the corresponding quota for
// an Amazon Macie account.
type UsageByAccount struct {
	_ struct{} `type:"structure"`

	// The type of currency that the data for an Amazon Macie usage metric is reported
	// in. Possible values are:
	Currency *string `locationName:"currency" type:"string" enum:"Currency"`

	EstimatedCost *string `locationName:"estimatedCost" type:"string"`

	// Specifies a current quota for an Amazon Macie account.
	ServiceLimit *ServiceLimit `locationName:"serviceLimit" type:"structure"`

	// The name of an Amazon Macie usage metric for an account. Possible values
	// are:
	Type *string `locationName:"type" type:"string" enum:"UsageType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UsageByAccount) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UsageByAccount) GoString() string {
	return s.String()
}

// SetCurrency sets the Currency field's value.
func (s *UsageByAccount) SetCurrency(v string) *UsageByAccount {
	s.Currency = &v
	return s
}

// SetEstimatedCost sets the EstimatedCost field's value.
func (s *UsageByAccount) SetEstimatedCost(v string) *UsageByAccount {
	s.EstimatedCost = &v
	return s
}

// SetServiceLimit sets the ServiceLimit field's value.
func (s *UsageByAccount) SetServiceLimit(v *ServiceLimit) *UsageByAccount {
	s.ServiceLimit = v
	return s
}

// SetType sets the Type field's value.
func (s *UsageByAccount) SetType(v string) *UsageByAccount {
	s.Type = &v
	return s
}

// Provides quota and aggregated usage data for an Amazon Macie account.
type UsageRecord struct {
	_ struct{} `type:"structure"`

	AccountId *string `locationName:"accountId" type:"string"`

	AutomatedDiscoveryFreeTrialStartDate *time.Time `locationName:"automatedDiscoveryFreeTrialStartDate" type:"timestamp" timestampFormat:"iso8601"`

	FreeTrialStartDate *time.Time `locationName:"freeTrialStartDate" type:"timestamp" timestampFormat:"iso8601"`

	Usage []*UsageByAccount `locationName:"usage" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UsageRecord) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UsageRecord) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *UsageRecord) SetAccountId(v string) *UsageRecord {
	s.AccountId = &v
	return s
}

// SetAutomatedDiscoveryFreeTrialStartDate sets the AutomatedDiscoveryFreeTrialStartDate field's value.
func (s *UsageRecord) SetAutomatedDiscoveryFreeTrialStartDate(v time.Time) *UsageRecord {
	s.AutomatedDiscoveryFreeTrialStartDate = &v
	return s
}

// SetFreeTrialStartDate sets the FreeTrialStartDate field's value.
func (s *UsageRecord) SetFreeTrialStartDate(v time.Time) *UsageRecord {
	s.FreeTrialStartDate = &v
	return s
}

// SetUsage sets the Usage field's value.
func (s *UsageRecord) SetUsage(v []*UsageByAccount) *UsageRecord {
	s.Usage = v
	return s
}

// Specifies a condition for filtering the results of a query for quota and
// usage data for one or more Amazon Macie accounts.
type UsageStatisticsFilter struct {
	_ struct{} `type:"structure"`

	// The operator to use in a condition that filters the results of a query for
	// Amazon Macie account quotas and usage data. Valid values are:
	Comparator *string `locationName:"comparator" type:"string" enum:"UsageStatisticsFilterComparator"`

	// The field to use in a condition that filters the results of a query for Amazon
	// Macie account quotas and usage data. Valid values are:
	Key *string `locationName:"key" type:"string" enum:"UsageStatisticsFilterKey"`

	Values []*string `locationName:"values" 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 UsageStatisticsFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UsageStatisticsFilter) GoString() string {
	return s.String()
}

// SetComparator sets the Comparator field's value.
func (s *UsageStatisticsFilter) SetComparator(v string) *UsageStatisticsFilter {
	s.Comparator = &v
	return s
}

// SetKey sets the Key field's value.
func (s *UsageStatisticsFilter) SetKey(v string) *UsageStatisticsFilter {
	s.Key = &v
	return s
}

// SetValues sets the Values field's value.
func (s *UsageStatisticsFilter) SetValues(v []*string) *UsageStatisticsFilter {
	s.Values = v
	return s
}

// Specifies criteria for sorting the results of a query for Amazon Macie account
// quotas and usage data.
type UsageStatisticsSortBy struct {
	_ struct{} `type:"structure"`

	// The field to use to sort the results of a query for Amazon Macie account
	// quotas and usage data. Valid values are:
	Key *string `locationName:"key" type:"string" enum:"UsageStatisticsSortKey"`

	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 UsageStatisticsSortBy) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UsageStatisticsSortBy) GoString() string {
	return s.String()
}

// SetKey sets the Key field's value.
func (s *UsageStatisticsSortBy) SetKey(v string) *UsageStatisticsSortBy {
	s.Key = &v
	return s
}

// SetOrderBy sets the OrderBy field's value.
func (s *UsageStatisticsSortBy) SetOrderBy(v string) *UsageStatisticsSortBy {
	s.OrderBy = &v
	return s
}

// Provides aggregated data for an Amazon Macie usage metric. The value for
// the metric reports estimated usage data for an account for the preceding
// 30 days or the current calendar month to date, depending on the time period
// (timeRange) specified in the request.
type UsageTotal struct {
	_ struct{} `type:"structure"`

	// The type of currency that the data for an Amazon Macie usage metric is reported
	// in. Possible values are:
	Currency *string `locationName:"currency" type:"string" enum:"Currency"`

	EstimatedCost *string `locationName:"estimatedCost" type:"string"`

	// The name of an Amazon Macie usage metric for an account. Possible values
	// are:
	Type *string `locationName:"type" type:"string" enum:"UsageType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UsageTotal) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UsageTotal) GoString() string {
	return s.String()
}

// SetCurrency sets the Currency field's value.
func (s *UsageTotal) SetCurrency(v string) *UsageTotal {
	s.Currency = &v
	return s
}

// SetEstimatedCost sets the EstimatedCost field's value.
func (s *UsageTotal) SetEstimatedCost(v string) *UsageTotal {
	s.EstimatedCost = &v
	return s
}

// SetType sets the Type field's value.
func (s *UsageTotal) SetType(v string) *UsageTotal {
	s.Type = &v
	return s
}

// Provides information about the type and other characteristics of an entity
// that performed an action on an affected resource.
type UserIdentity struct {
	_ struct{} `type:"structure"`

	// Provides information about an identity that performed an action on an affected
	// resource by using temporary security credentials. The credentials were obtained
	// using the AssumeRole operation of the Security Token Service (STS) API.
	AssumedRole *AssumedRole `locationName:"assumedRole" type:"structure"`

	// Provides information about an Amazon Web Services account and entity that
	// performed an action on an affected resource. The action was performed using
	// the credentials for an Amazon Web Services account other than your own account.
	AwsAccount *AwsAccount `locationName:"awsAccount" type:"structure"`

	// Provides information about an Amazon Web Service that performed an action
	// on an affected resource.
	AwsService *AwsService `locationName:"awsService" type:"structure"`

	// Provides information about an identity that performed an action on an affected
	// resource by using temporary security credentials. The credentials were obtained
	// using the GetFederationToken operation of the Security Token Service (STS)
	// API.
	FederatedUser *FederatedUser `locationName:"federatedUser" type:"structure"`

	// Provides information about an Identity and Access Management (IAM) user who
	// performed an action on an affected resource.
	IamUser *IamUser `locationName:"iamUser" type:"structure"`

	// Provides information about an Amazon Web Services account and entity that
	// performed an action on an affected resource. The action was performed using
	// the credentials for your Amazon Web Services account.
	Root *UserIdentityRoot `locationName:"root" type:"structure"`

	// The type of entity that performed the action on the affected resource. Possible
	// values are:
	Type *string `locationName:"type" type:"string" enum:"UserIdentityType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserIdentity) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserIdentity) GoString() string {
	return s.String()
}

// SetAssumedRole sets the AssumedRole field's value.
func (s *UserIdentity) SetAssumedRole(v *AssumedRole) *UserIdentity {
	s.AssumedRole = v
	return s
}

// SetAwsAccount sets the AwsAccount field's value.
func (s *UserIdentity) SetAwsAccount(v *AwsAccount) *UserIdentity {
	s.AwsAccount = v
	return s
}

// SetAwsService sets the AwsService field's value.
func (s *UserIdentity) SetAwsService(v *AwsService) *UserIdentity {
	s.AwsService = v
	return s
}

// SetFederatedUser sets the FederatedUser field's value.
func (s *UserIdentity) SetFederatedUser(v *FederatedUser) *UserIdentity {
	s.FederatedUser = v
	return s
}

// SetIamUser sets the IamUser field's value.
func (s *UserIdentity) SetIamUser(v *IamUser) *UserIdentity {
	s.IamUser = v
	return s
}

// SetRoot sets the Root field's value.
func (s *UserIdentity) SetRoot(v *UserIdentityRoot) *UserIdentity {
	s.Root = v
	return s
}

// SetType sets the Type field's value.
func (s *UserIdentity) SetType(v string) *UserIdentity {
	s.Type = &v
	return s
}

// Provides information about an Amazon Web Services account and entity that
// performed an action on an affected resource. The action was performed using
// the credentials for your Amazon Web Services account.
type UserIdentityRoot struct {
	_ struct{} `type:"structure"`

	AccountId *string `locationName:"accountId" type:"string"`

	Arn *string `locationName:"arn" type:"string"`

	PrincipalId *string `locationName:"principalId" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserIdentityRoot) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserIdentityRoot) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *UserIdentityRoot) SetAccountId(v string) *UserIdentityRoot {
	s.AccountId = &v
	return s
}

// SetArn sets the Arn field's value.
func (s *UserIdentityRoot) SetArn(v string) *UserIdentityRoot {
	s.Arn = &v
	return s
}

// SetPrincipalId sets the PrincipalId field's value.
func (s *UserIdentityRoot) SetPrincipalId(v string) *UserIdentityRoot {
	s.PrincipalId = &v
	return s
}

// Provides information about when a classification job was paused. For a one-time
// job, this object also specifies when the job will expire and be cancelled
// if it isn't resumed. For a recurring job, this object also specifies when
// the paused job run will expire and be cancelled if it isn't resumed. This
// object is present only if a job's current status (jobStatus) is USER_PAUSED.
// The information in this object applies only to a job that was paused while
// it had a status of RUNNING.
type UserPausedDetails struct {
	_ struct{} `type:"structure"`

	JobExpiresAt *time.Time `locationName:"jobExpiresAt" type:"timestamp" timestampFormat:"iso8601"`

	JobImminentExpirationHealthEventArn *string `locationName:"jobImminentExpirationHealthEventArn" type:"string"`

	JobPausedAt *time.Time `locationName:"jobPausedAt" type:"timestamp" timestampFormat:"iso8601"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserPausedDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserPausedDetails) GoString() string {
	return s.String()
}

// SetJobExpiresAt sets the JobExpiresAt field's value.
func (s *UserPausedDetails) SetJobExpiresAt(v time.Time) *UserPausedDetails {
	s.JobExpiresAt = &v
	return s
}

// SetJobImminentExpirationHealthEventArn sets the JobImminentExpirationHealthEventArn field's value.
func (s *UserPausedDetails) SetJobImminentExpirationHealthEventArn(v string) *UserPausedDetails {
	s.JobImminentExpirationHealthEventArn = &v
	return s
}

// SetJobPausedAt sets the JobPausedAt field's value.
func (s *UserPausedDetails) SetJobPausedAt(v time.Time) *UserPausedDetails {
	s.JobPausedAt = &v
	return s
}

// Provides information about an error that occurred due to a syntax error in
// a request.
type ValidationException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ValidationException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ValidationException) GoString() string {
	return s.String()
}

func newErrorValidationException(v protocol.ResponseMetadata) error {
	return &ValidationException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ValidationException) Code() string {
	return "ValidationException"
}

// Message returns the exception's message.
func (s *ValidationException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ValidationException) OrigErr() error {
	return nil
}

func (s *ValidationException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ValidationException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ValidationException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Specifies a weekly recurrence pattern for running a classification job.
type WeeklySchedule struct {
	_ struct{} `type:"structure"`

	DayOfWeek *string `locationName:"dayOfWeek" type:"string" enum:"DayOfWeek"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s WeeklySchedule) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s WeeklySchedule) GoString() string {
	return s.String()
}

// SetDayOfWeek sets the DayOfWeek field's value.
func (s *WeeklySchedule) SetDayOfWeek(v string) *WeeklySchedule {
	s.DayOfWeek = &v
	return s
}

// The current status of an account as the delegated Amazon Macie administrator
// account for an organization in Organizations. Possible values are:
const (
	// AdminStatusEnabled is a AdminStatus enum value
	AdminStatusEnabled = "ENABLED"

	// AdminStatusDisablingInProgress is a AdminStatus enum value
	AdminStatusDisablingInProgress = "DISABLING_IN_PROGRESS"
)

// AdminStatus_Values returns all elements of the AdminStatus enum
func AdminStatus_Values() []string {
	return []string{
		AdminStatusEnabled,
		AdminStatusDisablingInProgress,
	}
}

// Indicates the current status of an allow list. Depending on the type of criteria
// that the list specifies, possible values are:
const (
	// AllowListStatusCodeOk is a AllowListStatusCode enum value
	AllowListStatusCodeOk = "OK"

	// AllowListStatusCodeS3ObjectNotFound is a AllowListStatusCode enum value
	AllowListStatusCodeS3ObjectNotFound = "S3_OBJECT_NOT_FOUND"

	// AllowListStatusCodeS3UserAccessDenied is a AllowListStatusCode enum value
	AllowListStatusCodeS3UserAccessDenied = "S3_USER_ACCESS_DENIED"

	// AllowListStatusCodeS3ObjectAccessDenied is a AllowListStatusCode enum value
	AllowListStatusCodeS3ObjectAccessDenied = "S3_OBJECT_ACCESS_DENIED"

	// AllowListStatusCodeS3Throttled is a AllowListStatusCode enum value
	AllowListStatusCodeS3Throttled = "S3_THROTTLED"

	// AllowListStatusCodeS3ObjectOversize is a AllowListStatusCode enum value
	AllowListStatusCodeS3ObjectOversize = "S3_OBJECT_OVERSIZE"

	// AllowListStatusCodeS3ObjectEmpty is a AllowListStatusCode enum value
	AllowListStatusCodeS3ObjectEmpty = "S3_OBJECT_EMPTY"

	// AllowListStatusCodeUnknownError is a AllowListStatusCode enum value
	AllowListStatusCodeUnknownError = "UNKNOWN_ERROR"
)

// AllowListStatusCode_Values returns all elements of the AllowListStatusCode enum
func AllowListStatusCode_Values() []string {
	return []string{
		AllowListStatusCodeOk,
		AllowListStatusCodeS3ObjectNotFound,
		AllowListStatusCodeS3UserAccessDenied,
		AllowListStatusCodeS3ObjectAccessDenied,
		AllowListStatusCodeS3Throttled,
		AllowListStatusCodeS3ObjectOversize,
		AllowListStatusCodeS3ObjectEmpty,
		AllowListStatusCodeUnknownError,
	}
}

const (
	// AllowsUnencryptedObjectUploadsTrue is a AllowsUnencryptedObjectUploads enum value
	AllowsUnencryptedObjectUploadsTrue = "TRUE"

	// AllowsUnencryptedObjectUploadsFalse is a AllowsUnencryptedObjectUploads enum value
	AllowsUnencryptedObjectUploadsFalse = "FALSE"

	// AllowsUnencryptedObjectUploadsUnknown is a AllowsUnencryptedObjectUploads enum value
	AllowsUnencryptedObjectUploadsUnknown = "UNKNOWN"
)

// AllowsUnencryptedObjectUploads_Values returns all elements of the AllowsUnencryptedObjectUploads enum
func AllowsUnencryptedObjectUploads_Values() []string {
	return []string{
		AllowsUnencryptedObjectUploadsTrue,
		AllowsUnencryptedObjectUploadsFalse,
		AllowsUnencryptedObjectUploadsUnknown,
	}
}

// Specifies whether to automatically enable automated sensitive data discovery
// for accounts that are part of an organization in Amazon Macie. Valid values
// are:
const (
	// AutoEnableModeAll is a AutoEnableMode enum value
	AutoEnableModeAll = "ALL"

	// AutoEnableModeNew is a AutoEnableMode enum value
	AutoEnableModeNew = "NEW"

	// AutoEnableModeNone is a AutoEnableMode enum value
	AutoEnableModeNone = "NONE"
)

// AutoEnableMode_Values returns all elements of the AutoEnableMode enum
func AutoEnableMode_Values() []string {
	return []string{
		AutoEnableModeAll,
		AutoEnableModeNew,
		AutoEnableModeNone,
	}
}

// The status of automated sensitive data discovery for an Amazon Macie account.
// Valid values are:
const (
	// AutomatedDiscoveryAccountStatusEnabled is a AutomatedDiscoveryAccountStatus enum value
	AutomatedDiscoveryAccountStatusEnabled = "ENABLED"

	// AutomatedDiscoveryAccountStatusDisabled is a AutomatedDiscoveryAccountStatus enum value
	AutomatedDiscoveryAccountStatusDisabled = "DISABLED"
)

// AutomatedDiscoveryAccountStatus_Values returns all elements of the AutomatedDiscoveryAccountStatus enum
func AutomatedDiscoveryAccountStatus_Values() []string {
	return []string{
		AutomatedDiscoveryAccountStatusEnabled,
		AutomatedDiscoveryAccountStatusDisabled,
	}
}

// The error code that indicates why a request failed to change the status of
// automated sensitive data discovery for an Amazon Macie account. Possible
// values are:
const (
	// AutomatedDiscoveryAccountUpdateErrorCodeAccountPaused is a AutomatedDiscoveryAccountUpdateErrorCode enum value
	AutomatedDiscoveryAccountUpdateErrorCodeAccountPaused = "ACCOUNT_PAUSED"

	// AutomatedDiscoveryAccountUpdateErrorCodeAccountNotFound is a AutomatedDiscoveryAccountUpdateErrorCode enum value
	AutomatedDiscoveryAccountUpdateErrorCodeAccountNotFound = "ACCOUNT_NOT_FOUND"
)

// AutomatedDiscoveryAccountUpdateErrorCode_Values returns all elements of the AutomatedDiscoveryAccountUpdateErrorCode enum
func AutomatedDiscoveryAccountUpdateErrorCode_Values() []string {
	return []string{
		AutomatedDiscoveryAccountUpdateErrorCodeAccountPaused,
		AutomatedDiscoveryAccountUpdateErrorCodeAccountNotFound,
	}
}

// Specifies whether automated sensitive data discovery is currently configured
// to analyze objects in an S3 bucket. Possible values are:
const (
	// AutomatedDiscoveryMonitoringStatusMonitored is a AutomatedDiscoveryMonitoringStatus enum value
	AutomatedDiscoveryMonitoringStatusMonitored = "MONITORED"

	// AutomatedDiscoveryMonitoringStatusNotMonitored is a AutomatedDiscoveryMonitoringStatus enum value
	AutomatedDiscoveryMonitoringStatusNotMonitored = "NOT_MONITORED"
)

// AutomatedDiscoveryMonitoringStatus_Values returns all elements of the AutomatedDiscoveryMonitoringStatus enum
func AutomatedDiscoveryMonitoringStatus_Values() []string {
	return []string{
		AutomatedDiscoveryMonitoringStatusMonitored,
		AutomatedDiscoveryMonitoringStatusNotMonitored,
	}
}

// The status of the automated sensitive data discovery configuration for an
// organization in Amazon Macie or a standalone Macie account. Valid values
// are:
const (
	// AutomatedDiscoveryStatusEnabled is a AutomatedDiscoveryStatus enum value
	AutomatedDiscoveryStatusEnabled = "ENABLED"

	// AutomatedDiscoveryStatusDisabled is a AutomatedDiscoveryStatus enum value
	AutomatedDiscoveryStatusDisabled = "DISABLED"
)

// AutomatedDiscoveryStatus_Values returns all elements of the AutomatedDiscoveryStatus enum
func AutomatedDiscoveryStatus_Values() []string {
	return []string{
		AutomatedDiscoveryStatusEnabled,
		AutomatedDiscoveryStatusDisabled,
	}
}

// Specifies whether occurrences of sensitive data can be retrieved for a finding.
// Possible values are:
const (
	// AvailabilityCodeAvailable is a AvailabilityCode enum value
	AvailabilityCodeAvailable = "AVAILABLE"

	// AvailabilityCodeUnavailable is a AvailabilityCode enum value
	AvailabilityCodeUnavailable = "UNAVAILABLE"
)

// AvailabilityCode_Values returns all elements of the AvailabilityCode enum
func AvailabilityCode_Values() []string {
	return []string{
		AvailabilityCodeAvailable,
		AvailabilityCodeUnavailable,
	}
}

// The error code for an error that prevented Amazon Macie from retrieving and
// processing information about an S3 bucket and the bucket's objects.
const (
	// BucketMetadataErrorCodeAccessDenied is a BucketMetadataErrorCode enum value
	BucketMetadataErrorCodeAccessDenied = "ACCESS_DENIED"
)

// BucketMetadataErrorCode_Values returns all elements of the BucketMetadataErrorCode enum
func BucketMetadataErrorCode_Values() []string {
	return []string{
		BucketMetadataErrorCodeAccessDenied,
	}
}

// Specifies how to apply changes to the S3 bucket exclusion list defined by
// the classification scope for an Amazon Macie account. Valid values are:
const (
	// ClassificationScopeUpdateOperationAdd is a ClassificationScopeUpdateOperation enum value
	ClassificationScopeUpdateOperationAdd = "ADD"

	// ClassificationScopeUpdateOperationReplace is a ClassificationScopeUpdateOperation enum value
	ClassificationScopeUpdateOperationReplace = "REPLACE"

	// ClassificationScopeUpdateOperationRemove is a ClassificationScopeUpdateOperation enum value
	ClassificationScopeUpdateOperationRemove = "REMOVE"
)

// ClassificationScopeUpdateOperation_Values returns all elements of the ClassificationScopeUpdateOperation enum
func ClassificationScopeUpdateOperation_Values() []string {
	return []string{
		ClassificationScopeUpdateOperationAdd,
		ClassificationScopeUpdateOperationReplace,
		ClassificationScopeUpdateOperationRemove,
	}
}

// The type of currency that the data for an Amazon Macie usage metric is reported
// in. Possible values are:
const (
	// CurrencyUsd is a Currency enum value
	CurrencyUsd = "USD"
)

// Currency_Values returns all elements of the Currency enum
func Currency_Values() []string {
	return []string{
		CurrencyUsd,
	}
}

// The severity of a finding, ranging from LOW, for least severe, to HIGH, for
// most severe. Valid values are:
const (
	// DataIdentifierSeverityLow is a DataIdentifierSeverity enum value
	DataIdentifierSeverityLow = "LOW"

	// DataIdentifierSeverityMedium is a DataIdentifierSeverity enum value
	DataIdentifierSeverityMedium = "MEDIUM"

	// DataIdentifierSeverityHigh is a DataIdentifierSeverity enum value
	DataIdentifierSeverityHigh = "HIGH"
)

// DataIdentifierSeverity_Values returns all elements of the DataIdentifierSeverity enum
func DataIdentifierSeverity_Values() []string {
	return []string{
		DataIdentifierSeverityLow,
		DataIdentifierSeverityMedium,
		DataIdentifierSeverityHigh,
	}
}

// The type of data identifier that detected a specific type of sensitive data
// in an S3 bucket. Possible values are:
const (
	// DataIdentifierTypeCustom is a DataIdentifierType enum value
	DataIdentifierTypeCustom = "CUSTOM"

	// DataIdentifierTypeManaged is a DataIdentifierType enum value
	DataIdentifierTypeManaged = "MANAGED"
)

// DataIdentifierType_Values returns all elements of the DataIdentifierType enum
func DataIdentifierType_Values() []string {
	return []string{
		DataIdentifierTypeCustom,
		DataIdentifierTypeManaged,
	}
}

const (
	// DayOfWeekSunday is a DayOfWeek enum value
	DayOfWeekSunday = "SUNDAY"

	// DayOfWeekMonday is a DayOfWeek enum value
	DayOfWeekMonday = "MONDAY"

	// DayOfWeekTuesday is a DayOfWeek enum value
	DayOfWeekTuesday = "TUESDAY"

	// DayOfWeekWednesday is a DayOfWeek enum value
	DayOfWeekWednesday = "WEDNESDAY"

	// DayOfWeekThursday is a DayOfWeek enum value
	DayOfWeekThursday = "THURSDAY"

	// DayOfWeekFriday is a DayOfWeek enum value
	DayOfWeekFriday = "FRIDAY"

	// DayOfWeekSaturday is a DayOfWeek enum value
	DayOfWeekSaturday = "SATURDAY"
)

// DayOfWeek_Values returns all elements of the DayOfWeek enum
func DayOfWeek_Values() []string {
	return []string{
		DayOfWeekSunday,
		DayOfWeekMonday,
		DayOfWeekTuesday,
		DayOfWeekWednesday,
		DayOfWeekThursday,
		DayOfWeekFriday,
		DayOfWeekSaturday,
	}
}

const (
	// EffectivePermissionPublic is a EffectivePermission enum value
	EffectivePermissionPublic = "PUBLIC"

	// EffectivePermissionNotPublic is a EffectivePermission enum value
	EffectivePermissionNotPublic = "NOT_PUBLIC"

	// EffectivePermissionUnknown is a EffectivePermission enum value
	EffectivePermissionUnknown = "UNKNOWN"
)

// EffectivePermission_Values returns all elements of the EffectivePermission enum
func EffectivePermission_Values() []string {
	return []string{
		EffectivePermissionPublic,
		EffectivePermissionNotPublic,
		EffectivePermissionUnknown,
	}
}

// The server-side encryption algorithm that was used to encrypt an S3 object
// or is used by default to encrypt objects that are added to an S3 bucket.
// Possible values are:
const (
	// EncryptionTypeNone is a EncryptionType enum value
	EncryptionTypeNone = "NONE"

	// EncryptionTypeAes256 is a EncryptionType enum value
	EncryptionTypeAes256 = "AES256"

	// EncryptionTypeAwsKms is a EncryptionType enum value
	EncryptionTypeAwsKms = "aws:kms"

	// EncryptionTypeUnknown is a EncryptionType enum value
	EncryptionTypeUnknown = "UNKNOWN"

	// EncryptionTypeAwsKmsDsse is a EncryptionType enum value
	EncryptionTypeAwsKmsDsse = "aws:kms:dsse"
)

// EncryptionType_Values returns all elements of the EncryptionType enum
func EncryptionType_Values() []string {
	return []string{
		EncryptionTypeNone,
		EncryptionTypeAes256,
		EncryptionTypeAwsKms,
		EncryptionTypeUnknown,
		EncryptionTypeAwsKmsDsse,
	}
}

// The source of an issue or delay. Possible values are:
const (
	// ErrorCodeClientError is a ErrorCode enum value
	ErrorCodeClientError = "ClientError"

	// ErrorCodeInternalError is a ErrorCode enum value
	ErrorCodeInternalError = "InternalError"
)

// ErrorCode_Values returns all elements of the ErrorCode enum
func ErrorCode_Values() []string {
	return []string{
		ErrorCodeClientError,
		ErrorCodeInternalError,
	}
}

// The type of action that occurred for the resource and produced the policy
// finding:
const (
	// FindingActionTypeAwsApiCall is a FindingActionType enum value
	FindingActionTypeAwsApiCall = "AWS_API_CALL"
)

// FindingActionType_Values returns all elements of the FindingActionType enum
func FindingActionType_Values() []string {
	return []string{
		FindingActionTypeAwsApiCall,
	}
}

// The category of the finding. Possible values are:
const (
	// FindingCategoryClassification is a FindingCategory enum value
	FindingCategoryClassification = "CLASSIFICATION"

	// FindingCategoryPolicy is a FindingCategory enum value
	FindingCategoryPolicy = "POLICY"
)

// FindingCategory_Values returns all elements of the FindingCategory enum
func FindingCategory_Values() []string {
	return []string{
		FindingCategoryClassification,
		FindingCategoryPolicy,
	}
}

// The frequency with which Amazon Macie publishes updates to policy findings
// for an account. This includes publishing updates to Security Hub and Amazon
// EventBridge (formerly Amazon CloudWatch Events). For more information, see
// Monitoring and processing findings (https://docs.aws.amazon.com/macie/latest/user/findings-monitor.html)
// in the Amazon Macie User Guide. Valid values are:
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,
	}
}

// The grouping to sort the results by. Valid values are:
const (
	// FindingStatisticsSortAttributeNameGroupKey is a FindingStatisticsSortAttributeName enum value
	FindingStatisticsSortAttributeNameGroupKey = "groupKey"

	// FindingStatisticsSortAttributeNameCount is a FindingStatisticsSortAttributeName enum value
	FindingStatisticsSortAttributeNameCount = "count"
)

// FindingStatisticsSortAttributeName_Values returns all elements of the FindingStatisticsSortAttributeName enum
func FindingStatisticsSortAttributeName_Values() []string {
	return []string{
		FindingStatisticsSortAttributeNameGroupKey,
		FindingStatisticsSortAttributeNameCount,
	}
}

// The type of finding. For details about each type, see Types of Amazon Macie
// findings (https://docs.aws.amazon.com/macie/latest/user/findings-types.html)
// in the Amazon Macie User Guide. Possible values are:
const (
	// FindingTypeSensitiveDataS3objectMultiple is a FindingType enum value
	FindingTypeSensitiveDataS3objectMultiple = "SensitiveData:S3Object/Multiple"

	// FindingTypeSensitiveDataS3objectFinancial is a FindingType enum value
	FindingTypeSensitiveDataS3objectFinancial = "SensitiveData:S3Object/Financial"

	// FindingTypeSensitiveDataS3objectPersonal is a FindingType enum value
	FindingTypeSensitiveDataS3objectPersonal = "SensitiveData:S3Object/Personal"

	// FindingTypeSensitiveDataS3objectCredentials is a FindingType enum value
	FindingTypeSensitiveDataS3objectCredentials = "SensitiveData:S3Object/Credentials"

	// FindingTypeSensitiveDataS3objectCustomIdentifier is a FindingType enum value
	FindingTypeSensitiveDataS3objectCustomIdentifier = "SensitiveData:S3Object/CustomIdentifier"

	// FindingTypePolicyIamuserS3bucketPublic is a FindingType enum value
	FindingTypePolicyIamuserS3bucketPublic = "Policy:IAMUser/S3BucketPublic"

	// FindingTypePolicyIamuserS3bucketSharedExternally is a FindingType enum value
	FindingTypePolicyIamuserS3bucketSharedExternally = "Policy:IAMUser/S3BucketSharedExternally"

	// FindingTypePolicyIamuserS3bucketReplicatedExternally is a FindingType enum value
	FindingTypePolicyIamuserS3bucketReplicatedExternally = "Policy:IAMUser/S3BucketReplicatedExternally"

	// FindingTypePolicyIamuserS3bucketEncryptionDisabled is a FindingType enum value
	FindingTypePolicyIamuserS3bucketEncryptionDisabled = "Policy:IAMUser/S3BucketEncryptionDisabled"

	// FindingTypePolicyIamuserS3blockPublicAccessDisabled is a FindingType enum value
	FindingTypePolicyIamuserS3blockPublicAccessDisabled = "Policy:IAMUser/S3BlockPublicAccessDisabled"

	// FindingTypePolicyIamuserS3bucketSharedWithCloudFront is a FindingType enum value
	FindingTypePolicyIamuserS3bucketSharedWithCloudFront = "Policy:IAMUser/S3BucketSharedWithCloudFront"
)

// FindingType_Values returns all elements of the FindingType enum
func FindingType_Values() []string {
	return []string{
		FindingTypeSensitiveDataS3objectMultiple,
		FindingTypeSensitiveDataS3objectFinancial,
		FindingTypeSensitiveDataS3objectPersonal,
		FindingTypeSensitiveDataS3objectCredentials,
		FindingTypeSensitiveDataS3objectCustomIdentifier,
		FindingTypePolicyIamuserS3bucketPublic,
		FindingTypePolicyIamuserS3bucketSharedExternally,
		FindingTypePolicyIamuserS3bucketReplicatedExternally,
		FindingTypePolicyIamuserS3bucketEncryptionDisabled,
		FindingTypePolicyIamuserS3blockPublicAccessDisabled,
		FindingTypePolicyIamuserS3bucketSharedWithCloudFront,
	}
}

// The action to perform on findings that match the filter criteria. To suppress
// (automatically archive) findings that match the criteria, set this value
// to ARCHIVE. Valid values are:
const (
	// FindingsFilterActionArchive is a FindingsFilterAction enum value
	FindingsFilterActionArchive = "ARCHIVE"

	// FindingsFilterActionNoop is a FindingsFilterAction enum value
	FindingsFilterActionNoop = "NOOP"
)

// FindingsFilterAction_Values returns all elements of the FindingsFilterAction enum
func FindingsFilterAction_Values() []string {
	return []string{
		FindingsFilterActionArchive,
		FindingsFilterActionNoop,
	}
}

const (
	// GroupByResourcesAffectedS3bucketName is a GroupBy enum value
	GroupByResourcesAffectedS3bucketName = "resourcesAffected.s3Bucket.name"

	// GroupByType is a GroupBy enum value
	GroupByType = "type"

	// GroupByClassificationDetailsJobId is a GroupBy enum value
	GroupByClassificationDetailsJobId = "classificationDetails.jobId"

	// GroupBySeverityDescription is a GroupBy enum value
	GroupBySeverityDescription = "severity.description"
)

// GroupBy_Values returns all elements of the GroupBy enum
func GroupBy_Values() []string {
	return []string{
		GroupByResourcesAffectedS3bucketName,
		GroupByType,
		GroupByClassificationDetailsJobId,
		GroupBySeverityDescription,
	}
}

const (
	// IsDefinedInJobTrue is a IsDefinedInJob enum value
	IsDefinedInJobTrue = "TRUE"

	// IsDefinedInJobFalse is a IsDefinedInJob enum value
	IsDefinedInJobFalse = "FALSE"

	// IsDefinedInJobUnknown is a IsDefinedInJob enum value
	IsDefinedInJobUnknown = "UNKNOWN"
)

// IsDefinedInJob_Values returns all elements of the IsDefinedInJob enum
func IsDefinedInJob_Values() []string {
	return []string{
		IsDefinedInJobTrue,
		IsDefinedInJobFalse,
		IsDefinedInJobUnknown,
	}
}

const (
	// IsMonitoredByJobTrue is a IsMonitoredByJob enum value
	IsMonitoredByJobTrue = "TRUE"

	// IsMonitoredByJobFalse is a IsMonitoredByJob enum value
	IsMonitoredByJobFalse = "FALSE"

	// IsMonitoredByJobUnknown is a IsMonitoredByJob enum value
	IsMonitoredByJobUnknown = "UNKNOWN"
)

// IsMonitoredByJob_Values returns all elements of the IsMonitoredByJob enum
func IsMonitoredByJob_Values() []string {
	return []string{
		IsMonitoredByJobTrue,
		IsMonitoredByJobFalse,
		IsMonitoredByJobUnknown,
	}
}

// The operator to use in a condition. Depending on the type of condition, possible
// values are:
const (
	// JobComparatorEq is a JobComparator enum value
	JobComparatorEq = "EQ"

	// JobComparatorGt is a JobComparator enum value
	JobComparatorGt = "GT"

	// JobComparatorGte is a JobComparator enum value
	JobComparatorGte = "GTE"

	// JobComparatorLt is a JobComparator enum value
	JobComparatorLt = "LT"

	// JobComparatorLte is a JobComparator enum value
	JobComparatorLte = "LTE"

	// JobComparatorNe is a JobComparator enum value
	JobComparatorNe = "NE"

	// JobComparatorContains is a JobComparator enum value
	JobComparatorContains = "CONTAINS"

	// JobComparatorStartsWith is a JobComparator enum value
	JobComparatorStartsWith = "STARTS_WITH"
)

// JobComparator_Values returns all elements of the JobComparator enum
func JobComparator_Values() []string {
	return []string{
		JobComparatorEq,
		JobComparatorGt,
		JobComparatorGte,
		JobComparatorLt,
		JobComparatorLte,
		JobComparatorNe,
		JobComparatorContains,
		JobComparatorStartsWith,
	}
}

// The status of a classification job. Possible values are:
const (
	// JobStatusRunning is a JobStatus enum value
	JobStatusRunning = "RUNNING"

	// JobStatusPaused is a JobStatus enum value
	JobStatusPaused = "PAUSED"

	// JobStatusCancelled is a JobStatus enum value
	JobStatusCancelled = "CANCELLED"

	// JobStatusComplete is a JobStatus enum value
	JobStatusComplete = "COMPLETE"

	// JobStatusIdle is a JobStatus enum value
	JobStatusIdle = "IDLE"

	// JobStatusUserPaused is a JobStatus enum value
	JobStatusUserPaused = "USER_PAUSED"
)

// JobStatus_Values returns all elements of the JobStatus enum
func JobStatus_Values() []string {
	return []string{
		JobStatusRunning,
		JobStatusPaused,
		JobStatusCancelled,
		JobStatusComplete,
		JobStatusIdle,
		JobStatusUserPaused,
	}
}

// The schedule for running a classification job. Valid values are:
const (
	// JobTypeOneTime is a JobType enum value
	JobTypeOneTime = "ONE_TIME"

	// JobTypeScheduled is a JobType enum value
	JobTypeScheduled = "SCHEDULED"
)

// JobType_Values returns all elements of the JobType enum
func JobType_Values() []string {
	return []string{
		JobTypeOneTime,
		JobTypeScheduled,
	}
}

// Specifies whether any account- or bucket-level access errors occurred during
// the run of a one-time classification job or the most recent run of a recurring
// classification job. Possible values are:
const (
	// LastRunErrorStatusCodeNone is a LastRunErrorStatusCode enum value
	LastRunErrorStatusCodeNone = "NONE"

	// LastRunErrorStatusCodeError is a LastRunErrorStatusCode enum value
	LastRunErrorStatusCodeError = "ERROR"
)

// LastRunErrorStatusCode_Values returns all elements of the LastRunErrorStatusCode enum
func LastRunErrorStatusCode_Values() []string {
	return []string{
		LastRunErrorStatusCodeNone,
		LastRunErrorStatusCodeError,
	}
}

// The property to use to filter the results. Valid values are:
const (
	// ListJobsFilterKeyJobType is a ListJobsFilterKey enum value
	ListJobsFilterKeyJobType = "jobType"

	// ListJobsFilterKeyJobStatus is a ListJobsFilterKey enum value
	ListJobsFilterKeyJobStatus = "jobStatus"

	// ListJobsFilterKeyCreatedAt is a ListJobsFilterKey enum value
	ListJobsFilterKeyCreatedAt = "createdAt"

	// ListJobsFilterKeyName is a ListJobsFilterKey enum value
	ListJobsFilterKeyName = "name"
)

// ListJobsFilterKey_Values returns all elements of the ListJobsFilterKey enum
func ListJobsFilterKey_Values() []string {
	return []string{
		ListJobsFilterKeyJobType,
		ListJobsFilterKeyJobStatus,
		ListJobsFilterKeyCreatedAt,
		ListJobsFilterKeyName,
	}
}

// The property to sort the results by. Valid values are:
const (
	// ListJobsSortAttributeNameCreatedAt is a ListJobsSortAttributeName enum value
	ListJobsSortAttributeNameCreatedAt = "createdAt"

	// ListJobsSortAttributeNameJobStatus is a ListJobsSortAttributeName enum value
	ListJobsSortAttributeNameJobStatus = "jobStatus"

	// ListJobsSortAttributeNameName is a ListJobsSortAttributeName enum value
	ListJobsSortAttributeNameName = "name"

	// ListJobsSortAttributeNameJobType is a ListJobsSortAttributeName enum value
	ListJobsSortAttributeNameJobType = "jobType"
)

// ListJobsSortAttributeName_Values returns all elements of the ListJobsSortAttributeName enum
func ListJobsSortAttributeName_Values() []string {
	return []string{
		ListJobsSortAttributeNameCreatedAt,
		ListJobsSortAttributeNameJobStatus,
		ListJobsSortAttributeNameName,
		ListJobsSortAttributeNameJobType,
	}
}

// The status of an Amazon Macie account. Valid values are:
const (
	// MacieStatusPaused is a MacieStatus enum value
	MacieStatusPaused = "PAUSED"

	// MacieStatusEnabled is a MacieStatus enum value
	MacieStatusEnabled = "ENABLED"
)

// MacieStatus_Values returns all elements of the MacieStatus enum
func MacieStatus_Values() []string {
	return []string{
		MacieStatusPaused,
		MacieStatusEnabled,
	}
}

// The selection type that determines which managed data identifiers a classification
// job uses to analyze data. Valid values are:
const (
	// ManagedDataIdentifierSelectorAll is a ManagedDataIdentifierSelector enum value
	ManagedDataIdentifierSelectorAll = "ALL"

	// ManagedDataIdentifierSelectorExclude is a ManagedDataIdentifierSelector enum value
	ManagedDataIdentifierSelectorExclude = "EXCLUDE"

	// ManagedDataIdentifierSelectorInclude is a ManagedDataIdentifierSelector enum value
	ManagedDataIdentifierSelectorInclude = "INCLUDE"

	// ManagedDataIdentifierSelectorNone is a ManagedDataIdentifierSelector enum value
	ManagedDataIdentifierSelectorNone = "NONE"

	// ManagedDataIdentifierSelectorRecommended is a ManagedDataIdentifierSelector enum value
	ManagedDataIdentifierSelectorRecommended = "RECOMMENDED"
)

// ManagedDataIdentifierSelector_Values returns all elements of the ManagedDataIdentifierSelector enum
func ManagedDataIdentifierSelector_Values() []string {
	return []string{
		ManagedDataIdentifierSelectorAll,
		ManagedDataIdentifierSelectorExclude,
		ManagedDataIdentifierSelectorInclude,
		ManagedDataIdentifierSelectorNone,
		ManagedDataIdentifierSelectorRecommended,
	}
}

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,
	}
}

// Specifies how Amazon Macie found the sensitive data that produced a finding.
// Possible values are:
const (
	// OriginTypeSensitiveDataDiscoveryJob is a OriginType enum value
	OriginTypeSensitiveDataDiscoveryJob = "SENSITIVE_DATA_DISCOVERY_JOB"

	// OriginTypeAutomatedSensitiveDataDiscovery is a OriginType enum value
	OriginTypeAutomatedSensitiveDataDiscovery = "AUTOMATED_SENSITIVE_DATA_DISCOVERY"
)

// OriginType_Values returns all elements of the OriginType enum
func OriginType_Values() []string {
	return []string{
		OriginTypeSensitiveDataDiscoveryJob,
		OriginTypeAutomatedSensitiveDataDiscovery,
	}
}

// The current status of the relationship between an account and an associated
// Amazon Macie administrator account. Possible values are:
const (
	// RelationshipStatusEnabled is a RelationshipStatus enum value
	RelationshipStatusEnabled = "Enabled"

	// RelationshipStatusPaused is a RelationshipStatus enum value
	RelationshipStatusPaused = "Paused"

	// RelationshipStatusInvited is a RelationshipStatus enum value
	RelationshipStatusInvited = "Invited"

	// RelationshipStatusCreated is a RelationshipStatus enum value
	RelationshipStatusCreated = "Created"

	// RelationshipStatusRemoved is a RelationshipStatus enum value
	RelationshipStatusRemoved = "Removed"

	// RelationshipStatusResigned is a RelationshipStatus enum value
	RelationshipStatusResigned = "Resigned"

	// RelationshipStatusEmailVerificationInProgress is a RelationshipStatus enum value
	RelationshipStatusEmailVerificationInProgress = "EmailVerificationInProgress"

	// RelationshipStatusEmailVerificationFailed is a RelationshipStatus enum value
	RelationshipStatusEmailVerificationFailed = "EmailVerificationFailed"

	// RelationshipStatusRegionDisabled is a RelationshipStatus enum value
	RelationshipStatusRegionDisabled = "RegionDisabled"

	// RelationshipStatusAccountSuspended is a RelationshipStatus enum value
	RelationshipStatusAccountSuspended = "AccountSuspended"
)

// RelationshipStatus_Values returns all elements of the RelationshipStatus enum
func RelationshipStatus_Values() []string {
	return []string{
		RelationshipStatusEnabled,
		RelationshipStatusPaused,
		RelationshipStatusInvited,
		RelationshipStatusCreated,
		RelationshipStatusRemoved,
		RelationshipStatusResigned,
		RelationshipStatusEmailVerificationInProgress,
		RelationshipStatusEmailVerificationFailed,
		RelationshipStatusRegionDisabled,
		RelationshipStatusAccountSuspended,
	}
}

// The access method to use when retrieving occurrences of sensitive data reported
// by findings. Valid values are:
const (
	// RetrievalModeCallerCredentials is a RetrievalMode enum value
	RetrievalModeCallerCredentials = "CALLER_CREDENTIALS"

	// RetrievalModeAssumeRole is a RetrievalMode enum value
	RetrievalModeAssumeRole = "ASSUME_ROLE"
)

// RetrievalMode_Values returns all elements of the RetrievalMode enum
func RetrievalMode_Values() []string {
	return []string{
		RetrievalModeCallerCredentials,
		RetrievalModeAssumeRole,
	}
}

// The status of a request to retrieve occurrences of sensitive data reported
// by a finding. Possible values are:
const (
	// RevealRequestStatusSuccess is a RevealRequestStatus enum value
	RevealRequestStatusSuccess = "SUCCESS"

	// RevealRequestStatusProcessing is a RevealRequestStatus enum value
	RevealRequestStatusProcessing = "PROCESSING"

	// RevealRequestStatusError is a RevealRequestStatus enum value
	RevealRequestStatusError = "ERROR"
)

// RevealRequestStatus_Values returns all elements of the RevealRequestStatus enum
func RevealRequestStatus_Values() []string {
	return []string{
		RevealRequestStatusSuccess,
		RevealRequestStatusProcessing,
		RevealRequestStatusError,
	}
}

// The status of the configuration for retrieving occurrences of sensitive data
// reported by findings. Valid values are:
const (
	// RevealStatusEnabled is a RevealStatus enum value
	RevealStatusEnabled = "ENABLED"

	// RevealStatusDisabled is a RevealStatus enum value
	RevealStatusDisabled = "DISABLED"
)

// RevealStatus_Values returns all elements of the RevealStatus enum
func RevealStatus_Values() []string {
	return []string{
		RevealStatusEnabled,
		RevealStatusDisabled,
	}
}

// The property to use in a condition that determines whether an S3 object is
// included or excluded from a classification job. Valid values are:
const (
	// ScopeFilterKeyObjectExtension is a ScopeFilterKey enum value
	ScopeFilterKeyObjectExtension = "OBJECT_EXTENSION"

	// ScopeFilterKeyObjectLastModifiedDate is a ScopeFilterKey enum value
	ScopeFilterKeyObjectLastModifiedDate = "OBJECT_LAST_MODIFIED_DATE"

	// ScopeFilterKeyObjectSize is a ScopeFilterKey enum value
	ScopeFilterKeyObjectSize = "OBJECT_SIZE"

	// ScopeFilterKeyObjectKey is a ScopeFilterKey enum value
	ScopeFilterKeyObjectKey = "OBJECT_KEY"
)

// ScopeFilterKey_Values returns all elements of the ScopeFilterKey enum
func ScopeFilterKey_Values() []string {
	return []string{
		ScopeFilterKeyObjectExtension,
		ScopeFilterKeyObjectLastModifiedDate,
		ScopeFilterKeyObjectSize,
		ScopeFilterKeyObjectKey,
	}
}

// The operator to use in a condition that filters the results of a query. Valid
// values are:
const (
	// SearchResourcesComparatorEq is a SearchResourcesComparator enum value
	SearchResourcesComparatorEq = "EQ"

	// SearchResourcesComparatorNe is a SearchResourcesComparator enum value
	SearchResourcesComparatorNe = "NE"
)

// SearchResourcesComparator_Values returns all elements of the SearchResourcesComparator enum
func SearchResourcesComparator_Values() []string {
	return []string{
		SearchResourcesComparatorEq,
		SearchResourcesComparatorNe,
	}
}

// The property to use in a condition that filters the query results. Valid
// values are:
const (
	// SearchResourcesSimpleCriterionKeyAccountId is a SearchResourcesSimpleCriterionKey enum value
	SearchResourcesSimpleCriterionKeyAccountId = "ACCOUNT_ID"

	// SearchResourcesSimpleCriterionKeyS3BucketName is a SearchResourcesSimpleCriterionKey enum value
	SearchResourcesSimpleCriterionKeyS3BucketName = "S3_BUCKET_NAME"

	// SearchResourcesSimpleCriterionKeyS3BucketEffectivePermission is a SearchResourcesSimpleCriterionKey enum value
	SearchResourcesSimpleCriterionKeyS3BucketEffectivePermission = "S3_BUCKET_EFFECTIVE_PERMISSION"

	// SearchResourcesSimpleCriterionKeyS3BucketSharedAccess is a SearchResourcesSimpleCriterionKey enum value
	SearchResourcesSimpleCriterionKeyS3BucketSharedAccess = "S3_BUCKET_SHARED_ACCESS"

	// SearchResourcesSimpleCriterionKeyAutomatedDiscoveryMonitoringStatus is a SearchResourcesSimpleCriterionKey enum value
	SearchResourcesSimpleCriterionKeyAutomatedDiscoveryMonitoringStatus = "AUTOMATED_DISCOVERY_MONITORING_STATUS"
)

// SearchResourcesSimpleCriterionKey_Values returns all elements of the SearchResourcesSimpleCriterionKey enum
func SearchResourcesSimpleCriterionKey_Values() []string {
	return []string{
		SearchResourcesSimpleCriterionKeyAccountId,
		SearchResourcesSimpleCriterionKeyS3BucketName,
		SearchResourcesSimpleCriterionKeyS3BucketEffectivePermission,
		SearchResourcesSimpleCriterionKeyS3BucketSharedAccess,
		SearchResourcesSimpleCriterionKeyAutomatedDiscoveryMonitoringStatus,
	}
}

// The property to sort the query results by. Valid values are:
const (
	// SearchResourcesSortAttributeNameAccountId is a SearchResourcesSortAttributeName enum value
	SearchResourcesSortAttributeNameAccountId = "ACCOUNT_ID"

	// SearchResourcesSortAttributeNameResourceName is a SearchResourcesSortAttributeName enum value
	SearchResourcesSortAttributeNameResourceName = "RESOURCE_NAME"

	// SearchResourcesSortAttributeNameS3ClassifiableObjectCount is a SearchResourcesSortAttributeName enum value
	SearchResourcesSortAttributeNameS3ClassifiableObjectCount = "S3_CLASSIFIABLE_OBJECT_COUNT"

	// SearchResourcesSortAttributeNameS3ClassifiableSizeInBytes is a SearchResourcesSortAttributeName enum value
	SearchResourcesSortAttributeNameS3ClassifiableSizeInBytes = "S3_CLASSIFIABLE_SIZE_IN_BYTES"
)

// SearchResourcesSortAttributeName_Values returns all elements of the SearchResourcesSortAttributeName enum
func SearchResourcesSortAttributeName_Values() []string {
	return []string{
		SearchResourcesSortAttributeNameAccountId,
		SearchResourcesSortAttributeNameResourceName,
		SearchResourcesSortAttributeNameS3ClassifiableObjectCount,
		SearchResourcesSortAttributeNameS3ClassifiableSizeInBytes,
	}
}

// For a finding, the category of sensitive data that was detected and produced
// the finding. For a managed data identifier, the category of sensitive data
// that the managed data identifier detects. Possible values are:
const (
	// SensitiveDataItemCategoryFinancialInformation is a SensitiveDataItemCategory enum value
	SensitiveDataItemCategoryFinancialInformation = "FINANCIAL_INFORMATION"

	// SensitiveDataItemCategoryPersonalInformation is a SensitiveDataItemCategory enum value
	SensitiveDataItemCategoryPersonalInformation = "PERSONAL_INFORMATION"

	// SensitiveDataItemCategoryCredentials is a SensitiveDataItemCategory enum value
	SensitiveDataItemCategoryCredentials = "CREDENTIALS"

	// SensitiveDataItemCategoryCustomIdentifier is a SensitiveDataItemCategory enum value
	SensitiveDataItemCategoryCustomIdentifier = "CUSTOM_IDENTIFIER"
)

// SensitiveDataItemCategory_Values returns all elements of the SensitiveDataItemCategory enum
func SensitiveDataItemCategory_Values() []string {
	return []string{
		SensitiveDataItemCategoryFinancialInformation,
		SensitiveDataItemCategoryPersonalInformation,
		SensitiveDataItemCategoryCredentials,
		SensitiveDataItemCategoryCustomIdentifier,
	}
}

// The qualitative representation of the finding's severity. Possible values
// are:
const (
	// SeverityDescriptionLow is a SeverityDescription enum value
	SeverityDescriptionLow = "Low"

	// SeverityDescriptionMedium is a SeverityDescription enum value
	SeverityDescriptionMedium = "Medium"

	// SeverityDescriptionHigh is a SeverityDescription enum value
	SeverityDescriptionHigh = "High"
)

// SeverityDescription_Values returns all elements of the SeverityDescription enum
func SeverityDescription_Values() []string {
	return []string{
		SeverityDescriptionLow,
		SeverityDescriptionMedium,
		SeverityDescriptionHigh,
	}
}

const (
	// SharedAccessExternal is a SharedAccess enum value
	SharedAccessExternal = "EXTERNAL"

	// SharedAccessInternal is a SharedAccess enum value
	SharedAccessInternal = "INTERNAL"

	// SharedAccessNotShared is a SharedAccess enum value
	SharedAccessNotShared = "NOT_SHARED"

	// SharedAccessUnknown is a SharedAccess enum value
	SharedAccessUnknown = "UNKNOWN"
)

// SharedAccess_Values returns all elements of the SharedAccess enum
func SharedAccess_Values() []string {
	return []string{
		SharedAccessExternal,
		SharedAccessInternal,
		SharedAccessNotShared,
		SharedAccessUnknown,
	}
}

// The property to use in a condition that determines whether an S3 bucket is
// included or excluded from a classification job. Valid values are:
const (
	// SimpleCriterionKeyForJobAccountId is a SimpleCriterionKeyForJob enum value
	SimpleCriterionKeyForJobAccountId = "ACCOUNT_ID"

	// SimpleCriterionKeyForJobS3BucketName is a SimpleCriterionKeyForJob enum value
	SimpleCriterionKeyForJobS3BucketName = "S3_BUCKET_NAME"

	// SimpleCriterionKeyForJobS3BucketEffectivePermission is a SimpleCriterionKeyForJob enum value
	SimpleCriterionKeyForJobS3BucketEffectivePermission = "S3_BUCKET_EFFECTIVE_PERMISSION"

	// SimpleCriterionKeyForJobS3BucketSharedAccess is a SimpleCriterionKeyForJob enum value
	SimpleCriterionKeyForJobS3BucketSharedAccess = "S3_BUCKET_SHARED_ACCESS"
)

// SimpleCriterionKeyForJob_Values returns all elements of the SimpleCriterionKeyForJob enum
func SimpleCriterionKeyForJob_Values() []string {
	return []string{
		SimpleCriterionKeyForJobAccountId,
		SimpleCriterionKeyForJobS3BucketName,
		SimpleCriterionKeyForJobS3BucketEffectivePermission,
		SimpleCriterionKeyForJobS3BucketSharedAccess,
	}
}

// The storage class of the S3 object. Possible values are:
const (
	// StorageClassStandard is a StorageClass enum value
	StorageClassStandard = "STANDARD"

	// StorageClassReducedRedundancy is a StorageClass enum value
	StorageClassReducedRedundancy = "REDUCED_REDUNDANCY"

	// StorageClassStandardIa is a StorageClass enum value
	StorageClassStandardIa = "STANDARD_IA"

	// StorageClassIntelligentTiering is a StorageClass enum value
	StorageClassIntelligentTiering = "INTELLIGENT_TIERING"

	// StorageClassDeepArchive is a StorageClass enum value
	StorageClassDeepArchive = "DEEP_ARCHIVE"

	// StorageClassOnezoneIa is a StorageClass enum value
	StorageClassOnezoneIa = "ONEZONE_IA"

	// StorageClassGlacier is a StorageClass enum value
	StorageClassGlacier = "GLACIER"

	// StorageClassGlacierIr is a StorageClass enum value
	StorageClassGlacierIr = "GLACIER_IR"

	// StorageClassOutposts is a StorageClass enum value
	StorageClassOutposts = "OUTPOSTS"
)

// StorageClass_Values returns all elements of the StorageClass enum
func StorageClass_Values() []string {
	return []string{
		StorageClassStandard,
		StorageClassReducedRedundancy,
		StorageClassStandardIa,
		StorageClassIntelligentTiering,
		StorageClassDeepArchive,
		StorageClassOnezoneIa,
		StorageClassGlacier,
		StorageClassGlacierIr,
		StorageClassOutposts,
	}
}

// The type of object to apply a tag-based condition to. Valid values are:
const (
	// TagTargetS3Object is a TagTarget enum value
	TagTargetS3Object = "S3_OBJECT"
)

// TagTarget_Values returns all elements of the TagTarget enum
func TagTarget_Values() []string {
	return []string{
		TagTargetS3Object,
	}
}

// An inclusive time period that Amazon Macie usage data applies to. Possible
// values are:
const (
	// TimeRangeMonthToDate is a TimeRange enum value
	TimeRangeMonthToDate = "MONTH_TO_DATE"

	// TimeRangePast30Days is a TimeRange enum value
	TimeRangePast30Days = "PAST_30_DAYS"
)

// TimeRange_Values returns all elements of the TimeRange enum
func TimeRange_Values() []string {
	return []string{
		TimeRangeMonthToDate,
		TimeRangePast30Days,
	}
}

const (
	// TypeNone is a Type enum value
	TypeNone = "NONE"

	// TypeAes256 is a Type enum value
	TypeAes256 = "AES256"

	// TypeAwsKms is a Type enum value
	TypeAwsKms = "aws:kms"

	// TypeAwsKmsDsse is a Type enum value
	TypeAwsKmsDsse = "aws:kms:dsse"
)

// Type_Values returns all elements of the Type enum
func Type_Values() []string {
	return []string{
		TypeNone,
		TypeAes256,
		TypeAwsKms,
		TypeAwsKmsDsse,
	}
}

// Specifies why occurrences of sensitive data can't be retrieved for a finding.
// Possible values are:
const (
	// UnavailabilityReasonCodeObjectExceedsSizeQuota is a UnavailabilityReasonCode enum value
	UnavailabilityReasonCodeObjectExceedsSizeQuota = "OBJECT_EXCEEDS_SIZE_QUOTA"

	// UnavailabilityReasonCodeUnsupportedObjectType is a UnavailabilityReasonCode enum value
	UnavailabilityReasonCodeUnsupportedObjectType = "UNSUPPORTED_OBJECT_TYPE"

	// UnavailabilityReasonCodeUnsupportedFindingType is a UnavailabilityReasonCode enum value
	UnavailabilityReasonCodeUnsupportedFindingType = "UNSUPPORTED_FINDING_TYPE"

	// UnavailabilityReasonCodeInvalidClassificationResult is a UnavailabilityReasonCode enum value
	UnavailabilityReasonCodeInvalidClassificationResult = "INVALID_CLASSIFICATION_RESULT"

	// UnavailabilityReasonCodeObjectUnavailable is a UnavailabilityReasonCode enum value
	UnavailabilityReasonCodeObjectUnavailable = "OBJECT_UNAVAILABLE"

	// UnavailabilityReasonCodeAccountNotInOrganization is a UnavailabilityReasonCode enum value
	UnavailabilityReasonCodeAccountNotInOrganization = "ACCOUNT_NOT_IN_ORGANIZATION"

	// UnavailabilityReasonCodeMissingGetMemberPermission is a UnavailabilityReasonCode enum value
	UnavailabilityReasonCodeMissingGetMemberPermission = "MISSING_GET_MEMBER_PERMISSION"

	// UnavailabilityReasonCodeRoleTooPermissive is a UnavailabilityReasonCode enum value
	UnavailabilityReasonCodeRoleTooPermissive = "ROLE_TOO_PERMISSIVE"

	// UnavailabilityReasonCodeMemberRoleTooPermissive is a UnavailabilityReasonCode enum value
	UnavailabilityReasonCodeMemberRoleTooPermissive = "MEMBER_ROLE_TOO_PERMISSIVE"

	// UnavailabilityReasonCodeInvalidResultSignature is a UnavailabilityReasonCode enum value
	UnavailabilityReasonCodeInvalidResultSignature = "INVALID_RESULT_SIGNATURE"

	// UnavailabilityReasonCodeResultNotSigned is a UnavailabilityReasonCode enum value
	UnavailabilityReasonCodeResultNotSigned = "RESULT_NOT_SIGNED"
)

// UnavailabilityReasonCode_Values returns all elements of the UnavailabilityReasonCode enum
func UnavailabilityReasonCode_Values() []string {
	return []string{
		UnavailabilityReasonCodeObjectExceedsSizeQuota,
		UnavailabilityReasonCodeUnsupportedObjectType,
		UnavailabilityReasonCodeUnsupportedFindingType,
		UnavailabilityReasonCodeInvalidClassificationResult,
		UnavailabilityReasonCodeObjectUnavailable,
		UnavailabilityReasonCodeAccountNotInOrganization,
		UnavailabilityReasonCodeMissingGetMemberPermission,
		UnavailabilityReasonCodeRoleTooPermissive,
		UnavailabilityReasonCodeMemberRoleTooPermissive,
		UnavailabilityReasonCodeInvalidResultSignature,
		UnavailabilityReasonCodeResultNotSigned,
	}
}

const (
	// UnitTerabytes is a Unit enum value
	UnitTerabytes = "TERABYTES"
)

// Unit_Values returns all elements of the Unit enum
func Unit_Values() []string {
	return []string{
		UnitTerabytes,
	}
}

// The operator to use in a condition that filters the results of a query for
// Amazon Macie account quotas and usage data. Valid values are:
const (
	// UsageStatisticsFilterComparatorGt is a UsageStatisticsFilterComparator enum value
	UsageStatisticsFilterComparatorGt = "GT"

	// UsageStatisticsFilterComparatorGte is a UsageStatisticsFilterComparator enum value
	UsageStatisticsFilterComparatorGte = "GTE"

	// UsageStatisticsFilterComparatorLt is a UsageStatisticsFilterComparator enum value
	UsageStatisticsFilterComparatorLt = "LT"

	// UsageStatisticsFilterComparatorLte is a UsageStatisticsFilterComparator enum value
	UsageStatisticsFilterComparatorLte = "LTE"

	// UsageStatisticsFilterComparatorEq is a UsageStatisticsFilterComparator enum value
	UsageStatisticsFilterComparatorEq = "EQ"

	// UsageStatisticsFilterComparatorNe is a UsageStatisticsFilterComparator enum value
	UsageStatisticsFilterComparatorNe = "NE"

	// UsageStatisticsFilterComparatorContains is a UsageStatisticsFilterComparator enum value
	UsageStatisticsFilterComparatorContains = "CONTAINS"
)

// UsageStatisticsFilterComparator_Values returns all elements of the UsageStatisticsFilterComparator enum
func UsageStatisticsFilterComparator_Values() []string {
	return []string{
		UsageStatisticsFilterComparatorGt,
		UsageStatisticsFilterComparatorGte,
		UsageStatisticsFilterComparatorLt,
		UsageStatisticsFilterComparatorLte,
		UsageStatisticsFilterComparatorEq,
		UsageStatisticsFilterComparatorNe,
		UsageStatisticsFilterComparatorContains,
	}
}

// The field to use in a condition that filters the results of a query for Amazon
// Macie account quotas and usage data. Valid values are:
const (
	// UsageStatisticsFilterKeyAccountId is a UsageStatisticsFilterKey enum value
	UsageStatisticsFilterKeyAccountId = "accountId"

	// UsageStatisticsFilterKeyServiceLimit is a UsageStatisticsFilterKey enum value
	UsageStatisticsFilterKeyServiceLimit = "serviceLimit"

	// UsageStatisticsFilterKeyFreeTrialStartDate is a UsageStatisticsFilterKey enum value
	UsageStatisticsFilterKeyFreeTrialStartDate = "freeTrialStartDate"

	// UsageStatisticsFilterKeyTotal is a UsageStatisticsFilterKey enum value
	UsageStatisticsFilterKeyTotal = "total"
)

// UsageStatisticsFilterKey_Values returns all elements of the UsageStatisticsFilterKey enum
func UsageStatisticsFilterKey_Values() []string {
	return []string{
		UsageStatisticsFilterKeyAccountId,
		UsageStatisticsFilterKeyServiceLimit,
		UsageStatisticsFilterKeyFreeTrialStartDate,
		UsageStatisticsFilterKeyTotal,
	}
}

// The field to use to sort the results of a query for Amazon Macie account
// quotas and usage data. Valid values are:
const (
	// UsageStatisticsSortKeyAccountId is a UsageStatisticsSortKey enum value
	UsageStatisticsSortKeyAccountId = "accountId"

	// UsageStatisticsSortKeyTotal is a UsageStatisticsSortKey enum value
	UsageStatisticsSortKeyTotal = "total"

	// UsageStatisticsSortKeyServiceLimitValue is a UsageStatisticsSortKey enum value
	UsageStatisticsSortKeyServiceLimitValue = "serviceLimitValue"

	// UsageStatisticsSortKeyFreeTrialStartDate is a UsageStatisticsSortKey enum value
	UsageStatisticsSortKeyFreeTrialStartDate = "freeTrialStartDate"
)

// UsageStatisticsSortKey_Values returns all elements of the UsageStatisticsSortKey enum
func UsageStatisticsSortKey_Values() []string {
	return []string{
		UsageStatisticsSortKeyAccountId,
		UsageStatisticsSortKeyTotal,
		UsageStatisticsSortKeyServiceLimitValue,
		UsageStatisticsSortKeyFreeTrialStartDate,
	}
}

// The name of an Amazon Macie usage metric for an account. Possible values
// are:
const (
	// UsageTypeDataInventoryEvaluation is a UsageType enum value
	UsageTypeDataInventoryEvaluation = "DATA_INVENTORY_EVALUATION"

	// UsageTypeSensitiveDataDiscovery is a UsageType enum value
	UsageTypeSensitiveDataDiscovery = "SENSITIVE_DATA_DISCOVERY"

	// UsageTypeAutomatedSensitiveDataDiscovery is a UsageType enum value
	UsageTypeAutomatedSensitiveDataDiscovery = "AUTOMATED_SENSITIVE_DATA_DISCOVERY"

	// UsageTypeAutomatedObjectMonitoring is a UsageType enum value
	UsageTypeAutomatedObjectMonitoring = "AUTOMATED_OBJECT_MONITORING"
)

// UsageType_Values returns all elements of the UsageType enum
func UsageType_Values() []string {
	return []string{
		UsageTypeDataInventoryEvaluation,
		UsageTypeSensitiveDataDiscovery,
		UsageTypeAutomatedSensitiveDataDiscovery,
		UsageTypeAutomatedObjectMonitoring,
	}
}

// The type of entity that performed the action on the affected resource. Possible
// values are:
const (
	// UserIdentityTypeAssumedRole is a UserIdentityType enum value
	UserIdentityTypeAssumedRole = "AssumedRole"

	// UserIdentityTypeIamuser is a UserIdentityType enum value
	UserIdentityTypeIamuser = "IAMUser"

	// UserIdentityTypeFederatedUser is a UserIdentityType enum value
	UserIdentityTypeFederatedUser = "FederatedUser"

	// UserIdentityTypeRoot is a UserIdentityType enum value
	UserIdentityTypeRoot = "Root"

	// UserIdentityTypeAwsaccount is a UserIdentityType enum value
	UserIdentityTypeAwsaccount = "AWSAccount"

	// UserIdentityTypeAwsservice is a UserIdentityType enum value
	UserIdentityTypeAwsservice = "AWSService"
)

// UserIdentityType_Values returns all elements of the UserIdentityType enum
func UserIdentityType_Values() []string {
	return []string{
		UserIdentityTypeAssumedRole,
		UserIdentityTypeIamuser,
		UserIdentityTypeFederatedUser,
		UserIdentityTypeRoot,
		UserIdentityTypeAwsaccount,
		UserIdentityTypeAwsservice,
	}
}
