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

package auditmanager

import (
	"fmt"
	"time"

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

const 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).
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
// 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 the Amazon Web Services from which Audit Manager can collect
// evidence.
//
// Audit Manager defines which Amazon Web Services are in scope for an assessment.
// Audit Manager infers this scope by examining the assessment’s controls
// and their data sources, and then mapping this information to one or more
// of the corresponding Amazon Web Services that are in this list.
//
// For information about why it's no longer possible to specify services in
// scope manually, see I can't edit the services in scope for my assessment
// (https://docs.aws.amazon.com/audit-manager/latest/userguide/evidence-collection-issues.html#unable-to-edit-services)
// in the Troubleshooting section of 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 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.
//
// Audit Manager supports the control domains that are provided by Amazon Web
// Services Control Catalog. For information about how to find a list of available
// control domains, see ListDomains (https://docs.aws.amazon.com/controlcatalog/latest/APIReference/API_ListDomains.html)
// in the Amazon Web Services Control Catalog API Reference.
//
// 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.
//
// Audit Manager supports the control domains that are provided by Amazon Web
// Services Control Catalog. For information about how to find a list of available
// control domains, see ListDomains (https://docs.aws.amazon.com/controlcatalog/latest/APIReference/API_ListDomains.html)
// in the Amazon Web Services Control Catalog API Reference.
//
// 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.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
// 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 is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssessmentControl's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// 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" sensitive:"true"`

	// 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" sensitive:"true"`

	// 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" 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 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" sensitive:"true"`

	// 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 is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Control's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// 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 state of the control. The END_OF_SUPPORT state is applicable to standard
	// controls only. This state indicates that the standard control can still be
	// used to collect evidence, but Audit Manager is no longer updating or maintaining
	// that control.
	State *string `locationName:"state" type:"string" enum:"ControlState"`

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

// SetState sets the State field's value.
func (s *Control) SetState(v string) *Control {
	s.State = &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. Audit Manager supports the
	// control domains that are provided by Amazon Web Services Control Catalog.
	// For information about how to find a list of available control domains, see
	// ListDomains (https://docs.aws.amazon.com/controlcatalog/latest/APIReference/API_ListDomains.html)
	// in the Amazon Web Services Control Catalog API Reference.
	Id *string `locationName:"id" min:"13" 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" 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:"13" 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" type:"string"`
}

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

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API 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 method is automated or manual. If you don’t provide a value
	// for sourceSetUpOption, Audit Manager automatically infers and populates the
	// correct value based on the sourceType that you specify.
	SourceSetUpOption *string `locationName:"sourceSetUpOption" type:"string" enum:"SourceSetUpOption"`

	// Specifies which type of data source is used to collect evidence.
	//
	//    * The source can be an individual data source type, such as AWS_Cloudtrail,
	//    AWS_Config, AWS_Security_Hub, AWS_API_Call, or MANUAL.
	//
	//    * The source can also be a managed grouping of data sources, such as a
	//    Core_Control or a Common_Control.
	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 that are in scope
	// for the assessment.
	//
	// You no longer need to specify which Amazon Web Services are in scope when
	// you create or update an assessment. Audit Manager infers the services in
	// scope by examining your assessment controls and their data sources, and then
	// mapping this information to the relevant Amazon Web Services.
	//
	// If an underlying data source changes for your assessment, we automatically
	// update the services scope as needed to reflect the correct Amazon Web Services.
	// This ensures that your assessment collects accurate and comprehensive evidence
	// about all of the relevant services in your AWS environment.
	//
	// 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 is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateControlInput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// 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 mapping attributes that determine the evidence source for a given control,
// 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. This option reflects if the evidence
	// collection method is automated or manual. If you don’t provide a value
	// for sourceSetUpOption, Audit Manager automatically infers and populates the
	// correct value based on the sourceType that you specify.
	SourceSetUpOption *string `locationName:"sourceSetUpOption" type:"string" enum:"SourceSetUpOption"`

	// Specifies which type of data source is used to collect evidence.
	//
	//    * The source can be an individual data source type, such as AWS_Cloudtrail,
	//    AWS_Config, AWS_Security_Hub, AWS_API_Call, or MANUAL.
	//
	//    * The source can also be a managed grouping of data sources, such as a
	//    Core_Control or a Common_Control.
	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.
	//
	// Audit Manager supports the control domains that are provided by Amazon Web
	// Services Control Catalog. For information about how to find a list of available
	// control domains, see ListDomains (https://docs.aws.amazon.com/controlcatalog/latest/APIReference/API_ListDomains.html)
	// in the Amazon Web Services Control Catalog API Reference.
	//
	// ControlDomainId is a required field
	ControlDomainId *string `location:"querystring" locationName:"controlDomainId" min:"13" 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) < 13 {
		invalidParams.Add(request.NewErrParamMinLen("ControlDomainId", 13))
	}
	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.
	//
	// Audit Manager supports the control domains that are provided by Amazon Web
	// Services Control Catalog. For information about how to find a list of available
	// control domains, see ListDomains (https://docs.aws.amazon.com/controlcatalog/latest/APIReference/API_ListDomains.html)
	// in the Amazon Web Services Control Catalog API Reference.
	//
	// ControlDomainId is a required field
	ControlDomainId *string `location:"querystring" locationName:"controlDomainId" min:"13" 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) < 13 {
		invalidParams.Add(request.NewErrParamMinLen("ControlDomainId", 13))
	}
	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"`

	// A filter that narrows the list of controls to a specific resource from the
	// Amazon Web Services Control Catalog.
	//
	// To use this parameter, specify the ARN of the Control Catalog resource. You
	// can specify either a control domain, a control objective, or a common control.
	// For information about how to find the ARNs for these resources, see ListDomains
	// (https://docs.aws.amazon.com/controlcatalog/latest/APIReference/API_ListDomains.html),
	// ListObjectives (https://docs.aws.amazon.com/controlcatalog/latest/APIReference/API_ListObjectives.html),
	// and ListCommonControls (https://docs.aws.amazon.com/controlcatalog/latest/APIReference/API_ListCommonControls.html).
	//
	// You can only filter by one Control Catalog resource at a time. Specifying
	// multiple resource ARNs isn’t currently supported. If you want to filter
	// by more than one ARN, we recommend that you run the ListControls operation
	// separately for each ARN.
	//
	// Alternatively, specify UNCATEGORIZED to list controls that aren't mapped
	// to a Control Catalog resource. For example, this operation might return a
	// list of custom controls that don't belong to any control domain or control
	// objective.
	ControlCatalogId *string `location:"querystring" locationName:"controlCatalogId" min:"13" type:"string"`

	// A filter that narrows the list of controls to a specific type.
	//
	// ControlType is a required field
	ControlType *string `location:"querystring" locationName:"controlType" type:"string" required:"true" enum:"ControlType"`

	// 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.ControlCatalogId != nil && len(*s.ControlCatalogId) < 13 {
		invalidParams.Add(request.NewErrParamMinLen("ControlCatalogId", 13))
	}
	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
}

// SetControlCatalogId sets the ControlCatalogId field's value.
func (s *ListControlsInput) SetControlCatalogId(v string) *ListControlsInput {
	s.ControlCatalogId = &v
	return s
}

// 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:"DataSourceType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API 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 control 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 that are in scope
// for the assessment.
//
// You no longer need to specify which Amazon Web Services are in scope when
// you create or update an assessment. Audit Manager infers the services in
// scope by examining your assessment controls and their data sources, and then
// mapping this information to the relevant Amazon Web Services.
//
// If an underlying data source changes for your assessment, we automatically
// update the services scope as needed to reflect the correct Amazon Web Services.
// This ensures that your assessment collects accurate and comprehensive evidence
// about all of the relevant services in your AWS environment.
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.
	//
	// This API parameter is no longer supported. If you use this parameter to specify
	// one or more Amazon Web Services, Audit Manager ignores this input. Instead,
	// the value for awsServices will show as empty.
	//
	// Deprecated: You can't specify services in scope when creating/updating an assessment. If you use the parameter to specify one or more AWS services, Audit Manager ignores the input. Instead the value of the parameter will show as empty indicating that the services are defined and managed by Audit Manager.
	AwsServices []*AWSService `locationName:"awsServices" deprecated:"true" 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 is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateControlInput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// 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 (
	// ControlStateActive is a ControlState enum value
	ControlStateActive = "ACTIVE"

	// ControlStateEndOfSupport is a ControlState enum value
	ControlStateEndOfSupport = "END_OF_SUPPORT"
)

// ControlState_Values returns all elements of the ControlState enum
func ControlState_Values() []string {
	return []string{
		ControlStateActive,
		ControlStateEndOfSupport,
	}
}

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"

	// ControlTypeCore is a ControlType enum value
	ControlTypeCore = "Core"
)

// ControlType_Values returns all elements of the ControlType enum
func ControlType_Values() []string {
	return []string{
		ControlTypeStandard,
		ControlTypeCustom,
		ControlTypeCore,
	}
}

const (
	// DataSourceTypeAwsCloudtrail is a DataSourceType enum value
	DataSourceTypeAwsCloudtrail = "AWS_Cloudtrail"

	// DataSourceTypeAwsConfig is a DataSourceType enum value
	DataSourceTypeAwsConfig = "AWS_Config"

	// DataSourceTypeAwsSecurityHub is a DataSourceType enum value
	DataSourceTypeAwsSecurityHub = "AWS_Security_Hub"

	// DataSourceTypeAwsApiCall is a DataSourceType enum value
	DataSourceTypeAwsApiCall = "AWS_API_Call"

	// DataSourceTypeManual is a DataSourceType enum value
	DataSourceTypeManual = "MANUAL"
)

// DataSourceType_Values returns all elements of the DataSourceType enum
func DataSourceType_Values() []string {
	return []string{
		DataSourceTypeAwsCloudtrail,
		DataSourceTypeAwsConfig,
		DataSourceTypeAwsSecurityHub,
		DataSourceTypeAwsApiCall,
		DataSourceTypeManual,
	}
}

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"

	// SourceTypeCommonControl is a SourceType enum value
	SourceTypeCommonControl = "Common_Control"

	// SourceTypeCoreControl is a SourceType enum value
	SourceTypeCoreControl = "Core_Control"
)

// SourceType_Values returns all elements of the SourceType enum
func SourceType_Values() []string {
	return []string{
		SourceTypeAwsCloudtrail,
		SourceTypeAwsConfig,
		SourceTypeAwsSecurityHub,
		SourceTypeAwsApiCall,
		SourceTypeManual,
		SourceTypeCommonControl,
		SourceTypeCoreControl,
	}
}

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