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

package auditmanager

import (
	"fmt"
	"time"

	"k8s.io/autoscaler/cluster-autoscaler/cloudprovider/aws/aws-sdk-go/aws"
	"k8s.io/autoscaler/cluster-autoscaler/cloudprovider/aws/aws-sdk-go/aws/awsutil"
	"k8s.io/autoscaler/cluster-autoscaler/cloudprovider/aws/aws-sdk-go/aws/request"
	"k8s.io/autoscaler/cluster-autoscaler/cloudprovider/aws/aws-sdk-go/private/protocol"
	"k8s.io/autoscaler/cluster-autoscaler/cloudprovider/aws/aws-sdk-go/private/protocol/restjson"
)

const opAssociateAssessmentReportEvidenceFolder = "AssociateAssessmentReportEvidenceFolder"

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

	if input == nil {
		input = &AssociateAssessmentReportEvidenceFolderInput{}
	}

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

// AssociateAssessmentReportEvidenceFolder API operation for AWS Audit Manager.
//
// Associates an evidence folder to an assessment report in an Audit Manager
// assessment.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation AssociateAssessmentReportEvidenceFolder for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/AssociateAssessmentReportEvidenceFolder
func (c *AuditManager) AssociateAssessmentReportEvidenceFolder(input *AssociateAssessmentReportEvidenceFolderInput) (*AssociateAssessmentReportEvidenceFolderOutput, error) {
	req, out := c.AssociateAssessmentReportEvidenceFolderRequest(input)
	return out, req.Send()
}

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

const opBatchAssociateAssessmentReportEvidence = "BatchAssociateAssessmentReportEvidence"

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

	if input == nil {
		input = &BatchAssociateAssessmentReportEvidenceInput{}
	}

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

// BatchAssociateAssessmentReportEvidence API operation for AWS Audit Manager.
//
// Associates a list of evidence to an assessment report in an Audit Manager
// assessment.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation BatchAssociateAssessmentReportEvidence for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/BatchAssociateAssessmentReportEvidence
func (c *AuditManager) BatchAssociateAssessmentReportEvidence(input *BatchAssociateAssessmentReportEvidenceInput) (*BatchAssociateAssessmentReportEvidenceOutput, error) {
	req, out := c.BatchAssociateAssessmentReportEvidenceRequest(input)
	return out, req.Send()
}

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

const opBatchCreateDelegationByAssessment = "BatchCreateDelegationByAssessment"

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

	if input == nil {
		input = &BatchCreateDelegationByAssessmentInput{}
	}

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

// BatchCreateDelegationByAssessment API operation for AWS Audit Manager.
//
// Creates a batch of delegations for an assessment in Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation BatchCreateDelegationByAssessment for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/BatchCreateDelegationByAssessment
func (c *AuditManager) BatchCreateDelegationByAssessment(input *BatchCreateDelegationByAssessmentInput) (*BatchCreateDelegationByAssessmentOutput, error) {
	req, out := c.BatchCreateDelegationByAssessmentRequest(input)
	return out, req.Send()
}

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

const opBatchDeleteDelegationByAssessment = "BatchDeleteDelegationByAssessment"

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

	if input == nil {
		input = &BatchDeleteDelegationByAssessmentInput{}
	}

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

// BatchDeleteDelegationByAssessment API operation for AWS Audit Manager.
//
// Deletes a batch of delegations for an assessment in Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation BatchDeleteDelegationByAssessment for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/BatchDeleteDelegationByAssessment
func (c *AuditManager) BatchDeleteDelegationByAssessment(input *BatchDeleteDelegationByAssessmentInput) (*BatchDeleteDelegationByAssessmentOutput, error) {
	req, out := c.BatchDeleteDelegationByAssessmentRequest(input)
	return out, req.Send()
}

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

const opBatchDisassociateAssessmentReportEvidence = "BatchDisassociateAssessmentReportEvidence"

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

	if input == nil {
		input = &BatchDisassociateAssessmentReportEvidenceInput{}
	}

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

// BatchDisassociateAssessmentReportEvidence API operation for AWS Audit Manager.
//
// Disassociates a list of evidence from an assessment report in Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation BatchDisassociateAssessmentReportEvidence for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/BatchDisassociateAssessmentReportEvidence
func (c *AuditManager) BatchDisassociateAssessmentReportEvidence(input *BatchDisassociateAssessmentReportEvidenceInput) (*BatchDisassociateAssessmentReportEvidenceOutput, error) {
	req, out := c.BatchDisassociateAssessmentReportEvidenceRequest(input)
	return out, req.Send()
}

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

const opBatchImportEvidenceToAssessmentControl = "BatchImportEvidenceToAssessmentControl"

// BatchImportEvidenceToAssessmentControlRequest generates a "aws/request.Request" representing the
// client's request for the BatchImportEvidenceToAssessmentControl operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See BatchImportEvidenceToAssessmentControl for more information on using the BatchImportEvidenceToAssessmentControl
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the BatchImportEvidenceToAssessmentControlRequest method.
//	req, resp := client.BatchImportEvidenceToAssessmentControlRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/BatchImportEvidenceToAssessmentControl
func (c *AuditManager) BatchImportEvidenceToAssessmentControlRequest(input *BatchImportEvidenceToAssessmentControlInput) (req *request.Request, output *BatchImportEvidenceToAssessmentControlOutput) {
	op := &request.Operation{
		Name:       opBatchImportEvidenceToAssessmentControl,
		HTTPMethod: "POST",
		HTTPPath:   "/assessments/{assessmentId}/controlSets/{controlSetId}/controls/{controlId}/evidence",
	}

	if input == nil {
		input = &BatchImportEvidenceToAssessmentControlInput{}
	}

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

// BatchImportEvidenceToAssessmentControl API operation for AWS Audit Manager.
//
// Adds one or more pieces of evidence to a control in an Audit Manager assessment.
//
// You can import manual evidence from any S3 bucket by specifying the S3 URI
// of the object. You can also upload a file from your browser, or enter plain
// text in response to a risk assessment question.
//
// The following restrictions apply to this action:
//
//   - manualEvidence can be only one of the following: evidenceFileName, s3ResourcePath,
//     or textResponse
//
//   - Maximum size of an individual evidence file: 100 MB
//
//   - Number of daily manual evidence uploads per control: 100
//
//   - Supported file formats: See Supported file types for manual evidence
//     (https://docs.aws.amazon.com/audit-manager/latest/userguide/upload-evidence.html#supported-manual-evidence-files)
//     in the Audit Manager User Guide
//
// For more information about Audit Manager service restrictions, see Quotas
// and restrictions for Audit Manager (https://docs.aws.amazon.com/audit-manager/latest/userguide/service-quotas.html).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation BatchImportEvidenceToAssessmentControl for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/BatchImportEvidenceToAssessmentControl
func (c *AuditManager) BatchImportEvidenceToAssessmentControl(input *BatchImportEvidenceToAssessmentControlInput) (*BatchImportEvidenceToAssessmentControlOutput, error) {
	req, out := c.BatchImportEvidenceToAssessmentControlRequest(input)
	return out, req.Send()
}

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

const opCreateAssessment = "CreateAssessment"

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

	if input == nil {
		input = &CreateAssessmentInput{}
	}

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

// CreateAssessment API operation for AWS Audit Manager.
//
// Creates an assessment in Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation CreateAssessment for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ServiceQuotaExceededException
//     You've reached your account quota for this resource type. To perform the
//     requested action, delete some existing resources or request a quota increase
//     (https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) from
//     the Service Quotas console. For a list of Audit Manager service quotas, see
//     Quotas and restrictions for Audit Manager (https://docs.aws.amazon.com/audit-manager/latest/userguide/service-quotas.html).
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/CreateAssessment
func (c *AuditManager) CreateAssessment(input *CreateAssessmentInput) (*CreateAssessmentOutput, error) {
	req, out := c.CreateAssessmentRequest(input)
	return out, req.Send()
}

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

const opCreateAssessmentFramework = "CreateAssessmentFramework"

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

	if input == nil {
		input = &CreateAssessmentFrameworkInput{}
	}

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

// CreateAssessmentFramework API operation for AWS Audit Manager.
//
// Creates a custom framework in Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation CreateAssessmentFramework for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ServiceQuotaExceededException
//     You've reached your account quota for this resource type. To perform the
//     requested action, delete some existing resources or request a quota increase
//     (https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) from
//     the Service Quotas console. For a list of Audit Manager service quotas, see
//     Quotas and restrictions for Audit Manager (https://docs.aws.amazon.com/audit-manager/latest/userguide/service-quotas.html).
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/CreateAssessmentFramework
func (c *AuditManager) CreateAssessmentFramework(input *CreateAssessmentFrameworkInput) (*CreateAssessmentFrameworkOutput, error) {
	req, out := c.CreateAssessmentFrameworkRequest(input)
	return out, req.Send()
}

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

const opCreateAssessmentReport = "CreateAssessmentReport"

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

	if input == nil {
		input = &CreateAssessmentReportInput{}
	}

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

// CreateAssessmentReport API operation for AWS Audit Manager.
//
// Creates an assessment report for the specified assessment.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation CreateAssessmentReport for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/CreateAssessmentReport
func (c *AuditManager) CreateAssessmentReport(input *CreateAssessmentReportInput) (*CreateAssessmentReportOutput, error) {
	req, out := c.CreateAssessmentReportRequest(input)
	return out, req.Send()
}

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

const opCreateControl = "CreateControl"

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

	if input == nil {
		input = &CreateControlInput{}
	}

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

// CreateControl API operation for AWS Audit Manager.
//
// Creates a new custom control in Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation CreateControl for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ServiceQuotaExceededException
//     You've reached your account quota for this resource type. To perform the
//     requested action, delete some existing resources or request a quota increase
//     (https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) from
//     the Service Quotas console. For a list of Audit Manager service quotas, see
//     Quotas and restrictions for Audit Manager (https://docs.aws.amazon.com/audit-manager/latest/userguide/service-quotas.html).
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/CreateControl
func (c *AuditManager) CreateControl(input *CreateControlInput) (*CreateControlOutput, error) {
	req, out := c.CreateControlRequest(input)
	return out, req.Send()
}

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

const opDeleteAssessment = "DeleteAssessment"

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

	if input == nil {
		input = &DeleteAssessmentInput{}
	}

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

// DeleteAssessment API operation for AWS Audit Manager.
//
// Deletes an assessment in Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation DeleteAssessment for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/DeleteAssessment
func (c *AuditManager) DeleteAssessment(input *DeleteAssessmentInput) (*DeleteAssessmentOutput, error) {
	req, out := c.DeleteAssessmentRequest(input)
	return out, req.Send()
}

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

const opDeleteAssessmentFramework = "DeleteAssessmentFramework"

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

	if input == nil {
		input = &DeleteAssessmentFrameworkInput{}
	}

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

// DeleteAssessmentFramework API operation for AWS Audit Manager.
//
// Deletes a custom framework in Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation DeleteAssessmentFramework for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/DeleteAssessmentFramework
func (c *AuditManager) DeleteAssessmentFramework(input *DeleteAssessmentFrameworkInput) (*DeleteAssessmentFrameworkOutput, error) {
	req, out := c.DeleteAssessmentFrameworkRequest(input)
	return out, req.Send()
}

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

const opDeleteAssessmentFrameworkShare = "DeleteAssessmentFrameworkShare"

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

	if input == nil {
		input = &DeleteAssessmentFrameworkShareInput{}
	}

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

// DeleteAssessmentFrameworkShare API operation for AWS Audit Manager.
//
// Deletes a share request for a custom framework in Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation DeleteAssessmentFrameworkShare for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/DeleteAssessmentFrameworkShare
func (c *AuditManager) DeleteAssessmentFrameworkShare(input *DeleteAssessmentFrameworkShareInput) (*DeleteAssessmentFrameworkShareOutput, error) {
	req, out := c.DeleteAssessmentFrameworkShareRequest(input)
	return out, req.Send()
}

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

const opDeleteAssessmentReport = "DeleteAssessmentReport"

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

	if input == nil {
		input = &DeleteAssessmentReportInput{}
	}

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

// DeleteAssessmentReport API operation for AWS Audit Manager.
//
// Deletes an assessment report in Audit Manager.
//
// When you run the DeleteAssessmentReport operation, Audit Manager attempts
// to delete the following data:
//
// # The specified assessment report that’s stored in your S3 bucket
//
// # The associated metadata that’s stored in Audit Manager
//
// If Audit Manager can’t access the assessment report in your S3 bucket,
// the report isn’t deleted. In this event, the DeleteAssessmentReport operation
// doesn’t fail. Instead, it proceeds to delete the associated metadata only.
// You must then delete the assessment report from the S3 bucket yourself.
//
// This scenario happens when Audit Manager receives a 403 (Forbidden) or 404
// (Not Found) error from Amazon S3. To avoid this, make sure that your S3 bucket
// is available, and that you configured the correct permissions for Audit Manager
// to delete resources in your S3 bucket. For an example permissions policy
// that you can use, see Assessment report destination permissions (https://docs.aws.amazon.com/audit-manager/latest/userguide/security_iam_id-based-policy-examples.html#full-administrator-access-assessment-report-destination)
// in the Audit Manager User Guide. For information about the issues that could
// cause a 403 (Forbidden) or 404 (Not Found) error from Amazon S3, see List
// of Error Codes (https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ErrorCodeList)
// in the Amazon Simple Storage Service API Reference.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation DeleteAssessmentReport for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/DeleteAssessmentReport
func (c *AuditManager) DeleteAssessmentReport(input *DeleteAssessmentReportInput) (*DeleteAssessmentReportOutput, error) {
	req, out := c.DeleteAssessmentReportRequest(input)
	return out, req.Send()
}

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

const opDeleteControl = "DeleteControl"

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

	if input == nil {
		input = &DeleteControlInput{}
	}

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

// DeleteControl API operation for AWS Audit Manager.
//
// Deletes a custom control in Audit Manager.
//
// When you invoke this operation, the custom control is deleted from any frameworks
// or assessments that it’s currently part of. As a result, Audit Manager
// will stop collecting evidence for that custom control in all of your assessments.
// This includes assessments that you previously created before you deleted
// the custom control.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation DeleteControl for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/DeleteControl
func (c *AuditManager) DeleteControl(input *DeleteControlInput) (*DeleteControlOutput, error) {
	req, out := c.DeleteControlRequest(input)
	return out, req.Send()
}

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

const opDeregisterAccount = "DeregisterAccount"

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

	if input == nil {
		input = &DeregisterAccountInput{}
	}

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

// DeregisterAccount API operation for AWS Audit Manager.
//
// Deregisters an account in Audit Manager.
//
// Before you deregister, you can use the UpdateSettings (https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_UpdateSettings.html)
// API operation to set your preferred data retention policy. By default, Audit
// Manager retains your data. If you want to delete your data, you can use the
// DeregistrationPolicy attribute to request the deletion of your data.
//
// For more information about data retention, see Data Protection (https://docs.aws.amazon.com/audit-manager/latest/userguide/data-protection.html)
// in the Audit Manager User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation DeregisterAccount for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/DeregisterAccount
func (c *AuditManager) DeregisterAccount(input *DeregisterAccountInput) (*DeregisterAccountOutput, error) {
	req, out := c.DeregisterAccountRequest(input)
	return out, req.Send()
}

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

const opDeregisterOrganizationAdminAccount = "DeregisterOrganizationAdminAccount"

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

	if input == nil {
		input = &DeregisterOrganizationAdminAccountInput{}
	}

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

// DeregisterOrganizationAdminAccount API operation for AWS Audit Manager.
//
// Removes the specified Amazon Web Services account as a delegated administrator
// for Audit Manager.
//
// When you remove a delegated administrator from your Audit Manager settings,
// you continue to have access to the evidence that you previously collected
// under that account. This is also the case when you deregister a delegated
// administrator from Organizations. However, Audit Manager stops collecting
// and attaching evidence to that delegated administrator account moving forward.
//
// Keep in mind the following cleanup task if you use evidence finder:
//
// Before you use your management account to remove a delegated administrator,
// make sure that the current delegated administrator account signs in to Audit
// Manager and disables evidence finder first. Disabling evidence finder automatically
// deletes the event data store that was created in their account when they
// enabled evidence finder. If this task isn’t completed, the event data store
// remains in their account. In this case, we recommend that the original delegated
// administrator goes to CloudTrail Lake and manually deletes the event data
// store (https://docs.aws.amazon.com/awscloudtrail/latest/userguide/query-eds-disable-termination.html).
//
// This cleanup task is necessary to ensure that you don't end up with multiple
// event data stores. Audit Manager ignores an unused event data store after
// you remove or change a delegated administrator account. However, the unused
// event data store continues to incur storage costs from CloudTrail Lake if
// you don't delete it.
//
// When you deregister a delegated administrator account for Audit Manager,
// the data for that account isn’t deleted. If you want to delete resource
// data for a delegated administrator account, you must perform that task separately
// before you deregister the account. Either, you can do this in the Audit Manager
// console. Or, you can use one of the delete API operations that are provided
// by Audit Manager.
//
// To delete your Audit Manager resource data, see the following instructions:
//
//   - DeleteAssessment (https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_DeleteAssessment.html)
//     (see also: Deleting an assessment (https://docs.aws.amazon.com/audit-manager/latest/userguide/delete-assessment.html)
//     in the Audit Manager User Guide)
//
//   - DeleteAssessmentFramework (https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_DeleteAssessmentFramework.html)
//     (see also: Deleting a custom framework (https://docs.aws.amazon.com/audit-manager/latest/userguide/delete-custom-framework.html)
//     in the Audit Manager User Guide)
//
//   - DeleteAssessmentFrameworkShare (https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_DeleteAssessmentFrameworkShare.html)
//     (see also: Deleting a share request (https://docs.aws.amazon.com/audit-manager/latest/userguide/deleting-shared-framework-requests.html)
//     in the Audit Manager User Guide)
//
//   - DeleteAssessmentReport (https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_DeleteAssessmentReport.html)
//     (see also: Deleting an assessment report (https://docs.aws.amazon.com/audit-manager/latest/userguide/generate-assessment-report.html#delete-assessment-report-steps)
//     in the Audit Manager User Guide)
//
//   - DeleteControl (https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_DeleteControl.html)
//     (see also: Deleting a custom control (https://docs.aws.amazon.com/audit-manager/latest/userguide/delete-controls.html)
//     in the Audit Manager User Guide)
//
// At this time, Audit Manager doesn't provide an option to delete evidence
// for a specific delegated administrator. Instead, when your management account
// deregisters Audit Manager, we perform a cleanup for the current delegated
// administrator account at the time of deregistration.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation DeregisterOrganizationAdminAccount for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/DeregisterOrganizationAdminAccount
func (c *AuditManager) DeregisterOrganizationAdminAccount(input *DeregisterOrganizationAdminAccountInput) (*DeregisterOrganizationAdminAccountOutput, error) {
	req, out := c.DeregisterOrganizationAdminAccountRequest(input)
	return out, req.Send()
}

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

const opDisassociateAssessmentReportEvidenceFolder = "DisassociateAssessmentReportEvidenceFolder"

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

	if input == nil {
		input = &DisassociateAssessmentReportEvidenceFolderInput{}
	}

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

// DisassociateAssessmentReportEvidenceFolder API operation for AWS Audit Manager.
//
// Disassociates an evidence folder from the specified assessment report in
// Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation DisassociateAssessmentReportEvidenceFolder for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/DisassociateAssessmentReportEvidenceFolder
func (c *AuditManager) DisassociateAssessmentReportEvidenceFolder(input *DisassociateAssessmentReportEvidenceFolderInput) (*DisassociateAssessmentReportEvidenceFolderOutput, error) {
	req, out := c.DisassociateAssessmentReportEvidenceFolderRequest(input)
	return out, req.Send()
}

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

const opGetAccountStatus = "GetAccountStatus"

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

	if input == nil {
		input = &GetAccountStatusInput{}
	}

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

// GetAccountStatus API operation for AWS Audit Manager.
//
// Gets the registration status of an account in Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation GetAccountStatus for usage and error information.
//
// Returned Error Types:
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/GetAccountStatus
func (c *AuditManager) GetAccountStatus(input *GetAccountStatusInput) (*GetAccountStatusOutput, error) {
	req, out := c.GetAccountStatusRequest(input)
	return out, req.Send()
}

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

const opGetAssessment = "GetAssessment"

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

	if input == nil {
		input = &GetAssessmentInput{}
	}

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

// GetAssessment API operation for AWS Audit Manager.
//
// Gets information about a specified assessment.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation GetAssessment for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/GetAssessment
func (c *AuditManager) GetAssessment(input *GetAssessmentInput) (*GetAssessmentOutput, error) {
	req, out := c.GetAssessmentRequest(input)
	return out, req.Send()
}

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

const opGetAssessmentFramework = "GetAssessmentFramework"

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

	if input == nil {
		input = &GetAssessmentFrameworkInput{}
	}

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

// GetAssessmentFramework API operation for AWS Audit Manager.
//
// Gets information about a specified framework.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation GetAssessmentFramework for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/GetAssessmentFramework
func (c *AuditManager) GetAssessmentFramework(input *GetAssessmentFrameworkInput) (*GetAssessmentFrameworkOutput, error) {
	req, out := c.GetAssessmentFrameworkRequest(input)
	return out, req.Send()
}

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

const opGetAssessmentReportUrl = "GetAssessmentReportUrl"

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

	if input == nil {
		input = &GetAssessmentReportUrlInput{}
	}

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

// GetAssessmentReportUrl API operation for AWS Audit Manager.
//
// Gets the URL of an assessment report in Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation GetAssessmentReportUrl for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/GetAssessmentReportUrl
func (c *AuditManager) GetAssessmentReportUrl(input *GetAssessmentReportUrlInput) (*GetAssessmentReportUrlOutput, error) {
	req, out := c.GetAssessmentReportUrlRequest(input)
	return out, req.Send()
}

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

const opGetChangeLogs = "GetChangeLogs"

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

	if input == nil {
		input = &GetChangeLogsInput{}
	}

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

// GetChangeLogs API operation for AWS Audit Manager.
//
// Gets a list of changelogs from Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation GetChangeLogs for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/GetChangeLogs
func (c *AuditManager) GetChangeLogs(input *GetChangeLogsInput) (*GetChangeLogsOutput, error) {
	req, out := c.GetChangeLogsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetControl = "GetControl"

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

	if input == nil {
		input = &GetControlInput{}
	}

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

// GetControl API operation for AWS Audit Manager.
//
// Gets information about a specified control.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation GetControl for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/GetControl
func (c *AuditManager) GetControl(input *GetControlInput) (*GetControlOutput, error) {
	req, out := c.GetControlRequest(input)
	return out, req.Send()
}

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

const opGetDelegations = "GetDelegations"

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

	if input == nil {
		input = &GetDelegationsInput{}
	}

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

// GetDelegations API operation for AWS Audit Manager.
//
// Gets a list of delegations from an audit owner to a delegate.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation GetDelegations for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/GetDelegations
func (c *AuditManager) GetDelegations(input *GetDelegationsInput) (*GetDelegationsOutput, error) {
	req, out := c.GetDelegationsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetEvidence = "GetEvidence"

// GetEvidenceRequest generates a "aws/request.Request" representing the
// client's request for the GetEvidence operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See GetEvidence for more information on using the GetEvidence
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the GetEvidenceRequest method.
//	req, resp := client.GetEvidenceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/GetEvidence
func (c *AuditManager) GetEvidenceRequest(input *GetEvidenceInput) (req *request.Request, output *GetEvidenceOutput) {
	op := &request.Operation{
		Name:       opGetEvidence,
		HTTPMethod: "GET",
		HTTPPath:   "/assessments/{assessmentId}/controlSets/{controlSetId}/evidenceFolders/{evidenceFolderId}/evidence/{evidenceId}",
	}

	if input == nil {
		input = &GetEvidenceInput{}
	}

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

// GetEvidence API operation for AWS Audit Manager.
//
// Gets information about a specified evidence item.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation GetEvidence for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/GetEvidence
func (c *AuditManager) GetEvidence(input *GetEvidenceInput) (*GetEvidenceOutput, error) {
	req, out := c.GetEvidenceRequest(input)
	return out, req.Send()
}

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

const opGetEvidenceByEvidenceFolder = "GetEvidenceByEvidenceFolder"

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

	if input == nil {
		input = &GetEvidenceByEvidenceFolderInput{}
	}

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

// GetEvidenceByEvidenceFolder API operation for AWS Audit Manager.
//
// Gets all evidence from a specified evidence folder in Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation GetEvidenceByEvidenceFolder for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/GetEvidenceByEvidenceFolder
func (c *AuditManager) GetEvidenceByEvidenceFolder(input *GetEvidenceByEvidenceFolderInput) (*GetEvidenceByEvidenceFolderOutput, error) {
	req, out := c.GetEvidenceByEvidenceFolderRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetEvidenceFileUploadUrl = "GetEvidenceFileUploadUrl"

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

	if input == nil {
		input = &GetEvidenceFileUploadUrlInput{}
	}

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

// GetEvidenceFileUploadUrl API operation for AWS Audit Manager.
//
// Creates a presigned Amazon S3 URL that can be used to upload a file as manual
// evidence. For instructions on how to use this operation, see Upload a file
// from your browser (https://docs.aws.amazon.com/audit-manager/latest/userguide/upload-evidence.html#how-to-upload-manual-evidence-files)
// in the Audit Manager User Guide.
//
// The following restrictions apply to this operation:
//
//   - Maximum size of an individual evidence file: 100 MB
//
//   - Number of daily manual evidence uploads per control: 100
//
//   - Supported file formats: See Supported file types for manual evidence
//     (https://docs.aws.amazon.com/audit-manager/latest/userguide/upload-evidence.html#supported-manual-evidence-files)
//     in the Audit Manager User Guide
//
// For more information about Audit Manager service restrictions, see Quotas
// and restrictions for Audit Manager (https://docs.aws.amazon.com/audit-manager/latest/userguide/service-quotas.html).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation GetEvidenceFileUploadUrl for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/GetEvidenceFileUploadUrl
func (c *AuditManager) GetEvidenceFileUploadUrl(input *GetEvidenceFileUploadUrlInput) (*GetEvidenceFileUploadUrlOutput, error) {
	req, out := c.GetEvidenceFileUploadUrlRequest(input)
	return out, req.Send()
}

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

const opGetEvidenceFolder = "GetEvidenceFolder"

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

	if input == nil {
		input = &GetEvidenceFolderInput{}
	}

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

// GetEvidenceFolder API operation for AWS Audit Manager.
//
// Gets an evidence folder from a specified assessment in Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation GetEvidenceFolder for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/GetEvidenceFolder
func (c *AuditManager) GetEvidenceFolder(input *GetEvidenceFolderInput) (*GetEvidenceFolderOutput, error) {
	req, out := c.GetEvidenceFolderRequest(input)
	return out, req.Send()
}

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

const opGetEvidenceFoldersByAssessment = "GetEvidenceFoldersByAssessment"

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

	if input == nil {
		input = &GetEvidenceFoldersByAssessmentInput{}
	}

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

// GetEvidenceFoldersByAssessment API operation for AWS Audit Manager.
//
// Gets the evidence folders from a specified assessment in Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation GetEvidenceFoldersByAssessment for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/GetEvidenceFoldersByAssessment
func (c *AuditManager) GetEvidenceFoldersByAssessment(input *GetEvidenceFoldersByAssessmentInput) (*GetEvidenceFoldersByAssessmentOutput, error) {
	req, out := c.GetEvidenceFoldersByAssessmentRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetEvidenceFoldersByAssessmentControl = "GetEvidenceFoldersByAssessmentControl"

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

	if input == nil {
		input = &GetEvidenceFoldersByAssessmentControlInput{}
	}

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

// GetEvidenceFoldersByAssessmentControl API operation for AWS Audit Manager.
//
// Gets a list of evidence folders that are associated with a specified control
// in an Audit Manager assessment.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation GetEvidenceFoldersByAssessmentControl for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/GetEvidenceFoldersByAssessmentControl
func (c *AuditManager) GetEvidenceFoldersByAssessmentControl(input *GetEvidenceFoldersByAssessmentControlInput) (*GetEvidenceFoldersByAssessmentControlOutput, error) {
	req, out := c.GetEvidenceFoldersByAssessmentControlRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetInsights = "GetInsights"

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

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

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

// GetInsights API operation for AWS Audit Manager.
//
// Gets the latest analytics data for all your current active assessments.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation GetInsights for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/GetInsights
func (c *AuditManager) GetInsights(input *GetInsightsInput) (*GetInsightsOutput, error) {
	req, out := c.GetInsightsRequest(input)
	return out, req.Send()
}

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

const opGetInsightsByAssessment = "GetInsightsByAssessment"

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

	if input == nil {
		input = &GetInsightsByAssessmentInput{}
	}

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

// GetInsightsByAssessment API operation for AWS Audit Manager.
//
// Gets the latest analytics data for a specific active assessment.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation GetInsightsByAssessment for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/GetInsightsByAssessment
func (c *AuditManager) GetInsightsByAssessment(input *GetInsightsByAssessmentInput) (*GetInsightsByAssessmentOutput, error) {
	req, out := c.GetInsightsByAssessmentRequest(input)
	return out, req.Send()
}

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

const opGetOrganizationAdminAccount = "GetOrganizationAdminAccount"

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

	if input == nil {
		input = &GetOrganizationAdminAccountInput{}
	}

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

// GetOrganizationAdminAccount API operation for AWS Audit Manager.
//
// Gets the name of the delegated Amazon Web Services administrator account
// for a specified organization.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation GetOrganizationAdminAccount for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/GetOrganizationAdminAccount
func (c *AuditManager) GetOrganizationAdminAccount(input *GetOrganizationAdminAccountInput) (*GetOrganizationAdminAccountOutput, error) {
	req, out := c.GetOrganizationAdminAccountRequest(input)
	return out, req.Send()
}

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

const opGetServicesInScope = "GetServicesInScope"

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

	if input == nil {
		input = &GetServicesInScopeInput{}
	}

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

// GetServicesInScope API operation for AWS Audit Manager.
//
// Gets a list of all of the Amazon Web Services that you can choose to include
// in your assessment. When you create an assessment (https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_CreateAssessment.html),
// specify which of these services you want to include to narrow the assessment's
// scope (https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_Scope.html).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation GetServicesInScope for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/GetServicesInScope
func (c *AuditManager) GetServicesInScope(input *GetServicesInScopeInput) (*GetServicesInScopeOutput, error) {
	req, out := c.GetServicesInScopeRequest(input)
	return out, req.Send()
}

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

const opGetSettings = "GetSettings"

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

	if input == nil {
		input = &GetSettingsInput{}
	}

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

// GetSettings API operation for AWS Audit Manager.
//
// Gets the settings for a specified Amazon Web Services account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation GetSettings for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/GetSettings
func (c *AuditManager) GetSettings(input *GetSettingsInput) (*GetSettingsOutput, error) {
	req, out := c.GetSettingsRequest(input)
	return out, req.Send()
}

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

const opListAssessmentControlInsightsByControlDomain = "ListAssessmentControlInsightsByControlDomain"

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

	if input == nil {
		input = &ListAssessmentControlInsightsByControlDomainInput{}
	}

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

// ListAssessmentControlInsightsByControlDomain API operation for AWS Audit Manager.
//
// Lists the latest analytics data for controls within a specific control domain
// and a specific active assessment.
//
// Control insights are listed only if the control belongs to the control domain
// and assessment that was specified. Moreover, the control must have collected
// evidence on the lastUpdated date of controlInsightsByAssessment. If neither
// of these conditions are met, no data is listed for that control.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation ListAssessmentControlInsightsByControlDomain for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/ListAssessmentControlInsightsByControlDomain
func (c *AuditManager) ListAssessmentControlInsightsByControlDomain(input *ListAssessmentControlInsightsByControlDomainInput) (*ListAssessmentControlInsightsByControlDomainOutput, error) {
	req, out := c.ListAssessmentControlInsightsByControlDomainRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListAssessmentFrameworkShareRequests = "ListAssessmentFrameworkShareRequests"

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

	if input == nil {
		input = &ListAssessmentFrameworkShareRequestsInput{}
	}

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

// ListAssessmentFrameworkShareRequests API operation for AWS Audit Manager.
//
// Returns a list of sent or received share requests for custom frameworks in
// Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation ListAssessmentFrameworkShareRequests for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/ListAssessmentFrameworkShareRequests
func (c *AuditManager) ListAssessmentFrameworkShareRequests(input *ListAssessmentFrameworkShareRequestsInput) (*ListAssessmentFrameworkShareRequestsOutput, error) {
	req, out := c.ListAssessmentFrameworkShareRequestsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListAssessmentFrameworks = "ListAssessmentFrameworks"

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

	if input == nil {
		input = &ListAssessmentFrameworksInput{}
	}

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

// ListAssessmentFrameworks API operation for AWS Audit Manager.
//
// Returns a list of the frameworks that are available in the Audit Manager
// framework library.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation ListAssessmentFrameworks for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/ListAssessmentFrameworks
func (c *AuditManager) ListAssessmentFrameworks(input *ListAssessmentFrameworksInput) (*ListAssessmentFrameworksOutput, error) {
	req, out := c.ListAssessmentFrameworksRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListAssessmentReports = "ListAssessmentReports"

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

	if input == nil {
		input = &ListAssessmentReportsInput{}
	}

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

// ListAssessmentReports API operation for AWS Audit Manager.
//
// Returns a list of assessment reports created in Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation ListAssessmentReports for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/ListAssessmentReports
func (c *AuditManager) ListAssessmentReports(input *ListAssessmentReportsInput) (*ListAssessmentReportsOutput, error) {
	req, out := c.ListAssessmentReportsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListAssessments = "ListAssessments"

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

	if input == nil {
		input = &ListAssessmentsInput{}
	}

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

// ListAssessments API operation for AWS Audit Manager.
//
// Returns a list of current and past assessments from Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation ListAssessments for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/ListAssessments
func (c *AuditManager) ListAssessments(input *ListAssessmentsInput) (*ListAssessmentsOutput, error) {
	req, out := c.ListAssessmentsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListControlDomainInsights = "ListControlDomainInsights"

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

	if input == nil {
		input = &ListControlDomainInsightsInput{}
	}

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

// ListControlDomainInsights API operation for AWS Audit Manager.
//
// Lists the latest analytics data for control domains across all of your active
// assessments.
//
// A control domain is listed only if at least one of the controls within that
// domain collected evidence on the lastUpdated date of controlDomainInsights.
// If this condition isn’t met, no data is listed for that control domain.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation ListControlDomainInsights for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/ListControlDomainInsights
func (c *AuditManager) ListControlDomainInsights(input *ListControlDomainInsightsInput) (*ListControlDomainInsightsOutput, error) {
	req, out := c.ListControlDomainInsightsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListControlDomainInsightsByAssessment = "ListControlDomainInsightsByAssessment"

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

	if input == nil {
		input = &ListControlDomainInsightsByAssessmentInput{}
	}

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

// ListControlDomainInsightsByAssessment API operation for AWS Audit Manager.
//
// Lists analytics data for control domains within a specified active assessment.
//
// A control domain is listed only if at least one of the controls within that
// domain collected evidence on the lastUpdated date of controlDomainInsights.
// If this condition isn’t met, no data is listed for that domain.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation ListControlDomainInsightsByAssessment for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/ListControlDomainInsightsByAssessment
func (c *AuditManager) ListControlDomainInsightsByAssessment(input *ListControlDomainInsightsByAssessmentInput) (*ListControlDomainInsightsByAssessmentOutput, error) {
	req, out := c.ListControlDomainInsightsByAssessmentRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListControlInsightsByControlDomain = "ListControlInsightsByControlDomain"

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

	if input == nil {
		input = &ListControlInsightsByControlDomainInput{}
	}

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

// ListControlInsightsByControlDomain API operation for AWS Audit Manager.
//
// Lists the latest analytics data for controls within a specific control domain
// across all active assessments.
//
// Control insights are listed only if the control belongs to the control domain
// that was specified and the control collected evidence on the lastUpdated
// date of controlInsightsMetadata. If neither of these conditions are met,
// no data is listed for that control.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation ListControlInsightsByControlDomain for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/ListControlInsightsByControlDomain
func (c *AuditManager) ListControlInsightsByControlDomain(input *ListControlInsightsByControlDomainInput) (*ListControlInsightsByControlDomainOutput, error) {
	req, out := c.ListControlInsightsByControlDomainRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListControls = "ListControls"

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

	if input == nil {
		input = &ListControlsInput{}
	}

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

// ListControls API operation for AWS Audit Manager.
//
// Returns a list of controls from Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation ListControls for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/ListControls
func (c *AuditManager) ListControls(input *ListControlsInput) (*ListControlsOutput, error) {
	req, out := c.ListControlsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListKeywordsForDataSource = "ListKeywordsForDataSource"

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

	if input == nil {
		input = &ListKeywordsForDataSourceInput{}
	}

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

// ListKeywordsForDataSource API operation for AWS Audit Manager.
//
// Returns a list of keywords that are pre-mapped to the specified control data
// source.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation ListKeywordsForDataSource for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/ListKeywordsForDataSource
func (c *AuditManager) ListKeywordsForDataSource(input *ListKeywordsForDataSourceInput) (*ListKeywordsForDataSourceOutput, error) {
	req, out := c.ListKeywordsForDataSourceRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListNotifications = "ListNotifications"

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

	if input == nil {
		input = &ListNotificationsInput{}
	}

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

// ListNotifications API operation for AWS Audit Manager.
//
// Returns a list of all Audit Manager notifications.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation ListNotifications for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/ListNotifications
func (c *AuditManager) ListNotifications(input *ListNotificationsInput) (*ListNotificationsOutput, error) {
	req, out := c.ListNotificationsRequest(input)
	return out, req.Send()
}

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

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

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

	for p.Next() {
		if !fn(p.Page().(*ListNotificationsOutput), !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/auditmanager-2017-07-25/ListTagsForResource
func (c *AuditManager) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *ListTagsForResourceOutput) {
	op := &request.Operation{
		Name:       opListTagsForResource,
		HTTPMethod: "GET",
		HTTPPath:   "/tags/{resourceArn}",
	}

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

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

// ListTagsForResource API operation for AWS Audit Manager.
//
// Returns a list of tags for the specified resource in Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation ListTagsForResource for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/ListTagsForResource
func (c *AuditManager) 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 *AuditManager) 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 opRegisterAccount = "RegisterAccount"

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

	if input == nil {
		input = &RegisterAccountInput{}
	}

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

// RegisterAccount API operation for AWS Audit Manager.
//
// Enables Audit Manager for the specified Amazon Web Services account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation RegisterAccount for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/RegisterAccount
func (c *AuditManager) RegisterAccount(input *RegisterAccountInput) (*RegisterAccountOutput, error) {
	req, out := c.RegisterAccountRequest(input)
	return out, req.Send()
}

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

const opRegisterOrganizationAdminAccount = "RegisterOrganizationAdminAccount"

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

	if input == nil {
		input = &RegisterOrganizationAdminAccountInput{}
	}

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

// RegisterOrganizationAdminAccount API operation for AWS Audit Manager.
//
// Enables an Amazon Web Services account within the organization as the delegated
// administrator for Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation RegisterOrganizationAdminAccount for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/RegisterOrganizationAdminAccount
func (c *AuditManager) RegisterOrganizationAdminAccount(input *RegisterOrganizationAdminAccountInput) (*RegisterOrganizationAdminAccountOutput, error) {
	req, out := c.RegisterOrganizationAdminAccountRequest(input)
	return out, req.Send()
}

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

const opStartAssessmentFrameworkShare = "StartAssessmentFrameworkShare"

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

	if input == nil {
		input = &StartAssessmentFrameworkShareInput{}
	}

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

// StartAssessmentFrameworkShare API operation for AWS Audit Manager.
//
// Creates a share request for a custom framework in Audit Manager.
//
// The share request specifies a recipient and notifies them that a custom framework
// is available. Recipients have 120 days to accept or decline the request.
// If no action is taken, the share request expires.
//
// When you create a share request, Audit Manager stores a snapshot of your
// custom framework in the US East (N. Virginia) Amazon Web Services Region.
// Audit Manager also stores a backup of the same snapshot in the US West (Oregon)
// Amazon Web Services Region.
//
// Audit Manager deletes the snapshot and the backup snapshot when one of the
// following events occurs:
//
//   - The sender revokes the share request.
//
//   - The recipient declines the share request.
//
//   - The recipient encounters an error and doesn't successfully accept the
//     share request.
//
//   - The share request expires before the recipient responds to the request.
//
// When a sender resends a share request (https://docs.aws.amazon.com/audit-manager/latest/userguide/framework-sharing.html#framework-sharing-resend),
// the snapshot is replaced with an updated version that corresponds with the
// latest version of the custom framework.
//
// When a recipient accepts a share request, the snapshot is replicated into
// their Amazon Web Services account under the Amazon Web Services Region that
// was specified in the share request.
//
// When you invoke the StartAssessmentFrameworkShare API, you are about to share
// a custom framework with another Amazon Web Services account. You may not
// share a custom framework that is derived from a standard framework if the
// standard framework is designated as not eligible for sharing by Amazon Web
// Services, unless you have obtained permission to do so from the owner of
// the standard framework. To learn more about which standard frameworks are
// eligible for sharing, see Framework sharing eligibility (https://docs.aws.amazon.com/audit-manager/latest/userguide/share-custom-framework-concepts-and-terminology.html#eligibility)
// in the Audit Manager User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation StartAssessmentFrameworkShare for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/StartAssessmentFrameworkShare
func (c *AuditManager) StartAssessmentFrameworkShare(input *StartAssessmentFrameworkShareInput) (*StartAssessmentFrameworkShareOutput, error) {
	req, out := c.StartAssessmentFrameworkShareRequest(input)
	return out, req.Send()
}

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

const opTagResource = "TagResource"

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

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

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

// TagResource API operation for AWS Audit Manager.
//
// Tags the specified resource in Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation TagResource for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/TagResource
func (c *AuditManager) 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 *AuditManager) TagResourceWithContext(ctx aws.Context, input *TagResourceInput, opts ...request.Option) (*TagResourceOutput, error) {
	req, out := c.TagResourceRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUntagResource = "UntagResource"

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

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

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

// UntagResource API operation for AWS Audit Manager.
//
// Removes a tag from a resource in Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation UntagResource for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/UntagResource
func (c *AuditManager) 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 *AuditManager) 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 opUpdateAssessment = "UpdateAssessment"

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

	if input == nil {
		input = &UpdateAssessmentInput{}
	}

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

// UpdateAssessment API operation for AWS Audit Manager.
//
// Edits an Audit Manager assessment.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation UpdateAssessment for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/UpdateAssessment
func (c *AuditManager) UpdateAssessment(input *UpdateAssessmentInput) (*UpdateAssessmentOutput, error) {
	req, out := c.UpdateAssessmentRequest(input)
	return out, req.Send()
}

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

const opUpdateAssessmentControl = "UpdateAssessmentControl"

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

	if input == nil {
		input = &UpdateAssessmentControlInput{}
	}

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

// UpdateAssessmentControl API operation for AWS Audit Manager.
//
// Updates a control within an assessment in Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation UpdateAssessmentControl for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/UpdateAssessmentControl
func (c *AuditManager) UpdateAssessmentControl(input *UpdateAssessmentControlInput) (*UpdateAssessmentControlOutput, error) {
	req, out := c.UpdateAssessmentControlRequest(input)
	return out, req.Send()
}

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

const opUpdateAssessmentControlSetStatus = "UpdateAssessmentControlSetStatus"

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

	if input == nil {
		input = &UpdateAssessmentControlSetStatusInput{}
	}

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

// UpdateAssessmentControlSetStatus API operation for AWS Audit Manager.
//
// Updates the status of a control set in an Audit Manager assessment.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation UpdateAssessmentControlSetStatus for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/UpdateAssessmentControlSetStatus
func (c *AuditManager) UpdateAssessmentControlSetStatus(input *UpdateAssessmentControlSetStatusInput) (*UpdateAssessmentControlSetStatusOutput, error) {
	req, out := c.UpdateAssessmentControlSetStatusRequest(input)
	return out, req.Send()
}

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

const opUpdateAssessmentFramework = "UpdateAssessmentFramework"

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

	if input == nil {
		input = &UpdateAssessmentFrameworkInput{}
	}

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

// UpdateAssessmentFramework API operation for AWS Audit Manager.
//
// Updates a custom framework in Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation UpdateAssessmentFramework for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/UpdateAssessmentFramework
func (c *AuditManager) UpdateAssessmentFramework(input *UpdateAssessmentFrameworkInput) (*UpdateAssessmentFrameworkOutput, error) {
	req, out := c.UpdateAssessmentFrameworkRequest(input)
	return out, req.Send()
}

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

const opUpdateAssessmentFrameworkShare = "UpdateAssessmentFrameworkShare"

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

	if input == nil {
		input = &UpdateAssessmentFrameworkShareInput{}
	}

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

// UpdateAssessmentFrameworkShare API operation for AWS Audit Manager.
//
// Updates a share request for a custom framework in Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation UpdateAssessmentFrameworkShare for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ServiceQuotaExceededException
//     You've reached your account quota for this resource type. To perform the
//     requested action, delete some existing resources or request a quota increase
//     (https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) from
//     the Service Quotas console. For a list of Audit Manager service quotas, see
//     Quotas and restrictions for Audit Manager (https://docs.aws.amazon.com/audit-manager/latest/userguide/service-quotas.html).
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/UpdateAssessmentFrameworkShare
func (c *AuditManager) UpdateAssessmentFrameworkShare(input *UpdateAssessmentFrameworkShareInput) (*UpdateAssessmentFrameworkShareOutput, error) {
	req, out := c.UpdateAssessmentFrameworkShareRequest(input)
	return out, req.Send()
}

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

const opUpdateAssessmentStatus = "UpdateAssessmentStatus"

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

	if input == nil {
		input = &UpdateAssessmentStatusInput{}
	}

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

// UpdateAssessmentStatus API operation for AWS Audit Manager.
//
// Updates the status of an assessment in Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation UpdateAssessmentStatus for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ServiceQuotaExceededException
//     You've reached your account quota for this resource type. To perform the
//     requested action, delete some existing resources or request a quota increase
//     (https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) from
//     the Service Quotas console. For a list of Audit Manager service quotas, see
//     Quotas and restrictions for Audit Manager (https://docs.aws.amazon.com/audit-manager/latest/userguide/service-quotas.html).
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/UpdateAssessmentStatus
func (c *AuditManager) UpdateAssessmentStatus(input *UpdateAssessmentStatusInput) (*UpdateAssessmentStatusOutput, error) {
	req, out := c.UpdateAssessmentStatusRequest(input)
	return out, req.Send()
}

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

const opUpdateControl = "UpdateControl"

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

	if input == nil {
		input = &UpdateControlInput{}
	}

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

// UpdateControl API operation for AWS Audit Manager.
//
// Updates a custom control in Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation UpdateControl for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/UpdateControl
func (c *AuditManager) UpdateControl(input *UpdateControlInput) (*UpdateControlOutput, error) {
	req, out := c.UpdateControlRequest(input)
	return out, req.Send()
}

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

const opUpdateSettings = "UpdateSettings"

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

	if input == nil {
		input = &UpdateSettingsInput{}
	}

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

// UpdateSettings API operation for AWS Audit Manager.
//
// Updates Audit Manager settings for the current account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation UpdateSettings for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/UpdateSettings
func (c *AuditManager) UpdateSettings(input *UpdateSettingsInput) (*UpdateSettingsOutput, error) {
	req, out := c.UpdateSettingsRequest(input)
	return out, req.Send()
}

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

const opValidateAssessmentReportIntegrity = "ValidateAssessmentReportIntegrity"

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

	if input == nil {
		input = &ValidateAssessmentReportIntegrityInput{}
	}

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

// ValidateAssessmentReportIntegrity API operation for AWS Audit Manager.
//
// Validates the integrity of an assessment report in Audit Manager.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Audit Manager's
// API operation ValidateAssessmentReportIntegrity for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - AccessDeniedException
//     Your account isn't registered with Audit Manager. Check the delegated administrator
//     setup on the Audit Manager settings page, and try again.
//
//   - InternalServerException
//     An internal service error occurred during the processing of your request.
//     Try again later.
//
//   - ResourceNotFoundException
//     The resource that's specified in the request can't be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/ValidateAssessmentReportIntegrity
func (c *AuditManager) ValidateAssessmentReportIntegrity(input *ValidateAssessmentReportIntegrityInput) (*ValidateAssessmentReportIntegrityOutput, error) {
	req, out := c.ValidateAssessmentReportIntegrityRequest(input)
	return out, req.Send()
}

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

// The wrapper of Amazon Web Services account details, such as account ID or
// email address.
type AWSAccount struct {
	_ struct{} `type:"structure"`

	// The email address that's associated with the Amazon Web Services account.
	//
	// EmailAddress is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AWSAccount's
	// String and GoString methods.
	EmailAddress *string `locationName:"emailAddress" min:"1" type:"string" sensitive:"true"`

	// The identifier for the Amazon Web Services account.
	Id *string `locationName:"id" min:"12" type:"string"`

	// The name of the Amazon Web Services account.
	Name *string `locationName:"name" min:"1" type:"string"`
}

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

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

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

// SetEmailAddress sets the EmailAddress field's value.
func (s *AWSAccount) SetEmailAddress(v string) *AWSAccount {
	s.EmailAddress = &v
	return s
}

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

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

// An Amazon Web Service such as Amazon S3 or CloudTrail.
//
// For an example of how to find an Amazon Web Service name and how to define
// it in your assessment scope, see the following:
//
//   - Finding an Amazon Web Service name to use in your assessment scope (https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_GetServicesInScope.html#API_GetServicesInScope_Example_2)
//
//   - Defining an Amazon Web Service name in your assessment scope (https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_GetServicesInScope.html#API_GetServicesInScope_Example_3)
type AWSService struct {
	_ struct{} `type:"structure"`

	// The name of the Amazon Web Service.
	ServiceName *string `locationName:"serviceName" 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 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()
}

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

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

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

// Your account isn't registered with Audit Manager. Check the delegated administrator
// setup on the Audit Manager settings page, and try again.
type AccessDeniedException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

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

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

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

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

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

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

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

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

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

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

// An entity that defines the scope of audit evidence collected by Audit Manager.
// An Audit Manager assessment is an implementation of an Audit Manager framework.
type Assessment struct {
	_ struct{} `type:"structure"`

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

	// The Amazon Web Services account that's associated with the assessment.
	AwsAccount *AWSAccount `locationName:"awsAccount" type:"structure"`

	// The framework that the assessment was created from.
	//
	// Framework is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Assessment's
	// String and GoString methods.
	Framework *AssessmentFramework `locationName:"framework" type:"structure" sensitive:"true"`

	// The metadata for the assessment.
	Metadata *AssessmentMetadata `locationName:"metadata" type:"structure"`

	// The tags that are associated with the assessment.
	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 Assessment) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetAwsAccount sets the AwsAccount field's value.
func (s *Assessment) SetAwsAccount(v *AWSAccount) *Assessment {
	s.AwsAccount = v
	return s
}

// SetFramework sets the Framework field's value.
func (s *Assessment) SetFramework(v *AssessmentFramework) *Assessment {
	s.Framework = v
	return s
}

// SetMetadata sets the Metadata field's value.
func (s *Assessment) SetMetadata(v *AssessmentMetadata) *Assessment {
	s.Metadata = v
	return s
}

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

// The control entity that represents a standard control or a custom control
// in an Audit Manager assessment.
type AssessmentControl struct {
	_ struct{} `type:"structure"`

	// The amount of evidence in the assessment report.
	AssessmentReportEvidenceCount *int64 `locationName:"assessmentReportEvidenceCount" type:"integer"`

	// The list of comments that's attached to the control.
	Comments []*ControlComment `locationName:"comments" type:"list"`

	// The description of the control.
	Description *string `locationName:"description" type:"string"`

	// The amount of evidence that's collected for the control.
	EvidenceCount *int64 `locationName:"evidenceCount" type:"integer"`

	// The list of data sources for the evidence.
	EvidenceSources []*string `locationName:"evidenceSources" type:"list"`

	// The identifier for the control.
	Id *string `locationName:"id" min:"36" type:"string"`

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

	// The response of the control.
	Response *string `locationName:"response" type:"string" enum:"ControlResponse"`

	// The status of the control.
	Status *string `locationName:"status" type:"string" enum:"ControlStatus"`
}

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

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

// SetAssessmentReportEvidenceCount sets the AssessmentReportEvidenceCount field's value.
func (s *AssessmentControl) SetAssessmentReportEvidenceCount(v int64) *AssessmentControl {
	s.AssessmentReportEvidenceCount = &v
	return s
}

// SetComments sets the Comments field's value.
func (s *AssessmentControl) SetComments(v []*ControlComment) *AssessmentControl {
	s.Comments = v
	return s
}

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

// SetEvidenceCount sets the EvidenceCount field's value.
func (s *AssessmentControl) SetEvidenceCount(v int64) *AssessmentControl {
	s.EvidenceCount = &v
	return s
}

// SetEvidenceSources sets the EvidenceSources field's value.
func (s *AssessmentControl) SetEvidenceSources(v []*string) *AssessmentControl {
	s.EvidenceSources = v
	return s
}

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

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

// SetResponse sets the Response field's value.
func (s *AssessmentControl) SetResponse(v string) *AssessmentControl {
	s.Response = &v
	return s
}

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

// Represents a set of controls in an Audit Manager assessment.
type AssessmentControlSet struct {
	_ struct{} `type:"structure"`

	// The list of controls that's contained with the control set.
	Controls []*AssessmentControl `locationName:"controls" type:"list"`

	// The delegations that are associated with the control set.
	Delegations []*Delegation `locationName:"delegations" type:"list"`

	// The description for the control set.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The identifier of the control set in the assessment. This is the control
	// set name in a plain string format.
	Id *string `locationName:"id" min:"1" type:"string"`

	// The total number of evidence objects that are uploaded manually to the control
	// set.
	ManualEvidenceCount *int64 `locationName:"manualEvidenceCount" type:"integer"`

	// The roles that are associated with the control set.
	//
	// Roles is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssessmentControlSet's
	// String and GoString methods.
	Roles []*Role `locationName:"roles" type:"list" sensitive:"true"`

	// The current status of the control set.
	Status *string `locationName:"status" type:"string" enum:"ControlSetStatus"`

	// The total number of evidence objects that are retrieved automatically for
	// the control set.
	SystemEvidenceCount *int64 `locationName:"systemEvidenceCount" 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 AssessmentControlSet) String() string {
	return awsutil.Prettify(s)
}

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

// SetControls sets the Controls field's value.
func (s *AssessmentControlSet) SetControls(v []*AssessmentControl) *AssessmentControlSet {
	s.Controls = v
	return s
}

// SetDelegations sets the Delegations field's value.
func (s *AssessmentControlSet) SetDelegations(v []*Delegation) *AssessmentControlSet {
	s.Delegations = v
	return s
}

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

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

// SetManualEvidenceCount sets the ManualEvidenceCount field's value.
func (s *AssessmentControlSet) SetManualEvidenceCount(v int64) *AssessmentControlSet {
	s.ManualEvidenceCount = &v
	return s
}

// SetRoles sets the Roles field's value.
func (s *AssessmentControlSet) SetRoles(v []*Role) *AssessmentControlSet {
	s.Roles = v
	return s
}

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

// SetSystemEvidenceCount sets the SystemEvidenceCount field's value.
func (s *AssessmentControlSet) SetSystemEvidenceCount(v int64) *AssessmentControlSet {
	s.SystemEvidenceCount = &v
	return s
}

// The folder where Audit Manager stores evidence for an assessment.
type AssessmentEvidenceFolder struct {
	_ struct{} `type:"structure"`

	// The identifier for the assessment.
	AssessmentId *string `locationName:"assessmentId" min:"36" type:"string"`

	// The total count of evidence that's included in the assessment report.
	AssessmentReportSelectionCount *int64 `locationName:"assessmentReportSelectionCount" type:"integer"`

	// The name of the user who created the evidence folder.
	Author *string `locationName:"author" type:"string"`

	// The unique identifier for the control.
	ControlId *string `locationName:"controlId" min:"36" type:"string"`

	// The name of the control.
	ControlName *string `locationName:"controlName" min:"1" type:"string"`

	// The identifier for the control set.
	ControlSetId *string `locationName:"controlSetId" min:"1" type:"string"`

	// The Amazon Web Service that the evidence was collected from.
	DataSource *string `locationName:"dataSource" type:"string"`

	// The date when the first evidence was added to the evidence folder.
	Date *time.Time `locationName:"date" type:"timestamp"`

	// The total number of Amazon Web Services resources that were assessed to generate
	// the evidence.
	EvidenceAwsServiceSourceCount *int64 `locationName:"evidenceAwsServiceSourceCount" type:"integer"`

	// The number of evidence that falls under the compliance check category. This
	// evidence is collected from Config or Security Hub.
	EvidenceByTypeComplianceCheckCount *int64 `locationName:"evidenceByTypeComplianceCheckCount" type:"integer"`

	// The total number of issues that were reported directly from Security Hub,
	// Config, or both.
	EvidenceByTypeComplianceCheckIssuesCount *int64 `locationName:"evidenceByTypeComplianceCheckIssuesCount" type:"integer"`

	// The number of evidence that falls under the configuration data category.
	// This evidence is collected from configuration snapshots of other Amazon Web
	// Services such as Amazon EC2, Amazon S3, or IAM.
	EvidenceByTypeConfigurationDataCount *int64 `locationName:"evidenceByTypeConfigurationDataCount" type:"integer"`

	// The number of evidence that falls under the manual category. This evidence
	// is imported manually.
	EvidenceByTypeManualCount *int64 `locationName:"evidenceByTypeManualCount" type:"integer"`

	// The number of evidence that falls under the user activity category. This
	// evidence is collected from CloudTrail logs.
	EvidenceByTypeUserActivityCount *int64 `locationName:"evidenceByTypeUserActivityCount" type:"integer"`

	// The amount of evidence that's included in the evidence folder.
	EvidenceResourcesIncludedCount *int64 `locationName:"evidenceResourcesIncludedCount" type:"integer"`

	// The identifier for the folder that the evidence is stored in.
	Id *string `locationName:"id" min:"36" type:"string"`

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

	// The total amount of evidence in the evidence folder.
	TotalEvidence *int64 `locationName:"totalEvidence" 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 AssessmentEvidenceFolder) String() string {
	return awsutil.Prettify(s)
}

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *AssessmentEvidenceFolder) SetAssessmentId(v string) *AssessmentEvidenceFolder {
	s.AssessmentId = &v
	return s
}

// SetAssessmentReportSelectionCount sets the AssessmentReportSelectionCount field's value.
func (s *AssessmentEvidenceFolder) SetAssessmentReportSelectionCount(v int64) *AssessmentEvidenceFolder {
	s.AssessmentReportSelectionCount = &v
	return s
}

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

// SetControlId sets the ControlId field's value.
func (s *AssessmentEvidenceFolder) SetControlId(v string) *AssessmentEvidenceFolder {
	s.ControlId = &v
	return s
}

// SetControlName sets the ControlName field's value.
func (s *AssessmentEvidenceFolder) SetControlName(v string) *AssessmentEvidenceFolder {
	s.ControlName = &v
	return s
}

// SetControlSetId sets the ControlSetId field's value.
func (s *AssessmentEvidenceFolder) SetControlSetId(v string) *AssessmentEvidenceFolder {
	s.ControlSetId = &v
	return s
}

// SetDataSource sets the DataSource field's value.
func (s *AssessmentEvidenceFolder) SetDataSource(v string) *AssessmentEvidenceFolder {
	s.DataSource = &v
	return s
}

// SetDate sets the Date field's value.
func (s *AssessmentEvidenceFolder) SetDate(v time.Time) *AssessmentEvidenceFolder {
	s.Date = &v
	return s
}

// SetEvidenceAwsServiceSourceCount sets the EvidenceAwsServiceSourceCount field's value.
func (s *AssessmentEvidenceFolder) SetEvidenceAwsServiceSourceCount(v int64) *AssessmentEvidenceFolder {
	s.EvidenceAwsServiceSourceCount = &v
	return s
}

// SetEvidenceByTypeComplianceCheckCount sets the EvidenceByTypeComplianceCheckCount field's value.
func (s *AssessmentEvidenceFolder) SetEvidenceByTypeComplianceCheckCount(v int64) *AssessmentEvidenceFolder {
	s.EvidenceByTypeComplianceCheckCount = &v
	return s
}

// SetEvidenceByTypeComplianceCheckIssuesCount sets the EvidenceByTypeComplianceCheckIssuesCount field's value.
func (s *AssessmentEvidenceFolder) SetEvidenceByTypeComplianceCheckIssuesCount(v int64) *AssessmentEvidenceFolder {
	s.EvidenceByTypeComplianceCheckIssuesCount = &v
	return s
}

// SetEvidenceByTypeConfigurationDataCount sets the EvidenceByTypeConfigurationDataCount field's value.
func (s *AssessmentEvidenceFolder) SetEvidenceByTypeConfigurationDataCount(v int64) *AssessmentEvidenceFolder {
	s.EvidenceByTypeConfigurationDataCount = &v
	return s
}

// SetEvidenceByTypeManualCount sets the EvidenceByTypeManualCount field's value.
func (s *AssessmentEvidenceFolder) SetEvidenceByTypeManualCount(v int64) *AssessmentEvidenceFolder {
	s.EvidenceByTypeManualCount = &v
	return s
}

// SetEvidenceByTypeUserActivityCount sets the EvidenceByTypeUserActivityCount field's value.
func (s *AssessmentEvidenceFolder) SetEvidenceByTypeUserActivityCount(v int64) *AssessmentEvidenceFolder {
	s.EvidenceByTypeUserActivityCount = &v
	return s
}

// SetEvidenceResourcesIncludedCount sets the EvidenceResourcesIncludedCount field's value.
func (s *AssessmentEvidenceFolder) SetEvidenceResourcesIncludedCount(v int64) *AssessmentEvidenceFolder {
	s.EvidenceResourcesIncludedCount = &v
	return s
}

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

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

// SetTotalEvidence sets the TotalEvidence field's value.
func (s *AssessmentEvidenceFolder) SetTotalEvidence(v int64) *AssessmentEvidenceFolder {
	s.TotalEvidence = &v
	return s
}

// The file used to structure and automate Audit Manager assessments for a given
// compliance standard.
type AssessmentFramework struct {
	_ struct{} `type:"structure" sensitive:"true"`

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

	// The control sets that are associated with the framework.
	ControlSets []*AssessmentControlSet `locationName:"controlSets" type:"list"`

	// The unique identifier for the framework.
	Id *string `locationName:"id" min:"36" type:"string"`

	// The metadata of a framework, such as the name, ID, or description.
	Metadata *FrameworkMetadata `locationName:"metadata" type:"structure"`
}

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

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

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

// SetControlSets sets the ControlSets field's value.
func (s *AssessmentFramework) SetControlSets(v []*AssessmentControlSet) *AssessmentFramework {
	s.ControlSets = v
	return s
}

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

// SetMetadata sets the Metadata field's value.
func (s *AssessmentFramework) SetMetadata(v *FrameworkMetadata) *AssessmentFramework {
	s.Metadata = v
	return s
}

// The metadata that's associated with a standard framework or a custom framework.
type AssessmentFrameworkMetadata struct {
	_ struct{} `type:"structure"`

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

	// The compliance type that the new custom framework supports, such as CIS or
	// HIPAA.
	//
	// ComplianceType is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssessmentFrameworkMetadata's
	// String and GoString methods.
	ComplianceType *string `locationName:"complianceType" type:"string" sensitive:"true"`

	// The number of control sets that are associated with the framework.
	ControlSetsCount *int64 `locationName:"controlSetsCount" type:"integer"`

	// The number of controls that are associated with the framework.
	ControlsCount *int64 `locationName:"controlsCount" type:"integer"`

	// The time when the framework was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

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

	// The unique identifier for the framework.
	Id *string `locationName:"id" min:"36" type:"string"`

	// The time when the framework was most recently updated.
	LastUpdatedAt *time.Time `locationName:"lastUpdatedAt" type:"timestamp"`

	// The logo that's associated with the framework.
	Logo *string `locationName:"logo" min:"1" type:"string"`

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

	// The framework type, such as a standard framework or a custom framework.
	Type *string `locationName:"type" type:"string" enum:"FrameworkType"`
}

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

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

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

// SetComplianceType sets the ComplianceType field's value.
func (s *AssessmentFrameworkMetadata) SetComplianceType(v string) *AssessmentFrameworkMetadata {
	s.ComplianceType = &v
	return s
}

// SetControlSetsCount sets the ControlSetsCount field's value.
func (s *AssessmentFrameworkMetadata) SetControlSetsCount(v int64) *AssessmentFrameworkMetadata {
	s.ControlSetsCount = &v
	return s
}

// SetControlsCount sets the ControlsCount field's value.
func (s *AssessmentFrameworkMetadata) SetControlsCount(v int64) *AssessmentFrameworkMetadata {
	s.ControlsCount = &v
	return s
}

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

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

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

// SetLastUpdatedAt sets the LastUpdatedAt field's value.
func (s *AssessmentFrameworkMetadata) SetLastUpdatedAt(v time.Time) *AssessmentFrameworkMetadata {
	s.LastUpdatedAt = &v
	return s
}

// SetLogo sets the Logo field's value.
func (s *AssessmentFrameworkMetadata) SetLogo(v string) *AssessmentFrameworkMetadata {
	s.Logo = &v
	return s
}

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

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

// Represents a share request for a custom framework in Audit Manager.
type AssessmentFrameworkShareRequest struct {
	_ struct{} `type:"structure"`

	// An optional comment from the sender about the share request.
	Comment *string `locationName:"comment" type:"string"`

	// The compliance type that the shared custom framework supports, such as CIS
	// or HIPAA.
	//
	// ComplianceType is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssessmentFrameworkShareRequest's
	// String and GoString methods.
	ComplianceType *string `locationName:"complianceType" type:"string" sensitive:"true"`

	// The time when the share request was created.
	CreationTime *time.Time `locationName:"creationTime" type:"timestamp"`

	// The number of custom controls that are part of the shared custom framework.
	CustomControlsCount *int64 `locationName:"customControlsCount" type:"integer"`

	// The Amazon Web Services account of the recipient.
	DestinationAccount *string `locationName:"destinationAccount" min:"12" type:"string"`

	// The Amazon Web Services Region of the recipient.
	DestinationRegion *string `locationName:"destinationRegion" type:"string"`

	// The time when the share request expires.
	ExpirationTime *time.Time `locationName:"expirationTime" type:"timestamp"`

	// The description of the shared custom framework.
	FrameworkDescription *string `locationName:"frameworkDescription" min:"1" type:"string"`

	// The unique identifier for the shared custom framework.
	FrameworkId *string `locationName:"frameworkId" min:"36" type:"string"`

	// The name of the custom framework that the share request is for.
	FrameworkName *string `locationName:"frameworkName" min:"1" type:"string"`

	// The unique identifier for the share request.
	Id *string `locationName:"id" min:"36" type:"string"`

	// Specifies when the share request was last updated.
	LastUpdated *time.Time `locationName:"lastUpdated" type:"timestamp"`

	// The Amazon Web Services account of the sender.
	SourceAccount *string `locationName:"sourceAccount" min:"12" type:"string"`

	// The number of standard controls that are part of the shared custom framework.
	StandardControlsCount *int64 `locationName:"standardControlsCount" type:"integer"`

	// The status of the share request.
	Status *string `locationName:"status" type:"string" enum:"ShareRequestStatus"`
}

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

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

// SetComment sets the Comment field's value.
func (s *AssessmentFrameworkShareRequest) SetComment(v string) *AssessmentFrameworkShareRequest {
	s.Comment = &v
	return s
}

// SetComplianceType sets the ComplianceType field's value.
func (s *AssessmentFrameworkShareRequest) SetComplianceType(v string) *AssessmentFrameworkShareRequest {
	s.ComplianceType = &v
	return s
}

// SetCreationTime sets the CreationTime field's value.
func (s *AssessmentFrameworkShareRequest) SetCreationTime(v time.Time) *AssessmentFrameworkShareRequest {
	s.CreationTime = &v
	return s
}

// SetCustomControlsCount sets the CustomControlsCount field's value.
func (s *AssessmentFrameworkShareRequest) SetCustomControlsCount(v int64) *AssessmentFrameworkShareRequest {
	s.CustomControlsCount = &v
	return s
}

// SetDestinationAccount sets the DestinationAccount field's value.
func (s *AssessmentFrameworkShareRequest) SetDestinationAccount(v string) *AssessmentFrameworkShareRequest {
	s.DestinationAccount = &v
	return s
}

// SetDestinationRegion sets the DestinationRegion field's value.
func (s *AssessmentFrameworkShareRequest) SetDestinationRegion(v string) *AssessmentFrameworkShareRequest {
	s.DestinationRegion = &v
	return s
}

// SetExpirationTime sets the ExpirationTime field's value.
func (s *AssessmentFrameworkShareRequest) SetExpirationTime(v time.Time) *AssessmentFrameworkShareRequest {
	s.ExpirationTime = &v
	return s
}

// SetFrameworkDescription sets the FrameworkDescription field's value.
func (s *AssessmentFrameworkShareRequest) SetFrameworkDescription(v string) *AssessmentFrameworkShareRequest {
	s.FrameworkDescription = &v
	return s
}

// SetFrameworkId sets the FrameworkId field's value.
func (s *AssessmentFrameworkShareRequest) SetFrameworkId(v string) *AssessmentFrameworkShareRequest {
	s.FrameworkId = &v
	return s
}

// SetFrameworkName sets the FrameworkName field's value.
func (s *AssessmentFrameworkShareRequest) SetFrameworkName(v string) *AssessmentFrameworkShareRequest {
	s.FrameworkName = &v
	return s
}

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

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

// SetSourceAccount sets the SourceAccount field's value.
func (s *AssessmentFrameworkShareRequest) SetSourceAccount(v string) *AssessmentFrameworkShareRequest {
	s.SourceAccount = &v
	return s
}

// SetStandardControlsCount sets the StandardControlsCount field's value.
func (s *AssessmentFrameworkShareRequest) SetStandardControlsCount(v int64) *AssessmentFrameworkShareRequest {
	s.StandardControlsCount = &v
	return s
}

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

// The metadata that's associated with the specified assessment.
type AssessmentMetadata struct {
	_ struct{} `type:"structure"`

	// The destination that evidence reports are stored in for the assessment.
	//
	// AssessmentReportsDestination is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssessmentMetadata's
	// String and GoString methods.
	AssessmentReportsDestination *AssessmentReportsDestination `locationName:"assessmentReportsDestination" type:"structure" sensitive:"true"`

	// The name of the compliance standard that's related to the assessment, such
	// as PCI-DSS.
	//
	// ComplianceType is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssessmentMetadata's
	// String and GoString methods.
	ComplianceType *string `locationName:"complianceType" type:"string" sensitive:"true"`

	// Specifies when the assessment was created.
	CreationTime *time.Time `locationName:"creationTime" type:"timestamp"`

	// The delegations that are associated with the assessment.
	Delegations []*Delegation `locationName:"delegations" type:"list"`

	// The description of the assessment.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssessmentMetadata's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The unique identifier for the assessment.
	Id *string `locationName:"id" min:"36" type:"string"`

	// The time of the most recent update.
	LastUpdated *time.Time `locationName:"lastUpdated" type:"timestamp"`

	// The name of the assessment.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssessmentMetadata's
	// String and GoString methods.
	Name *string `locationName:"name" min:"1" type:"string" sensitive:"true"`

	// The roles that are associated with the assessment.
	//
	// Roles is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssessmentMetadata's
	// String and GoString methods.
	Roles []*Role `locationName:"roles" type:"list" sensitive:"true"`

	// The wrapper of Amazon Web Services accounts and services that are in scope
	// for the assessment.
	//
	// Scope is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssessmentMetadata's
	// String and GoString methods.
	Scope *Scope `locationName:"scope" type:"structure" sensitive:"true"`

	// The overall status of the assessment.
	Status *string `locationName:"status" type:"string" enum:"AssessmentStatus"`
}

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

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

// SetAssessmentReportsDestination sets the AssessmentReportsDestination field's value.
func (s *AssessmentMetadata) SetAssessmentReportsDestination(v *AssessmentReportsDestination) *AssessmentMetadata {
	s.AssessmentReportsDestination = v
	return s
}

// SetComplianceType sets the ComplianceType field's value.
func (s *AssessmentMetadata) SetComplianceType(v string) *AssessmentMetadata {
	s.ComplianceType = &v
	return s
}

// SetCreationTime sets the CreationTime field's value.
func (s *AssessmentMetadata) SetCreationTime(v time.Time) *AssessmentMetadata {
	s.CreationTime = &v
	return s
}

// SetDelegations sets the Delegations field's value.
func (s *AssessmentMetadata) SetDelegations(v []*Delegation) *AssessmentMetadata {
	s.Delegations = v
	return s
}

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

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

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

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

// SetRoles sets the Roles field's value.
func (s *AssessmentMetadata) SetRoles(v []*Role) *AssessmentMetadata {
	s.Roles = v
	return s
}

// SetScope sets the Scope field's value.
func (s *AssessmentMetadata) SetScope(v *Scope) *AssessmentMetadata {
	s.Scope = v
	return s
}

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

// A metadata object that's associated with an assessment in Audit Manager.
type AssessmentMetadataItem struct {
	_ struct{} `type:"structure"`

	// The name of the compliance standard that's related to the assessment, such
	// as PCI-DSS.
	//
	// ComplianceType is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssessmentMetadataItem's
	// String and GoString methods.
	ComplianceType *string `locationName:"complianceType" type:"string" sensitive:"true"`

	// Specifies when the assessment was created.
	CreationTime *time.Time `locationName:"creationTime" type:"timestamp"`

	// The delegations that are associated with the assessment.
	Delegations []*Delegation `locationName:"delegations" type:"list"`

	// The unique identifier for the assessment.
	Id *string `locationName:"id" min:"36" type:"string"`

	// The time of the most recent update.
	LastUpdated *time.Time `locationName:"lastUpdated" type:"timestamp"`

	// The name of the assessment.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssessmentMetadataItem's
	// String and GoString methods.
	Name *string `locationName:"name" min:"1" type:"string" sensitive:"true"`

	// The roles that are associated with the assessment.
	//
	// Roles is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssessmentMetadataItem's
	// String and GoString methods.
	Roles []*Role `locationName:"roles" type:"list" sensitive:"true"`

	// The current status of the assessment.
	Status *string `locationName:"status" type:"string" enum:"AssessmentStatus"`
}

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

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

// SetComplianceType sets the ComplianceType field's value.
func (s *AssessmentMetadataItem) SetComplianceType(v string) *AssessmentMetadataItem {
	s.ComplianceType = &v
	return s
}

// SetCreationTime sets the CreationTime field's value.
func (s *AssessmentMetadataItem) SetCreationTime(v time.Time) *AssessmentMetadataItem {
	s.CreationTime = &v
	return s
}

// SetDelegations sets the Delegations field's value.
func (s *AssessmentMetadataItem) SetDelegations(v []*Delegation) *AssessmentMetadataItem {
	s.Delegations = v
	return s
}

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

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

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

// SetRoles sets the Roles field's value.
func (s *AssessmentMetadataItem) SetRoles(v []*Role) *AssessmentMetadataItem {
	s.Roles = v
	return s
}

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

// A finalized document that's generated from an Audit Manager assessment. These
// reports summarize the relevant evidence that was collected for your audit,
// and link to the relevant evidence folders. These evidence folders are named
// and organized according to the controls that are specified in your assessment.
type AssessmentReport struct {
	_ struct{} `type:"structure"`

	// The identifier for the specified assessment.
	AssessmentId *string `locationName:"assessmentId" min:"36" type:"string"`

	// The name of the associated assessment.
	//
	// AssessmentName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssessmentReport's
	// String and GoString methods.
	AssessmentName *string `locationName:"assessmentName" min:"1" type:"string" sensitive:"true"`

	// The name of the user who created the assessment report.
	//
	// Author is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssessmentReport's
	// String and GoString methods.
	Author *string `locationName:"author" min:"1" type:"string" sensitive:"true"`

	// The identifier for the specified Amazon Web Services account.
	AwsAccountId *string `locationName:"awsAccountId" min:"12" type:"string"`

	// Specifies when the assessment report was created.
	CreationTime *time.Time `locationName:"creationTime" type:"timestamp"`

	// The description of the specified assessment report.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssessmentReport's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The unique identifier for the assessment report.
	Id *string `locationName:"id" min:"36" type:"string"`

	// The name that's given to the assessment report.
	Name *string `locationName:"name" min:"1" type:"string"`

	// The current status of the specified assessment report.
	Status *string `locationName:"status" type:"string" enum:"AssessmentReportStatus"`
}

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

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *AssessmentReport) SetAssessmentId(v string) *AssessmentReport {
	s.AssessmentId = &v
	return s
}

// SetAssessmentName sets the AssessmentName field's value.
func (s *AssessmentReport) SetAssessmentName(v string) *AssessmentReport {
	s.AssessmentName = &v
	return s
}

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

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *AssessmentReport) SetAwsAccountId(v string) *AssessmentReport {
	s.AwsAccountId = &v
	return s
}

// SetCreationTime sets the CreationTime field's value.
func (s *AssessmentReport) SetCreationTime(v time.Time) *AssessmentReport {
	s.CreationTime = &v
	return s
}

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

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

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

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

// An error entity for assessment report evidence errors. This is used to provide
// more meaningful errors than a simple string message.
type AssessmentReportEvidenceError struct {
	_ struct{} `type:"structure"`

	// The error code that was returned.
	ErrorCode *string `locationName:"errorCode" min:"3" type:"string"`

	// The error message that was returned.
	ErrorMessage *string `locationName:"errorMessage" type:"string"`

	// The identifier for the evidence.
	EvidenceId *string `locationName:"evidenceId" min:"36" type:"string"`
}

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

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

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

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

// SetEvidenceId sets the EvidenceId field's value.
func (s *AssessmentReportEvidenceError) SetEvidenceId(v string) *AssessmentReportEvidenceError {
	s.EvidenceId = &v
	return s
}

// The metadata objects that are associated with the specified assessment report.
type AssessmentReportMetadata struct {
	_ struct{} `type:"structure"`

	// The unique identifier for the associated assessment.
	AssessmentId *string `locationName:"assessmentId" min:"36" type:"string"`

	// The name of the associated assessment.
	//
	// AssessmentName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssessmentReportMetadata's
	// String and GoString methods.
	AssessmentName *string `locationName:"assessmentName" min:"1" type:"string" sensitive:"true"`

	// The name of the user who created the assessment report.
	//
	// Author is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssessmentReportMetadata's
	// String and GoString methods.
	Author *string `locationName:"author" min:"1" type:"string" sensitive:"true"`

	// Specifies when the assessment report was created.
	CreationTime *time.Time `locationName:"creationTime" type:"timestamp"`

	// The description of the assessment report.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssessmentReportMetadata's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The unique identifier for the assessment report.
	Id *string `locationName:"id" min:"36" type:"string"`

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

	// The current status of the assessment report.
	Status *string `locationName:"status" type:"string" enum:"AssessmentReportStatus"`
}

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

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *AssessmentReportMetadata) SetAssessmentId(v string) *AssessmentReportMetadata {
	s.AssessmentId = &v
	return s
}

// SetAssessmentName sets the AssessmentName field's value.
func (s *AssessmentReportMetadata) SetAssessmentName(v string) *AssessmentReportMetadata {
	s.AssessmentName = &v
	return s
}

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

// SetCreationTime sets the CreationTime field's value.
func (s *AssessmentReportMetadata) SetCreationTime(v time.Time) *AssessmentReportMetadata {
	s.CreationTime = &v
	return s
}

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

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

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

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

// The location where Audit Manager saves assessment reports for the given assessment.
type AssessmentReportsDestination struct {
	_ struct{} `type:"structure" sensitive:"true"`

	// The destination bucket where Audit Manager stores assessment reports.
	Destination *string `locationName:"destination" min:"1" type:"string"`

	// The destination type, such as Amazon S3.
	DestinationType *string `locationName:"destinationType" type:"string" enum:"AssessmentReportDestinationType"`
}

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

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

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

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

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

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

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

	// The identifier for the assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"uri" locationName:"assessmentId" min:"36" type:"string" required:"true"`

	// The identifier for the folder that the evidence is stored in.
	//
	// EvidenceFolderId is a required field
	EvidenceFolderId *string `locationName:"evidenceFolderId" min:"36" 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 AssociateAssessmentReportEvidenceFolderInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *AssociateAssessmentReportEvidenceFolderInput) SetAssessmentId(v string) *AssociateAssessmentReportEvidenceFolderInput {
	s.AssessmentId = &v
	return s
}

// SetEvidenceFolderId sets the EvidenceFolderId field's value.
func (s *AssociateAssessmentReportEvidenceFolderInput) SetEvidenceFolderId(v string) *AssociateAssessmentReportEvidenceFolderInput {
	s.EvidenceFolderId = &v
	return s
}

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

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

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

	// The identifier for the assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"uri" locationName:"assessmentId" min:"36" type:"string" required:"true"`

	// The identifier for the folder that the evidence is stored in.
	//
	// EvidenceFolderId is a required field
	EvidenceFolderId *string `locationName:"evidenceFolderId" min:"36" type:"string" required:"true"`

	// The list of evidence identifiers.
	//
	// EvidenceIds is a required field
	EvidenceIds []*string `locationName:"evidenceIds" 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 BatchAssociateAssessmentReportEvidenceInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *BatchAssociateAssessmentReportEvidenceInput) SetAssessmentId(v string) *BatchAssociateAssessmentReportEvidenceInput {
	s.AssessmentId = &v
	return s
}

// SetEvidenceFolderId sets the EvidenceFolderId field's value.
func (s *BatchAssociateAssessmentReportEvidenceInput) SetEvidenceFolderId(v string) *BatchAssociateAssessmentReportEvidenceInput {
	s.EvidenceFolderId = &v
	return s
}

// SetEvidenceIds sets the EvidenceIds field's value.
func (s *BatchAssociateAssessmentReportEvidenceInput) SetEvidenceIds(v []*string) *BatchAssociateAssessmentReportEvidenceInput {
	s.EvidenceIds = v
	return s
}

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

	// A list of errors that the BatchAssociateAssessmentReportEvidence API returned.
	Errors []*AssessmentReportEvidenceError `locationName:"errors" type:"list"`

	// The list of evidence identifiers.
	EvidenceIds []*string `locationName:"evidenceIds" 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 BatchAssociateAssessmentReportEvidenceOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetEvidenceIds sets the EvidenceIds field's value.
func (s *BatchAssociateAssessmentReportEvidenceOutput) SetEvidenceIds(v []*string) *BatchAssociateAssessmentReportEvidenceOutput {
	s.EvidenceIds = v
	return s
}

// An error entity for the BatchCreateDelegationByAssessment API. This is used
// to provide more meaningful errors than a simple string message.
type BatchCreateDelegationByAssessmentError struct {
	_ struct{} `type:"structure"`

	// The API request to batch create delegations in Audit Manager.
	CreateDelegationRequest *CreateDelegationRequest `locationName:"createDelegationRequest" type:"structure"`

	// The error code that the BatchCreateDelegationByAssessment API returned.
	ErrorCode *string `locationName:"errorCode" min:"3" type:"string"`

	// The error message that the BatchCreateDelegationByAssessment API returned.
	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 BatchCreateDelegationByAssessmentError) String() string {
	return awsutil.Prettify(s)
}

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

// SetCreateDelegationRequest sets the CreateDelegationRequest field's value.
func (s *BatchCreateDelegationByAssessmentError) SetCreateDelegationRequest(v *CreateDelegationRequest) *BatchCreateDelegationByAssessmentError {
	s.CreateDelegationRequest = v
	return s
}

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

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

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

	// The identifier for the assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"uri" locationName:"assessmentId" min:"36" type:"string" required:"true"`

	// The API request to batch create delegations in Audit Manager.
	//
	// CreateDelegationRequests is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by BatchCreateDelegationByAssessmentInput's
	// String and GoString methods.
	//
	// CreateDelegationRequests is a required field
	CreateDelegationRequests []*CreateDelegationRequest `locationName:"createDelegationRequests" min:"1" type:"list" required:"true" sensitive:"true"`
}

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

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

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

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *BatchCreateDelegationByAssessmentInput) SetAssessmentId(v string) *BatchCreateDelegationByAssessmentInput {
	s.AssessmentId = &v
	return s
}

// SetCreateDelegationRequests sets the CreateDelegationRequests field's value.
func (s *BatchCreateDelegationByAssessmentInput) SetCreateDelegationRequests(v []*CreateDelegationRequest) *BatchCreateDelegationByAssessmentInput {
	s.CreateDelegationRequests = v
	return s
}

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

	// The delegations that are associated with the assessment.
	Delegations []*Delegation `locationName:"delegations" type:"list"`

	// A list of errors that the BatchCreateDelegationByAssessment API returned.
	//
	// Errors is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by BatchCreateDelegationByAssessmentOutput's
	// String and GoString methods.
	Errors []*BatchCreateDelegationByAssessmentError `locationName:"errors" type:"list" sensitive:"true"`
}

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

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

// SetDelegations sets the Delegations field's value.
func (s *BatchCreateDelegationByAssessmentOutput) SetDelegations(v []*Delegation) *BatchCreateDelegationByAssessmentOutput {
	s.Delegations = v
	return s
}

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

// An error entity for the BatchDeleteDelegationByAssessment API. This is used
// to provide more meaningful errors than a simple string message.
type BatchDeleteDelegationByAssessmentError struct {
	_ struct{} `type:"structure"`

	// The identifier for the delegation.
	DelegationId *string `locationName:"delegationId" min:"36" type:"string"`

	// The error code that the BatchDeleteDelegationByAssessment API returned.
	ErrorCode *string `locationName:"errorCode" min:"3" type:"string"`

	// The error message that the BatchDeleteDelegationByAssessment API returned.
	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 BatchDeleteDelegationByAssessmentError) String() string {
	return awsutil.Prettify(s)
}

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

// SetDelegationId sets the DelegationId field's value.
func (s *BatchDeleteDelegationByAssessmentError) SetDelegationId(v string) *BatchDeleteDelegationByAssessmentError {
	s.DelegationId = &v
	return s
}

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

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

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

	// The identifier for the assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"uri" locationName:"assessmentId" min:"36" type:"string" required:"true"`

	// The identifiers for the delegations.
	//
	// DelegationIds is a required field
	DelegationIds []*string `locationName:"delegationIds" min:"1" type:"list" required:"true"`
}

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

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

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

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *BatchDeleteDelegationByAssessmentInput) SetAssessmentId(v string) *BatchDeleteDelegationByAssessmentInput {
	s.AssessmentId = &v
	return s
}

// SetDelegationIds sets the DelegationIds field's value.
func (s *BatchDeleteDelegationByAssessmentInput) SetDelegationIds(v []*string) *BatchDeleteDelegationByAssessmentInput {
	s.DelegationIds = v
	return s
}

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

	// A list of errors that the BatchDeleteDelegationByAssessment API returned.
	//
	// Errors is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by BatchDeleteDelegationByAssessmentOutput's
	// String and GoString methods.
	Errors []*BatchDeleteDelegationByAssessmentError `locationName:"errors" type:"list" sensitive:"true"`
}

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

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

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

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

	// The identifier for the assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"uri" locationName:"assessmentId" min:"36" type:"string" required:"true"`

	// The identifier for the folder that the evidence is stored in.
	//
	// EvidenceFolderId is a required field
	EvidenceFolderId *string `locationName:"evidenceFolderId" min:"36" type:"string" required:"true"`

	// The list of evidence identifiers.
	//
	// EvidenceIds is a required field
	EvidenceIds []*string `locationName:"evidenceIds" 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 BatchDisassociateAssessmentReportEvidenceInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *BatchDisassociateAssessmentReportEvidenceInput) SetAssessmentId(v string) *BatchDisassociateAssessmentReportEvidenceInput {
	s.AssessmentId = &v
	return s
}

// SetEvidenceFolderId sets the EvidenceFolderId field's value.
func (s *BatchDisassociateAssessmentReportEvidenceInput) SetEvidenceFolderId(v string) *BatchDisassociateAssessmentReportEvidenceInput {
	s.EvidenceFolderId = &v
	return s
}

// SetEvidenceIds sets the EvidenceIds field's value.
func (s *BatchDisassociateAssessmentReportEvidenceInput) SetEvidenceIds(v []*string) *BatchDisassociateAssessmentReportEvidenceInput {
	s.EvidenceIds = v
	return s
}

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

	// A list of errors that the BatchDisassociateAssessmentReportEvidence API returned.
	Errors []*AssessmentReportEvidenceError `locationName:"errors" type:"list"`

	// The identifier for the evidence.
	EvidenceIds []*string `locationName:"evidenceIds" 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 BatchDisassociateAssessmentReportEvidenceOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetEvidenceIds sets the EvidenceIds field's value.
func (s *BatchDisassociateAssessmentReportEvidenceOutput) SetEvidenceIds(v []*string) *BatchDisassociateAssessmentReportEvidenceOutput {
	s.EvidenceIds = v
	return s
}

// An error entity for the BatchImportEvidenceToAssessmentControl API. This
// is used to provide more meaningful errors than a simple string message.
type BatchImportEvidenceToAssessmentControlError struct {
	_ struct{} `type:"structure"`

	// The error code that the BatchImportEvidenceToAssessmentControl API returned.
	ErrorCode *string `locationName:"errorCode" min:"3" type:"string"`

	// The error message that the BatchImportEvidenceToAssessmentControl API returned.
	ErrorMessage *string `locationName:"errorMessage" type:"string"`

	// Manual evidence that can't be collected automatically by Audit Manager.
	ManualEvidence *ManualEvidence `locationName:"manualEvidence" type:"structure"`
}

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

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

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

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

// SetManualEvidence sets the ManualEvidence field's value.
func (s *BatchImportEvidenceToAssessmentControlError) SetManualEvidence(v *ManualEvidence) *BatchImportEvidenceToAssessmentControlError {
	s.ManualEvidence = v
	return s
}

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

	// The identifier for the assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"uri" locationName:"assessmentId" min:"36" type:"string" required:"true"`

	// The identifier for the control.
	//
	// ControlId is a required field
	ControlId *string `location:"uri" locationName:"controlId" min:"36" type:"string" required:"true"`

	// The identifier for the control set.
	//
	// ControlSetId is a required field
	ControlSetId *string `location:"uri" locationName:"controlSetId" min:"1" type:"string" required:"true"`

	// The list of manual evidence objects.
	//
	// ManualEvidence is a required field
	ManualEvidence []*ManualEvidence `locationName:"manualEvidence" min:"1" type:"list" required:"true"`
}

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

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

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

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *BatchImportEvidenceToAssessmentControlInput) SetAssessmentId(v string) *BatchImportEvidenceToAssessmentControlInput {
	s.AssessmentId = &v
	return s
}

// SetControlId sets the ControlId field's value.
func (s *BatchImportEvidenceToAssessmentControlInput) SetControlId(v string) *BatchImportEvidenceToAssessmentControlInput {
	s.ControlId = &v
	return s
}

// SetControlSetId sets the ControlSetId field's value.
func (s *BatchImportEvidenceToAssessmentControlInput) SetControlSetId(v string) *BatchImportEvidenceToAssessmentControlInput {
	s.ControlSetId = &v
	return s
}

// SetManualEvidence sets the ManualEvidence field's value.
func (s *BatchImportEvidenceToAssessmentControlInput) SetManualEvidence(v []*ManualEvidence) *BatchImportEvidenceToAssessmentControlInput {
	s.ManualEvidence = v
	return s
}

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

	// A list of errors that the BatchImportEvidenceToAssessmentControl API returned.
	Errors []*BatchImportEvidenceToAssessmentControlError `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 BatchImportEvidenceToAssessmentControlOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// The record of a change within Audit Manager. For example, this could be the
// status change of an assessment or the delegation of a control set.
type ChangeLog struct {
	_ struct{} `type:"structure"`

	// The action that was performed.
	Action *string `locationName:"action" type:"string" enum:"ActionEnum"`

	// The time when the action was performed and the changelog record was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The user or role that performed the action.
	CreatedBy *string `locationName:"createdBy" min:"20" type:"string"`

	// The name of the object that changed. This could be the name of an assessment,
	// control, or control set.
	ObjectName *string `locationName:"objectName" min:"1" type:"string"`

	// The object that was changed, such as an assessment, control, or control set.
	ObjectType *string `locationName:"objectType" type:"string" enum:"ObjectTypeEnum"`
}

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

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

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

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

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

// SetObjectName sets the ObjectName field's value.
func (s *ChangeLog) SetObjectName(v string) *ChangeLog {
	s.ObjectName = &v
	return s
}

// SetObjectType sets the ObjectType field's value.
func (s *ChangeLog) SetObjectType(v string) *ChangeLog {
	s.ObjectType = &v
	return s
}

// A control in Audit Manager.
type Control struct {
	_ struct{} `type:"structure"`

	// The recommended actions to carry out if the control isn't fulfilled.
	//
	// ActionPlanInstructions is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Control's
	// String and GoString methods.
	ActionPlanInstructions *string `locationName:"actionPlanInstructions" type:"string" sensitive:"true"`

	// The title of the action plan for remediating the control.
	//
	// ActionPlanTitle is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Control's
	// String and GoString methods.
	ActionPlanTitle *string `locationName:"actionPlanTitle" type:"string" sensitive:"true"`

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

	// The data mapping sources for the control.
	ControlMappingSources []*ControlMappingSource `locationName:"controlMappingSources" min:"1" type:"list"`

	// The data source types that determine where Audit Manager collects evidence
	// from for the control.
	ControlSources *string `locationName:"controlSources" min:"1" type:"string"`

	// The time when the control was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The user or role that created the control.
	//
	// CreatedBy is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Control's
	// String and GoString methods.
	CreatedBy *string `locationName:"createdBy" min:"1" type:"string" sensitive:"true"`

	// The description of the control.
	Description *string `locationName:"description" type:"string"`

	// The unique identifier for the control.
	Id *string `locationName:"id" min:"36" type:"string"`

	// The time when the control was most recently updated.
	LastUpdatedAt *time.Time `locationName:"lastUpdatedAt" type:"timestamp"`

	// The user or role that most recently updated the control.
	//
	// LastUpdatedBy is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Control's
	// String and GoString methods.
	LastUpdatedBy *string `locationName:"lastUpdatedBy" min:"1" type:"string" sensitive:"true"`

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

	// The tags associated with the control.
	Tags map[string]*string `locationName:"tags" type:"map"`

	// The steps that you should follow to determine if the control has been satisfied.
	//
	// TestingInformation is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Control's
	// String and GoString methods.
	TestingInformation *string `locationName:"testingInformation" type:"string" sensitive:"true"`

	// Specifies whether the control is a standard control or a custom control.
	Type *string `locationName:"type" type:"string" enum:"ControlType"`
}

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

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

// SetActionPlanInstructions sets the ActionPlanInstructions field's value.
func (s *Control) SetActionPlanInstructions(v string) *Control {
	s.ActionPlanInstructions = &v
	return s
}

// SetActionPlanTitle sets the ActionPlanTitle field's value.
func (s *Control) SetActionPlanTitle(v string) *Control {
	s.ActionPlanTitle = &v
	return s
}

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

// SetControlMappingSources sets the ControlMappingSources field's value.
func (s *Control) SetControlMappingSources(v []*ControlMappingSource) *Control {
	s.ControlMappingSources = v
	return s
}

// SetControlSources sets the ControlSources field's value.
func (s *Control) SetControlSources(v string) *Control {
	s.ControlSources = &v
	return s
}

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

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

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

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

// SetLastUpdatedAt sets the LastUpdatedAt field's value.
func (s *Control) SetLastUpdatedAt(v time.Time) *Control {
	s.LastUpdatedAt = &v
	return s
}

// SetLastUpdatedBy sets the LastUpdatedBy field's value.
func (s *Control) SetLastUpdatedBy(v string) *Control {
	s.LastUpdatedBy = &v
	return s
}

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

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

// SetTestingInformation sets the TestingInformation field's value.
func (s *Control) SetTestingInformation(v string) *Control {
	s.TestingInformation = &v
	return s
}

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

// A comment that's posted by a user on a control. This includes the author's
// name, the comment text, and a timestamp.
type ControlComment struct {
	_ struct{} `type:"structure"`

	// The name of the user who authored the comment.
	//
	// AuthorName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ControlComment's
	// String and GoString methods.
	AuthorName *string `locationName:"authorName" min:"1" type:"string" sensitive:"true"`

	// The body text of a control comment.
	//
	// CommentBody is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ControlComment's
	// String and GoString methods.
	CommentBody *string `locationName:"commentBody" type:"string" sensitive:"true"`

	// The time when the comment was posted.
	PostedDate *time.Time `locationName:"postedDate" type:"timestamp"`
}

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

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

// SetAuthorName sets the AuthorName field's value.
func (s *ControlComment) SetAuthorName(v string) *ControlComment {
	s.AuthorName = &v
	return s
}

// SetCommentBody sets the CommentBody field's value.
func (s *ControlComment) SetCommentBody(v string) *ControlComment {
	s.CommentBody = &v
	return s
}

// SetPostedDate sets the PostedDate field's value.
func (s *ControlComment) SetPostedDate(v time.Time) *ControlComment {
	s.PostedDate = &v
	return s
}

// A summary of the latest analytics data for a specific control domain.
//
// Control domain insights are grouped by control domain, and ranked by the
// highest total count of non-compliant evidence.
type ControlDomainInsights struct {
	_ struct{} `type:"structure"`

	// The number of controls in the control domain that collected non-compliant
	// evidence on the lastUpdated date.
	ControlsCountByNoncompliantEvidence *int64 `locationName:"controlsCountByNoncompliantEvidence" type:"integer"`

	// A breakdown of the compliance check status for the evidence that’s associated
	// with the control domain.
	EvidenceInsights *EvidenceInsights `locationName:"evidenceInsights" type:"structure"`

	// The unique identifier for the control domain.
	Id *string `locationName:"id" min:"36" type:"string"`

	// The time when the control domain insights were last updated.
	LastUpdated *time.Time `locationName:"lastUpdated" type:"timestamp"`

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

	// The total number of controls in the control domain.
	TotalControlsCount *int64 `locationName:"totalControlsCount" 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 ControlDomainInsights) String() string {
	return awsutil.Prettify(s)
}

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

// SetControlsCountByNoncompliantEvidence sets the ControlsCountByNoncompliantEvidence field's value.
func (s *ControlDomainInsights) SetControlsCountByNoncompliantEvidence(v int64) *ControlDomainInsights {
	s.ControlsCountByNoncompliantEvidence = &v
	return s
}

// SetEvidenceInsights sets the EvidenceInsights field's value.
func (s *ControlDomainInsights) SetEvidenceInsights(v *EvidenceInsights) *ControlDomainInsights {
	s.EvidenceInsights = v
	return s
}

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

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

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

// SetTotalControlsCount sets the TotalControlsCount field's value.
func (s *ControlDomainInsights) SetTotalControlsCount(v int64) *ControlDomainInsights {
	s.TotalControlsCount = &v
	return s
}

// A summary of the latest analytics data for a specific control in a specific
// active assessment.
//
// Control insights are grouped by control domain, and ranked by the highest
// total count of non-compliant evidence.
type ControlInsightsMetadataByAssessmentItem struct {
	_ struct{} `type:"structure"`

	// The name of the control set that the assessment control belongs to.
	ControlSetName *string `locationName:"controlSetName" min:"1" type:"string"`

	// A breakdown of the compliance check status for the evidence that’s associated
	// with the assessment control.
	EvidenceInsights *EvidenceInsights `locationName:"evidenceInsights" type:"structure"`

	// The unique identifier for the assessment control.
	Id *string `locationName:"id" min:"36" type:"string"`

	// The time when the assessment control insights were last updated.
	LastUpdated *time.Time `locationName:"lastUpdated" type:"timestamp"`

	// The name of the assessment control.
	Name *string `locationName:"name" min:"1" type:"string"`
}

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

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

// SetControlSetName sets the ControlSetName field's value.
func (s *ControlInsightsMetadataByAssessmentItem) SetControlSetName(v string) *ControlInsightsMetadataByAssessmentItem {
	s.ControlSetName = &v
	return s
}

// SetEvidenceInsights sets the EvidenceInsights field's value.
func (s *ControlInsightsMetadataByAssessmentItem) SetEvidenceInsights(v *EvidenceInsights) *ControlInsightsMetadataByAssessmentItem {
	s.EvidenceInsights = v
	return s
}

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

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

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

// A summary of the latest analytics data for a specific control.
//
// This data reflects the total counts for the specified control across all
// active assessments. Control insights are grouped by control domain, and ranked
// by the highest total count of non-compliant evidence.
type ControlInsightsMetadataItem struct {
	_ struct{} `type:"structure"`

	// A breakdown of the compliance check status for the evidence that’s associated
	// with the control.
	EvidenceInsights *EvidenceInsights `locationName:"evidenceInsights" type:"structure"`

	// The unique identifier for the control.
	Id *string `locationName:"id" min:"36" type:"string"`

	// The time when the control insights were last updated.
	LastUpdated *time.Time `locationName:"lastUpdated" type:"timestamp"`

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

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

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

// SetEvidenceInsights sets the EvidenceInsights field's value.
func (s *ControlInsightsMetadataItem) SetEvidenceInsights(v *EvidenceInsights) *ControlInsightsMetadataItem {
	s.EvidenceInsights = v
	return s
}

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

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

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

// The data source that determines where Audit Manager collects evidence from
// for the control.
type ControlMappingSource struct {
	_ struct{} `type:"structure"`

	// The description of the source.
	SourceDescription *string `locationName:"sourceDescription" type:"string"`

	// Specifies how often evidence is collected from the control mapping source.
	SourceFrequency *string `locationName:"sourceFrequency" type:"string" enum:"SourceFrequency"`

	// The unique identifier for the source.
	SourceId *string `locationName:"sourceId" min:"36" type:"string"`

	// A keyword that relates to the control data source.
	//
	// For manual evidence, this keyword indicates if the manual evidence is a file
	// or text.
	//
	// For automated evidence, this keyword identifies a specific CloudTrail event,
	// Config rule, Security Hub control, or Amazon Web Services API name.
	//
	// To learn more about the supported keywords that you can use when mapping
	// a control data source, see the following pages in the Audit Manager User
	// Guide:
	//
	//    * Config rules supported by Audit Manager (https://docs.aws.amazon.com/audit-manager/latest/userguide/control-data-sources-config.html)
	//
	//    * Security Hub controls supported by Audit Manager (https://docs.aws.amazon.com/audit-manager/latest/userguide/control-data-sources-ash.html)
	//
	//    * API calls supported by Audit Manager (https://docs.aws.amazon.com/audit-manager/latest/userguide/control-data-sources-api.html)
	//
	//    * CloudTrail event names supported by Audit Manager (https://docs.aws.amazon.com/audit-manager/latest/userguide/control-data-sources-cloudtrail.html)
	SourceKeyword *SourceKeyword `locationName:"sourceKeyword" type:"structure"`

	// The name of the source.
	SourceName *string `locationName:"sourceName" min:"1" type:"string"`

	// The setup option for the data source. This option reflects if the evidence
	// collection is automated or manual.
	SourceSetUpOption *string `locationName:"sourceSetUpOption" type:"string" enum:"SourceSetUpOption"`

	// Specifies one of the five data source types for evidence collection.
	SourceType *string `locationName:"sourceType" type:"string" enum:"SourceType"`

	// The instructions for troubleshooting the control.
	//
	// TroubleshootingText is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ControlMappingSource's
	// String and GoString methods.
	TroubleshootingText *string `locationName:"troubleshootingText" type:"string" sensitive:"true"`
}

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

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

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

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

// SetSourceDescription sets the SourceDescription field's value.
func (s *ControlMappingSource) SetSourceDescription(v string) *ControlMappingSource {
	s.SourceDescription = &v
	return s
}

// SetSourceFrequency sets the SourceFrequency field's value.
func (s *ControlMappingSource) SetSourceFrequency(v string) *ControlMappingSource {
	s.SourceFrequency = &v
	return s
}

// SetSourceId sets the SourceId field's value.
func (s *ControlMappingSource) SetSourceId(v string) *ControlMappingSource {
	s.SourceId = &v
	return s
}

// SetSourceKeyword sets the SourceKeyword field's value.
func (s *ControlMappingSource) SetSourceKeyword(v *SourceKeyword) *ControlMappingSource {
	s.SourceKeyword = v
	return s
}

// SetSourceName sets the SourceName field's value.
func (s *ControlMappingSource) SetSourceName(v string) *ControlMappingSource {
	s.SourceName = &v
	return s
}

// SetSourceSetUpOption sets the SourceSetUpOption field's value.
func (s *ControlMappingSource) SetSourceSetUpOption(v string) *ControlMappingSource {
	s.SourceSetUpOption = &v
	return s
}

// SetSourceType sets the SourceType field's value.
func (s *ControlMappingSource) SetSourceType(v string) *ControlMappingSource {
	s.SourceType = &v
	return s
}

// SetTroubleshootingText sets the TroubleshootingText field's value.
func (s *ControlMappingSource) SetTroubleshootingText(v string) *ControlMappingSource {
	s.TroubleshootingText = &v
	return s
}

// The metadata that's associated with the standard control or custom control.
type ControlMetadata struct {
	_ struct{} `type:"structure"`

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

	// The data source that determines where Audit Manager collects evidence from
	// for the control.
	ControlSources *string `locationName:"controlSources" min:"1" type:"string"`

	// The time when the control was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The unique identifier for the control.
	Id *string `locationName:"id" min:"36" type:"string"`

	// The time when the control was most recently updated.
	LastUpdatedAt *time.Time `locationName:"lastUpdatedAt" type:"timestamp"`

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

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

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

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

// SetControlSources sets the ControlSources field's value.
func (s *ControlMetadata) SetControlSources(v string) *ControlMetadata {
	s.ControlSources = &v
	return s
}

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

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

// SetLastUpdatedAt sets the LastUpdatedAt field's value.
func (s *ControlMetadata) SetLastUpdatedAt(v time.Time) *ControlMetadata {
	s.LastUpdatedAt = &v
	return s
}

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

// A set of controls in Audit Manager.
type ControlSet struct {
	_ struct{} `type:"structure"`

	// The list of controls within the control set.
	Controls []*Control `locationName:"controls" min:"1" type:"list"`

	// The identifier of the control set in the assessment. This is the control
	// set name in a plain string format.
	Id *string `locationName:"id" min:"36" type:"string"`

	// The name of the control set.
	Name *string `locationName:"name" min:"1" type:"string"`
}

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

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

// SetControls sets the Controls field's value.
func (s *ControlSet) SetControls(v []*Control) *ControlSet {
	s.Controls = v
	return s
}

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

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

// The control entity attributes that uniquely identify an existing control
// to be added to a framework in Audit Manager.
type CreateAssessmentFrameworkControl struct {
	_ struct{} `type:"structure"`

	// The unique identifier of the control.
	//
	// Id is a required field
	Id *string `locationName:"id" min:"36" 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 CreateAssessmentFrameworkControl) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// A controlSet entity that represents a collection of controls in Audit Manager.
// This doesn't contain the control set ID.
type CreateAssessmentFrameworkControlSet struct {
	_ struct{} `type:"structure"`

	// The list of controls within the control set. This doesn't contain the control
	// set ID.
	Controls []*CreateAssessmentFrameworkControl `locationName:"controls" min:"1" type:"list"`

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

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

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

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

// SetControls sets the Controls field's value.
func (s *CreateAssessmentFrameworkControlSet) SetControls(v []*CreateAssessmentFrameworkControl) *CreateAssessmentFrameworkControlSet {
	s.Controls = v
	return s
}

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

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

	// The compliance type that the new custom framework supports, such as CIS or
	// HIPAA.
	//
	// ComplianceType is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateAssessmentFrameworkInput's
	// String and GoString methods.
	ComplianceType *string `locationName:"complianceType" type:"string" sensitive:"true"`

	// The control sets that are associated with the framework.
	//
	// ControlSets is a required field
	ControlSets []*CreateAssessmentFrameworkControlSet `locationName:"controlSets" min:"1" type:"list" required:"true"`

	// An optional description for the new custom framework.
	Description *string `locationName:"description" min:"1" type:"string"`

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

	// The tags that are associated with the framework.
	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 CreateAssessmentFrameworkInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetComplianceType sets the ComplianceType field's value.
func (s *CreateAssessmentFrameworkInput) SetComplianceType(v string) *CreateAssessmentFrameworkInput {
	s.ComplianceType = &v
	return s
}

// SetControlSets sets the ControlSets field's value.
func (s *CreateAssessmentFrameworkInput) SetControlSets(v []*CreateAssessmentFrameworkControlSet) *CreateAssessmentFrameworkInput {
	s.ControlSets = v
	return s
}

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

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

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

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

	// The name of the new framework that the CreateAssessmentFramework API returned.
	Framework *Framework `locationName:"framework" type:"structure"`
}

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

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

// SetFramework sets the Framework field's value.
func (s *CreateAssessmentFrameworkOutput) SetFramework(v *Framework) *CreateAssessmentFrameworkOutput {
	s.Framework = v
	return s
}

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

	// The assessment report storage destination for the assessment that's being
	// created.
	//
	// AssessmentReportsDestination is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateAssessmentInput's
	// String and GoString methods.
	//
	// AssessmentReportsDestination is a required field
	AssessmentReportsDestination *AssessmentReportsDestination `locationName:"assessmentReportsDestination" type:"structure" required:"true" sensitive:"true"`

	// The optional description of the assessment to be created.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateAssessmentInput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The identifier for the framework that the assessment will be created from.
	//
	// FrameworkId is a required field
	FrameworkId *string `locationName:"frameworkId" min:"36" type:"string" required:"true"`

	// The name of the assessment to be created.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateAssessmentInput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The list of roles for the assessment.
	//
	// Roles is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateAssessmentInput's
	// String and GoString methods.
	//
	// Roles is a required field
	Roles []*Role `locationName:"roles" type:"list" required:"true" sensitive:"true"`

	// The wrapper that contains the Amazon Web Services accounts and services that
	// are in scope for the assessment.
	//
	// Scope is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateAssessmentInput's
	// String and GoString methods.
	//
	// Scope is a required field
	Scope *Scope `locationName:"scope" type:"structure" required:"true" sensitive:"true"`

	// The tags that are associated with the assessment.
	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 CreateAssessmentInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateAssessmentInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateAssessmentInput"}
	if s.AssessmentReportsDestination == nil {
		invalidParams.Add(request.NewErrParamRequired("AssessmentReportsDestination"))
	}
	if s.FrameworkId == nil {
		invalidParams.Add(request.NewErrParamRequired("FrameworkId"))
	}
	if s.FrameworkId != nil && len(*s.FrameworkId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("FrameworkId", 36))
	}
	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.Roles == nil {
		invalidParams.Add(request.NewErrParamRequired("Roles"))
	}
	if s.Scope == nil {
		invalidParams.Add(request.NewErrParamRequired("Scope"))
	}
	if s.AssessmentReportsDestination != nil {
		if err := s.AssessmentReportsDestination.Validate(); err != nil {
			invalidParams.AddNested("AssessmentReportsDestination", err.(request.ErrInvalidParams))
		}
	}
	if s.Roles != nil {
		for i, v := range s.Roles {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Roles", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Scope != nil {
		if err := s.Scope.Validate(); err != nil {
			invalidParams.AddNested("Scope", err.(request.ErrInvalidParams))
		}
	}

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

// SetAssessmentReportsDestination sets the AssessmentReportsDestination field's value.
func (s *CreateAssessmentInput) SetAssessmentReportsDestination(v *AssessmentReportsDestination) *CreateAssessmentInput {
	s.AssessmentReportsDestination = v
	return s
}

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

// SetFrameworkId sets the FrameworkId field's value.
func (s *CreateAssessmentInput) SetFrameworkId(v string) *CreateAssessmentInput {
	s.FrameworkId = &v
	return s
}

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

// SetRoles sets the Roles field's value.
func (s *CreateAssessmentInput) SetRoles(v []*Role) *CreateAssessmentInput {
	s.Roles = v
	return s
}

// SetScope sets the Scope field's value.
func (s *CreateAssessmentInput) SetScope(v *Scope) *CreateAssessmentInput {
	s.Scope = v
	return s
}

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

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

	// An entity that defines the scope of audit evidence collected by Audit Manager.
	// An Audit Manager assessment is an implementation of an Audit Manager framework.
	Assessment *Assessment `locationName:"assessment" type:"structure"`
}

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

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

// SetAssessment sets the Assessment field's value.
func (s *CreateAssessmentOutput) SetAssessment(v *Assessment) *CreateAssessmentOutput {
	s.Assessment = v
	return s
}

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

	// The identifier for the assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"uri" locationName:"assessmentId" min:"36" type:"string" required:"true"`

	// The description of the assessment report.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateAssessmentReportInput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

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

	// A SQL statement that represents an evidence finder query.
	//
	// Provide this parameter when you want to generate an assessment report from
	// the results of an evidence finder search query. When you use this parameter,
	// Audit Manager generates a one-time report using only the evidence from the
	// query output. This report does not include any assessment evidence that was
	// manually added to a report using the console (https://docs.aws.amazon.com/audit-manager/latest/userguide/generate-assessment-report.html#generate-assessment-report-include-evidence),
	// or associated with a report using the API (https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_BatchAssociateAssessmentReportEvidence.html).
	//
	// To use this parameter, the enablementStatus (https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_EvidenceFinderEnablement.html#auditmanager-Type-EvidenceFinderEnablement-enablementStatus)
	// of evidence finder must be ENABLED.
	//
	// For examples and help resolving queryStatement validation exceptions, see
	// Troubleshooting evidence finder issues (https://docs.aws.amazon.com/audit-manager/latest/userguide/evidence-finder-issues.html#querystatement-exceptions)
	// in the Audit Manager User Guide.
	QueryStatement *string `locationName:"queryStatement" 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 CreateAssessmentReportInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateAssessmentReportInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateAssessmentReportInput"}
	if s.AssessmentId == nil {
		invalidParams.Add(request.NewErrParamRequired("AssessmentId"))
	}
	if s.AssessmentId != nil && len(*s.AssessmentId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("AssessmentId", 36))
	}
	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.QueryStatement != nil && len(*s.QueryStatement) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QueryStatement", 1))
	}

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *CreateAssessmentReportInput) SetAssessmentId(v string) *CreateAssessmentReportInput {
	s.AssessmentId = &v
	return s
}

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

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

// SetQueryStatement sets the QueryStatement field's value.
func (s *CreateAssessmentReportInput) SetQueryStatement(v string) *CreateAssessmentReportInput {
	s.QueryStatement = &v
	return s
}

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

	// The new assessment report that the CreateAssessmentReport API returned.
	AssessmentReport *AssessmentReport `locationName:"assessmentReport" type:"structure"`
}

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

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

// SetAssessmentReport sets the AssessmentReport field's value.
func (s *CreateAssessmentReportOutput) SetAssessmentReport(v *AssessmentReport) *CreateAssessmentReportOutput {
	s.AssessmentReport = v
	return s
}

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

	// The recommended actions to carry out if the control isn't fulfilled.
	//
	// ActionPlanInstructions is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateControlInput's
	// String and GoString methods.
	ActionPlanInstructions *string `locationName:"actionPlanInstructions" type:"string" sensitive:"true"`

	// The title of the action plan for remediating the control.
	//
	// ActionPlanTitle is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateControlInput's
	// String and GoString methods.
	ActionPlanTitle *string `locationName:"actionPlanTitle" type:"string" sensitive:"true"`

	// The data mapping sources for the control.
	//
	// ControlMappingSources is a required field
	ControlMappingSources []*CreateControlMappingSource `locationName:"controlMappingSources" min:"1" type:"list" required:"true"`

	// The description of the control.
	Description *string `locationName:"description" type:"string"`

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

	// The tags that are associated with the control.
	Tags map[string]*string `locationName:"tags" type:"map"`

	// The steps to follow to determine if the control is satisfied.
	//
	// TestingInformation is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateControlInput's
	// String and GoString methods.
	TestingInformation *string `locationName:"testingInformation" type:"string" sensitive:"true"`
}

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

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

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

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

// SetActionPlanInstructions sets the ActionPlanInstructions field's value.
func (s *CreateControlInput) SetActionPlanInstructions(v string) *CreateControlInput {
	s.ActionPlanInstructions = &v
	return s
}

// SetActionPlanTitle sets the ActionPlanTitle field's value.
func (s *CreateControlInput) SetActionPlanTitle(v string) *CreateControlInput {
	s.ActionPlanTitle = &v
	return s
}

// SetControlMappingSources sets the ControlMappingSources field's value.
func (s *CreateControlInput) SetControlMappingSources(v []*CreateControlMappingSource) *CreateControlInput {
	s.ControlMappingSources = v
	return s
}

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

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

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

// SetTestingInformation sets the TestingInformation field's value.
func (s *CreateControlInput) SetTestingInformation(v string) *CreateControlInput {
	s.TestingInformation = &v
	return s
}

// The control mapping fields that represent the source for evidence collection,
// along with related parameters and metadata. This doesn't contain mappingID.
type CreateControlMappingSource struct {
	_ struct{} `type:"structure"`

	// The description of the data source that determines where Audit Manager collects
	// evidence from for the control.
	SourceDescription *string `locationName:"sourceDescription" type:"string"`

	// Specifies how often evidence is collected from the control mapping source.
	SourceFrequency *string `locationName:"sourceFrequency" type:"string" enum:"SourceFrequency"`

	// A keyword that relates to the control data source.
	//
	// For manual evidence, this keyword indicates if the manual evidence is a file
	// or text.
	//
	// For automated evidence, this keyword identifies a specific CloudTrail event,
	// Config rule, Security Hub control, or Amazon Web Services API name.
	//
	// To learn more about the supported keywords that you can use when mapping
	// a control data source, see the following pages in the Audit Manager User
	// Guide:
	//
	//    * Config rules supported by Audit Manager (https://docs.aws.amazon.com/audit-manager/latest/userguide/control-data-sources-config.html)
	//
	//    * Security Hub controls supported by Audit Manager (https://docs.aws.amazon.com/audit-manager/latest/userguide/control-data-sources-ash.html)
	//
	//    * API calls supported by Audit Manager (https://docs.aws.amazon.com/audit-manager/latest/userguide/control-data-sources-api.html)
	//
	//    * CloudTrail event names supported by Audit Manager (https://docs.aws.amazon.com/audit-manager/latest/userguide/control-data-sources-cloudtrail.html)
	SourceKeyword *SourceKeyword `locationName:"sourceKeyword" type:"structure"`

	// The name of the control mapping data source.
	SourceName *string `locationName:"sourceName" min:"1" type:"string"`

	// The setup option for the data source, which reflects if the evidence collection
	// is automated or manual.
	SourceSetUpOption *string `locationName:"sourceSetUpOption" type:"string" enum:"SourceSetUpOption"`

	// Specifies one of the five types of data sources for evidence collection.
	SourceType *string `locationName:"sourceType" type:"string" enum:"SourceType"`

	// The instructions for troubleshooting the control.
	//
	// TroubleshootingText is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateControlMappingSource's
	// String and GoString methods.
	TroubleshootingText *string `locationName:"troubleshootingText" type:"string" sensitive:"true"`
}

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

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

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

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

// SetSourceDescription sets the SourceDescription field's value.
func (s *CreateControlMappingSource) SetSourceDescription(v string) *CreateControlMappingSource {
	s.SourceDescription = &v
	return s
}

// SetSourceFrequency sets the SourceFrequency field's value.
func (s *CreateControlMappingSource) SetSourceFrequency(v string) *CreateControlMappingSource {
	s.SourceFrequency = &v
	return s
}

// SetSourceKeyword sets the SourceKeyword field's value.
func (s *CreateControlMappingSource) SetSourceKeyword(v *SourceKeyword) *CreateControlMappingSource {
	s.SourceKeyword = v
	return s
}

// SetSourceName sets the SourceName field's value.
func (s *CreateControlMappingSource) SetSourceName(v string) *CreateControlMappingSource {
	s.SourceName = &v
	return s
}

// SetSourceSetUpOption sets the SourceSetUpOption field's value.
func (s *CreateControlMappingSource) SetSourceSetUpOption(v string) *CreateControlMappingSource {
	s.SourceSetUpOption = &v
	return s
}

// SetSourceType sets the SourceType field's value.
func (s *CreateControlMappingSource) SetSourceType(v string) *CreateControlMappingSource {
	s.SourceType = &v
	return s
}

// SetTroubleshootingText sets the TroubleshootingText field's value.
func (s *CreateControlMappingSource) SetTroubleshootingText(v string) *CreateControlMappingSource {
	s.TroubleshootingText = &v
	return s
}

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

	// The new control that the CreateControl API returned.
	Control *Control `locationName:"control" type:"structure"`
}

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

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

// SetControl sets the Control field's value.
func (s *CreateControlOutput) SetControl(v *Control) *CreateControlOutput {
	s.Control = v
	return s
}

// A collection of attributes that's used to create a delegation for an assessment
// in Audit Manager.
type CreateDelegationRequest struct {
	_ struct{} `type:"structure"`

	// A comment that's related to the delegation request.
	//
	// Comment is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateDelegationRequest's
	// String and GoString methods.
	Comment *string `locationName:"comment" type:"string" sensitive:"true"`

	// The unique identifier for the control set.
	ControlSetId *string `locationName:"controlSetId" min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the IAM role.
	RoleArn *string `locationName:"roleArn" min:"20" type:"string"`

	// The type of customer persona.
	//
	// In CreateAssessment, roleType can only be PROCESS_OWNER.
	//
	// In UpdateSettings, roleType can only be PROCESS_OWNER.
	//
	// In BatchCreateDelegationByAssessment, roleType can only be RESOURCE_OWNER.
	RoleType *string `locationName:"roleType" type:"string" enum:"RoleType"`
}

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

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

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

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

// SetComment sets the Comment field's value.
func (s *CreateDelegationRequest) SetComment(v string) *CreateDelegationRequest {
	s.Comment = &v
	return s
}

// SetControlSetId sets the ControlSetId field's value.
func (s *CreateDelegationRequest) SetControlSetId(v string) *CreateDelegationRequest {
	s.ControlSetId = &v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *CreateDelegationRequest) SetRoleArn(v string) *CreateDelegationRequest {
	s.RoleArn = &v
	return s
}

// SetRoleType sets the RoleType field's value.
func (s *CreateDelegationRequest) SetRoleType(v string) *CreateDelegationRequest {
	s.RoleType = &v
	return s
}

// The default s3 bucket where Audit Manager saves the files that you export
// from evidence finder.
type DefaultExportDestination struct {
	_ struct{} `type:"structure"`

	// The destination bucket where Audit Manager stores exported files.
	Destination *string `locationName:"destination" min:"1" type:"string"`

	// The destination type, such as Amazon S3.
	DestinationType *string `locationName:"destinationType" type:"string" enum:"ExportDestinationType"`
}

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

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

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

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

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

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

// The assignment of a control set to a delegate for review.
type Delegation struct {
	_ struct{} `type:"structure" sensitive:"true"`

	// The identifier for the assessment that's associated with the delegation.
	AssessmentId *string `locationName:"assessmentId" min:"36" type:"string"`

	// The name of the assessment that's associated with the delegation.
	//
	// AssessmentName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Delegation's
	// String and GoString methods.
	AssessmentName *string `locationName:"assessmentName" min:"1" type:"string" sensitive:"true"`

	// The comment that's related to the delegation.
	//
	// Comment is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Delegation's
	// String and GoString methods.
	Comment *string `locationName:"comment" type:"string" sensitive:"true"`

	// The identifier for the control set that's associated with the delegation.
	ControlSetId *string `locationName:"controlSetId" min:"1" type:"string"`

	// The user or role that created the delegation.
	//
	// CreatedBy is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Delegation's
	// String and GoString methods.
	CreatedBy *string `locationName:"createdBy" min:"1" type:"string" sensitive:"true"`

	// Specifies when the delegation was created.
	CreationTime *time.Time `locationName:"creationTime" type:"timestamp"`

	// The unique identifier for the delegation.
	Id *string `locationName:"id" min:"36" type:"string"`

	// Specifies when the delegation was last updated.
	LastUpdated *time.Time `locationName:"lastUpdated" type:"timestamp"`

	// The Amazon Resource Name (ARN) of the IAM role.
	RoleArn *string `locationName:"roleArn" min:"20" type:"string"`

	// The type of customer persona.
	//
	// In CreateAssessment, roleType can only be PROCESS_OWNER.
	//
	// In UpdateSettings, roleType can only be PROCESS_OWNER.
	//
	// In BatchCreateDelegationByAssessment, roleType can only be RESOURCE_OWNER.
	RoleType *string `locationName:"roleType" type:"string" enum:"RoleType"`

	// The status of the delegation.
	Status *string `locationName:"status" type:"string" enum:"DelegationStatus"`
}

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

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *Delegation) SetAssessmentId(v string) *Delegation {
	s.AssessmentId = &v
	return s
}

// SetAssessmentName sets the AssessmentName field's value.
func (s *Delegation) SetAssessmentName(v string) *Delegation {
	s.AssessmentName = &v
	return s
}

// SetComment sets the Comment field's value.
func (s *Delegation) SetComment(v string) *Delegation {
	s.Comment = &v
	return s
}

// SetControlSetId sets the ControlSetId field's value.
func (s *Delegation) SetControlSetId(v string) *Delegation {
	s.ControlSetId = &v
	return s
}

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

// SetCreationTime sets the CreationTime field's value.
func (s *Delegation) SetCreationTime(v time.Time) *Delegation {
	s.CreationTime = &v
	return s
}

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

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

// SetRoleArn sets the RoleArn field's value.
func (s *Delegation) SetRoleArn(v string) *Delegation {
	s.RoleArn = &v
	return s
}

// SetRoleType sets the RoleType field's value.
func (s *Delegation) SetRoleType(v string) *Delegation {
	s.RoleType = &v
	return s
}

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

// The metadata that's associated with the delegation.
type DelegationMetadata struct {
	_ struct{} `type:"structure"`

	// The unique identifier for the assessment.
	AssessmentId *string `locationName:"assessmentId" min:"36" type:"string"`

	// The name of the associated assessment.
	//
	// AssessmentName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DelegationMetadata's
	// String and GoString methods.
	AssessmentName *string `locationName:"assessmentName" min:"1" type:"string" sensitive:"true"`

	// Specifies the name of the control set that was delegated for review.
	ControlSetName *string `locationName:"controlSetName" min:"1" type:"string"`

	// Specifies when the delegation was created.
	CreationTime *time.Time `locationName:"creationTime" type:"timestamp"`

	// The unique identifier for the delegation.
	Id *string `locationName:"id" min:"36" type:"string"`

	// The Amazon Resource Name (ARN) of the IAM role.
	RoleArn *string `locationName:"roleArn" min:"20" type:"string"`

	// The current status of the delegation.
	Status *string `locationName:"status" type:"string" enum:"DelegationStatus"`
}

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

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *DelegationMetadata) SetAssessmentId(v string) *DelegationMetadata {
	s.AssessmentId = &v
	return s
}

// SetAssessmentName sets the AssessmentName field's value.
func (s *DelegationMetadata) SetAssessmentName(v string) *DelegationMetadata {
	s.AssessmentName = &v
	return s
}

// SetControlSetName sets the ControlSetName field's value.
func (s *DelegationMetadata) SetControlSetName(v string) *DelegationMetadata {
	s.ControlSetName = &v
	return s
}

// SetCreationTime sets the CreationTime field's value.
func (s *DelegationMetadata) SetCreationTime(v time.Time) *DelegationMetadata {
	s.CreationTime = &v
	return s
}

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

// SetRoleArn sets the RoleArn field's value.
func (s *DelegationMetadata) SetRoleArn(v string) *DelegationMetadata {
	s.RoleArn = &v
	return s
}

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

type DeleteAssessmentFrameworkInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier for the custom framework.
	//
	// FrameworkId is a required field
	FrameworkId *string `location:"uri" locationName:"frameworkId" min:"36" 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 DeleteAssessmentFrameworkInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetFrameworkId sets the FrameworkId field's value.
func (s *DeleteAssessmentFrameworkInput) SetFrameworkId(v string) *DeleteAssessmentFrameworkInput {
	s.FrameworkId = &v
	return s
}

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

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

type DeleteAssessmentFrameworkShareInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique identifier for the share request to be deleted.
	//
	// RequestId is a required field
	RequestId *string `location:"uri" locationName:"requestId" min:"36" type:"string" required:"true"`

	// Specifies whether the share request is a sent request or a received request.
	//
	// RequestType is a required field
	RequestType *string `location:"querystring" locationName:"requestType" type:"string" required:"true" enum:"ShareRequestType"`
}

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

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

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

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

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

// SetRequestType sets the RequestType field's value.
func (s *DeleteAssessmentFrameworkShareInput) SetRequestType(v string) *DeleteAssessmentFrameworkShareInput {
	s.RequestType = &v
	return s
}

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

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

type DeleteAssessmentInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier for the assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"uri" locationName:"assessmentId" min:"36" 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 DeleteAssessmentInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *DeleteAssessmentInput) SetAssessmentId(v string) *DeleteAssessmentInput {
	s.AssessmentId = &v
	return s
}

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

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

type DeleteAssessmentReportInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique identifier for the assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"uri" locationName:"assessmentId" min:"36" type:"string" required:"true"`

	// The unique identifier for the assessment report.
	//
	// AssessmentReportId is a required field
	AssessmentReportId *string `location:"uri" locationName:"assessmentReportId" min:"36" 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 DeleteAssessmentReportInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *DeleteAssessmentReportInput) SetAssessmentId(v string) *DeleteAssessmentReportInput {
	s.AssessmentId = &v
	return s
}

// SetAssessmentReportId sets the AssessmentReportId field's value.
func (s *DeleteAssessmentReportInput) SetAssessmentReportId(v string) *DeleteAssessmentReportInput {
	s.AssessmentReportId = &v
	return s
}

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

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

type DeleteControlInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique identifier for the control.
	//
	// ControlId is a required field
	ControlId *string `location:"uri" locationName:"controlId" min:"36" 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 DeleteControlInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetControlId sets the ControlId field's value.
func (s *DeleteControlInput) SetControlId(v string) *DeleteControlInput {
	s.ControlId = &v
	return s
}

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

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

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

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

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

	// The registration status of the account.
	Status *string `locationName:"status" type:"string" enum:"AccountStatus"`
}

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

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

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

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

	// The identifier for the administrator account.
	AdminAccountId *string `locationName:"adminAccountId" min:"12" type:"string"`
}

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

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

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

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

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

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

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

// The deregistration policy for the data that's stored in Audit Manager. You
// can use this attribute to determine how your data is handled when you deregister
// Audit Manager (https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_DeregisterAccount.html).
//
// By default, Audit Manager retains evidence data for two years from the time
// of its creation. Other Audit Manager resources (including assessments, custom
// controls, and custom frameworks) remain in Audit Manager indefinitely, and
// are available if you re-register Audit Manager (https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_RegisterAccount.html)
// in the future. For more information about data retention, see Data Protection
// (https://docs.aws.amazon.com/audit-manager/latest/userguide/data-protection.html)
// in the Audit Manager User Guide.
//
// If you choose to delete all data, this action permanently deletes all evidence
// data in your account within seven days. It also deletes all of the Audit
// Manager resources that you created, including assessments, custom controls,
// and custom frameworks. Your data will not be available if you re-register
// Audit Manager in the future.
type DeregistrationPolicy struct {
	_ struct{} `type:"structure"`

	// Specifies which Audit Manager data will be deleted when you deregister Audit
	// Manager.
	//
	//    * If you set the value to ALL, all of your data is deleted within seven
	//    days of deregistration.
	//
	//    * If you set the value to DEFAULT, none of your data is deleted at the
	//    time of deregistration. However, keep in mind that the Audit Manager data
	//    retention policy still applies. As a result, any evidence data will be
	//    deleted two years after its creation date. Your other Audit Manager resources
	//    will continue to exist indefinitely.
	DeleteResources *string `locationName:"deleteResources" type:"string" enum:"DeleteResources"`
}

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

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

// SetDeleteResources sets the DeleteResources field's value.
func (s *DeregistrationPolicy) SetDeleteResources(v string) *DeregistrationPolicy {
	s.DeleteResources = &v
	return s
}

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

	// The unique identifier for the assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"uri" locationName:"assessmentId" min:"36" type:"string" required:"true"`

	// The unique identifier for the folder that the evidence is stored in.
	//
	// EvidenceFolderId is a required field
	EvidenceFolderId *string `locationName:"evidenceFolderId" min:"36" 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 DisassociateAssessmentReportEvidenceFolderInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *DisassociateAssessmentReportEvidenceFolderInput) SetAssessmentId(v string) *DisassociateAssessmentReportEvidenceFolderInput {
	s.AssessmentId = &v
	return s
}

// SetEvidenceFolderId sets the EvidenceFolderId field's value.
func (s *DisassociateAssessmentReportEvidenceFolderInput) SetEvidenceFolderId(v string) *DisassociateAssessmentReportEvidenceFolderInput {
	s.EvidenceFolderId = &v
	return s
}

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

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

// A record that contains the information needed to demonstrate compliance with
// the requirements specified by a control. Examples of evidence include change
// activity invoked by a user, or a system configuration snapshot.
type Evidence struct {
	_ struct{} `type:"structure"`

	// Specifies whether the evidence is included in the assessment report.
	AssessmentReportSelection *string `locationName:"assessmentReportSelection" type:"string"`

	// The names and values that are used by the evidence event. This includes an
	// attribute name (such as allowUsersToChangePassword) and value (such as true
	// or false).
	Attributes map[string]*string `locationName:"attributes" type:"map"`

	// The identifier for the Amazon Web Services account.
	AwsAccountId *string `locationName:"awsAccountId" min:"12" type:"string"`

	// The Amazon Web Services account that the evidence is collected from, and
	// its organization path.
	AwsOrganization *string `locationName:"awsOrganization" type:"string"`

	// The evaluation status for automated evidence that falls under the compliance
	// check category.
	//
	//    * Audit Manager classes evidence as non-compliant if Security Hub reports
	//    a Fail result, or if Config reports a Non-compliant result.
	//
	//    * Audit Manager classes evidence as compliant if Security Hub reports
	//    a Pass result, or if Config reports a Compliant result.
	//
	//    * If a compliance check isn't available or applicable, then no compliance
	//    evaluation can be made for that evidence. This is the case if the evidence
	//    uses Config or Security Hub as the underlying data source type, but those
	//    services aren't enabled. This is also the case if the evidence uses an
	//    underlying data source type that doesn't support compliance checks (such
	//    as manual evidence, Amazon Web Services API calls, or CloudTrail).
	ComplianceCheck *string `locationName:"complianceCheck" type:"string"`

	// The data source where the evidence was collected from.
	DataSource *string `locationName:"dataSource" type:"string"`

	// The name of the evidence event.
	EventName *string `locationName:"eventName" type:"string"`

	// The Amazon Web Service that the evidence is collected from.
	EventSource *string `locationName:"eventSource" min:"1" type:"string"`

	// The identifier for the Amazon Web Services account.
	EvidenceAwsAccountId *string `locationName:"evidenceAwsAccountId" min:"12" type:"string"`

	// The type of automated evidence.
	EvidenceByType *string `locationName:"evidenceByType" type:"string"`

	// The identifier for the folder that the evidence is stored in.
	EvidenceFolderId *string `locationName:"evidenceFolderId" min:"36" type:"string"`

	// The unique identifier for the user or role that's associated with the evidence.
	IamId *string `locationName:"iamId" min:"20" type:"string"`

	// The identifier for the evidence.
	Id *string `locationName:"id" min:"36" type:"string"`

	// The list of resources that are assessed to generate the evidence.
	ResourcesIncluded []*Resource `locationName:"resourcesIncluded" type:"list"`

	// The timestamp that represents when the evidence was collected.
	Time *time.Time `locationName:"time" type:"timestamp"`
}

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

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

// SetAssessmentReportSelection sets the AssessmentReportSelection field's value.
func (s *Evidence) SetAssessmentReportSelection(v string) *Evidence {
	s.AssessmentReportSelection = &v
	return s
}

// SetAttributes sets the Attributes field's value.
func (s *Evidence) SetAttributes(v map[string]*string) *Evidence {
	s.Attributes = v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *Evidence) SetAwsAccountId(v string) *Evidence {
	s.AwsAccountId = &v
	return s
}

// SetAwsOrganization sets the AwsOrganization field's value.
func (s *Evidence) SetAwsOrganization(v string) *Evidence {
	s.AwsOrganization = &v
	return s
}

// SetComplianceCheck sets the ComplianceCheck field's value.
func (s *Evidence) SetComplianceCheck(v string) *Evidence {
	s.ComplianceCheck = &v
	return s
}

// SetDataSource sets the DataSource field's value.
func (s *Evidence) SetDataSource(v string) *Evidence {
	s.DataSource = &v
	return s
}

// SetEventName sets the EventName field's value.
func (s *Evidence) SetEventName(v string) *Evidence {
	s.EventName = &v
	return s
}

// SetEventSource sets the EventSource field's value.
func (s *Evidence) SetEventSource(v string) *Evidence {
	s.EventSource = &v
	return s
}

// SetEvidenceAwsAccountId sets the EvidenceAwsAccountId field's value.
func (s *Evidence) SetEvidenceAwsAccountId(v string) *Evidence {
	s.EvidenceAwsAccountId = &v
	return s
}

// SetEvidenceByType sets the EvidenceByType field's value.
func (s *Evidence) SetEvidenceByType(v string) *Evidence {
	s.EvidenceByType = &v
	return s
}

// SetEvidenceFolderId sets the EvidenceFolderId field's value.
func (s *Evidence) SetEvidenceFolderId(v string) *Evidence {
	s.EvidenceFolderId = &v
	return s
}

// SetIamId sets the IamId field's value.
func (s *Evidence) SetIamId(v string) *Evidence {
	s.IamId = &v
	return s
}

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

// SetResourcesIncluded sets the ResourcesIncluded field's value.
func (s *Evidence) SetResourcesIncluded(v []*Resource) *Evidence {
	s.ResourcesIncluded = v
	return s
}

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

// The settings object that specifies whether evidence finder is enabled. This
// object also describes the related event data store, and the backfill status
// for populating the event data store with evidence data.
type EvidenceFinderEnablement struct {
	_ struct{} `type:"structure"`

	// The current status of the evidence data backfill process.
	//
	// The backfill starts after you enable evidence finder. During this task, Audit
	// Manager populates an event data store with your past two years’ worth of
	// evidence data so that your evidence can be queried.
	//
	//    * NOT_STARTED means that the backfill hasn’t started yet.
	//
	//    * IN_PROGRESS means that the backfill is in progress. This can take up
	//    to 7 days to complete, depending on the amount of evidence data.
	//
	//    * COMPLETED means that the backfill is complete. All of your past evidence
	//    is now queryable.
	BackfillStatus *string `locationName:"backfillStatus" type:"string" enum:"EvidenceFinderBackfillStatus"`

	// The current status of the evidence finder feature and the related event data
	// store.
	//
	//    * ENABLE_IN_PROGRESS means that you requested to enable evidence finder.
	//    An event data store is currently being created to support evidence finder
	//    queries.
	//
	//    * ENABLED means that an event data store was successfully created and
	//    evidence finder is enabled. We recommend that you wait 7 days until the
	//    event data store is backfilled with your past two years’ worth of evidence
	//    data. You can use evidence finder in the meantime, but not all data might
	//    be available until the backfill is complete.
	//
	//    * DISABLE_IN_PROGRESS means that you requested to disable evidence finder,
	//    and your request is pending the deletion of the event data store.
	//
	//    * DISABLED means that you have permanently disabled evidence finder and
	//    the event data store has been deleted. You can't re-enable evidence finder
	//    after this point.
	EnablementStatus *string `locationName:"enablementStatus" type:"string" enum:"EvidenceFinderEnablementStatus"`

	// Represents any errors that occurred when enabling or disabling evidence finder.
	Error *string `locationName:"error" type:"string"`

	// The Amazon Resource Name (ARN) of the CloudTrail Lake event data store that’s
	// used by evidence finder. The event data store is the lake of evidence data
	// that evidence finder runs queries against.
	EventDataStoreArn *string `locationName:"eventDataStoreArn" min:"20" type:"string"`
}

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

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

// SetBackfillStatus sets the BackfillStatus field's value.
func (s *EvidenceFinderEnablement) SetBackfillStatus(v string) *EvidenceFinderEnablement {
	s.BackfillStatus = &v
	return s
}

// SetEnablementStatus sets the EnablementStatus field's value.
func (s *EvidenceFinderEnablement) SetEnablementStatus(v string) *EvidenceFinderEnablement {
	s.EnablementStatus = &v
	return s
}

// SetError sets the Error field's value.
func (s *EvidenceFinderEnablement) SetError(v string) *EvidenceFinderEnablement {
	s.Error = &v
	return s
}

// SetEventDataStoreArn sets the EventDataStoreArn field's value.
func (s *EvidenceFinderEnablement) SetEventDataStoreArn(v string) *EvidenceFinderEnablement {
	s.EventDataStoreArn = &v
	return s
}

// A breakdown of the latest compliance check status for the evidence in your
// Audit Manager assessments.
type EvidenceInsights struct {
	_ struct{} `type:"structure"`

	// The number of compliance check evidence that Audit Manager classified as
	// compliant. This includes evidence that was collected from Security Hub with
	// a Pass ruling, or collected from Config with a Compliant ruling.
	CompliantEvidenceCount *int64 `locationName:"compliantEvidenceCount" type:"integer"`

	// The number of evidence that a compliance check ruling isn't available for.
	// Evidence is inconclusive when the associated control uses Security Hub or
	// Config as a data source but you didn't enable those services. This is also
	// the case when a control uses a data source that doesn’t support compliance
	// checks (for example, manual evidence, API calls, or CloudTrail).
	//
	// If evidence has a compliance check status of not applicable in the console,
	// it's classified as inconclusive in EvidenceInsights data.
	InconclusiveEvidenceCount *int64 `locationName:"inconclusiveEvidenceCount" type:"integer"`

	// The number of compliance check evidence that Audit Manager classified as
	// non-compliant. This includes evidence that was collected from Security Hub
	// with a Fail ruling, or collected from Config with a Non-compliant ruling.
	NoncompliantEvidenceCount *int64 `locationName:"noncompliantEvidenceCount" 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 EvidenceInsights) String() string {
	return awsutil.Prettify(s)
}

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

// SetCompliantEvidenceCount sets the CompliantEvidenceCount field's value.
func (s *EvidenceInsights) SetCompliantEvidenceCount(v int64) *EvidenceInsights {
	s.CompliantEvidenceCount = &v
	return s
}

// SetInconclusiveEvidenceCount sets the InconclusiveEvidenceCount field's value.
func (s *EvidenceInsights) SetInconclusiveEvidenceCount(v int64) *EvidenceInsights {
	s.InconclusiveEvidenceCount = &v
	return s
}

// SetNoncompliantEvidenceCount sets the NoncompliantEvidenceCount field's value.
func (s *EvidenceInsights) SetNoncompliantEvidenceCount(v int64) *EvidenceInsights {
	s.NoncompliantEvidenceCount = &v
	return s
}

// The file that's used to structure and automate Audit Manager assessments
// for a given compliance standard.
type Framework struct {
	_ struct{} `type:"structure"`

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

	// The compliance type that the framework supports, such as CIS or HIPAA.
	//
	// ComplianceType is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Framework's
	// String and GoString methods.
	ComplianceType *string `locationName:"complianceType" type:"string" sensitive:"true"`

	// The control sets that are associated with the framework.
	//
	// ControlSets is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Framework's
	// String and GoString methods.
	ControlSets []*ControlSet `locationName:"controlSets" min:"1" type:"list" sensitive:"true"`

	// The control data sources where Audit Manager collects evidence from.
	ControlSources *string `locationName:"controlSources" min:"1" type:"string"`

	// The time when the framework was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The user or role that created the framework.
	//
	// CreatedBy is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Framework's
	// String and GoString methods.
	CreatedBy *string `locationName:"createdBy" min:"1" type:"string" sensitive:"true"`

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

	// The unique identifier for the framework.
	Id *string `locationName:"id" min:"36" type:"string"`

	// The time when the framework was most recently updated.
	LastUpdatedAt *time.Time `locationName:"lastUpdatedAt" type:"timestamp"`

	// The user or role that most recently updated the framework.
	//
	// LastUpdatedBy is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Framework's
	// String and GoString methods.
	LastUpdatedBy *string `locationName:"lastUpdatedBy" min:"1" type:"string" sensitive:"true"`

	// The logo that's associated with the framework.
	Logo *string `locationName:"logo" min:"1" type:"string"`

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

	// The tags that are associated with the framework.
	Tags map[string]*string `locationName:"tags" type:"map"`

	// Specifies whether the framework is a standard framework or a custom framework.
	Type *string `locationName:"type" type:"string" enum:"FrameworkType"`
}

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

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

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

// SetComplianceType sets the ComplianceType field's value.
func (s *Framework) SetComplianceType(v string) *Framework {
	s.ComplianceType = &v
	return s
}

// SetControlSets sets the ControlSets field's value.
func (s *Framework) SetControlSets(v []*ControlSet) *Framework {
	s.ControlSets = v
	return s
}

// SetControlSources sets the ControlSources field's value.
func (s *Framework) SetControlSources(v string) *Framework {
	s.ControlSources = &v
	return s
}

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

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

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

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

// SetLastUpdatedAt sets the LastUpdatedAt field's value.
func (s *Framework) SetLastUpdatedAt(v time.Time) *Framework {
	s.LastUpdatedAt = &v
	return s
}

// SetLastUpdatedBy sets the LastUpdatedBy field's value.
func (s *Framework) SetLastUpdatedBy(v string) *Framework {
	s.LastUpdatedBy = &v
	return s
}

// SetLogo sets the Logo field's value.
func (s *Framework) SetLogo(v string) *Framework {
	s.Logo = &v
	return s
}

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

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

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

// The metadata of a framework, such as the name, ID, or description.
type FrameworkMetadata struct {
	_ struct{} `type:"structure"`

	// The compliance standard that's associated with the framework. For example,
	// this could be PCI DSS or HIPAA.
	//
	// ComplianceType is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by FrameworkMetadata's
	// String and GoString methods.
	ComplianceType *string `locationName:"complianceType" type:"string" sensitive:"true"`

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

	// The logo that's associated with the framework.
	Logo *string `locationName:"logo" min:"1" type:"string"`

	// The name of the framework.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by FrameworkMetadata's
	// String and GoString methods.
	Name *string `locationName:"name" min:"1" type:"string" sensitive:"true"`
}

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

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

// SetComplianceType sets the ComplianceType field's value.
func (s *FrameworkMetadata) SetComplianceType(v string) *FrameworkMetadata {
	s.ComplianceType = &v
	return s
}

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

// SetLogo sets the Logo field's value.
func (s *FrameworkMetadata) SetLogo(v string) *FrameworkMetadata {
	s.Logo = &v
	return s
}

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

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

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

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

	// The status of the Amazon Web Services account.
	Status *string `locationName:"status" type:"string" enum:"AccountStatus"`
}

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

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

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

type GetAssessmentFrameworkInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier for the framework.
	//
	// FrameworkId is a required field
	FrameworkId *string `location:"uri" locationName:"frameworkId" min:"36" 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 GetAssessmentFrameworkInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetFrameworkId sets the FrameworkId field's value.
func (s *GetAssessmentFrameworkInput) SetFrameworkId(v string) *GetAssessmentFrameworkInput {
	s.FrameworkId = &v
	return s
}

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

	// The framework that the GetAssessmentFramework API returned.
	Framework *Framework `locationName:"framework" type:"structure"`
}

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

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

// SetFramework sets the Framework field's value.
func (s *GetAssessmentFrameworkOutput) SetFramework(v *Framework) *GetAssessmentFrameworkOutput {
	s.Framework = v
	return s
}

type GetAssessmentInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique identifier for the assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"uri" locationName:"assessmentId" min:"36" 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 GetAssessmentInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *GetAssessmentInput) SetAssessmentId(v string) *GetAssessmentInput {
	s.AssessmentId = &v
	return s
}

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

	// An entity that defines the scope of audit evidence collected by Audit Manager.
	// An Audit Manager assessment is an implementation of an Audit Manager framework.
	Assessment *Assessment `locationName:"assessment" type:"structure"`

	// The wrapper that contains the Audit Manager role information of the current
	// user. This includes the role type and IAM Amazon Resource Name (ARN).
	UserRole *Role `locationName:"userRole" type:"structure"`
}

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

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

// SetAssessment sets the Assessment field's value.
func (s *GetAssessmentOutput) SetAssessment(v *Assessment) *GetAssessmentOutput {
	s.Assessment = v
	return s
}

// SetUserRole sets the UserRole field's value.
func (s *GetAssessmentOutput) SetUserRole(v *Role) *GetAssessmentOutput {
	s.UserRole = v
	return s
}

type GetAssessmentReportUrlInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique identifier for the assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"uri" locationName:"assessmentId" min:"36" type:"string" required:"true"`

	// The unique identifier for the assessment report.
	//
	// AssessmentReportId is a required field
	AssessmentReportId *string `location:"uri" locationName:"assessmentReportId" min:"36" 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 GetAssessmentReportUrlInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *GetAssessmentReportUrlInput) SetAssessmentId(v string) *GetAssessmentReportUrlInput {
	s.AssessmentId = &v
	return s
}

// SetAssessmentReportId sets the AssessmentReportId field's value.
func (s *GetAssessmentReportUrlInput) SetAssessmentReportId(v string) *GetAssessmentReportUrlInput {
	s.AssessmentReportId = &v
	return s
}

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

	// Short for uniform resource locator. A URL is used as a unique identifier
	// to locate a resource on the internet.
	PreSignedUrl *URL `locationName:"preSignedUrl" type:"structure"`
}

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

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

// SetPreSignedUrl sets the PreSignedUrl field's value.
func (s *GetAssessmentReportUrlOutput) SetPreSignedUrl(v *URL) *GetAssessmentReportUrlOutput {
	s.PreSignedUrl = v
	return s
}

type GetChangeLogsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique identifier for the assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"uri" locationName:"assessmentId" min:"36" type:"string" required:"true"`

	// The unique identifier for the control.
	ControlId *string `location:"querystring" locationName:"controlId" min:"36" type:"string"`

	// The unique identifier for the control set.
	ControlSetId *string `location:"querystring" locationName:"controlSetId" min:"1" type:"string"`

	// Represents the maximum number of results on a page or for an API request
	// call.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetChangeLogsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetChangeLogsInput"}
	if s.AssessmentId == nil {
		invalidParams.Add(request.NewErrParamRequired("AssessmentId"))
	}
	if s.AssessmentId != nil && len(*s.AssessmentId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("AssessmentId", 36))
	}
	if s.ControlId != nil && len(*s.ControlId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("ControlId", 36))
	}
	if s.ControlSetId != nil && len(*s.ControlSetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ControlSetId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *GetChangeLogsInput) SetAssessmentId(v string) *GetChangeLogsInput {
	s.AssessmentId = &v
	return s
}

// SetControlId sets the ControlId field's value.
func (s *GetChangeLogsInput) SetControlId(v string) *GetChangeLogsInput {
	s.ControlId = &v
	return s
}

// SetControlSetId sets the ControlSetId field's value.
func (s *GetChangeLogsInput) SetControlSetId(v string) *GetChangeLogsInput {
	s.ControlSetId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetChangeLogsInput) SetMaxResults(v int64) *GetChangeLogsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetChangeLogsInput) SetNextToken(v string) *GetChangeLogsInput {
	s.NextToken = &v
	return s
}

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

	// The list of user activity for the control.
	ChangeLogs []*ChangeLog `locationName:"changeLogs" type:"list"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

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

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

// SetChangeLogs sets the ChangeLogs field's value.
func (s *GetChangeLogsOutput) SetChangeLogs(v []*ChangeLog) *GetChangeLogsOutput {
	s.ChangeLogs = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetChangeLogsOutput) SetNextToken(v string) *GetChangeLogsOutput {
	s.NextToken = &v
	return s
}

type GetControlInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier for the control.
	//
	// ControlId is a required field
	ControlId *string `location:"uri" locationName:"controlId" min:"36" 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 GetControlInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetControlId sets the ControlId field's value.
func (s *GetControlInput) SetControlId(v string) *GetControlInput {
	s.ControlId = &v
	return s
}

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

	// The details of the control that the GetControl API returned.
	Control *Control `locationName:"control" type:"structure"`
}

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

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

// SetControl sets the Control field's value.
func (s *GetControlOutput) SetControl(v *Control) *GetControlOutput {
	s.Control = v
	return s
}

type GetDelegationsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// Represents the maximum number of results on a page or for an API request
	// call.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
}

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

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

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

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

// SetMaxResults sets the MaxResults field's value.
func (s *GetDelegationsInput) SetMaxResults(v int64) *GetDelegationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetDelegationsInput) SetNextToken(v string) *GetDelegationsInput {
	s.NextToken = &v
	return s
}

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

	// The list of delegations that the GetDelegations API returned.
	Delegations []*DelegationMetadata `locationName:"delegations" type:"list"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

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

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

// SetDelegations sets the Delegations field's value.
func (s *GetDelegationsOutput) SetDelegations(v []*DelegationMetadata) *GetDelegationsOutput {
	s.Delegations = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetDelegationsOutput) SetNextToken(v string) *GetDelegationsOutput {
	s.NextToken = &v
	return s
}

type GetEvidenceByEvidenceFolderInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier for the assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"uri" locationName:"assessmentId" min:"36" type:"string" required:"true"`

	// The identifier for the control set.
	//
	// ControlSetId is a required field
	ControlSetId *string `location:"uri" locationName:"controlSetId" min:"1" type:"string" required:"true"`

	// The unique identifier for the folder that the evidence is stored in.
	//
	// EvidenceFolderId is a required field
	EvidenceFolderId *string `location:"uri" locationName:"evidenceFolderId" min:"36" type:"string" required:"true"`

	// Represents the maximum number of results on a page or for an API request
	// call.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetEvidenceByEvidenceFolderInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetEvidenceByEvidenceFolderInput"}
	if s.AssessmentId == nil {
		invalidParams.Add(request.NewErrParamRequired("AssessmentId"))
	}
	if s.AssessmentId != nil && len(*s.AssessmentId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("AssessmentId", 36))
	}
	if s.ControlSetId == nil {
		invalidParams.Add(request.NewErrParamRequired("ControlSetId"))
	}
	if s.ControlSetId != nil && len(*s.ControlSetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ControlSetId", 1))
	}
	if s.EvidenceFolderId == nil {
		invalidParams.Add(request.NewErrParamRequired("EvidenceFolderId"))
	}
	if s.EvidenceFolderId != nil && len(*s.EvidenceFolderId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("EvidenceFolderId", 36))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *GetEvidenceByEvidenceFolderInput) SetAssessmentId(v string) *GetEvidenceByEvidenceFolderInput {
	s.AssessmentId = &v
	return s
}

// SetControlSetId sets the ControlSetId field's value.
func (s *GetEvidenceByEvidenceFolderInput) SetControlSetId(v string) *GetEvidenceByEvidenceFolderInput {
	s.ControlSetId = &v
	return s
}

// SetEvidenceFolderId sets the EvidenceFolderId field's value.
func (s *GetEvidenceByEvidenceFolderInput) SetEvidenceFolderId(v string) *GetEvidenceByEvidenceFolderInput {
	s.EvidenceFolderId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetEvidenceByEvidenceFolderInput) SetMaxResults(v int64) *GetEvidenceByEvidenceFolderInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetEvidenceByEvidenceFolderInput) SetNextToken(v string) *GetEvidenceByEvidenceFolderInput {
	s.NextToken = &v
	return s
}

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

	// The list of evidence that the GetEvidenceByEvidenceFolder API returned.
	Evidence []*Evidence `locationName:"evidence" type:"list"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

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

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

// SetEvidence sets the Evidence field's value.
func (s *GetEvidenceByEvidenceFolderOutput) SetEvidence(v []*Evidence) *GetEvidenceByEvidenceFolderOutput {
	s.Evidence = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetEvidenceByEvidenceFolderOutput) SetNextToken(v string) *GetEvidenceByEvidenceFolderOutput {
	s.NextToken = &v
	return s
}

type GetEvidenceFileUploadUrlInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The file that you want to upload. For a list of supported file formats, see
	// Supported file types for manual evidence (https://docs.aws.amazon.com/audit-manager/latest/userguide/upload-evidence.html#supported-manual-evidence-files)
	// in the Audit Manager User Guide.
	//
	// FileName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetEvidenceFileUploadUrlInput's
	// String and GoString methods.
	//
	// FileName is a required field
	FileName *string `location:"querystring" locationName:"fileName" min:"1" type:"string" required:"true" sensitive:"true"`
}

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

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

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

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

// SetFileName sets the FileName field's value.
func (s *GetEvidenceFileUploadUrlInput) SetFileName(v string) *GetEvidenceFileUploadUrlInput {
	s.FileName = &v
	return s
}

type GetEvidenceFileUploadUrlOutput struct {
	_ struct{} `type:"structure" sensitive:"true"`

	// The name of the uploaded manual evidence file that the presigned URL was
	// generated for.
	EvidenceFileName *string `locationName:"evidenceFileName" min:"1" type:"string"`

	// The presigned URL that was generated.
	UploadUrl *string `locationName:"uploadUrl" 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 GetEvidenceFileUploadUrlOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetEvidenceFileName sets the EvidenceFileName field's value.
func (s *GetEvidenceFileUploadUrlOutput) SetEvidenceFileName(v string) *GetEvidenceFileUploadUrlOutput {
	s.EvidenceFileName = &v
	return s
}

// SetUploadUrl sets the UploadUrl field's value.
func (s *GetEvidenceFileUploadUrlOutput) SetUploadUrl(v string) *GetEvidenceFileUploadUrlOutput {
	s.UploadUrl = &v
	return s
}

type GetEvidenceFolderInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique identifier for the assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"uri" locationName:"assessmentId" min:"36" type:"string" required:"true"`

	// The unique identifier for the control set.
	//
	// ControlSetId is a required field
	ControlSetId *string `location:"uri" locationName:"controlSetId" min:"1" type:"string" required:"true"`

	// The unique identifier for the folder that the evidence is stored in.
	//
	// EvidenceFolderId is a required field
	EvidenceFolderId *string `location:"uri" locationName:"evidenceFolderId" min:"36" 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 GetEvidenceFolderInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *GetEvidenceFolderInput) SetAssessmentId(v string) *GetEvidenceFolderInput {
	s.AssessmentId = &v
	return s
}

// SetControlSetId sets the ControlSetId field's value.
func (s *GetEvidenceFolderInput) SetControlSetId(v string) *GetEvidenceFolderInput {
	s.ControlSetId = &v
	return s
}

// SetEvidenceFolderId sets the EvidenceFolderId field's value.
func (s *GetEvidenceFolderInput) SetEvidenceFolderId(v string) *GetEvidenceFolderInput {
	s.EvidenceFolderId = &v
	return s
}

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

	// The folder that the evidence is stored in.
	EvidenceFolder *AssessmentEvidenceFolder `locationName:"evidenceFolder" type:"structure"`
}

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

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

// SetEvidenceFolder sets the EvidenceFolder field's value.
func (s *GetEvidenceFolderOutput) SetEvidenceFolder(v *AssessmentEvidenceFolder) *GetEvidenceFolderOutput {
	s.EvidenceFolder = v
	return s
}

type GetEvidenceFoldersByAssessmentControlInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier for the assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"uri" locationName:"assessmentId" min:"36" type:"string" required:"true"`

	// The identifier for the control.
	//
	// ControlId is a required field
	ControlId *string `location:"uri" locationName:"controlId" min:"36" type:"string" required:"true"`

	// The identifier for the control set.
	//
	// ControlSetId is a required field
	ControlSetId *string `location:"uri" locationName:"controlSetId" min:"1" type:"string" required:"true"`

	// Represents the maximum number of results on a page or for an API request
	// call.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetEvidenceFoldersByAssessmentControlInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetEvidenceFoldersByAssessmentControlInput"}
	if s.AssessmentId == nil {
		invalidParams.Add(request.NewErrParamRequired("AssessmentId"))
	}
	if s.AssessmentId != nil && len(*s.AssessmentId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("AssessmentId", 36))
	}
	if s.ControlId == nil {
		invalidParams.Add(request.NewErrParamRequired("ControlId"))
	}
	if s.ControlId != nil && len(*s.ControlId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("ControlId", 36))
	}
	if s.ControlSetId == nil {
		invalidParams.Add(request.NewErrParamRequired("ControlSetId"))
	}
	if s.ControlSetId != nil && len(*s.ControlSetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ControlSetId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *GetEvidenceFoldersByAssessmentControlInput) SetAssessmentId(v string) *GetEvidenceFoldersByAssessmentControlInput {
	s.AssessmentId = &v
	return s
}

// SetControlId sets the ControlId field's value.
func (s *GetEvidenceFoldersByAssessmentControlInput) SetControlId(v string) *GetEvidenceFoldersByAssessmentControlInput {
	s.ControlId = &v
	return s
}

// SetControlSetId sets the ControlSetId field's value.
func (s *GetEvidenceFoldersByAssessmentControlInput) SetControlSetId(v string) *GetEvidenceFoldersByAssessmentControlInput {
	s.ControlSetId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetEvidenceFoldersByAssessmentControlInput) SetMaxResults(v int64) *GetEvidenceFoldersByAssessmentControlInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetEvidenceFoldersByAssessmentControlInput) SetNextToken(v string) *GetEvidenceFoldersByAssessmentControlInput {
	s.NextToken = &v
	return s
}

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

	// The list of evidence folders that the GetEvidenceFoldersByAssessmentControl
	// API returned.
	EvidenceFolders []*AssessmentEvidenceFolder `locationName:"evidenceFolders" type:"list"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

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

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

// SetEvidenceFolders sets the EvidenceFolders field's value.
func (s *GetEvidenceFoldersByAssessmentControlOutput) SetEvidenceFolders(v []*AssessmentEvidenceFolder) *GetEvidenceFoldersByAssessmentControlOutput {
	s.EvidenceFolders = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetEvidenceFoldersByAssessmentControlOutput) SetNextToken(v string) *GetEvidenceFoldersByAssessmentControlOutput {
	s.NextToken = &v
	return s
}

type GetEvidenceFoldersByAssessmentInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique identifier for the assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"uri" locationName:"assessmentId" min:"36" type:"string" required:"true"`

	// Represents the maximum number of results on a page or for an API request
	// call.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
}

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

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

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

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *GetEvidenceFoldersByAssessmentInput) SetAssessmentId(v string) *GetEvidenceFoldersByAssessmentInput {
	s.AssessmentId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetEvidenceFoldersByAssessmentInput) SetMaxResults(v int64) *GetEvidenceFoldersByAssessmentInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetEvidenceFoldersByAssessmentInput) SetNextToken(v string) *GetEvidenceFoldersByAssessmentInput {
	s.NextToken = &v
	return s
}

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

	// The list of evidence folders that the GetEvidenceFoldersByAssessment API
	// returned.
	EvidenceFolders []*AssessmentEvidenceFolder `locationName:"evidenceFolders" type:"list"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

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

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

// SetEvidenceFolders sets the EvidenceFolders field's value.
func (s *GetEvidenceFoldersByAssessmentOutput) SetEvidenceFolders(v []*AssessmentEvidenceFolder) *GetEvidenceFoldersByAssessmentOutput {
	s.EvidenceFolders = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetEvidenceFoldersByAssessmentOutput) SetNextToken(v string) *GetEvidenceFoldersByAssessmentOutput {
	s.NextToken = &v
	return s
}

type GetEvidenceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique identifier for the assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"uri" locationName:"assessmentId" min:"36" type:"string" required:"true"`

	// The unique identifier for the control set.
	//
	// ControlSetId is a required field
	ControlSetId *string `location:"uri" locationName:"controlSetId" min:"1" type:"string" required:"true"`

	// The unique identifier for the folder that the evidence is stored in.
	//
	// EvidenceFolderId is a required field
	EvidenceFolderId *string `location:"uri" locationName:"evidenceFolderId" min:"36" type:"string" required:"true"`

	// The unique identifier for the evidence.
	//
	// EvidenceId is a required field
	EvidenceId *string `location:"uri" locationName:"evidenceId" min:"36" 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 GetEvidenceInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *GetEvidenceInput) SetAssessmentId(v string) *GetEvidenceInput {
	s.AssessmentId = &v
	return s
}

// SetControlSetId sets the ControlSetId field's value.
func (s *GetEvidenceInput) SetControlSetId(v string) *GetEvidenceInput {
	s.ControlSetId = &v
	return s
}

// SetEvidenceFolderId sets the EvidenceFolderId field's value.
func (s *GetEvidenceInput) SetEvidenceFolderId(v string) *GetEvidenceInput {
	s.EvidenceFolderId = &v
	return s
}

// SetEvidenceId sets the EvidenceId field's value.
func (s *GetEvidenceInput) SetEvidenceId(v string) *GetEvidenceInput {
	s.EvidenceId = &v
	return s
}

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

	// The evidence that the GetEvidence API returned.
	Evidence *Evidence `locationName:"evidence" type:"structure"`
}

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

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

// SetEvidence sets the Evidence field's value.
func (s *GetEvidenceOutput) SetEvidence(v *Evidence) *GetEvidenceOutput {
	s.Evidence = v
	return s
}

type GetInsightsByAssessmentInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique identifier for the assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"uri" locationName:"assessmentId" min:"36" 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 GetInsightsByAssessmentInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *GetInsightsByAssessmentInput) SetAssessmentId(v string) *GetInsightsByAssessmentInput {
	s.AssessmentId = &v
	return s
}

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

	// The assessment analytics data that the GetInsightsByAssessment API returned.
	Insights *InsightsByAssessment `locationName:"insights" type:"structure"`
}

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

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

// SetInsights sets the Insights field's value.
func (s *GetInsightsByAssessmentOutput) SetInsights(v *InsightsByAssessment) *GetInsightsByAssessmentOutput {
	s.Insights = v
	return s
}

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

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

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

	// The analytics data that the GetInsights API returned.
	Insights *Insights `locationName:"insights" type:"structure"`
}

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

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

// SetInsights sets the Insights field's value.
func (s *GetInsightsOutput) SetInsights(v *Insights) *GetInsightsOutput {
	s.Insights = v
	return s
}

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

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

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

	// The identifier for the administrator account.
	AdminAccountId *string `locationName:"adminAccountId" min:"12" type:"string"`

	// The identifier for the organization.
	OrganizationId *string `locationName:"organizationId" min:"12" type:"string"`
}

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

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

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

// SetOrganizationId sets the OrganizationId field's value.
func (s *GetOrganizationAdminAccountOutput) SetOrganizationId(v string) *GetOrganizationAdminAccountOutput {
	s.OrganizationId = &v
	return s
}

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

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

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

	// The metadata that's associated with the Amazon Web Service.
	ServiceMetadata []*ServiceMetadata `locationName:"serviceMetadata" 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 GetServicesInScopeOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetServiceMetadata sets the ServiceMetadata field's value.
func (s *GetServicesInScopeOutput) SetServiceMetadata(v []*ServiceMetadata) *GetServicesInScopeOutput {
	s.ServiceMetadata = v
	return s
}

type GetSettingsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The list of setting attribute enum values.
	//
	// Attribute is a required field
	Attribute *string `location:"uri" locationName:"attribute" type:"string" required:"true" enum:"SettingAttribute"`
}

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

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

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

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

// SetAttribute sets the Attribute field's value.
func (s *GetSettingsInput) SetAttribute(v string) *GetSettingsInput {
	s.Attribute = &v
	return s
}

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

	// The settings object that holds all supported Audit Manager settings.
	Settings *Settings `locationName:"settings" type:"structure"`
}

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

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

// SetSettings sets the Settings field's value.
func (s *GetSettingsOutput) SetSettings(v *Settings) *GetSettingsOutput {
	s.Settings = v
	return s
}

// A summary of the latest analytics data for all your active assessments.
//
// This summary is a snapshot of the data that your active assessments collected
// on the lastUpdated date. It’s important to understand that the following
// totals are daily counts based on this date — they aren’t a total sum
// to date.
//
// The Insights data is eventually consistent. This means that, when you read
// data from Insights, the response might not instantly reflect the results
// of a recently completed write or update operation. If you repeat your read
// request after a few hours, the response should return the latest data.
//
// If you delete an assessment or change its status to inactive, InsightsByAssessment
// includes data for that assessment as follows.
//
//   - Inactive assessments - If Audit Manager collected evidence for your
//     assessment before you changed it inactive, that evidence is included in
//     the InsightsByAssessment counts for that day.
//
//   - Deleted assessments - If Audit Manager collected evidence for your assessment
//     before you deleted it, that evidence isn't included in the InsightsByAssessment
//     counts for that day.
type Insights struct {
	_ struct{} `type:"structure"`

	// The number of active assessments in Audit Manager.
	ActiveAssessmentsCount *int64 `locationName:"activeAssessmentsCount" type:"integer"`

	// The number of assessment controls that collected non-compliant evidence on
	// the lastUpdated date.
	AssessmentControlsCountByNoncompliantEvidence *int64 `locationName:"assessmentControlsCountByNoncompliantEvidence" type:"integer"`

	// The number of compliance check evidence that Audit Manager classified as
	// compliant on the lastUpdated date. This includes evidence that was collected
	// from Security Hub with a Pass ruling, or collected from Config with a Compliant
	// ruling.
	CompliantEvidenceCount *int64 `locationName:"compliantEvidenceCount" type:"integer"`

	// The number of evidence without a compliance check ruling. Evidence is inconclusive
	// when the associated control uses Security Hub or Config as a data source
	// but you didn't enable those services. This is also the case when a control
	// uses a data source that doesn’t support compliance checks (for example:
	// manual evidence, API calls, or CloudTrail).
	//
	// If evidence has a compliance check status of not applicable, it's classed
	// as inconclusive in Insights data.
	InconclusiveEvidenceCount *int64 `locationName:"inconclusiveEvidenceCount" type:"integer"`

	// The time when the cross-assessment insights were last updated.
	LastUpdated *time.Time `locationName:"lastUpdated" type:"timestamp"`

	// The number of compliance check evidence that Audit Manager classified as
	// non-compliant on the lastUpdated date. This includes evidence that was collected
	// from Security Hub with a Fail ruling, or collected from Config with a Non-compliant
	// ruling.
	NoncompliantEvidenceCount *int64 `locationName:"noncompliantEvidenceCount" type:"integer"`

	// The total number of controls across all active assessments.
	TotalAssessmentControlsCount *int64 `locationName:"totalAssessmentControlsCount" 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 Insights) String() string {
	return awsutil.Prettify(s)
}

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

// SetActiveAssessmentsCount sets the ActiveAssessmentsCount field's value.
func (s *Insights) SetActiveAssessmentsCount(v int64) *Insights {
	s.ActiveAssessmentsCount = &v
	return s
}

// SetAssessmentControlsCountByNoncompliantEvidence sets the AssessmentControlsCountByNoncompliantEvidence field's value.
func (s *Insights) SetAssessmentControlsCountByNoncompliantEvidence(v int64) *Insights {
	s.AssessmentControlsCountByNoncompliantEvidence = &v
	return s
}

// SetCompliantEvidenceCount sets the CompliantEvidenceCount field's value.
func (s *Insights) SetCompliantEvidenceCount(v int64) *Insights {
	s.CompliantEvidenceCount = &v
	return s
}

// SetInconclusiveEvidenceCount sets the InconclusiveEvidenceCount field's value.
func (s *Insights) SetInconclusiveEvidenceCount(v int64) *Insights {
	s.InconclusiveEvidenceCount = &v
	return s
}

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

// SetNoncompliantEvidenceCount sets the NoncompliantEvidenceCount field's value.
func (s *Insights) SetNoncompliantEvidenceCount(v int64) *Insights {
	s.NoncompliantEvidenceCount = &v
	return s
}

// SetTotalAssessmentControlsCount sets the TotalAssessmentControlsCount field's value.
func (s *Insights) SetTotalAssessmentControlsCount(v int64) *Insights {
	s.TotalAssessmentControlsCount = &v
	return s
}

// A summary of the latest analytics data for a specific active assessment.
//
// This summary is a snapshot of the data that was collected on the lastUpdated
// date. It’s important to understand that the totals in InsightsByAssessment
// are daily counts based on this date — they aren’t a total sum to date.
//
// The InsightsByAssessment data is eventually consistent. This means that when
// you read data from InsightsByAssessment, the response might not instantly
// reflect the results of a recently completed write or update operation. If
// you repeat your read request after a few hours, the response returns the
// latest data.
//
// If you delete an assessment or change its status to inactive, InsightsByAssessment
// includes data for that assessment as follows.
//
//   - Inactive assessments - If Audit Manager collected evidence for your
//     assessment before you changed it inactive, that evidence is included in
//     the InsightsByAssessment counts for that day.
//
//   - Deleted assessments - If Audit Manager collected evidence for your assessment
//     before you deleted it, that evidence isn't included in the InsightsByAssessment
//     counts for that day.
type InsightsByAssessment struct {
	_ struct{} `type:"structure"`

	// The number of assessment controls that collected non-compliant evidence on
	// the lastUpdated date.
	AssessmentControlsCountByNoncompliantEvidence *int64 `locationName:"assessmentControlsCountByNoncompliantEvidence" type:"integer"`

	// The number of compliance check evidence that Audit Manager classified as
	// compliant. This includes evidence that was collected from Security Hub with
	// a Pass ruling, or collected from Config with a Compliant ruling.
	CompliantEvidenceCount *int64 `locationName:"compliantEvidenceCount" type:"integer"`

	// The amount of evidence without a compliance check ruling. Evidence is inconclusive
	// if the associated control uses Security Hub or Config as a data source and
	// you didn't enable those services. This is also the case if a control uses
	// a data source that doesn’t support compliance checks (for example, manual
	// evidence, API calls, or CloudTrail).
	//
	// If evidence has a compliance check status of not applicable, it's classified
	// as inconclusive in InsightsByAssessment data.
	InconclusiveEvidenceCount *int64 `locationName:"inconclusiveEvidenceCount" type:"integer"`

	// The time when the assessment insights were last updated.
	LastUpdated *time.Time `locationName:"lastUpdated" type:"timestamp"`

	// The number of compliance check evidence that Audit Manager classified as
	// non-compliant. This includes evidence that was collected from Security Hub
	// with a Fail ruling, or collected from Config with a Non-compliant ruling.
	NoncompliantEvidenceCount *int64 `locationName:"noncompliantEvidenceCount" type:"integer"`

	// The total number of controls in the assessment.
	TotalAssessmentControlsCount *int64 `locationName:"totalAssessmentControlsCount" 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 InsightsByAssessment) String() string {
	return awsutil.Prettify(s)
}

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

// SetAssessmentControlsCountByNoncompliantEvidence sets the AssessmentControlsCountByNoncompliantEvidence field's value.
func (s *InsightsByAssessment) SetAssessmentControlsCountByNoncompliantEvidence(v int64) *InsightsByAssessment {
	s.AssessmentControlsCountByNoncompliantEvidence = &v
	return s
}

// SetCompliantEvidenceCount sets the CompliantEvidenceCount field's value.
func (s *InsightsByAssessment) SetCompliantEvidenceCount(v int64) *InsightsByAssessment {
	s.CompliantEvidenceCount = &v
	return s
}

// SetInconclusiveEvidenceCount sets the InconclusiveEvidenceCount field's value.
func (s *InsightsByAssessment) SetInconclusiveEvidenceCount(v int64) *InsightsByAssessment {
	s.InconclusiveEvidenceCount = &v
	return s
}

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

// SetNoncompliantEvidenceCount sets the NoncompliantEvidenceCount field's value.
func (s *InsightsByAssessment) SetNoncompliantEvidenceCount(v int64) *InsightsByAssessment {
	s.NoncompliantEvidenceCount = &v
	return s
}

// SetTotalAssessmentControlsCount sets the TotalAssessmentControlsCount field's value.
func (s *InsightsByAssessment) SetTotalAssessmentControlsCount(v int64) *InsightsByAssessment {
	s.TotalAssessmentControlsCount = &v
	return s
}

// An internal service error occurred during the processing of your request.
// Try again later.
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
}

type ListAssessmentControlInsightsByControlDomainInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique identifier for the active assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"querystring" locationName:"assessmentId" min:"36" type:"string" required:"true"`

	// The unique identifier for the control domain.
	//
	// ControlDomainId is a required field
	ControlDomainId *string `location:"querystring" locationName:"controlDomainId" min:"36" type:"string" required:"true"`

	// Represents the maximum number of results on a page or for an API request
	// call.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
}

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

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

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

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *ListAssessmentControlInsightsByControlDomainInput) SetAssessmentId(v string) *ListAssessmentControlInsightsByControlDomainInput {
	s.AssessmentId = &v
	return s
}

// SetControlDomainId sets the ControlDomainId field's value.
func (s *ListAssessmentControlInsightsByControlDomainInput) SetControlDomainId(v string) *ListAssessmentControlInsightsByControlDomainInput {
	s.ControlDomainId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListAssessmentControlInsightsByControlDomainInput) SetMaxResults(v int64) *ListAssessmentControlInsightsByControlDomainInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAssessmentControlInsightsByControlDomainInput) SetNextToken(v string) *ListAssessmentControlInsightsByControlDomainInput {
	s.NextToken = &v
	return s
}

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

	// The assessment control analytics data that the ListAssessmentControlInsightsByControlDomain
	// API returned.
	ControlInsightsByAssessment []*ControlInsightsMetadataByAssessmentItem `locationName:"controlInsightsByAssessment" type:"list"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

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

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

// SetControlInsightsByAssessment sets the ControlInsightsByAssessment field's value.
func (s *ListAssessmentControlInsightsByControlDomainOutput) SetControlInsightsByAssessment(v []*ControlInsightsMetadataByAssessmentItem) *ListAssessmentControlInsightsByControlDomainOutput {
	s.ControlInsightsByAssessment = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAssessmentControlInsightsByControlDomainOutput) SetNextToken(v string) *ListAssessmentControlInsightsByControlDomainOutput {
	s.NextToken = &v
	return s
}

type ListAssessmentFrameworkShareRequestsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// Represents the maximum number of results on a page or for an API request
	// call.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`

	// Specifies whether the share request is a sent request or a received request.
	//
	// RequestType is a required field
	RequestType *string `location:"querystring" locationName:"requestType" type:"string" required:"true" enum:"ShareRequestType"`
}

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

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

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

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

// SetMaxResults sets the MaxResults field's value.
func (s *ListAssessmentFrameworkShareRequestsInput) SetMaxResults(v int64) *ListAssessmentFrameworkShareRequestsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAssessmentFrameworkShareRequestsInput) SetNextToken(v string) *ListAssessmentFrameworkShareRequestsInput {
	s.NextToken = &v
	return s
}

// SetRequestType sets the RequestType field's value.
func (s *ListAssessmentFrameworkShareRequestsInput) SetRequestType(v string) *ListAssessmentFrameworkShareRequestsInput {
	s.RequestType = &v
	return s
}

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

	// The list of share requests that the ListAssessmentFrameworkShareRequests
	// API returned.
	AssessmentFrameworkShareRequests []*AssessmentFrameworkShareRequest `locationName:"assessmentFrameworkShareRequests" type:"list"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

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

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

// SetAssessmentFrameworkShareRequests sets the AssessmentFrameworkShareRequests field's value.
func (s *ListAssessmentFrameworkShareRequestsOutput) SetAssessmentFrameworkShareRequests(v []*AssessmentFrameworkShareRequest) *ListAssessmentFrameworkShareRequestsOutput {
	s.AssessmentFrameworkShareRequests = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAssessmentFrameworkShareRequestsOutput) SetNextToken(v string) *ListAssessmentFrameworkShareRequestsOutput {
	s.NextToken = &v
	return s
}

type ListAssessmentFrameworksInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The type of framework, such as a standard framework or a custom framework.
	//
	// FrameworkType is a required field
	FrameworkType *string `location:"querystring" locationName:"frameworkType" type:"string" required:"true" enum:"FrameworkType"`

	// Represents the maximum number of results on a page or for an API request
	// call.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
}

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

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

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

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

// SetFrameworkType sets the FrameworkType field's value.
func (s *ListAssessmentFrameworksInput) SetFrameworkType(v string) *ListAssessmentFrameworksInput {
	s.FrameworkType = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListAssessmentFrameworksInput) SetMaxResults(v int64) *ListAssessmentFrameworksInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAssessmentFrameworksInput) SetNextToken(v string) *ListAssessmentFrameworksInput {
	s.NextToken = &v
	return s
}

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

	// A list of metadata that the ListAssessmentFrameworks API returns for each
	// framework.
	FrameworkMetadataList []*AssessmentFrameworkMetadata `locationName:"frameworkMetadataList" type:"list"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

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

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

// SetFrameworkMetadataList sets the FrameworkMetadataList field's value.
func (s *ListAssessmentFrameworksOutput) SetFrameworkMetadataList(v []*AssessmentFrameworkMetadata) *ListAssessmentFrameworksOutput {
	s.FrameworkMetadataList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAssessmentFrameworksOutput) SetNextToken(v string) *ListAssessmentFrameworksOutput {
	s.NextToken = &v
	return s
}

type ListAssessmentReportsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// Represents the maximum number of results on a page or for an API request
	// call.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
}

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

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

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

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

// SetMaxResults sets the MaxResults field's value.
func (s *ListAssessmentReportsInput) SetMaxResults(v int64) *ListAssessmentReportsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAssessmentReportsInput) SetNextToken(v string) *ListAssessmentReportsInput {
	s.NextToken = &v
	return s
}

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

	// The list of assessment reports that the ListAssessmentReports API returned.
	AssessmentReports []*AssessmentReportMetadata `locationName:"assessmentReports" type:"list"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

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

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

// SetAssessmentReports sets the AssessmentReports field's value.
func (s *ListAssessmentReportsOutput) SetAssessmentReports(v []*AssessmentReportMetadata) *ListAssessmentReportsOutput {
	s.AssessmentReports = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAssessmentReportsOutput) SetNextToken(v string) *ListAssessmentReportsOutput {
	s.NextToken = &v
	return s
}

type ListAssessmentsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// Represents the maximum number of results on a page or for an API request
	// call.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`

	// The current status of the assessment.
	Status *string `location:"querystring" locationName:"status" type:"string" enum:"AssessmentStatus"`
}

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

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

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

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

// SetMaxResults sets the MaxResults field's value.
func (s *ListAssessmentsInput) SetMaxResults(v int64) *ListAssessmentsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAssessmentsInput) SetNextToken(v string) *ListAssessmentsInput {
	s.NextToken = &v
	return s
}

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

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

	// The metadata that the ListAssessments API returns for each assessment.
	AssessmentMetadata []*AssessmentMetadataItem `locationName:"assessmentMetadata" type:"list"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

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

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

// SetAssessmentMetadata sets the AssessmentMetadata field's value.
func (s *ListAssessmentsOutput) SetAssessmentMetadata(v []*AssessmentMetadataItem) *ListAssessmentsOutput {
	s.AssessmentMetadata = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAssessmentsOutput) SetNextToken(v string) *ListAssessmentsOutput {
	s.NextToken = &v
	return s
}

type ListControlDomainInsightsByAssessmentInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique identifier for the active assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"querystring" locationName:"assessmentId" min:"36" type:"string" required:"true"`

	// Represents the maximum number of results on a page or for an API request
	// call.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
}

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

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

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

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *ListControlDomainInsightsByAssessmentInput) SetAssessmentId(v string) *ListControlDomainInsightsByAssessmentInput {
	s.AssessmentId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListControlDomainInsightsByAssessmentInput) SetMaxResults(v int64) *ListControlDomainInsightsByAssessmentInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListControlDomainInsightsByAssessmentInput) SetNextToken(v string) *ListControlDomainInsightsByAssessmentInput {
	s.NextToken = &v
	return s
}

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

	// The control domain analytics data that the ListControlDomainInsightsByAssessment
	// API returned.
	ControlDomainInsights []*ControlDomainInsights `locationName:"controlDomainInsights" type:"list"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

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

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

// SetControlDomainInsights sets the ControlDomainInsights field's value.
func (s *ListControlDomainInsightsByAssessmentOutput) SetControlDomainInsights(v []*ControlDomainInsights) *ListControlDomainInsightsByAssessmentOutput {
	s.ControlDomainInsights = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListControlDomainInsightsByAssessmentOutput) SetNextToken(v string) *ListControlDomainInsightsByAssessmentOutput {
	s.NextToken = &v
	return s
}

type ListControlDomainInsightsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// Represents the maximum number of results on a page or for an API request
	// call.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
}

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

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

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

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

// SetMaxResults sets the MaxResults field's value.
func (s *ListControlDomainInsightsInput) SetMaxResults(v int64) *ListControlDomainInsightsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListControlDomainInsightsInput) SetNextToken(v string) *ListControlDomainInsightsInput {
	s.NextToken = &v
	return s
}

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

	// The control domain analytics data that the ListControlDomainInsights API
	// returned.
	ControlDomainInsights []*ControlDomainInsights `locationName:"controlDomainInsights" type:"list"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

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

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

// SetControlDomainInsights sets the ControlDomainInsights field's value.
func (s *ListControlDomainInsightsOutput) SetControlDomainInsights(v []*ControlDomainInsights) *ListControlDomainInsightsOutput {
	s.ControlDomainInsights = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListControlDomainInsightsOutput) SetNextToken(v string) *ListControlDomainInsightsOutput {
	s.NextToken = &v
	return s
}

type ListControlInsightsByControlDomainInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique identifier for the control domain.
	//
	// ControlDomainId is a required field
	ControlDomainId *string `location:"querystring" locationName:"controlDomainId" min:"36" type:"string" required:"true"`

	// Represents the maximum number of results on a page or for an API request
	// call.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
}

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

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

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

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

// SetControlDomainId sets the ControlDomainId field's value.
func (s *ListControlInsightsByControlDomainInput) SetControlDomainId(v string) *ListControlInsightsByControlDomainInput {
	s.ControlDomainId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListControlInsightsByControlDomainInput) SetMaxResults(v int64) *ListControlInsightsByControlDomainInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListControlInsightsByControlDomainInput) SetNextToken(v string) *ListControlInsightsByControlDomainInput {
	s.NextToken = &v
	return s
}

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

	// The control analytics data that the ListControlInsightsByControlDomain API
	// returned.
	ControlInsightsMetadata []*ControlInsightsMetadataItem `locationName:"controlInsightsMetadata" type:"list"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

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

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

// SetControlInsightsMetadata sets the ControlInsightsMetadata field's value.
func (s *ListControlInsightsByControlDomainOutput) SetControlInsightsMetadata(v []*ControlInsightsMetadataItem) *ListControlInsightsByControlDomainOutput {
	s.ControlInsightsMetadata = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListControlInsightsByControlDomainOutput) SetNextToken(v string) *ListControlInsightsByControlDomainOutput {
	s.NextToken = &v
	return s
}

type ListControlsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The type of control, such as a standard control or a custom control.
	//
	// ControlType is a required field
	ControlType *string `location:"querystring" locationName:"controlType" type:"string" required:"true" enum:"ControlType"`

	// Represents the maximum number of results on a page or for an API request
	// call.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
}

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

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

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

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

// SetControlType sets the ControlType field's value.
func (s *ListControlsInput) SetControlType(v string) *ListControlsInput {
	s.ControlType = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListControlsInput) SetMaxResults(v int64) *ListControlsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListControlsInput) SetNextToken(v string) *ListControlsInput {
	s.NextToken = &v
	return s
}

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

	// A list of metadata that the ListControls API returns for each control.
	ControlMetadataList []*ControlMetadata `locationName:"controlMetadataList" type:"list"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

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

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

// SetControlMetadataList sets the ControlMetadataList field's value.
func (s *ListControlsOutput) SetControlMetadataList(v []*ControlMetadata) *ListControlsOutput {
	s.ControlMetadataList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListControlsOutput) SetNextToken(v string) *ListControlsOutput {
	s.NextToken = &v
	return s
}

type ListKeywordsForDataSourceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// Represents the maximum number of results on a page or for an API request
	// call.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`

	// The control mapping data source that the keywords apply to.
	//
	// Source is a required field
	Source *string `location:"querystring" locationName:"source" type:"string" required:"true" enum:"SourceType"`
}

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

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

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

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

// SetMaxResults sets the MaxResults field's value.
func (s *ListKeywordsForDataSourceInput) SetMaxResults(v int64) *ListKeywordsForDataSourceInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListKeywordsForDataSourceInput) SetNextToken(v string) *ListKeywordsForDataSourceInput {
	s.NextToken = &v
	return s
}

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

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

	// The list of keywords for the event mapping source.
	Keywords []*string `locationName:"keywords" type:"list"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

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

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

// SetKeywords sets the Keywords field's value.
func (s *ListKeywordsForDataSourceOutput) SetKeywords(v []*string) *ListKeywordsForDataSourceOutput {
	s.Keywords = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListKeywordsForDataSourceOutput) SetNextToken(v string) *ListKeywordsForDataSourceOutput {
	s.NextToken = &v
	return s
}

type ListNotificationsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// Represents the maximum number of results on a page or for an API request
	// call.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
}

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

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

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

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

// SetMaxResults sets the MaxResults field's value.
func (s *ListNotificationsInput) SetMaxResults(v int64) *ListNotificationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListNotificationsInput) SetNextToken(v string) *ListNotificationsInput {
	s.NextToken = &v
	return s
}

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

	// The pagination token that's used to fetch the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The returned list of notifications.
	Notifications []*Notification `locationName:"notifications" 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 ListNotificationsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetNextToken sets the NextToken field's value.
func (s *ListNotificationsOutput) SetNextToken(v string) *ListNotificationsOutput {
	s.NextToken = &v
	return s
}

// SetNotifications sets the Notifications field's value.
func (s *ListNotificationsOutput) SetNotifications(v []*Notification) *ListNotificationsOutput {
	s.Notifications = v
	return s
}

type ListTagsForResourceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the resource.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" min:"20" 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) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 20))
	}

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

// SetResourceArn sets the ResourceArn field's value.
func (s *ListTagsForResourceInput) SetResourceArn(v string) *ListTagsForResourceInput {
	s.ResourceArn = &v
	return s
}

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

	// The list of tags that the ListTagsForResource API returned.
	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
}

// Evidence that's manually added to a control in Audit Manager. manualEvidence
// can be one of the following: evidenceFileName, s3ResourcePath, or textResponse.
type ManualEvidence struct {
	_ struct{} `type:"structure"`

	// The name of the file that's uploaded as manual evidence. This name is populated
	// using the evidenceFileName value from the GetEvidenceFileUploadUrl (https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_GetEvidenceFileUploadUrl.html)
	// API response.
	//
	// EvidenceFileName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ManualEvidence's
	// String and GoString methods.
	EvidenceFileName *string `locationName:"evidenceFileName" min:"1" type:"string" sensitive:"true"`

	// The S3 URL of the object that's imported as manual evidence.
	S3ResourcePath *string `locationName:"s3ResourcePath" min:"1" type:"string"`

	// The plain text response that's entered and saved as manual evidence.
	//
	// TextResponse is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ManualEvidence's
	// String and GoString methods.
	TextResponse *string `locationName:"textResponse" min:"1" type:"string" sensitive:"true"`
}

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

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

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

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

// SetEvidenceFileName sets the EvidenceFileName field's value.
func (s *ManualEvidence) SetEvidenceFileName(v string) *ManualEvidence {
	s.EvidenceFileName = &v
	return s
}

// SetS3ResourcePath sets the S3ResourcePath field's value.
func (s *ManualEvidence) SetS3ResourcePath(v string) *ManualEvidence {
	s.S3ResourcePath = &v
	return s
}

// SetTextResponse sets the TextResponse field's value.
func (s *ManualEvidence) SetTextResponse(v string) *ManualEvidence {
	s.TextResponse = &v
	return s
}

// The notification that informs a user of an update in Audit Manager. For example,
// this includes the notification that's sent when a control set is delegated
// for review.
type Notification struct {
	_ struct{} `type:"structure"`

	// The identifier for the assessment.
	AssessmentId *string `locationName:"assessmentId" min:"36" type:"string"`

	// The name of the related assessment.
	//
	// AssessmentName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Notification's
	// String and GoString methods.
	AssessmentName *string `locationName:"assessmentName" min:"1" type:"string" sensitive:"true"`

	// The identifier for the control set.
	ControlSetId *string `locationName:"controlSetId" min:"1" type:"string"`

	// Specifies the name of the control set that the notification is about.
	ControlSetName *string `locationName:"controlSetName" min:"1" type:"string"`

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

	// The time when the notification was sent.
	EventTime *time.Time `locationName:"eventTime" type:"timestamp"`

	// The unique identifier for the notification.
	Id *string `locationName:"id" min:"47" type:"string"`

	// The sender of the notification.
	Source *string `locationName:"source" 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 Notification) String() string {
	return awsutil.Prettify(s)
}

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

// SetAssessmentId sets the AssessmentId field's value.
func (s *Notification) SetAssessmentId(v string) *Notification {
	s.AssessmentId = &v
	return s
}

// SetAssessmentName sets the AssessmentName field's value.
func (s *Notification) SetAssessmentName(v string) *Notification {
	s.AssessmentName = &v
	return s
}

// SetControlSetId sets the ControlSetId field's value.
func (s *Notification) SetControlSetId(v string) *Notification {
	s.ControlSetId = &v
	return s
}

// SetControlSetName sets the ControlSetName field's value.
func (s *Notification) SetControlSetName(v string) *Notification {
	s.ControlSetName = &v
	return s
}

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

// SetEventTime sets the EventTime field's value.
func (s *Notification) SetEventTime(v time.Time) *Notification {
	s.EventTime = &v
	return s
}

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

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

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

	// The delegated administrator account for Audit Manager.
	DelegatedAdminAccount *string `locationName:"delegatedAdminAccount" min:"12" type:"string"`

	// The KMS key details.
	KmsKey *string `locationName:"kmsKey" min:"7" type:"string"`
}

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

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

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

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

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

// SetKmsKey sets the KmsKey field's value.
func (s *RegisterAccountInput) SetKmsKey(v string) *RegisterAccountInput {
	s.KmsKey = &v
	return s
}

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

	// The status of the account registration request.
	Status *string `locationName:"status" type:"string" enum:"AccountStatus"`
}

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

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

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

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

	// The identifier for the delegated administrator account.
	//
	// AdminAccountId is a required field
	AdminAccountId *string `locationName:"adminAccountId" min:"12" type:"string" required:"true"`
}

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

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

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

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

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

type RegisterOrganizationAdminAccountOutput struct {
	_ struct{} `type:"structure"`

	// The identifier for the delegated administrator account.
	AdminAccountId *string `locationName:"adminAccountId" min:"12" type:"string"`

	// The identifier for the organization.
	OrganizationId *string `locationName:"organizationId" min:"12" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RegisterOrganizationAdminAccountOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RegisterOrganizationAdminAccountOutput) GoString() string {
	return s.String()
}

// SetAdminAccountId sets the AdminAccountId field's value.
func (s *RegisterOrganizationAdminAccountOutput) SetAdminAccountId(v string) *RegisterOrganizationAdminAccountOutput {
	s.AdminAccountId = &v
	return s
}

// SetOrganizationId sets the OrganizationId field's value.
func (s *RegisterOrganizationAdminAccountOutput) SetOrganizationId(v string) *RegisterOrganizationAdminAccountOutput {
	s.OrganizationId = &v
	return s
}

// A system asset that's evaluated in an Audit Manager assessment.
type Resource struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the resource.
	Arn *string `locationName:"arn" min:"20" type:"string"`

	// The evaluation status for a resource that was assessed when collecting compliance
	// check evidence.
	//
	//    * Audit Manager classes the resource as non-compliant if Security Hub
	//    reports a Fail result, or if Config reports a Non-compliant result.
	//
	//    * Audit Manager classes the resource as compliant if Security Hub reports
	//    a Pass result, or if Config reports a Compliant result.
	//
	//    * If a compliance check isn't available or applicable, then no compliance
	//    evaluation can be made for that resource. This is the case if a resource
	//    assessment uses Config or Security Hub as the underlying data source type,
	//    but those services aren't enabled. This is also the case if the resource
	//    assessment uses an underlying data source type that doesn't support compliance
	//    checks (such as manual evidence, Amazon Web Services API calls, or CloudTrail).
	ComplianceCheck *string `locationName:"complianceCheck" type:"string"`

	// The value of the resource.
	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 Resource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Resource) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *Resource) SetArn(v string) *Resource {
	s.Arn = &v
	return s
}

// SetComplianceCheck sets the ComplianceCheck field's value.
func (s *Resource) SetComplianceCheck(v string) *Resource {
	s.ComplianceCheck = &v
	return s
}

// SetValue sets the Value field's value.
func (s *Resource) SetValue(v string) *Resource {
	s.Value = &v
	return s
}

// The resource that's specified in the request can't be found.
type ResourceNotFoundException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`

	// The unique identifier for the resource.
	//
	// ResourceId is a required field
	ResourceId *string `locationName:"resourceId" type:"string" required:"true"`

	// The type of resource that's affected by the error.
	//
	// ResourceType is a required field
	ResourceType *string `locationName:"resourceType" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceNotFoundException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceNotFoundException) GoString() string {
	return s.String()
}

func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {
	return &ResourceNotFoundException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ResourceNotFoundException) Code() string {
	return "ResourceNotFoundException"
}

// Message returns the exception's message.
func (s *ResourceNotFoundException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ResourceNotFoundException) OrigErr() error {
	return nil
}

func (s *ResourceNotFoundException) Error() string {
	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ResourceNotFoundException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ResourceNotFoundException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The wrapper that contains the Audit Manager role information of the current
// user. This includes the role type and IAM Amazon Resource Name (ARN).
type Role struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the IAM role.
	//
	// RoleArn is a required field
	RoleArn *string `locationName:"roleArn" min:"20" type:"string" required:"true"`

	// The type of customer persona.
	//
	// In CreateAssessment, roleType can only be PROCESS_OWNER.
	//
	// In UpdateSettings, roleType can only be PROCESS_OWNER.
	//
	// In BatchCreateDelegationByAssessment, roleType can only be RESOURCE_OWNER.
	//
	// RoleType is a required field
	RoleType *string `locationName:"roleType" type:"string" required:"true" enum:"RoleType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Role) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Role) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Role) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Role"}
	if s.RoleArn == nil {
		invalidParams.Add(request.NewErrParamRequired("RoleArn"))
	}
	if s.RoleArn != nil && len(*s.RoleArn) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("RoleArn", 20))
	}
	if s.RoleType == nil {
		invalidParams.Add(request.NewErrParamRequired("RoleType"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRoleArn sets the RoleArn field's value.
func (s *Role) SetRoleArn(v string) *Role {
	s.RoleArn = &v
	return s
}

// SetRoleType sets the RoleType field's value.
func (s *Role) SetRoleType(v string) *Role {
	s.RoleType = &v
	return s
}

// The wrapper that contains the Amazon Web Services accounts and services that
// are in scope for the assessment.
type Scope struct {
	_ struct{} `type:"structure" sensitive:"true"`

	// The Amazon Web Services accounts that are included in the scope of the assessment.
	//
	// AwsAccounts is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Scope's
	// String and GoString methods.
	AwsAccounts []*AWSAccount `locationName:"awsAccounts" min:"1" type:"list" sensitive:"true"`

	// The Amazon Web Services services that are included in the scope of the assessment.
	AwsServices []*AWSService `locationName:"awsServices" 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 Scope) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Scope) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Scope) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Scope"}
	if s.AwsAccounts != nil && len(s.AwsAccounts) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccounts", 1))
	}
	if s.AwsAccounts != nil {
		for i, v := range s.AwsAccounts {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AwsAccounts", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.AwsServices != nil {
		for i, v := range s.AwsServices {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AwsServices", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccounts sets the AwsAccounts field's value.
func (s *Scope) SetAwsAccounts(v []*AWSAccount) *Scope {
	s.AwsAccounts = v
	return s
}

// SetAwsServices sets the AwsServices field's value.
func (s *Scope) SetAwsServices(v []*AWSService) *Scope {
	s.AwsServices = v
	return s
}

// The metadata that's associated with the Amazon Web Service.
type ServiceMetadata struct {
	_ struct{} `type:"structure"`

	// The category that the Amazon Web Service belongs to, such as compute, storage,
	// or database.
	Category *string `locationName:"category" min:"1" type:"string"`

	// The description of the Amazon Web Service.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The display name of the Amazon Web Service.
	DisplayName *string `locationName:"displayName" min:"1" type:"string"`

	// The name of the Amazon Web Service.
	Name *string `locationName:"name" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ServiceMetadata) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ServiceMetadata) GoString() string {
	return s.String()
}

// SetCategory sets the Category field's value.
func (s *ServiceMetadata) SetCategory(v string) *ServiceMetadata {
	s.Category = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *ServiceMetadata) SetDescription(v string) *ServiceMetadata {
	s.Description = &v
	return s
}

// SetDisplayName sets the DisplayName field's value.
func (s *ServiceMetadata) SetDisplayName(v string) *ServiceMetadata {
	s.DisplayName = &v
	return s
}

// SetName sets the Name field's value.
func (s *ServiceMetadata) SetName(v string) *ServiceMetadata {
	s.Name = &v
	return s
}

// You've reached your account quota for this resource type. To perform the
// requested action, delete some existing resources or request a quota increase
// (https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) from
// the Service Quotas console. For a list of Audit Manager service quotas, see
// Quotas and restrictions for Audit Manager (https://docs.aws.amazon.com/audit-manager/latest/userguide/service-quotas.html).
type ServiceQuotaExceededException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ServiceQuotaExceededException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ServiceQuotaExceededException) GoString() string {
	return s.String()
}

func newErrorServiceQuotaExceededException(v protocol.ResponseMetadata) error {
	return &ServiceQuotaExceededException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ServiceQuotaExceededException) Code() string {
	return "ServiceQuotaExceededException"
}

// Message returns the exception's message.
func (s *ServiceQuotaExceededException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ServiceQuotaExceededException) OrigErr() error {
	return nil
}

func (s *ServiceQuotaExceededException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ServiceQuotaExceededException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ServiceQuotaExceededException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The settings object that holds all supported Audit Manager settings.
type Settings struct {
	_ struct{} `type:"structure"`

	// The default S3 destination bucket for storing assessment reports.
	//
	// DefaultAssessmentReportsDestination is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Settings's
	// String and GoString methods.
	DefaultAssessmentReportsDestination *AssessmentReportsDestination `locationName:"defaultAssessmentReportsDestination" type:"structure" sensitive:"true"`

	// The default S3 destination bucket for storing evidence finder exports.
	DefaultExportDestination *DefaultExportDestination `locationName:"defaultExportDestination" type:"structure"`

	// The designated default audit owners.
	//
	// DefaultProcessOwners is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Settings's
	// String and GoString methods.
	DefaultProcessOwners []*Role `locationName:"defaultProcessOwners" type:"list" sensitive:"true"`

	// The deregistration policy for your Audit Manager data. You can use this attribute
	// to determine how your data is handled when you deregister Audit Manager.
	DeregistrationPolicy *DeregistrationPolicy `locationName:"deregistrationPolicy" type:"structure"`

	// The current evidence finder status and event data store details.
	EvidenceFinderEnablement *EvidenceFinderEnablement `locationName:"evidenceFinderEnablement" type:"structure"`

	// Specifies whether Organizations is enabled.
	IsAwsOrgEnabled *bool `locationName:"isAwsOrgEnabled" type:"boolean"`

	// The KMS key details.
	KmsKey *string `locationName:"kmsKey" min:"7" type:"string"`

	// The designated Amazon Simple Notification Service (Amazon SNS) topic.
	//
	// SnsTopic is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Settings's
	// String and GoString methods.
	SnsTopic *string `locationName:"snsTopic" min:"1" type:"string" sensitive:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Settings) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Settings) GoString() string {
	return s.String()
}

// SetDefaultAssessmentReportsDestination sets the DefaultAssessmentReportsDestination field's value.
func (s *Settings) SetDefaultAssessmentReportsDestination(v *AssessmentReportsDestination) *Settings {
	s.DefaultAssessmentReportsDestination = v
	return s
}

// SetDefaultExportDestination sets the DefaultExportDestination field's value.
func (s *Settings) SetDefaultExportDestination(v *DefaultExportDestination) *Settings {
	s.DefaultExportDestination = v
	return s
}

// SetDefaultProcessOwners sets the DefaultProcessOwners field's value.
func (s *Settings) SetDefaultProcessOwners(v []*Role) *Settings {
	s.DefaultProcessOwners = v
	return s
}

// SetDeregistrationPolicy sets the DeregistrationPolicy field's value.
func (s *Settings) SetDeregistrationPolicy(v *DeregistrationPolicy) *Settings {
	s.DeregistrationPolicy = v
	return s
}

// SetEvidenceFinderEnablement sets the EvidenceFinderEnablement field's value.
func (s *Settings) SetEvidenceFinderEnablement(v *EvidenceFinderEnablement) *Settings {
	s.EvidenceFinderEnablement = v
	return s
}

// SetIsAwsOrgEnabled sets the IsAwsOrgEnabled field's value.
func (s *Settings) SetIsAwsOrgEnabled(v bool) *Settings {
	s.IsAwsOrgEnabled = &v
	return s
}

// SetKmsKey sets the KmsKey field's value.
func (s *Settings) SetKmsKey(v string) *Settings {
	s.KmsKey = &v
	return s
}

// SetSnsTopic sets the SnsTopic field's value.
func (s *Settings) SetSnsTopic(v string) *Settings {
	s.SnsTopic = &v
	return s
}

// A keyword that relates to the control data source.
//
// For manual evidence, this keyword indicates if the manual evidence is a file
// or text.
//
// For automated evidence, this keyword identifies a specific CloudTrail event,
// Config rule, Security Hub control, or Amazon Web Services API name.
//
// To learn more about the supported keywords that you can use when mapping
// a control data source, see the following pages in the Audit Manager User
// Guide:
//
//   - Config rules supported by Audit Manager (https://docs.aws.amazon.com/audit-manager/latest/userguide/control-data-sources-config.html)
//
//   - Security Hub controls supported by Audit Manager (https://docs.aws.amazon.com/audit-manager/latest/userguide/control-data-sources-ash.html)
//
//   - API calls supported by Audit Manager (https://docs.aws.amazon.com/audit-manager/latest/userguide/control-data-sources-api.html)
//
//   - CloudTrail event names supported by Audit Manager (https://docs.aws.amazon.com/audit-manager/latest/userguide/control-data-sources-cloudtrail.html)
type SourceKeyword struct {
	_ struct{} `type:"structure"`

	// The input method for the keyword.
	//
	//    * SELECT_FROM_LIST is used when mapping a data source for automated evidence.
	//    When keywordInputType is SELECT_FROM_LIST, a keyword must be selected
	//    to collect automated evidence. For example, this keyword can be a CloudTrail
	//    event name, a rule name for Config, a Security Hub control, or the name
	//    of an Amazon Web Services API call.
	//
	//    * UPLOAD_FILE and INPUT_TEXT are only used when mapping a data source
	//    for manual evidence. When keywordInputType is UPLOAD_FILE, a file must
	//    be uploaded as manual evidence. When keywordInputType is INPUT_TEXT, text
	//    must be entered as manual evidence.
	KeywordInputType *string `locationName:"keywordInputType" type:"string" enum:"KeywordInputType"`

	// The value of the keyword that's used when mapping a control data source.
	// For example, this can be a CloudTrail event name, a rule name for Config,
	// a Security Hub control, or the name of an Amazon Web Services API call.
	//
	// If you’re mapping a data source to a rule in Config, the keywordValue that
	// you specify depends on the type of rule:
	//
	//    * For managed rules (https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_use-managed-rules.html),
	//    you can use the rule identifier as the keywordValue. You can find the
	//    rule identifier from the list of Config managed rules (https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html).
	//    For some rules, the rule identifier is different from the rule name. For
	//    example, the rule name restricted-ssh has the following rule identifier:
	//    INCOMING_SSH_DISABLED. Make sure to use the rule identifier, not the rule
	//    name. Keyword example for managed rules: Managed rule name: s3-bucket-acl-prohibited
	//    (https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-acl-prohibited.html)
	//    keywordValue: S3_BUCKET_ACL_PROHIBITED
	//
	//    * For custom rules (https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_develop-rules.html),
	//    you form the keywordValue by adding the Custom_ prefix to the rule name.
	//    This prefix distinguishes the custom rule from a managed rule. Keyword
	//    example for custom rules: Custom rule name: my-custom-config-rule keywordValue:
	//    Custom_my-custom-config-rule
	//
	//    * For service-linked rules (https://docs.aws.amazon.com/config/latest/developerguide/service-linked-awsconfig-rules.html),
	//    you form the keywordValue by adding the Custom_ prefix to the rule name.
	//    In addition, you remove the suffix ID that appears at the end of the rule
	//    name. Keyword examples for service-linked rules: Service-linked rule name:
	//    CustomRuleForAccount-conformance-pack-szsm1uv0w keywordValue: Custom_CustomRuleForAccount-conformance-pack
	//    Service-linked rule name: OrgConfigRule-s3-bucket-versioning-enabled-dbgzf8ba
	//    keywordValue: Custom_OrgConfigRule-s3-bucket-versioning-enabled
	//
	// The keywordValue is case sensitive. If you enter a value incorrectly, Audit
	// Manager might not recognize the data source mapping. As a result, you might
	// not successfully collect evidence from that data source as intended.
	//
	// Keep in mind the following requirements, depending on the data source type
	// that you're using.
	//
	// For Config:
	//
	//    * For managed rules, make sure that the keywordValue is the rule identifier
	//    in ALL_CAPS_WITH_UNDERSCORES. For example, CLOUDWATCH_LOG_GROUP_ENCRYPTED.
	//    For accuracy, we recommend that you reference the list of supported Config
	//    managed rules (https://docs.aws.amazon.com/audit-manager/latest/userguide/control-data-sources-config.html).
	//
	//    * For custom rules, make sure that the keywordValue has the Custom_ prefix
	//    followed by the custom rule name. The format of the custom rule name itself
	//    may vary. For accuracy, we recommend that you visit the Config console
	//    (https://console.aws.amazon.com/config/) to verify your custom rule name.
	//
	// For Security Hub: The format varies for Security Hub control names. For accuracy,
	// we recommend that you reference the list of supported Security Hub controls
	// (https://docs.aws.amazon.com/audit-manager/latest/userguide/control-data-sources-ash.html).
	//
	// For Amazon Web Services API calls: Make sure that the keywordValue is written
	// as serviceprefix_ActionName. For example, iam_ListGroups. For accuracy, we
	// recommend that you reference the list of supported API calls (https://docs.aws.amazon.com/audit-manager/latest/userguide/control-data-sources-api.html).
	//
	// For CloudTrail: Make sure that the keywordValue is written as serviceprefix_ActionName.
	// For example, cloudtrail_StartLogging. For accuracy, we recommend that you
	// review the Amazon Web Service prefix and action names in the Service Authorization
	// Reference (https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html).
	KeywordValue *string `locationName:"keywordValue" 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 SourceKeyword) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SourceKeyword) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SourceKeyword) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SourceKeyword"}
	if s.KeywordValue != nil && len(*s.KeywordValue) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("KeywordValue", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetKeywordInputType sets the KeywordInputType field's value.
func (s *SourceKeyword) SetKeywordInputType(v string) *SourceKeyword {
	s.KeywordInputType = &v
	return s
}

// SetKeywordValue sets the KeywordValue field's value.
func (s *SourceKeyword) SetKeywordValue(v string) *SourceKeyword {
	s.KeywordValue = &v
	return s
}

type StartAssessmentFrameworkShareInput struct {
	_ struct{} `type:"structure"`

	// An optional comment from the sender about the share request.
	Comment *string `locationName:"comment" type:"string"`

	// The Amazon Web Services account of the recipient.
	//
	// DestinationAccount is a required field
	DestinationAccount *string `locationName:"destinationAccount" min:"12" type:"string" required:"true"`

	// The Amazon Web Services Region of the recipient.
	//
	// DestinationRegion is a required field
	DestinationRegion *string `locationName:"destinationRegion" type:"string" required:"true"`

	// The unique identifier for the custom framework to be shared.
	//
	// FrameworkId is a required field
	FrameworkId *string `location:"uri" locationName:"frameworkId" min:"36" 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 StartAssessmentFrameworkShareInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartAssessmentFrameworkShareInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartAssessmentFrameworkShareInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartAssessmentFrameworkShareInput"}
	if s.DestinationAccount == nil {
		invalidParams.Add(request.NewErrParamRequired("DestinationAccount"))
	}
	if s.DestinationAccount != nil && len(*s.DestinationAccount) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("DestinationAccount", 12))
	}
	if s.DestinationRegion == nil {
		invalidParams.Add(request.NewErrParamRequired("DestinationRegion"))
	}
	if s.FrameworkId == nil {
		invalidParams.Add(request.NewErrParamRequired("FrameworkId"))
	}
	if s.FrameworkId != nil && len(*s.FrameworkId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("FrameworkId", 36))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetComment sets the Comment field's value.
func (s *StartAssessmentFrameworkShareInput) SetComment(v string) *StartAssessmentFrameworkShareInput {
	s.Comment = &v
	return s
}

// SetDestinationAccount sets the DestinationAccount field's value.
func (s *StartAssessmentFrameworkShareInput) SetDestinationAccount(v string) *StartAssessmentFrameworkShareInput {
	s.DestinationAccount = &v
	return s
}

// SetDestinationRegion sets the DestinationRegion field's value.
func (s *StartAssessmentFrameworkShareInput) SetDestinationRegion(v string) *StartAssessmentFrameworkShareInput {
	s.DestinationRegion = &v
	return s
}

// SetFrameworkId sets the FrameworkId field's value.
func (s *StartAssessmentFrameworkShareInput) SetFrameworkId(v string) *StartAssessmentFrameworkShareInput {
	s.FrameworkId = &v
	return s
}

type StartAssessmentFrameworkShareOutput struct {
	_ struct{} `type:"structure"`

	// The share request that's created by the StartAssessmentFrameworkShare API.
	AssessmentFrameworkShareRequest *AssessmentFrameworkShareRequest `locationName:"assessmentFrameworkShareRequest" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartAssessmentFrameworkShareOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartAssessmentFrameworkShareOutput) GoString() string {
	return s.String()
}

// SetAssessmentFrameworkShareRequest sets the AssessmentFrameworkShareRequest field's value.
func (s *StartAssessmentFrameworkShareOutput) SetAssessmentFrameworkShareRequest(v *AssessmentFrameworkShareRequest) *StartAssessmentFrameworkShareOutput {
	s.AssessmentFrameworkShareRequest = v
	return s
}

type TagResourceInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" min:"20" type:"string" required:"true"`

	// The tags that are associated with the 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) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 20))
	}
	if s.Tags == nil {
		invalidParams.Add(request.NewErrParamRequired("Tags"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceArn sets the ResourceArn field's value.
func (s *TagResourceInput) SetResourceArn(v string) *TagResourceInput {
	s.ResourceArn = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *TagResourceInput) SetTags(v map[string]*string) *TagResourceInput {
	s.Tags = v
	return s
}

type TagResourceOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagResourceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagResourceOutput) GoString() string {
	return s.String()
}

// The request was denied due to request throttling.
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
}

// Short for uniform resource locator. A URL is used as a unique identifier
// to locate a resource on the internet.
type URL struct {
	_ struct{} `type:"structure"`

	// The name or word that's used as a hyperlink to the URL.
	HyperlinkName *string `locationName:"hyperlinkName" min:"1" type:"string"`

	// The unique identifier for the internet resource.
	Link *string `locationName:"link" 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 URL) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s URL) GoString() string {
	return s.String()
}

// SetHyperlinkName sets the HyperlinkName field's value.
func (s *URL) SetHyperlinkName(v string) *URL {
	s.HyperlinkName = &v
	return s
}

// SetLink sets the Link field's value.
func (s *URL) SetLink(v string) *URL {
	s.Link = &v
	return s
}

type UntagResourceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the specified resource.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" min:"20" type:"string" required:"true"`

	// The name or key of the tag.
	//
	// TagKeys is a required field
	TagKeys []*string `location:"querystring" locationName:"tagKeys" min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UntagResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}
	if s.ResourceArn != nil && len(*s.ResourceArn) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 20))
	}
	if s.TagKeys == nil {
		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
	}
	if s.TagKeys != nil && len(s.TagKeys) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TagKeys", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceArn sets the ResourceArn field's value.
func (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput {
	s.ResourceArn = &v
	return s
}

// SetTagKeys sets the TagKeys field's value.
func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput {
	s.TagKeys = v
	return s
}

type UntagResourceOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceOutput) GoString() string {
	return s.String()
}

type UpdateAssessmentControlInput struct {
	_ struct{} `type:"structure"`

	// The unique identifier for the assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"uri" locationName:"assessmentId" min:"36" type:"string" required:"true"`

	// The comment body text for the control.
	//
	// CommentBody is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateAssessmentControlInput's
	// String and GoString methods.
	CommentBody *string `locationName:"commentBody" type:"string" sensitive:"true"`

	// The unique identifier for the control.
	//
	// ControlId is a required field
	ControlId *string `location:"uri" locationName:"controlId" min:"36" type:"string" required:"true"`

	// The unique identifier for the control set.
	//
	// ControlSetId is a required field
	ControlSetId *string `location:"uri" locationName:"controlSetId" min:"1" type:"string" required:"true"`

	// The status of the control.
	ControlStatus *string `locationName:"controlStatus" type:"string" enum:"ControlStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAssessmentControlInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAssessmentControlInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateAssessmentControlInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateAssessmentControlInput"}
	if s.AssessmentId == nil {
		invalidParams.Add(request.NewErrParamRequired("AssessmentId"))
	}
	if s.AssessmentId != nil && len(*s.AssessmentId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("AssessmentId", 36))
	}
	if s.ControlId == nil {
		invalidParams.Add(request.NewErrParamRequired("ControlId"))
	}
	if s.ControlId != nil && len(*s.ControlId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("ControlId", 36))
	}
	if s.ControlSetId == nil {
		invalidParams.Add(request.NewErrParamRequired("ControlSetId"))
	}
	if s.ControlSetId != nil && len(*s.ControlSetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ControlSetId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssessmentId sets the AssessmentId field's value.
func (s *UpdateAssessmentControlInput) SetAssessmentId(v string) *UpdateAssessmentControlInput {
	s.AssessmentId = &v
	return s
}

// SetCommentBody sets the CommentBody field's value.
func (s *UpdateAssessmentControlInput) SetCommentBody(v string) *UpdateAssessmentControlInput {
	s.CommentBody = &v
	return s
}

// SetControlId sets the ControlId field's value.
func (s *UpdateAssessmentControlInput) SetControlId(v string) *UpdateAssessmentControlInput {
	s.ControlId = &v
	return s
}

// SetControlSetId sets the ControlSetId field's value.
func (s *UpdateAssessmentControlInput) SetControlSetId(v string) *UpdateAssessmentControlInput {
	s.ControlSetId = &v
	return s
}

// SetControlStatus sets the ControlStatus field's value.
func (s *UpdateAssessmentControlInput) SetControlStatus(v string) *UpdateAssessmentControlInput {
	s.ControlStatus = &v
	return s
}

type UpdateAssessmentControlOutput struct {
	_ struct{} `type:"structure"`

	// The name of the updated control set that the UpdateAssessmentControl API
	// returned.
	Control *AssessmentControl `locationName:"control" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAssessmentControlOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAssessmentControlOutput) GoString() string {
	return s.String()
}

// SetControl sets the Control field's value.
func (s *UpdateAssessmentControlOutput) SetControl(v *AssessmentControl) *UpdateAssessmentControlOutput {
	s.Control = v
	return s
}

type UpdateAssessmentControlSetStatusInput struct {
	_ struct{} `type:"structure"`

	// The unique identifier for the assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"uri" locationName:"assessmentId" min:"36" type:"string" required:"true"`

	// The comment that's related to the status update.
	//
	// Comment is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateAssessmentControlSetStatusInput's
	// String and GoString methods.
	//
	// Comment is a required field
	Comment *string `locationName:"comment" type:"string" required:"true" sensitive:"true"`

	// The unique identifier for the control set.
	//
	// ControlSetId is a required field
	ControlSetId *string `location:"uri" locationName:"controlSetId" type:"string" required:"true"`

	// The status of the control set that's being updated.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"ControlSetStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAssessmentControlSetStatusInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAssessmentControlSetStatusInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateAssessmentControlSetStatusInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateAssessmentControlSetStatusInput"}
	if s.AssessmentId == nil {
		invalidParams.Add(request.NewErrParamRequired("AssessmentId"))
	}
	if s.AssessmentId != nil && len(*s.AssessmentId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("AssessmentId", 36))
	}
	if s.Comment == nil {
		invalidParams.Add(request.NewErrParamRequired("Comment"))
	}
	if s.ControlSetId == nil {
		invalidParams.Add(request.NewErrParamRequired("ControlSetId"))
	}
	if s.ControlSetId != nil && len(*s.ControlSetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ControlSetId", 1))
	}
	if s.Status == nil {
		invalidParams.Add(request.NewErrParamRequired("Status"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssessmentId sets the AssessmentId field's value.
func (s *UpdateAssessmentControlSetStatusInput) SetAssessmentId(v string) *UpdateAssessmentControlSetStatusInput {
	s.AssessmentId = &v
	return s
}

// SetComment sets the Comment field's value.
func (s *UpdateAssessmentControlSetStatusInput) SetComment(v string) *UpdateAssessmentControlSetStatusInput {
	s.Comment = &v
	return s
}

// SetControlSetId sets the ControlSetId field's value.
func (s *UpdateAssessmentControlSetStatusInput) SetControlSetId(v string) *UpdateAssessmentControlSetStatusInput {
	s.ControlSetId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateAssessmentControlSetStatusInput) SetStatus(v string) *UpdateAssessmentControlSetStatusInput {
	s.Status = &v
	return s
}

type UpdateAssessmentControlSetStatusOutput struct {
	_ struct{} `type:"structure"`

	// The name of the updated control set that the UpdateAssessmentControlSetStatus
	// API returned.
	ControlSet *AssessmentControlSet `locationName:"controlSet" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAssessmentControlSetStatusOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAssessmentControlSetStatusOutput) GoString() string {
	return s.String()
}

// SetControlSet sets the ControlSet field's value.
func (s *UpdateAssessmentControlSetStatusOutput) SetControlSet(v *AssessmentControlSet) *UpdateAssessmentControlSetStatusOutput {
	s.ControlSet = v
	return s
}

// A controlSet entity that represents a collection of controls in Audit Manager.
// This doesn't contain the control set ID.
type UpdateAssessmentFrameworkControlSet struct {
	_ struct{} `type:"structure"`

	// The list of controls that are contained within the control set.
	//
	// Controls is a required field
	Controls []*CreateAssessmentFrameworkControl `locationName:"controls" min:"1" type:"list" required:"true"`

	// The unique identifier for the control set.
	Id *string `locationName:"id" min:"1" type:"string"`

	// The name of the control set.
	//
	// 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 UpdateAssessmentFrameworkControlSet) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAssessmentFrameworkControlSet) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateAssessmentFrameworkControlSet) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateAssessmentFrameworkControlSet"}
	if s.Controls == nil {
		invalidParams.Add(request.NewErrParamRequired("Controls"))
	}
	if s.Controls != nil && len(s.Controls) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Controls", 1))
	}
	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.Controls != nil {
		for i, v := range s.Controls {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Controls", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetControls sets the Controls field's value.
func (s *UpdateAssessmentFrameworkControlSet) SetControls(v []*CreateAssessmentFrameworkControl) *UpdateAssessmentFrameworkControlSet {
	s.Controls = v
	return s
}

// SetId sets the Id field's value.
func (s *UpdateAssessmentFrameworkControlSet) SetId(v string) *UpdateAssessmentFrameworkControlSet {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateAssessmentFrameworkControlSet) SetName(v string) *UpdateAssessmentFrameworkControlSet {
	s.Name = &v
	return s
}

type UpdateAssessmentFrameworkInput struct {
	_ struct{} `type:"structure"`

	// The compliance type that the new custom framework supports, such as CIS or
	// HIPAA.
	//
	// ComplianceType is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateAssessmentFrameworkInput's
	// String and GoString methods.
	ComplianceType *string `locationName:"complianceType" type:"string" sensitive:"true"`

	// The control sets that are associated with the framework.
	//
	// ControlSets is a required field
	ControlSets []*UpdateAssessmentFrameworkControlSet `locationName:"controlSets" min:"1" type:"list" required:"true"`

	// The description of the updated framework.
	Description *string `locationName:"description" min:"1" type:"string"`

	// The unique identifier for the framework.
	//
	// FrameworkId is a required field
	FrameworkId *string `location:"uri" locationName:"frameworkId" min:"36" type:"string" required:"true"`

	// The name of the framework to be updated.
	//
	// 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 UpdateAssessmentFrameworkInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAssessmentFrameworkInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateAssessmentFrameworkInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateAssessmentFrameworkInput"}
	if s.ControlSets == nil {
		invalidParams.Add(request.NewErrParamRequired("ControlSets"))
	}
	if s.ControlSets != nil && len(s.ControlSets) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ControlSets", 1))
	}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.FrameworkId == nil {
		invalidParams.Add(request.NewErrParamRequired("FrameworkId"))
	}
	if s.FrameworkId != nil && len(*s.FrameworkId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("FrameworkId", 36))
	}
	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.ControlSets != nil {
		for i, v := range s.ControlSets {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ControlSets", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetComplianceType sets the ComplianceType field's value.
func (s *UpdateAssessmentFrameworkInput) SetComplianceType(v string) *UpdateAssessmentFrameworkInput {
	s.ComplianceType = &v
	return s
}

// SetControlSets sets the ControlSets field's value.
func (s *UpdateAssessmentFrameworkInput) SetControlSets(v []*UpdateAssessmentFrameworkControlSet) *UpdateAssessmentFrameworkInput {
	s.ControlSets = v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateAssessmentFrameworkInput) SetDescription(v string) *UpdateAssessmentFrameworkInput {
	s.Description = &v
	return s
}

// SetFrameworkId sets the FrameworkId field's value.
func (s *UpdateAssessmentFrameworkInput) SetFrameworkId(v string) *UpdateAssessmentFrameworkInput {
	s.FrameworkId = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateAssessmentFrameworkInput) SetName(v string) *UpdateAssessmentFrameworkInput {
	s.Name = &v
	return s
}

type UpdateAssessmentFrameworkOutput struct {
	_ struct{} `type:"structure"`

	// The name of the framework.
	Framework *Framework `locationName:"framework" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAssessmentFrameworkOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAssessmentFrameworkOutput) GoString() string {
	return s.String()
}

// SetFramework sets the Framework field's value.
func (s *UpdateAssessmentFrameworkOutput) SetFramework(v *Framework) *UpdateAssessmentFrameworkOutput {
	s.Framework = v
	return s
}

type UpdateAssessmentFrameworkShareInput struct {
	_ struct{} `type:"structure"`

	// Specifies the update action for the share request.
	//
	// Action is a required field
	Action *string `locationName:"action" type:"string" required:"true" enum:"ShareRequestAction"`

	// The unique identifier for the share request.
	//
	// RequestId is a required field
	RequestId *string `location:"uri" locationName:"requestId" min:"36" type:"string" required:"true"`

	// Specifies whether the share request is a sent request or a received request.
	//
	// RequestType is a required field
	RequestType *string `locationName:"requestType" type:"string" required:"true" enum:"ShareRequestType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAssessmentFrameworkShareInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAssessmentFrameworkShareInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateAssessmentFrameworkShareInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateAssessmentFrameworkShareInput"}
	if s.Action == nil {
		invalidParams.Add(request.NewErrParamRequired("Action"))
	}
	if s.RequestId == nil {
		invalidParams.Add(request.NewErrParamRequired("RequestId"))
	}
	if s.RequestId != nil && len(*s.RequestId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("RequestId", 36))
	}
	if s.RequestType == nil {
		invalidParams.Add(request.NewErrParamRequired("RequestType"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAction sets the Action field's value.
func (s *UpdateAssessmentFrameworkShareInput) SetAction(v string) *UpdateAssessmentFrameworkShareInput {
	s.Action = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateAssessmentFrameworkShareInput) SetRequestId(v string) *UpdateAssessmentFrameworkShareInput {
	s.RequestId = &v
	return s
}

// SetRequestType sets the RequestType field's value.
func (s *UpdateAssessmentFrameworkShareInput) SetRequestType(v string) *UpdateAssessmentFrameworkShareInput {
	s.RequestType = &v
	return s
}

type UpdateAssessmentFrameworkShareOutput struct {
	_ struct{} `type:"structure"`

	// The updated share request that's returned by the UpdateAssessmentFrameworkShare
	// operation.
	AssessmentFrameworkShareRequest *AssessmentFrameworkShareRequest `locationName:"assessmentFrameworkShareRequest" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAssessmentFrameworkShareOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAssessmentFrameworkShareOutput) GoString() string {
	return s.String()
}

// SetAssessmentFrameworkShareRequest sets the AssessmentFrameworkShareRequest field's value.
func (s *UpdateAssessmentFrameworkShareOutput) SetAssessmentFrameworkShareRequest(v *AssessmentFrameworkShareRequest) *UpdateAssessmentFrameworkShareOutput {
	s.AssessmentFrameworkShareRequest = v
	return s
}

type UpdateAssessmentInput struct {
	_ struct{} `type:"structure"`

	// The description of the assessment.
	//
	// AssessmentDescription is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateAssessmentInput's
	// String and GoString methods.
	AssessmentDescription *string `locationName:"assessmentDescription" type:"string" sensitive:"true"`

	// The unique identifier for the assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"uri" locationName:"assessmentId" min:"36" type:"string" required:"true"`

	// The name of the assessment to be updated.
	//
	// AssessmentName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateAssessmentInput's
	// String and GoString methods.
	AssessmentName *string `locationName:"assessmentName" min:"1" type:"string" sensitive:"true"`

	// The assessment report storage destination for the assessment that's being
	// updated.
	//
	// AssessmentReportsDestination is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateAssessmentInput's
	// String and GoString methods.
	AssessmentReportsDestination *AssessmentReportsDestination `locationName:"assessmentReportsDestination" type:"structure" sensitive:"true"`

	// The list of roles for the assessment.
	//
	// Roles is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateAssessmentInput's
	// String and GoString methods.
	Roles []*Role `locationName:"roles" type:"list" sensitive:"true"`

	// The scope of the assessment.
	//
	// Scope is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateAssessmentInput's
	// String and GoString methods.
	//
	// Scope is a required field
	Scope *Scope `locationName:"scope" type:"structure" required:"true" sensitive:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAssessmentInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAssessmentInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateAssessmentInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateAssessmentInput"}
	if s.AssessmentId == nil {
		invalidParams.Add(request.NewErrParamRequired("AssessmentId"))
	}
	if s.AssessmentId != nil && len(*s.AssessmentId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("AssessmentId", 36))
	}
	if s.AssessmentName != nil && len(*s.AssessmentName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AssessmentName", 1))
	}
	if s.Scope == nil {
		invalidParams.Add(request.NewErrParamRequired("Scope"))
	}
	if s.AssessmentReportsDestination != nil {
		if err := s.AssessmentReportsDestination.Validate(); err != nil {
			invalidParams.AddNested("AssessmentReportsDestination", err.(request.ErrInvalidParams))
		}
	}
	if s.Roles != nil {
		for i, v := range s.Roles {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Roles", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Scope != nil {
		if err := s.Scope.Validate(); err != nil {
			invalidParams.AddNested("Scope", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssessmentDescription sets the AssessmentDescription field's value.
func (s *UpdateAssessmentInput) SetAssessmentDescription(v string) *UpdateAssessmentInput {
	s.AssessmentDescription = &v
	return s
}

// SetAssessmentId sets the AssessmentId field's value.
func (s *UpdateAssessmentInput) SetAssessmentId(v string) *UpdateAssessmentInput {
	s.AssessmentId = &v
	return s
}

// SetAssessmentName sets the AssessmentName field's value.
func (s *UpdateAssessmentInput) SetAssessmentName(v string) *UpdateAssessmentInput {
	s.AssessmentName = &v
	return s
}

// SetAssessmentReportsDestination sets the AssessmentReportsDestination field's value.
func (s *UpdateAssessmentInput) SetAssessmentReportsDestination(v *AssessmentReportsDestination) *UpdateAssessmentInput {
	s.AssessmentReportsDestination = v
	return s
}

// SetRoles sets the Roles field's value.
func (s *UpdateAssessmentInput) SetRoles(v []*Role) *UpdateAssessmentInput {
	s.Roles = v
	return s
}

// SetScope sets the Scope field's value.
func (s *UpdateAssessmentInput) SetScope(v *Scope) *UpdateAssessmentInput {
	s.Scope = v
	return s
}

type UpdateAssessmentOutput struct {
	_ struct{} `type:"structure"`

	// The response object for the UpdateAssessment API. This is the name of the
	// updated assessment.
	Assessment *Assessment `locationName:"assessment" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAssessmentOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAssessmentOutput) GoString() string {
	return s.String()
}

// SetAssessment sets the Assessment field's value.
func (s *UpdateAssessmentOutput) SetAssessment(v *Assessment) *UpdateAssessmentOutput {
	s.Assessment = v
	return s
}

type UpdateAssessmentStatusInput struct {
	_ struct{} `type:"structure"`

	// The unique identifier for the assessment.
	//
	// AssessmentId is a required field
	AssessmentId *string `location:"uri" locationName:"assessmentId" min:"36" type:"string" required:"true"`

	// The current status of the assessment.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"AssessmentStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAssessmentStatusInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAssessmentStatusInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateAssessmentStatusInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateAssessmentStatusInput"}
	if s.AssessmentId == nil {
		invalidParams.Add(request.NewErrParamRequired("AssessmentId"))
	}
	if s.AssessmentId != nil && len(*s.AssessmentId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("AssessmentId", 36))
	}
	if s.Status == nil {
		invalidParams.Add(request.NewErrParamRequired("Status"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssessmentId sets the AssessmentId field's value.
func (s *UpdateAssessmentStatusInput) SetAssessmentId(v string) *UpdateAssessmentStatusInput {
	s.AssessmentId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateAssessmentStatusInput) SetStatus(v string) *UpdateAssessmentStatusInput {
	s.Status = &v
	return s
}

type UpdateAssessmentStatusOutput struct {
	_ struct{} `type:"structure"`

	// The name of the updated assessment that the UpdateAssessmentStatus API returned.
	Assessment *Assessment `locationName:"assessment" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAssessmentStatusOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAssessmentStatusOutput) GoString() string {
	return s.String()
}

// SetAssessment sets the Assessment field's value.
func (s *UpdateAssessmentStatusOutput) SetAssessment(v *Assessment) *UpdateAssessmentStatusOutput {
	s.Assessment = v
	return s
}

type UpdateControlInput struct {
	_ struct{} `type:"structure"`

	// The recommended actions to carry out if the control isn't fulfilled.
	//
	// ActionPlanInstructions is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateControlInput's
	// String and GoString methods.
	ActionPlanInstructions *string `locationName:"actionPlanInstructions" type:"string" sensitive:"true"`

	// The title of the action plan for remediating the control.
	//
	// ActionPlanTitle is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateControlInput's
	// String and GoString methods.
	ActionPlanTitle *string `locationName:"actionPlanTitle" type:"string" sensitive:"true"`

	// The identifier for the control.
	//
	// ControlId is a required field
	ControlId *string `location:"uri" locationName:"controlId" min:"36" type:"string" required:"true"`

	// The data mapping sources for the control.
	//
	// ControlMappingSources is a required field
	ControlMappingSources []*ControlMappingSource `locationName:"controlMappingSources" min:"1" type:"list" required:"true"`

	// The optional description of the control.
	Description *string `locationName:"description" type:"string"`

	// The name of the updated control.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true"`

	// The steps that you should follow to determine if the control is met.
	//
	// TestingInformation is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateControlInput's
	// String and GoString methods.
	TestingInformation *string `locationName:"testingInformation" type:"string" sensitive:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateControlInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateControlInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateControlInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateControlInput"}
	if s.ControlId == nil {
		invalidParams.Add(request.NewErrParamRequired("ControlId"))
	}
	if s.ControlId != nil && len(*s.ControlId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("ControlId", 36))
	}
	if s.ControlMappingSources == nil {
		invalidParams.Add(request.NewErrParamRequired("ControlMappingSources"))
	}
	if s.ControlMappingSources != nil && len(s.ControlMappingSources) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ControlMappingSources", 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.ControlMappingSources != nil {
		for i, v := range s.ControlMappingSources {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ControlMappingSources", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActionPlanInstructions sets the ActionPlanInstructions field's value.
func (s *UpdateControlInput) SetActionPlanInstructions(v string) *UpdateControlInput {
	s.ActionPlanInstructions = &v
	return s
}

// SetActionPlanTitle sets the ActionPlanTitle field's value.
func (s *UpdateControlInput) SetActionPlanTitle(v string) *UpdateControlInput {
	s.ActionPlanTitle = &v
	return s
}

// SetControlId sets the ControlId field's value.
func (s *UpdateControlInput) SetControlId(v string) *UpdateControlInput {
	s.ControlId = &v
	return s
}

// SetControlMappingSources sets the ControlMappingSources field's value.
func (s *UpdateControlInput) SetControlMappingSources(v []*ControlMappingSource) *UpdateControlInput {
	s.ControlMappingSources = v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateControlInput) SetDescription(v string) *UpdateControlInput {
	s.Description = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateControlInput) SetName(v string) *UpdateControlInput {
	s.Name = &v
	return s
}

// SetTestingInformation sets the TestingInformation field's value.
func (s *UpdateControlInput) SetTestingInformation(v string) *UpdateControlInput {
	s.TestingInformation = &v
	return s
}

type UpdateControlOutput struct {
	_ struct{} `type:"structure"`

	// The name of the updated control set that the UpdateControl API returned.
	Control *Control `locationName:"control" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateControlOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateControlOutput) GoString() string {
	return s.String()
}

// SetControl sets the Control field's value.
func (s *UpdateControlOutput) SetControl(v *Control) *UpdateControlOutput {
	s.Control = v
	return s
}

type UpdateSettingsInput struct {
	_ struct{} `type:"structure"`

	// The default S3 destination bucket for storing assessment reports.
	//
	// DefaultAssessmentReportsDestination is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateSettingsInput's
	// String and GoString methods.
	DefaultAssessmentReportsDestination *AssessmentReportsDestination `locationName:"defaultAssessmentReportsDestination" type:"structure" sensitive:"true"`

	// The default S3 destination bucket for storing evidence finder exports.
	DefaultExportDestination *DefaultExportDestination `locationName:"defaultExportDestination" type:"structure"`

	// A list of the default audit owners.
	//
	// DefaultProcessOwners is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateSettingsInput's
	// String and GoString methods.
	DefaultProcessOwners []*Role `locationName:"defaultProcessOwners" type:"list" sensitive:"true"`

	// The deregistration policy for your Audit Manager data. You can use this attribute
	// to determine how your data is handled when you deregister Audit Manager.
	DeregistrationPolicy *DeregistrationPolicy `locationName:"deregistrationPolicy" type:"structure"`

	// Specifies whether the evidence finder feature is enabled. Change this attribute
	// to enable or disable evidence finder.
	//
	// When you use this attribute to disable evidence finder, Audit Manager deletes
	// the event data store that’s used to query your evidence data. As a result,
	// you can’t re-enable evidence finder and use the feature again. Your only
	// alternative is to deregister (https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_DeregisterAccount.html)
	// and then re-register (https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_RegisterAccount.html)
	// Audit Manager.
	EvidenceFinderEnabled *bool `locationName:"evidenceFinderEnabled" type:"boolean"`

	// The KMS key details.
	KmsKey *string `locationName:"kmsKey" min:"7" type:"string"`

	// The Amazon Simple Notification Service (Amazon SNS) topic that Audit Manager
	// sends notifications to.
	SnsTopic *string `locationName:"snsTopic" min:"4" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSettingsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSettingsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateSettingsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateSettingsInput"}
	if s.KmsKey != nil && len(*s.KmsKey) < 7 {
		invalidParams.Add(request.NewErrParamMinLen("KmsKey", 7))
	}
	if s.SnsTopic != nil && len(*s.SnsTopic) < 4 {
		invalidParams.Add(request.NewErrParamMinLen("SnsTopic", 4))
	}
	if s.DefaultAssessmentReportsDestination != nil {
		if err := s.DefaultAssessmentReportsDestination.Validate(); err != nil {
			invalidParams.AddNested("DefaultAssessmentReportsDestination", err.(request.ErrInvalidParams))
		}
	}
	if s.DefaultExportDestination != nil {
		if err := s.DefaultExportDestination.Validate(); err != nil {
			invalidParams.AddNested("DefaultExportDestination", err.(request.ErrInvalidParams))
		}
	}
	if s.DefaultProcessOwners != nil {
		for i, v := range s.DefaultProcessOwners {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DefaultProcessOwners", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDefaultAssessmentReportsDestination sets the DefaultAssessmentReportsDestination field's value.
func (s *UpdateSettingsInput) SetDefaultAssessmentReportsDestination(v *AssessmentReportsDestination) *UpdateSettingsInput {
	s.DefaultAssessmentReportsDestination = v
	return s
}

// SetDefaultExportDestination sets the DefaultExportDestination field's value.
func (s *UpdateSettingsInput) SetDefaultExportDestination(v *DefaultExportDestination) *UpdateSettingsInput {
	s.DefaultExportDestination = v
	return s
}

// SetDefaultProcessOwners sets the DefaultProcessOwners field's value.
func (s *UpdateSettingsInput) SetDefaultProcessOwners(v []*Role) *UpdateSettingsInput {
	s.DefaultProcessOwners = v
	return s
}

// SetDeregistrationPolicy sets the DeregistrationPolicy field's value.
func (s *UpdateSettingsInput) SetDeregistrationPolicy(v *DeregistrationPolicy) *UpdateSettingsInput {
	s.DeregistrationPolicy = v
	return s
}

// SetEvidenceFinderEnabled sets the EvidenceFinderEnabled field's value.
func (s *UpdateSettingsInput) SetEvidenceFinderEnabled(v bool) *UpdateSettingsInput {
	s.EvidenceFinderEnabled = &v
	return s
}

// SetKmsKey sets the KmsKey field's value.
func (s *UpdateSettingsInput) SetKmsKey(v string) *UpdateSettingsInput {
	s.KmsKey = &v
	return s
}

// SetSnsTopic sets the SnsTopic field's value.
func (s *UpdateSettingsInput) SetSnsTopic(v string) *UpdateSettingsInput {
	s.SnsTopic = &v
	return s
}

type UpdateSettingsOutput struct {
	_ struct{} `type:"structure"`

	// The current list of settings.
	Settings *Settings `locationName:"settings" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSettingsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSettingsOutput) GoString() string {
	return s.String()
}

// SetSettings sets the Settings field's value.
func (s *UpdateSettingsOutput) SetSettings(v *Settings) *UpdateSettingsOutput {
	s.Settings = v
	return s
}

type ValidateAssessmentReportIntegrityInput struct {
	_ struct{} `type:"structure"`

	// The relative path of the Amazon S3 bucket that the assessment report is stored
	// in.
	//
	// S3RelativePath is a required field
	S3RelativePath *string `locationName:"s3RelativePath" 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 ValidateAssessmentReportIntegrityInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ValidateAssessmentReportIntegrityInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ValidateAssessmentReportIntegrityInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ValidateAssessmentReportIntegrityInput"}
	if s.S3RelativePath == nil {
		invalidParams.Add(request.NewErrParamRequired("S3RelativePath"))
	}
	if s.S3RelativePath != nil && len(*s.S3RelativePath) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("S3RelativePath", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetS3RelativePath sets the S3RelativePath field's value.
func (s *ValidateAssessmentReportIntegrityInput) SetS3RelativePath(v string) *ValidateAssessmentReportIntegrityInput {
	s.S3RelativePath = &v
	return s
}

type ValidateAssessmentReportIntegrityOutput struct {
	_ struct{} `type:"structure"`

	// The signature algorithm that's used to code sign the assessment report file.
	SignatureAlgorithm *string `locationName:"signatureAlgorithm" type:"string"`

	// The date and time signature that specifies when the assessment report was
	// created.
	SignatureDateTime *string `locationName:"signatureDateTime" type:"string"`

	// The unique identifier for the validation signature key.
	SignatureKeyId *string `locationName:"signatureKeyId" type:"string"`

	// Specifies whether the signature key is valid.
	SignatureValid *bool `locationName:"signatureValid" type:"boolean"`

	// Represents any errors that occurred when validating the assessment report.
	ValidationErrors []*string `locationName:"validationErrors" 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 ValidateAssessmentReportIntegrityOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ValidateAssessmentReportIntegrityOutput) GoString() string {
	return s.String()
}

// SetSignatureAlgorithm sets the SignatureAlgorithm field's value.
func (s *ValidateAssessmentReportIntegrityOutput) SetSignatureAlgorithm(v string) *ValidateAssessmentReportIntegrityOutput {
	s.SignatureAlgorithm = &v
	return s
}

// SetSignatureDateTime sets the SignatureDateTime field's value.
func (s *ValidateAssessmentReportIntegrityOutput) SetSignatureDateTime(v string) *ValidateAssessmentReportIntegrityOutput {
	s.SignatureDateTime = &v
	return s
}

// SetSignatureKeyId sets the SignatureKeyId field's value.
func (s *ValidateAssessmentReportIntegrityOutput) SetSignatureKeyId(v string) *ValidateAssessmentReportIntegrityOutput {
	s.SignatureKeyId = &v
	return s
}

// SetSignatureValid sets the SignatureValid field's value.
func (s *ValidateAssessmentReportIntegrityOutput) SetSignatureValid(v bool) *ValidateAssessmentReportIntegrityOutput {
	s.SignatureValid = &v
	return s
}

// SetValidationErrors sets the ValidationErrors field's value.
func (s *ValidateAssessmentReportIntegrityOutput) SetValidationErrors(v []*string) *ValidateAssessmentReportIntegrityOutput {
	s.ValidationErrors = v
	return s
}

// The request has invalid or missing parameters.
type ValidationException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The fields that caused the error, if applicable.
	Fields []*ValidationExceptionField `locationName:"fields" type:"list"`

	Message_ *string `locationName:"message" type:"string"`

	// The reason the request failed validation.
	Reason *string `locationName:"reason" type:"string" enum:"ValidationExceptionReason"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ValidationException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ValidationException) GoString() string {
	return s.String()
}

func newErrorValidationException(v protocol.ResponseMetadata) error {
	return &ValidationException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ValidationException) Code() string {
	return "ValidationException"
}

// Message returns the exception's message.
func (s *ValidationException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ValidationException) OrigErr() error {
	return nil
}

func (s *ValidationException) Error() string {
	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ValidationException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ValidationException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Indicates that the request has invalid or missing parameters for the field.
type ValidationExceptionField struct {
	_ struct{} `type:"structure"`

	// The body of the error message.
	//
	// Message is a required field
	Message *string `locationName:"message" type:"string" required:"true"`

	// The name of the validation error.
	//
	// Name is a required field
	Name *string `locationName:"name" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ValidationExceptionField) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ValidationExceptionField) GoString() string {
	return s.String()
}

// SetMessage sets the Message field's value.
func (s *ValidationExceptionField) SetMessage(v string) *ValidationExceptionField {
	s.Message = &v
	return s
}

// SetName sets the Name field's value.
func (s *ValidationExceptionField) SetName(v string) *ValidationExceptionField {
	s.Name = &v
	return s
}

const (
	// AccountStatusActive is a AccountStatus enum value
	AccountStatusActive = "ACTIVE"

	// AccountStatusInactive is a AccountStatus enum value
	AccountStatusInactive = "INACTIVE"

	// AccountStatusPendingActivation is a AccountStatus enum value
	AccountStatusPendingActivation = "PENDING_ACTIVATION"
)

// AccountStatus_Values returns all elements of the AccountStatus enum
func AccountStatus_Values() []string {
	return []string{
		AccountStatusActive,
		AccountStatusInactive,
		AccountStatusPendingActivation,
	}
}

const (
	// ActionEnumCreate is a ActionEnum enum value
	ActionEnumCreate = "CREATE"

	// ActionEnumUpdateMetadata is a ActionEnum enum value
	ActionEnumUpdateMetadata = "UPDATE_METADATA"

	// ActionEnumActive is a ActionEnum enum value
	ActionEnumActive = "ACTIVE"

	// ActionEnumInactive is a ActionEnum enum value
	ActionEnumInactive = "INACTIVE"

	// ActionEnumDelete is a ActionEnum enum value
	ActionEnumDelete = "DELETE"

	// ActionEnumUnderReview is a ActionEnum enum value
	ActionEnumUnderReview = "UNDER_REVIEW"

	// ActionEnumReviewed is a ActionEnum enum value
	ActionEnumReviewed = "REVIEWED"

	// ActionEnumImportEvidence is a ActionEnum enum value
	ActionEnumImportEvidence = "IMPORT_EVIDENCE"
)

// ActionEnum_Values returns all elements of the ActionEnum enum
func ActionEnum_Values() []string {
	return []string{
		ActionEnumCreate,
		ActionEnumUpdateMetadata,
		ActionEnumActive,
		ActionEnumInactive,
		ActionEnumDelete,
		ActionEnumUnderReview,
		ActionEnumReviewed,
		ActionEnumImportEvidence,
	}
}

const (
	// AssessmentReportDestinationTypeS3 is a AssessmentReportDestinationType enum value
	AssessmentReportDestinationTypeS3 = "S3"
)

// AssessmentReportDestinationType_Values returns all elements of the AssessmentReportDestinationType enum
func AssessmentReportDestinationType_Values() []string {
	return []string{
		AssessmentReportDestinationTypeS3,
	}
}

const (
	// AssessmentReportStatusComplete is a AssessmentReportStatus enum value
	AssessmentReportStatusComplete = "COMPLETE"

	// AssessmentReportStatusInProgress is a AssessmentReportStatus enum value
	AssessmentReportStatusInProgress = "IN_PROGRESS"

	// AssessmentReportStatusFailed is a AssessmentReportStatus enum value
	AssessmentReportStatusFailed = "FAILED"
)

// AssessmentReportStatus_Values returns all elements of the AssessmentReportStatus enum
func AssessmentReportStatus_Values() []string {
	return []string{
		AssessmentReportStatusComplete,
		AssessmentReportStatusInProgress,
		AssessmentReportStatusFailed,
	}
}

const (
	// AssessmentStatusActive is a AssessmentStatus enum value
	AssessmentStatusActive = "ACTIVE"

	// AssessmentStatusInactive is a AssessmentStatus enum value
	AssessmentStatusInactive = "INACTIVE"
)

// AssessmentStatus_Values returns all elements of the AssessmentStatus enum
func AssessmentStatus_Values() []string {
	return []string{
		AssessmentStatusActive,
		AssessmentStatusInactive,
	}
}

const (
	// ControlResponseManual is a ControlResponse enum value
	ControlResponseManual = "MANUAL"

	// ControlResponseAutomate is a ControlResponse enum value
	ControlResponseAutomate = "AUTOMATE"

	// ControlResponseDefer is a ControlResponse enum value
	ControlResponseDefer = "DEFER"

	// ControlResponseIgnore is a ControlResponse enum value
	ControlResponseIgnore = "IGNORE"
)

// ControlResponse_Values returns all elements of the ControlResponse enum
func ControlResponse_Values() []string {
	return []string{
		ControlResponseManual,
		ControlResponseAutomate,
		ControlResponseDefer,
		ControlResponseIgnore,
	}
}

const (
	// ControlSetStatusActive is a ControlSetStatus enum value
	ControlSetStatusActive = "ACTIVE"

	// ControlSetStatusUnderReview is a ControlSetStatus enum value
	ControlSetStatusUnderReview = "UNDER_REVIEW"

	// ControlSetStatusReviewed is a ControlSetStatus enum value
	ControlSetStatusReviewed = "REVIEWED"
)

// ControlSetStatus_Values returns all elements of the ControlSetStatus enum
func ControlSetStatus_Values() []string {
	return []string{
		ControlSetStatusActive,
		ControlSetStatusUnderReview,
		ControlSetStatusReviewed,
	}
}

const (
	// ControlStatusUnderReview is a ControlStatus enum value
	ControlStatusUnderReview = "UNDER_REVIEW"

	// ControlStatusReviewed is a ControlStatus enum value
	ControlStatusReviewed = "REVIEWED"

	// ControlStatusInactive is a ControlStatus enum value
	ControlStatusInactive = "INACTIVE"
)

// ControlStatus_Values returns all elements of the ControlStatus enum
func ControlStatus_Values() []string {
	return []string{
		ControlStatusUnderReview,
		ControlStatusReviewed,
		ControlStatusInactive,
	}
}

const (
	// ControlTypeStandard is a ControlType enum value
	ControlTypeStandard = "Standard"

	// ControlTypeCustom is a ControlType enum value
	ControlTypeCustom = "Custom"
)

// ControlType_Values returns all elements of the ControlType enum
func ControlType_Values() []string {
	return []string{
		ControlTypeStandard,
		ControlTypeCustom,
	}
}

const (
	// DelegationStatusInProgress is a DelegationStatus enum value
	DelegationStatusInProgress = "IN_PROGRESS"

	// DelegationStatusUnderReview is a DelegationStatus enum value
	DelegationStatusUnderReview = "UNDER_REVIEW"

	// DelegationStatusComplete is a DelegationStatus enum value
	DelegationStatusComplete = "COMPLETE"
)

// DelegationStatus_Values returns all elements of the DelegationStatus enum
func DelegationStatus_Values() []string {
	return []string{
		DelegationStatusInProgress,
		DelegationStatusUnderReview,
		DelegationStatusComplete,
	}
}

const (
	// DeleteResourcesAll is a DeleteResources enum value
	DeleteResourcesAll = "ALL"

	// DeleteResourcesDefault is a DeleteResources enum value
	DeleteResourcesDefault = "DEFAULT"
)

// DeleteResources_Values returns all elements of the DeleteResources enum
func DeleteResources_Values() []string {
	return []string{
		DeleteResourcesAll,
		DeleteResourcesDefault,
	}
}

const (
	// EvidenceFinderBackfillStatusNotStarted is a EvidenceFinderBackfillStatus enum value
	EvidenceFinderBackfillStatusNotStarted = "NOT_STARTED"

	// EvidenceFinderBackfillStatusInProgress is a EvidenceFinderBackfillStatus enum value
	EvidenceFinderBackfillStatusInProgress = "IN_PROGRESS"

	// EvidenceFinderBackfillStatusCompleted is a EvidenceFinderBackfillStatus enum value
	EvidenceFinderBackfillStatusCompleted = "COMPLETED"
)

// EvidenceFinderBackfillStatus_Values returns all elements of the EvidenceFinderBackfillStatus enum
func EvidenceFinderBackfillStatus_Values() []string {
	return []string{
		EvidenceFinderBackfillStatusNotStarted,
		EvidenceFinderBackfillStatusInProgress,
		EvidenceFinderBackfillStatusCompleted,
	}
}

const (
	// EvidenceFinderEnablementStatusEnabled is a EvidenceFinderEnablementStatus enum value
	EvidenceFinderEnablementStatusEnabled = "ENABLED"

	// EvidenceFinderEnablementStatusDisabled is a EvidenceFinderEnablementStatus enum value
	EvidenceFinderEnablementStatusDisabled = "DISABLED"

	// EvidenceFinderEnablementStatusEnableInProgress is a EvidenceFinderEnablementStatus enum value
	EvidenceFinderEnablementStatusEnableInProgress = "ENABLE_IN_PROGRESS"

	// EvidenceFinderEnablementStatusDisableInProgress is a EvidenceFinderEnablementStatus enum value
	EvidenceFinderEnablementStatusDisableInProgress = "DISABLE_IN_PROGRESS"
)

// EvidenceFinderEnablementStatus_Values returns all elements of the EvidenceFinderEnablementStatus enum
func EvidenceFinderEnablementStatus_Values() []string {
	return []string{
		EvidenceFinderEnablementStatusEnabled,
		EvidenceFinderEnablementStatusDisabled,
		EvidenceFinderEnablementStatusEnableInProgress,
		EvidenceFinderEnablementStatusDisableInProgress,
	}
}

const (
	// ExportDestinationTypeS3 is a ExportDestinationType enum value
	ExportDestinationTypeS3 = "S3"
)

// ExportDestinationType_Values returns all elements of the ExportDestinationType enum
func ExportDestinationType_Values() []string {
	return []string{
		ExportDestinationTypeS3,
	}
}

const (
	// FrameworkTypeStandard is a FrameworkType enum value
	FrameworkTypeStandard = "Standard"

	// FrameworkTypeCustom is a FrameworkType enum value
	FrameworkTypeCustom = "Custom"
)

// FrameworkType_Values returns all elements of the FrameworkType enum
func FrameworkType_Values() []string {
	return []string{
		FrameworkTypeStandard,
		FrameworkTypeCustom,
	}
}

const (
	// KeywordInputTypeSelectFromList is a KeywordInputType enum value
	KeywordInputTypeSelectFromList = "SELECT_FROM_LIST"

	// KeywordInputTypeUploadFile is a KeywordInputType enum value
	KeywordInputTypeUploadFile = "UPLOAD_FILE"

	// KeywordInputTypeInputText is a KeywordInputType enum value
	KeywordInputTypeInputText = "INPUT_TEXT"
)

// KeywordInputType_Values returns all elements of the KeywordInputType enum
func KeywordInputType_Values() []string {
	return []string{
		KeywordInputTypeSelectFromList,
		KeywordInputTypeUploadFile,
		KeywordInputTypeInputText,
	}
}

const (
	// ObjectTypeEnumAssessment is a ObjectTypeEnum enum value
	ObjectTypeEnumAssessment = "ASSESSMENT"

	// ObjectTypeEnumControlSet is a ObjectTypeEnum enum value
	ObjectTypeEnumControlSet = "CONTROL_SET"

	// ObjectTypeEnumControl is a ObjectTypeEnum enum value
	ObjectTypeEnumControl = "CONTROL"

	// ObjectTypeEnumDelegation is a ObjectTypeEnum enum value
	ObjectTypeEnumDelegation = "DELEGATION"

	// ObjectTypeEnumAssessmentReport is a ObjectTypeEnum enum value
	ObjectTypeEnumAssessmentReport = "ASSESSMENT_REPORT"
)

// ObjectTypeEnum_Values returns all elements of the ObjectTypeEnum enum
func ObjectTypeEnum_Values() []string {
	return []string{
		ObjectTypeEnumAssessment,
		ObjectTypeEnumControlSet,
		ObjectTypeEnumControl,
		ObjectTypeEnumDelegation,
		ObjectTypeEnumAssessmentReport,
	}
}

const (
	// RoleTypeProcessOwner is a RoleType enum value
	RoleTypeProcessOwner = "PROCESS_OWNER"

	// RoleTypeResourceOwner is a RoleType enum value
	RoleTypeResourceOwner = "RESOURCE_OWNER"
)

// RoleType_Values returns all elements of the RoleType enum
func RoleType_Values() []string {
	return []string{
		RoleTypeProcessOwner,
		RoleTypeResourceOwner,
	}
}

const (
	// SettingAttributeAll is a SettingAttribute enum value
	SettingAttributeAll = "ALL"

	// SettingAttributeIsAwsOrgEnabled is a SettingAttribute enum value
	SettingAttributeIsAwsOrgEnabled = "IS_AWS_ORG_ENABLED"

	// SettingAttributeSnsTopic is a SettingAttribute enum value
	SettingAttributeSnsTopic = "SNS_TOPIC"

	// SettingAttributeDefaultAssessmentReportsDestination is a SettingAttribute enum value
	SettingAttributeDefaultAssessmentReportsDestination = "DEFAULT_ASSESSMENT_REPORTS_DESTINATION"

	// SettingAttributeDefaultProcessOwners is a SettingAttribute enum value
	SettingAttributeDefaultProcessOwners = "DEFAULT_PROCESS_OWNERS"

	// SettingAttributeEvidenceFinderEnablement is a SettingAttribute enum value
	SettingAttributeEvidenceFinderEnablement = "EVIDENCE_FINDER_ENABLEMENT"

	// SettingAttributeDeregistrationPolicy is a SettingAttribute enum value
	SettingAttributeDeregistrationPolicy = "DEREGISTRATION_POLICY"

	// SettingAttributeDefaultExportDestination is a SettingAttribute enum value
	SettingAttributeDefaultExportDestination = "DEFAULT_EXPORT_DESTINATION"
)

// SettingAttribute_Values returns all elements of the SettingAttribute enum
func SettingAttribute_Values() []string {
	return []string{
		SettingAttributeAll,
		SettingAttributeIsAwsOrgEnabled,
		SettingAttributeSnsTopic,
		SettingAttributeDefaultAssessmentReportsDestination,
		SettingAttributeDefaultProcessOwners,
		SettingAttributeEvidenceFinderEnablement,
		SettingAttributeDeregistrationPolicy,
		SettingAttributeDefaultExportDestination,
	}
}

const (
	// ShareRequestActionAccept is a ShareRequestAction enum value
	ShareRequestActionAccept = "ACCEPT"

	// ShareRequestActionDecline is a ShareRequestAction enum value
	ShareRequestActionDecline = "DECLINE"

	// ShareRequestActionRevoke is a ShareRequestAction enum value
	ShareRequestActionRevoke = "REVOKE"
)

// ShareRequestAction_Values returns all elements of the ShareRequestAction enum
func ShareRequestAction_Values() []string {
	return []string{
		ShareRequestActionAccept,
		ShareRequestActionDecline,
		ShareRequestActionRevoke,
	}
}

const (
	// ShareRequestStatusActive is a ShareRequestStatus enum value
	ShareRequestStatusActive = "ACTIVE"

	// ShareRequestStatusReplicating is a ShareRequestStatus enum value
	ShareRequestStatusReplicating = "REPLICATING"

	// ShareRequestStatusShared is a ShareRequestStatus enum value
	ShareRequestStatusShared = "SHARED"

	// ShareRequestStatusExpiring is a ShareRequestStatus enum value
	ShareRequestStatusExpiring = "EXPIRING"

	// ShareRequestStatusFailed is a ShareRequestStatus enum value
	ShareRequestStatusFailed = "FAILED"

	// ShareRequestStatusExpired is a ShareRequestStatus enum value
	ShareRequestStatusExpired = "EXPIRED"

	// ShareRequestStatusDeclined is a ShareRequestStatus enum value
	ShareRequestStatusDeclined = "DECLINED"

	// ShareRequestStatusRevoked is a ShareRequestStatus enum value
	ShareRequestStatusRevoked = "REVOKED"
)

// ShareRequestStatus_Values returns all elements of the ShareRequestStatus enum
func ShareRequestStatus_Values() []string {
	return []string{
		ShareRequestStatusActive,
		ShareRequestStatusReplicating,
		ShareRequestStatusShared,
		ShareRequestStatusExpiring,
		ShareRequestStatusFailed,
		ShareRequestStatusExpired,
		ShareRequestStatusDeclined,
		ShareRequestStatusRevoked,
	}
}

const (
	// ShareRequestTypeSent is a ShareRequestType enum value
	ShareRequestTypeSent = "SENT"

	// ShareRequestTypeReceived is a ShareRequestType enum value
	ShareRequestTypeReceived = "RECEIVED"
)

// ShareRequestType_Values returns all elements of the ShareRequestType enum
func ShareRequestType_Values() []string {
	return []string{
		ShareRequestTypeSent,
		ShareRequestTypeReceived,
	}
}

const (
	// SourceFrequencyDaily is a SourceFrequency enum value
	SourceFrequencyDaily = "DAILY"

	// SourceFrequencyWeekly is a SourceFrequency enum value
	SourceFrequencyWeekly = "WEEKLY"

	// SourceFrequencyMonthly is a SourceFrequency enum value
	SourceFrequencyMonthly = "MONTHLY"
)

// SourceFrequency_Values returns all elements of the SourceFrequency enum
func SourceFrequency_Values() []string {
	return []string{
		SourceFrequencyDaily,
		SourceFrequencyWeekly,
		SourceFrequencyMonthly,
	}
}

const (
	// SourceSetUpOptionSystemControlsMapping is a SourceSetUpOption enum value
	SourceSetUpOptionSystemControlsMapping = "System_Controls_Mapping"

	// SourceSetUpOptionProceduralControlsMapping is a SourceSetUpOption enum value
	SourceSetUpOptionProceduralControlsMapping = "Procedural_Controls_Mapping"
)

// SourceSetUpOption_Values returns all elements of the SourceSetUpOption enum
func SourceSetUpOption_Values() []string {
	return []string{
		SourceSetUpOptionSystemControlsMapping,
		SourceSetUpOptionProceduralControlsMapping,
	}
}

const (
	// SourceTypeAwsCloudtrail is a SourceType enum value
	SourceTypeAwsCloudtrail = "AWS_Cloudtrail"

	// SourceTypeAwsConfig is a SourceType enum value
	SourceTypeAwsConfig = "AWS_Config"

	// SourceTypeAwsSecurityHub is a SourceType enum value
	SourceTypeAwsSecurityHub = "AWS_Security_Hub"

	// SourceTypeAwsApiCall is a SourceType enum value
	SourceTypeAwsApiCall = "AWS_API_Call"

	// SourceTypeManual is a SourceType enum value
	SourceTypeManual = "MANUAL"
)

// SourceType_Values returns all elements of the SourceType enum
func SourceType_Values() []string {
	return []string{
		SourceTypeAwsCloudtrail,
		SourceTypeAwsConfig,
		SourceTypeAwsSecurityHub,
		SourceTypeAwsApiCall,
		SourceTypeManual,
	}
}

const (
	// ValidationExceptionReasonUnknownOperation is a ValidationExceptionReason enum value
	ValidationExceptionReasonUnknownOperation = "unknownOperation"

	// ValidationExceptionReasonCannotParse is a ValidationExceptionReason enum value
	ValidationExceptionReasonCannotParse = "cannotParse"

	// ValidationExceptionReasonFieldValidationFailed is a ValidationExceptionReason enum value
	ValidationExceptionReasonFieldValidationFailed = "fieldValidationFailed"

	// ValidationExceptionReasonOther is a ValidationExceptionReason enum value
	ValidationExceptionReasonOther = "other"
)

// ValidationExceptionReason_Values returns all elements of the ValidationExceptionReason enum
func ValidationExceptionReason_Values() []string {
	return []string{
		ValidationExceptionReasonUnknownOperation,
		ValidationExceptionReasonCannotParse,
		ValidationExceptionReasonFieldValidationFailed,
		ValidationExceptionReasonOther,
	}
}
