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

package connect

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 opActivateEvaluationForm = "ActivateEvaluationForm"

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

	if input == nil {
		input = &ActivateEvaluationFormInput{}
	}

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

// ActivateEvaluationForm API operation for Amazon Connect Service.
//
// Activates an evaluation form in the specified Amazon Connect instance. After
// the evaluation form is activated, it is available to start new evaluations
// based on the form.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ActivateEvaluationForm for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ResourceConflictException
//     A resource already has that name.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ActivateEvaluationForm
func (c *Connect) ActivateEvaluationForm(input *ActivateEvaluationFormInput) (*ActivateEvaluationFormOutput, error) {
	req, out := c.ActivateEvaluationFormRequest(input)
	return out, req.Send()
}

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

const opAssociateAnalyticsDataSet = "AssociateAnalyticsDataSet"

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

	if input == nil {
		input = &AssociateAnalyticsDataSetInput{}
	}

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

// AssociateAnalyticsDataSet API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Associates the specified dataset for a Amazon Connect instance with the target
// account. You can associate only one dataset in a single call.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation AssociateAnalyticsDataSet for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/AssociateAnalyticsDataSet
func (c *Connect) AssociateAnalyticsDataSet(input *AssociateAnalyticsDataSetInput) (*AssociateAnalyticsDataSetOutput, error) {
	req, out := c.AssociateAnalyticsDataSetRequest(input)
	return out, req.Send()
}

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

const opAssociateApprovedOrigin = "AssociateApprovedOrigin"

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

	if input == nil {
		input = &AssociateApprovedOriginInput{}
	}

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

// AssociateApprovedOrigin API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Associates an approved origin to an Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation AssociateApprovedOrigin for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ResourceConflictException
//     A resource already has that name.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ServiceQuotaExceededException
//     The service quota has been exceeded.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/AssociateApprovedOrigin
func (c *Connect) AssociateApprovedOrigin(input *AssociateApprovedOriginInput) (*AssociateApprovedOriginOutput, error) {
	req, out := c.AssociateApprovedOriginRequest(input)
	return out, req.Send()
}

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

const opAssociateBot = "AssociateBot"

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

	if input == nil {
		input = &AssociateBotInput{}
	}

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

// AssociateBot API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Allows the specified Amazon Connect instance to access the specified Amazon
// Lex or Amazon Lex V2 bot.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation AssociateBot for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ResourceConflictException
//     A resource already has that name.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - LimitExceededException
//     The allowed limit for the resource has been exceeded.
//
//   - ServiceQuotaExceededException
//     The service quota has been exceeded.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/AssociateBot
func (c *Connect) AssociateBot(input *AssociateBotInput) (*AssociateBotOutput, error) {
	req, out := c.AssociateBotRequest(input)
	return out, req.Send()
}

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

const opAssociateDefaultVocabulary = "AssociateDefaultVocabulary"

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

	if input == nil {
		input = &AssociateDefaultVocabularyInput{}
	}

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

// AssociateDefaultVocabulary API operation for Amazon Connect Service.
//
// Associates an existing vocabulary as the default. Contact Lens for Amazon
// Connect uses the vocabulary in post-call and real-time analysis sessions
// for the given language.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation AssociateDefaultVocabulary for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/AssociateDefaultVocabulary
func (c *Connect) AssociateDefaultVocabulary(input *AssociateDefaultVocabularyInput) (*AssociateDefaultVocabularyOutput, error) {
	req, out := c.AssociateDefaultVocabularyRequest(input)
	return out, req.Send()
}

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

const opAssociateFlow = "AssociateFlow"

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

	if input == nil {
		input = &AssociateFlowInput{}
	}

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

// AssociateFlow API operation for Amazon Connect Service.
//
// Associates a connect resource to a flow.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation AssociateFlow for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/AssociateFlow
func (c *Connect) AssociateFlow(input *AssociateFlowInput) (*AssociateFlowOutput, error) {
	req, out := c.AssociateFlowRequest(input)
	return out, req.Send()
}

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

const opAssociateInstanceStorageConfig = "AssociateInstanceStorageConfig"

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

	if input == nil {
		input = &AssociateInstanceStorageConfigInput{}
	}

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

// AssociateInstanceStorageConfig API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Associates a storage resource type for the first time. You can only associate
// one type of storage configuration in a single call. This means, for example,
// that you can't define an instance with multiple S3 buckets for storing chat
// transcripts.
//
// This API does not create a resource that doesn't exist. It only associates
// it to the instance. Ensure that the resource being specified in the storage
// configuration, like an S3 bucket, exists when being used for association.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation AssociateInstanceStorageConfig for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ResourceConflictException
//     A resource already has that name.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/AssociateInstanceStorageConfig
func (c *Connect) AssociateInstanceStorageConfig(input *AssociateInstanceStorageConfigInput) (*AssociateInstanceStorageConfigOutput, error) {
	req, out := c.AssociateInstanceStorageConfigRequest(input)
	return out, req.Send()
}

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

const opAssociateLambdaFunction = "AssociateLambdaFunction"

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

	if input == nil {
		input = &AssociateLambdaFunctionInput{}
	}

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

// AssociateLambdaFunction API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Allows the specified Amazon Connect instance to access the specified Lambda
// function.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation AssociateLambdaFunction for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ResourceConflictException
//     A resource already has that name.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ServiceQuotaExceededException
//     The service quota has been exceeded.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/AssociateLambdaFunction
func (c *Connect) AssociateLambdaFunction(input *AssociateLambdaFunctionInput) (*AssociateLambdaFunctionOutput, error) {
	req, out := c.AssociateLambdaFunctionRequest(input)
	return out, req.Send()
}

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

const opAssociateLexBot = "AssociateLexBot"

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

	if input == nil {
		input = &AssociateLexBotInput{}
	}

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

// AssociateLexBot API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Allows the specified Amazon Connect instance to access the specified Amazon
// Lex V1 bot. This API only supports the association of Amazon Lex V1 bots.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation AssociateLexBot for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ResourceConflictException
//     A resource already has that name.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ServiceQuotaExceededException
//     The service quota has been exceeded.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/AssociateLexBot
func (c *Connect) AssociateLexBot(input *AssociateLexBotInput) (*AssociateLexBotOutput, error) {
	req, out := c.AssociateLexBotRequest(input)
	return out, req.Send()
}

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

const opAssociatePhoneNumberContactFlow = "AssociatePhoneNumberContactFlow"

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

	if input == nil {
		input = &AssociatePhoneNumberContactFlowInput{}
	}

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

// AssociatePhoneNumberContactFlow API operation for Amazon Connect Service.
//
// Associates a flow with a phone number claimed to your Amazon Connect instance.
//
// If the number is claimed to a traffic distribution group, and you are calling
// this API using an instance in the Amazon Web Services Region where the traffic
// distribution group was created, you can use either a full phone number ARN
// or UUID value for the PhoneNumberId URI request parameter. However, if the
// number is claimed to a traffic distribution group and you are calling this
// API using an instance in the alternate Amazon Web Services Region associated
// with the traffic distribution group, you must provide a full phone number
// ARN. If a UUID is provided in this scenario, you will receive a ResourceNotFoundException.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation AssociatePhoneNumberContactFlow for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/AssociatePhoneNumberContactFlow
func (c *Connect) AssociatePhoneNumberContactFlow(input *AssociatePhoneNumberContactFlowInput) (*AssociatePhoneNumberContactFlowOutput, error) {
	req, out := c.AssociatePhoneNumberContactFlowRequest(input)
	return out, req.Send()
}

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

const opAssociateQueueQuickConnects = "AssociateQueueQuickConnects"

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

	if input == nil {
		input = &AssociateQueueQuickConnectsInput{}
	}

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

// AssociateQueueQuickConnects API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Associates a set of quick connects with a queue.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation AssociateQueueQuickConnects for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - LimitExceededException
//     The allowed limit for the resource has been exceeded.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/AssociateQueueQuickConnects
func (c *Connect) AssociateQueueQuickConnects(input *AssociateQueueQuickConnectsInput) (*AssociateQueueQuickConnectsOutput, error) {
	req, out := c.AssociateQueueQuickConnectsRequest(input)
	return out, req.Send()
}

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

const opAssociateRoutingProfileQueues = "AssociateRoutingProfileQueues"

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

	if input == nil {
		input = &AssociateRoutingProfileQueuesInput{}
	}

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

// AssociateRoutingProfileQueues API operation for Amazon Connect Service.
//
// Associates a set of queues with a routing profile.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation AssociateRoutingProfileQueues for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/AssociateRoutingProfileQueues
func (c *Connect) AssociateRoutingProfileQueues(input *AssociateRoutingProfileQueuesInput) (*AssociateRoutingProfileQueuesOutput, error) {
	req, out := c.AssociateRoutingProfileQueuesRequest(input)
	return out, req.Send()
}

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

const opAssociateSecurityKey = "AssociateSecurityKey"

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

	if input == nil {
		input = &AssociateSecurityKeyInput{}
	}

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

// AssociateSecurityKey API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Associates a security key to the instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation AssociateSecurityKey for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ResourceConflictException
//     A resource already has that name.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ServiceQuotaExceededException
//     The service quota has been exceeded.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/AssociateSecurityKey
func (c *Connect) AssociateSecurityKey(input *AssociateSecurityKeyInput) (*AssociateSecurityKeyOutput, error) {
	req, out := c.AssociateSecurityKeyRequest(input)
	return out, req.Send()
}

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

const opAssociateTrafficDistributionGroupUser = "AssociateTrafficDistributionGroupUser"

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

	if input == nil {
		input = &AssociateTrafficDistributionGroupUserInput{}
	}

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

// AssociateTrafficDistributionGroupUser API operation for Amazon Connect Service.
//
// Associates an agent with a traffic distribution group.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation AssociateTrafficDistributionGroupUser for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ResourceConflictException
//     A resource already has that name.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/AssociateTrafficDistributionGroupUser
func (c *Connect) AssociateTrafficDistributionGroupUser(input *AssociateTrafficDistributionGroupUserInput) (*AssociateTrafficDistributionGroupUserOutput, error) {
	req, out := c.AssociateTrafficDistributionGroupUserRequest(input)
	return out, req.Send()
}

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

const opAssociateUserProficiencies = "AssociateUserProficiencies"

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

	if input == nil {
		input = &AssociateUserProficienciesInput{}
	}

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

// AssociateUserProficiencies API operation for Amazon Connect Service.
//
// >Associates a set of proficiencies with a user.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation AssociateUserProficiencies for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/AssociateUserProficiencies
func (c *Connect) AssociateUserProficiencies(input *AssociateUserProficienciesInput) (*AssociateUserProficienciesOutput, error) {
	req, out := c.AssociateUserProficienciesRequest(input)
	return out, req.Send()
}

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

const opBatchAssociateAnalyticsDataSet = "BatchAssociateAnalyticsDataSet"

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

	if input == nil {
		input = &BatchAssociateAnalyticsDataSetInput{}
	}

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

// BatchAssociateAnalyticsDataSet API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Associates a list of analytics datasets for a given Amazon Connect instance
// to a target account. You can associate multiple datasets in a single call.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation BatchAssociateAnalyticsDataSet for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/BatchAssociateAnalyticsDataSet
func (c *Connect) BatchAssociateAnalyticsDataSet(input *BatchAssociateAnalyticsDataSetInput) (*BatchAssociateAnalyticsDataSetOutput, error) {
	req, out := c.BatchAssociateAnalyticsDataSetRequest(input)
	return out, req.Send()
}

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

const opBatchDisassociateAnalyticsDataSet = "BatchDisassociateAnalyticsDataSet"

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

	if input == nil {
		input = &BatchDisassociateAnalyticsDataSetInput{}
	}

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

// BatchDisassociateAnalyticsDataSet API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Removes a list of analytics datasets associated with a given Amazon Connect
// instance. You can disassociate multiple datasets in a single call.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation BatchDisassociateAnalyticsDataSet for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/BatchDisassociateAnalyticsDataSet
func (c *Connect) BatchDisassociateAnalyticsDataSet(input *BatchDisassociateAnalyticsDataSetInput) (*BatchDisassociateAnalyticsDataSetOutput, error) {
	req, out := c.BatchDisassociateAnalyticsDataSetRequest(input)
	return out, req.Send()
}

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

const opBatchGetFlowAssociation = "BatchGetFlowAssociation"

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

	if input == nil {
		input = &BatchGetFlowAssociationInput{}
	}

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

// BatchGetFlowAssociation API operation for Amazon Connect Service.
//
// Retrieve the flow associations for the given resources.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation BatchGetFlowAssociation for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/BatchGetFlowAssociation
func (c *Connect) BatchGetFlowAssociation(input *BatchGetFlowAssociationInput) (*BatchGetFlowAssociationOutput, error) {
	req, out := c.BatchGetFlowAssociationRequest(input)
	return out, req.Send()
}

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

const opBatchPutContact = "BatchPutContact"

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

	if input == nil {
		input = &BatchPutContactInput{}
	}

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

// BatchPutContact API operation for Amazon Connect Service.
//
// Only the Amazon Connect outbound campaigns service principal is allowed to
// assume a role in your account and call this API.
//
// Allows you to create a batch of contacts in Amazon Connect. The outbound
// campaigns capability ingests dial requests via the PutDialRequestBatch (https://docs.aws.amazon.com/connect-outbound/latest/APIReference/API_PutDialRequestBatch.html)
// API. It then uses BatchPutContact to create contacts corresponding to those
// dial requests. If agents are available, the dial requests are dialed out,
// which results in a voice call. The resulting voice call uses the same contactId
// that was created by BatchPutContact.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation BatchPutContact for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - LimitExceededException
//     The allowed limit for the resource has been exceeded.
//
//   - IdempotencyException
//     An entity with the same name already exists.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/BatchPutContact
func (c *Connect) BatchPutContact(input *BatchPutContactInput) (*BatchPutContactOutput, error) {
	req, out := c.BatchPutContactRequest(input)
	return out, req.Send()
}

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

const opClaimPhoneNumber = "ClaimPhoneNumber"

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

	if input == nil {
		input = &ClaimPhoneNumberInput{}
	}

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

// ClaimPhoneNumber API operation for Amazon Connect Service.
//
// Claims an available phone number to your Amazon Connect instance or traffic
// distribution group. You can call this API only in the same Amazon Web Services
// Region where the Amazon Connect instance or traffic distribution group was
// created.
//
// For more information about how to use this operation, see Claim a phone number
// in your country (https://docs.aws.amazon.com/connect/latest/adminguide/claim-phone-number.html)
// and Claim phone numbers to traffic distribution groups (https://docs.aws.amazon.com/connect/latest/adminguide/claim-phone-numbers-traffic-distribution-groups.html)
// in the Amazon Connect Administrator Guide.
//
// You can call the SearchAvailablePhoneNumbers (https://docs.aws.amazon.com/connect/latest/APIReference/API_SearchAvailablePhoneNumbers.html)
// API for available phone numbers that you can claim. Call the DescribePhoneNumber
// (https://docs.aws.amazon.com/connect/latest/APIReference/API_DescribePhoneNumber.html)
// API to verify the status of a previous ClaimPhoneNumber (https://docs.aws.amazon.com/connect/latest/APIReference/API_ClaimPhoneNumber.html)
// operation.
//
// If you plan to claim and release numbers frequently during a 30 day period,
// contact us for a service quota exception. Otherwise, it is possible you will
// be blocked from claiming and releasing any more numbers until 30 days past
// the oldest number released has expired.
//
// By default you can claim and release up to 200% of your maximum number of
// active phone numbers during any 30 day period. If you claim and release phone
// numbers using the UI or API during a rolling 30 day cycle that exceeds 200%
// of your phone number service level quota, you will be blocked from claiming
// any more numbers until 30 days past the oldest number released has expired.
//
// For example, if you already have 99 claimed numbers and a service level quota
// of 99 phone numbers, and in any 30 day period you release 99, claim 99, and
// then release 99, you will have exceeded the 200% limit. At that point you
// are blocked from claiming any more numbers until you open an Amazon Web Services
// support ticket.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ClaimPhoneNumber for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - IdempotencyException
//     An entity with the same name already exists.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ClaimPhoneNumber
func (c *Connect) ClaimPhoneNumber(input *ClaimPhoneNumberInput) (*ClaimPhoneNumberOutput, error) {
	req, out := c.ClaimPhoneNumberRequest(input)
	return out, req.Send()
}

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

const opCreateAgentStatus = "CreateAgentStatus"

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

	if input == nil {
		input = &CreateAgentStatusInput{}
	}

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

// CreateAgentStatus API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Creates an agent status for the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation CreateAgentStatus for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - LimitExceededException
//     The allowed limit for the resource has been exceeded.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/CreateAgentStatus
func (c *Connect) CreateAgentStatus(input *CreateAgentStatusInput) (*CreateAgentStatusOutput, error) {
	req, out := c.CreateAgentStatusRequest(input)
	return out, req.Send()
}

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

const opCreateContactFlow = "CreateContactFlow"

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

	if input == nil {
		input = &CreateContactFlowInput{}
	}

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

// CreateContactFlow API operation for Amazon Connect Service.
//
// Creates a flow for the specified Amazon Connect instance.
//
// You can also create and update flows using the Amazon Connect Flow language
// (https://docs.aws.amazon.com/connect/latest/APIReference/flow-language.html).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation CreateContactFlow for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidContactFlowException
//     The flow is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
//   - LimitExceededException
//     The allowed limit for the resource has been exceeded.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/CreateContactFlow
func (c *Connect) CreateContactFlow(input *CreateContactFlowInput) (*CreateContactFlowOutput, error) {
	req, out := c.CreateContactFlowRequest(input)
	return out, req.Send()
}

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

const opCreateContactFlowModule = "CreateContactFlowModule"

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

	if input == nil {
		input = &CreateContactFlowModuleInput{}
	}

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

// CreateContactFlowModule API operation for Amazon Connect Service.
//
// Creates a flow module for the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation CreateContactFlowModule for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidContactFlowModuleException
//     The problems with the module. Please fix before trying again.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
//   - LimitExceededException
//     The allowed limit for the resource has been exceeded.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - IdempotencyException
//     An entity with the same name already exists.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/CreateContactFlowModule
func (c *Connect) CreateContactFlowModule(input *CreateContactFlowModuleInput) (*CreateContactFlowModuleOutput, error) {
	req, out := c.CreateContactFlowModuleRequest(input)
	return out, req.Send()
}

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

const opCreateEvaluationForm = "CreateEvaluationForm"

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

	if input == nil {
		input = &CreateEvaluationFormInput{}
	}

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

// CreateEvaluationForm API operation for Amazon Connect Service.
//
// Creates an evaluation form in the specified Amazon Connect instance. The
// form can be used to define questions related to agent performance, and create
// sections to organize such questions. Question and section identifiers cannot
// be duplicated within the same evaluation form.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation CreateEvaluationForm for usage and error information.
//
// Returned Error Types:
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - ServiceQuotaExceededException
//     The service quota has been exceeded.
//
//   - ResourceConflictException
//     A resource already has that name.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/CreateEvaluationForm
func (c *Connect) CreateEvaluationForm(input *CreateEvaluationFormInput) (*CreateEvaluationFormOutput, error) {
	req, out := c.CreateEvaluationFormRequest(input)
	return out, req.Send()
}

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

const opCreateHoursOfOperation = "CreateHoursOfOperation"

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

	if input == nil {
		input = &CreateHoursOfOperationInput{}
	}

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

// CreateHoursOfOperation API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Creates hours of operation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation CreateHoursOfOperation for usage and error information.
//
// Returned Error Types:
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - LimitExceededException
//     The allowed limit for the resource has been exceeded.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/CreateHoursOfOperation
func (c *Connect) CreateHoursOfOperation(input *CreateHoursOfOperationInput) (*CreateHoursOfOperationOutput, error) {
	req, out := c.CreateHoursOfOperationRequest(input)
	return out, req.Send()
}

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

const opCreateInstance = "CreateInstance"

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

	if input == nil {
		input = &CreateInstanceInput{}
	}

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

// CreateInstance API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Initiates an Amazon Connect instance with all the supported channels enabled.
// It does not attach any storage, such as Amazon Simple Storage Service (Amazon
// S3) or Amazon Kinesis. It also does not allow for any configurations on features,
// such as Contact Lens for Amazon Connect.
//
// Amazon Connect enforces a limit on the total number of instances that you
// can create or delete in 30 days. If you exceed this limit, you will get an
// error message indicating there has been an excessive number of attempts at
// creating or deleting instances. You must wait 30 days before you can restart
// creating and deleting instances in your account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation CreateInstance for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ServiceQuotaExceededException
//     The service quota has been exceeded.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/CreateInstance
func (c *Connect) CreateInstance(input *CreateInstanceInput) (*CreateInstanceOutput, error) {
	req, out := c.CreateInstanceRequest(input)
	return out, req.Send()
}

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

const opCreateIntegrationAssociation = "CreateIntegrationAssociation"

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

	if input == nil {
		input = &CreateIntegrationAssociationInput{}
	}

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

// CreateIntegrationAssociation API operation for Amazon Connect Service.
//
// Creates an Amazon Web Services resource association with an Amazon Connect
// instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation CreateIntegrationAssociation for usage and error information.
//
// Returned Error Types:
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/CreateIntegrationAssociation
func (c *Connect) CreateIntegrationAssociation(input *CreateIntegrationAssociationInput) (*CreateIntegrationAssociationOutput, error) {
	req, out := c.CreateIntegrationAssociationRequest(input)
	return out, req.Send()
}

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

const opCreateParticipant = "CreateParticipant"

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

	if input == nil {
		input = &CreateParticipantInput{}
	}

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

// CreateParticipant API operation for Amazon Connect Service.
//
// Adds a new participant into an on-going chat contact. For more information,
// see Customize chat flow experiences by integrating custom participants (https://docs.aws.amazon.com/connect/latest/adminguide/chat-customize-flow.html).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation CreateParticipant for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ServiceQuotaExceededException
//     The service quota has been exceeded.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/CreateParticipant
func (c *Connect) CreateParticipant(input *CreateParticipantInput) (*CreateParticipantOutput, error) {
	req, out := c.CreateParticipantRequest(input)
	return out, req.Send()
}

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

const opCreatePersistentContactAssociation = "CreatePersistentContactAssociation"

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

	if input == nil {
		input = &CreatePersistentContactAssociationInput{}
	}

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

// CreatePersistentContactAssociation API operation for Amazon Connect Service.
//
// Enables rehydration of chats for the lifespan of a contact. For more information
// about chat rehydration, see Enable persistent chat (https://docs.aws.amazon.com/connect/latest/adminguide/chat-persistence.html)
// in the Amazon Connect Administrator 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 Amazon Connect Service's
// API operation CreatePersistentContactAssociation for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/CreatePersistentContactAssociation
func (c *Connect) CreatePersistentContactAssociation(input *CreatePersistentContactAssociationInput) (*CreatePersistentContactAssociationOutput, error) {
	req, out := c.CreatePersistentContactAssociationRequest(input)
	return out, req.Send()
}

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

const opCreatePredefinedAttribute = "CreatePredefinedAttribute"

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

	if input == nil {
		input = &CreatePredefinedAttributeInput{}
	}

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

// CreatePredefinedAttribute API operation for Amazon Connect Service.
//
// Creates a new predefined attribute for the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation CreatePredefinedAttribute for usage and error information.
//
// Returned Error Types:
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - LimitExceededException
//     The allowed limit for the resource has been exceeded.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/CreatePredefinedAttribute
func (c *Connect) CreatePredefinedAttribute(input *CreatePredefinedAttributeInput) (*CreatePredefinedAttributeOutput, error) {
	req, out := c.CreatePredefinedAttributeRequest(input)
	return out, req.Send()
}

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

const opCreatePrompt = "CreatePrompt"

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

	if input == nil {
		input = &CreatePromptInput{}
	}

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

// CreatePrompt API operation for Amazon Connect Service.
//
// Creates a prompt. For more information about prompts, such as supported file
// types and maximum length, see Create prompts (https://docs.aws.amazon.com/connect/latest/adminguide/prompts.html)
// in the Amazon Connect Administrator's 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 Amazon Connect Service's
// API operation CreatePrompt for usage and error information.
//
// Returned Error Types:
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - LimitExceededException
//     The allowed limit for the resource has been exceeded.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/CreatePrompt
func (c *Connect) CreatePrompt(input *CreatePromptInput) (*CreatePromptOutput, error) {
	req, out := c.CreatePromptRequest(input)
	return out, req.Send()
}

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

const opCreateQueue = "CreateQueue"

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

	if input == nil {
		input = &CreateQueueInput{}
	}

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

// CreateQueue API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Creates a new queue for the specified Amazon Connect instance.
//
//   - If the phone number is claimed to a traffic distribution group that
//     was created in the same Region as the Amazon Connect instance where you
//     are calling this API, then you can use a full phone number ARN or a UUID
//     for OutboundCallerIdNumberId. However, if the phone number is claimed
//     to a traffic distribution group that is in one Region, and you are calling
//     this API from an instance in another Amazon Web Services Region that is
//     associated with the traffic distribution group, you must provide a full
//     phone number ARN. If a UUID is provided in this scenario, you will receive
//     a ResourceNotFoundException.
//
//   - Only use the phone number ARN format that doesn't contain instance in
//     the path, for example, arn:aws:connect:us-east-1:1234567890:phone-number/uuid.
//     This is the same ARN format that is returned when you call the ListPhoneNumbersV2
//     (https://docs.aws.amazon.com/connect/latest/APIReference/API_ListPhoneNumbersV2.html)
//     API.
//
//   - If you plan to use IAM policies to allow/deny access to this API for
//     phone number resources claimed to a traffic distribution group, see Allow
//     or Deny queue API actions for phone numbers in a replica Region (https://docs.aws.amazon.com/connect/latest/adminguide/security_iam_resource-level-policy-examples.html#allow-deny-queue-actions-replica-region).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation CreateQueue for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - LimitExceededException
//     The allowed limit for the resource has been exceeded.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/CreateQueue
func (c *Connect) CreateQueue(input *CreateQueueInput) (*CreateQueueOutput, error) {
	req, out := c.CreateQueueRequest(input)
	return out, req.Send()
}

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

const opCreateQuickConnect = "CreateQuickConnect"

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

	if input == nil {
		input = &CreateQuickConnectInput{}
	}

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

// CreateQuickConnect API operation for Amazon Connect Service.
//
// Creates a quick connect for the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation CreateQuickConnect for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - LimitExceededException
//     The allowed limit for the resource has been exceeded.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/CreateQuickConnect
func (c *Connect) CreateQuickConnect(input *CreateQuickConnectInput) (*CreateQuickConnectOutput, error) {
	req, out := c.CreateQuickConnectRequest(input)
	return out, req.Send()
}

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

const opCreateRoutingProfile = "CreateRoutingProfile"

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

	if input == nil {
		input = &CreateRoutingProfileInput{}
	}

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

// CreateRoutingProfile API operation for Amazon Connect Service.
//
// Creates a new routing profile.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation CreateRoutingProfile for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - LimitExceededException
//     The allowed limit for the resource has been exceeded.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/CreateRoutingProfile
func (c *Connect) CreateRoutingProfile(input *CreateRoutingProfileInput) (*CreateRoutingProfileOutput, error) {
	req, out := c.CreateRoutingProfileRequest(input)
	return out, req.Send()
}

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

const opCreateRule = "CreateRule"

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

	if input == nil {
		input = &CreateRuleInput{}
	}

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

// CreateRule API operation for Amazon Connect Service.
//
// Creates a rule for the specified Amazon Connect instance.
//
// Use the Rules Function language (https://docs.aws.amazon.com/connect/latest/APIReference/connect-rules-language.html)
// to code conditions for the rule.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation CreateRule for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ResourceConflictException
//     A resource already has that name.
//
//   - ServiceQuotaExceededException
//     The service quota has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/CreateRule
func (c *Connect) CreateRule(input *CreateRuleInput) (*CreateRuleOutput, error) {
	req, out := c.CreateRuleRequest(input)
	return out, req.Send()
}

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

const opCreateSecurityProfile = "CreateSecurityProfile"

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

	if input == nil {
		input = &CreateSecurityProfileInput{}
	}

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

// CreateSecurityProfile API operation for Amazon Connect Service.
//
// Creates a security profile.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation CreateSecurityProfile for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - LimitExceededException
//     The allowed limit for the resource has been exceeded.
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/CreateSecurityProfile
func (c *Connect) CreateSecurityProfile(input *CreateSecurityProfileInput) (*CreateSecurityProfileOutput, error) {
	req, out := c.CreateSecurityProfileRequest(input)
	return out, req.Send()
}

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

const opCreateTaskTemplate = "CreateTaskTemplate"

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

	if input == nil {
		input = &CreateTaskTemplateInput{}
	}

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

// CreateTaskTemplate API operation for Amazon Connect Service.
//
// Creates a new task template in the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation CreateTaskTemplate for usage and error information.
//
// Returned Error Types:
//
//   - PropertyValidationException
//     The property is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - ServiceQuotaExceededException
//     The service quota has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/CreateTaskTemplate
func (c *Connect) CreateTaskTemplate(input *CreateTaskTemplateInput) (*CreateTaskTemplateOutput, error) {
	req, out := c.CreateTaskTemplateRequest(input)
	return out, req.Send()
}

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

const opCreateTrafficDistributionGroup = "CreateTrafficDistributionGroup"

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

	if input == nil {
		input = &CreateTrafficDistributionGroupInput{}
	}

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

// CreateTrafficDistributionGroup API operation for Amazon Connect Service.
//
// Creates a traffic distribution group given an Amazon Connect instance that
// has been replicated.
//
// The SignInConfig distribution is available only on a default TrafficDistributionGroup
// (see the IsDefault parameter in the TrafficDistributionGroup (https://docs.aws.amazon.com/connect/latest/APIReference/API_TrafficDistributionGroup.html)
// data type). If you call UpdateTrafficDistribution with a modified SignInConfig
// and a non-default TrafficDistributionGroup, an InvalidRequestException is
// returned.
//
// For more information about creating traffic distribution groups, see Set
// up traffic distribution groups (https://docs.aws.amazon.com/connect/latest/adminguide/setup-traffic-distribution-groups.html)
// in the Amazon Connect Administrator 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 Amazon Connect Service's
// API operation CreateTrafficDistributionGroup for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ServiceQuotaExceededException
//     The service quota has been exceeded.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ResourceConflictException
//     A resource already has that name.
//
//   - ResourceNotReadyException
//     The resource is not ready.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/CreateTrafficDistributionGroup
func (c *Connect) CreateTrafficDistributionGroup(input *CreateTrafficDistributionGroupInput) (*CreateTrafficDistributionGroupOutput, error) {
	req, out := c.CreateTrafficDistributionGroupRequest(input)
	return out, req.Send()
}

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

const opCreateUseCase = "CreateUseCase"

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

	if input == nil {
		input = &CreateUseCaseInput{}
	}

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

// CreateUseCase API operation for Amazon Connect Service.
//
// Creates a use case for an integration association.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation CreateUseCase for usage and error information.
//
// Returned Error Types:
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/CreateUseCase
func (c *Connect) CreateUseCase(input *CreateUseCaseInput) (*CreateUseCaseOutput, error) {
	req, out := c.CreateUseCaseRequest(input)
	return out, req.Send()
}

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

const opCreateUser = "CreateUser"

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

	if input == nil {
		input = &CreateUserInput{}
	}

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

// CreateUser API operation for Amazon Connect Service.
//
// Creates a user account for the specified Amazon Connect instance.
//
// Certain UserIdentityInfo (https://docs.aws.amazon.com/connect/latest/APIReference/API_UserIdentityInfo.html)
// parameters are required in some situations. For example, Email is required
// if you are using SAML for identity management. FirstName and LastName are
// required if you are using Amazon Connect or SAML for identity management.
//
// For information about how to create users using the Amazon Connect admin
// website, see Add Users (https://docs.aws.amazon.com/connect/latest/adminguide/user-management.html)
// in the Amazon Connect Administrator 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 Amazon Connect Service's
// API operation CreateUser for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - LimitExceededException
//     The allowed limit for the resource has been exceeded.
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/CreateUser
func (c *Connect) CreateUser(input *CreateUserInput) (*CreateUserOutput, error) {
	req, out := c.CreateUserRequest(input)
	return out, req.Send()
}

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

const opCreateUserHierarchyGroup = "CreateUserHierarchyGroup"

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

	if input == nil {
		input = &CreateUserHierarchyGroupInput{}
	}

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

// CreateUserHierarchyGroup API operation for Amazon Connect Service.
//
// Creates a new user hierarchy group.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation CreateUserHierarchyGroup for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
//   - LimitExceededException
//     The allowed limit for the resource has been exceeded.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/CreateUserHierarchyGroup
func (c *Connect) CreateUserHierarchyGroup(input *CreateUserHierarchyGroupInput) (*CreateUserHierarchyGroupOutput, error) {
	req, out := c.CreateUserHierarchyGroupRequest(input)
	return out, req.Send()
}

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

const opCreateView = "CreateView"

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

	if input == nil {
		input = &CreateViewInput{}
	}

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

// CreateView API operation for Amazon Connect Service.
//
// Creates a new view with the possible status of SAVED or PUBLISHED.
//
// The views will have a unique name for each connect instance.
//
// It performs basic content validation if the status is SAVED or full content
// validation if the status is set to PUBLISHED. An error is returned if validation
// fails. It associates either the $SAVED qualifier or both of the $SAVED and
// $LATEST qualifiers with the provided view content based on the status. The
// view is idempotent if ClientToken is provided.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation CreateView for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
//   - ServiceQuotaExceededException
//     The service quota has been exceeded.
//
//   - TooManyRequestsException
//     Displayed when rate-related API limits are exceeded.
//
//   - ResourceInUseException
//     That resource is already in use. Please try another.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/CreateView
func (c *Connect) CreateView(input *CreateViewInput) (*CreateViewOutput, error) {
	req, out := c.CreateViewRequest(input)
	return out, req.Send()
}

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

const opCreateViewVersion = "CreateViewVersion"

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

	if input == nil {
		input = &CreateViewVersionInput{}
	}

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

// CreateViewVersion API operation for Amazon Connect Service.
//
// Publishes a new version of the view identifier.
//
// Versions are immutable and monotonically increasing.
//
// It returns the highest version if there is no change in content compared
// to that version. An error is displayed if the supplied ViewContentSha256
// is different from the ViewContentSha256 of the $LATEST alias.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation CreateViewVersion for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - TooManyRequestsException
//     Displayed when rate-related API limits are exceeded.
//
//   - ServiceQuotaExceededException
//     The service quota has been exceeded.
//
//   - ResourceInUseException
//     That resource is already in use. Please try another.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/CreateViewVersion
func (c *Connect) CreateViewVersion(input *CreateViewVersionInput) (*CreateViewVersionOutput, error) {
	req, out := c.CreateViewVersionRequest(input)
	return out, req.Send()
}

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

const opCreateVocabulary = "CreateVocabulary"

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

	if input == nil {
		input = &CreateVocabularyInput{}
	}

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

// CreateVocabulary API operation for Amazon Connect Service.
//
// Creates a custom vocabulary associated with your Amazon Connect instance.
// You can set a custom vocabulary to be your default vocabulary for a given
// language. Contact Lens for Amazon Connect uses the default vocabulary in
// post-call and real-time contact analysis sessions for that language.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation CreateVocabulary for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ResourceConflictException
//     A resource already has that name.
//
//   - ServiceQuotaExceededException
//     The service quota has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/CreateVocabulary
func (c *Connect) CreateVocabulary(input *CreateVocabularyInput) (*CreateVocabularyOutput, error) {
	req, out := c.CreateVocabularyRequest(input)
	return out, req.Send()
}

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

const opDeactivateEvaluationForm = "DeactivateEvaluationForm"

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

	if input == nil {
		input = &DeactivateEvaluationFormInput{}
	}

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

// DeactivateEvaluationForm API operation for Amazon Connect Service.
//
// Deactivates an evaluation form in the specified Amazon Connect instance.
// After a form is deactivated, it is no longer available for users to start
// new evaluations based on the form.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DeactivateEvaluationForm for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ResourceConflictException
//     A resource already has that name.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DeactivateEvaluationForm
func (c *Connect) DeactivateEvaluationForm(input *DeactivateEvaluationFormInput) (*DeactivateEvaluationFormOutput, error) {
	req, out := c.DeactivateEvaluationFormRequest(input)
	return out, req.Send()
}

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

const opDeleteContactEvaluation = "DeleteContactEvaluation"

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

	if input == nil {
		input = &DeleteContactEvaluationInput{}
	}

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

// DeleteContactEvaluation API operation for Amazon Connect Service.
//
// Deletes a contact evaluation in the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DeleteContactEvaluation for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ResourceConflictException
//     A resource already has that name.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DeleteContactEvaluation
func (c *Connect) DeleteContactEvaluation(input *DeleteContactEvaluationInput) (*DeleteContactEvaluationOutput, error) {
	req, out := c.DeleteContactEvaluationRequest(input)
	return out, req.Send()
}

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

const opDeleteContactFlow = "DeleteContactFlow"

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

	if input == nil {
		input = &DeleteContactFlowInput{}
	}

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

// DeleteContactFlow API operation for Amazon Connect Service.
//
// Deletes a flow for the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DeleteContactFlow for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DeleteContactFlow
func (c *Connect) DeleteContactFlow(input *DeleteContactFlowInput) (*DeleteContactFlowOutput, error) {
	req, out := c.DeleteContactFlowRequest(input)
	return out, req.Send()
}

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

const opDeleteContactFlowModule = "DeleteContactFlowModule"

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

	if input == nil {
		input = &DeleteContactFlowModuleInput{}
	}

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

// DeleteContactFlowModule API operation for Amazon Connect Service.
//
// Deletes the specified flow module.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DeleteContactFlowModule for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DeleteContactFlowModule
func (c *Connect) DeleteContactFlowModule(input *DeleteContactFlowModuleInput) (*DeleteContactFlowModuleOutput, error) {
	req, out := c.DeleteContactFlowModuleRequest(input)
	return out, req.Send()
}

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

const opDeleteEvaluationForm = "DeleteEvaluationForm"

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

	if input == nil {
		input = &DeleteEvaluationFormInput{}
	}

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

// DeleteEvaluationForm API operation for Amazon Connect Service.
//
// Deletes an evaluation form in the specified Amazon Connect instance.
//
//   - If the version property is provided, only the specified version of the
//     evaluation form is deleted.
//
//   - If no version is provided, then the full form (all versions) is deleted.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DeleteEvaluationForm for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ResourceConflictException
//     A resource already has that name.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DeleteEvaluationForm
func (c *Connect) DeleteEvaluationForm(input *DeleteEvaluationFormInput) (*DeleteEvaluationFormOutput, error) {
	req, out := c.DeleteEvaluationFormRequest(input)
	return out, req.Send()
}

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

const opDeleteHoursOfOperation = "DeleteHoursOfOperation"

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

	if input == nil {
		input = &DeleteHoursOfOperationInput{}
	}

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

// DeleteHoursOfOperation API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Deletes an hours of operation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DeleteHoursOfOperation for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DeleteHoursOfOperation
func (c *Connect) DeleteHoursOfOperation(input *DeleteHoursOfOperationInput) (*DeleteHoursOfOperationOutput, error) {
	req, out := c.DeleteHoursOfOperationRequest(input)
	return out, req.Send()
}

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

const opDeleteInstance = "DeleteInstance"

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

	if input == nil {
		input = &DeleteInstanceInput{}
	}

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

// DeleteInstance API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Deletes the Amazon Connect instance.
//
// Amazon Connect enforces a limit on the total number of instances that you
// can create or delete in 30 days. If you exceed this limit, you will get an
// error message indicating there has been an excessive number of attempts at
// creating or deleting instances. You must wait 30 days before you can restart
// creating and deleting instances in your account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DeleteInstance for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DeleteInstance
func (c *Connect) DeleteInstance(input *DeleteInstanceInput) (*DeleteInstanceOutput, error) {
	req, out := c.DeleteInstanceRequest(input)
	return out, req.Send()
}

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

const opDeleteIntegrationAssociation = "DeleteIntegrationAssociation"

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

	if input == nil {
		input = &DeleteIntegrationAssociationInput{}
	}

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

// DeleteIntegrationAssociation API operation for Amazon Connect Service.
//
// Deletes an Amazon Web Services resource association from an Amazon Connect
// instance. The association must not have any use cases associated with it.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DeleteIntegrationAssociation for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DeleteIntegrationAssociation
func (c *Connect) DeleteIntegrationAssociation(input *DeleteIntegrationAssociationInput) (*DeleteIntegrationAssociationOutput, error) {
	req, out := c.DeleteIntegrationAssociationRequest(input)
	return out, req.Send()
}

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

const opDeletePredefinedAttribute = "DeletePredefinedAttribute"

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

	if input == nil {
		input = &DeletePredefinedAttributeInput{}
	}

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

// DeletePredefinedAttribute API operation for Amazon Connect Service.
//
// Deletes a predefined attribute from the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DeletePredefinedAttribute for usage and error information.
//
// Returned Error Types:
//
//   - ResourceInUseException
//     That resource is already in use. Please try another.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DeletePredefinedAttribute
func (c *Connect) DeletePredefinedAttribute(input *DeletePredefinedAttributeInput) (*DeletePredefinedAttributeOutput, error) {
	req, out := c.DeletePredefinedAttributeRequest(input)
	return out, req.Send()
}

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

const opDeletePrompt = "DeletePrompt"

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

	if input == nil {
		input = &DeletePromptInput{}
	}

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

// DeletePrompt API operation for Amazon Connect Service.
//
// Deletes a prompt.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DeletePrompt for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DeletePrompt
func (c *Connect) DeletePrompt(input *DeletePromptInput) (*DeletePromptOutput, error) {
	req, out := c.DeletePromptRequest(input)
	return out, req.Send()
}

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

const opDeleteQueue = "DeleteQueue"

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

	if input == nil {
		input = &DeleteQueueInput{}
	}

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

// DeleteQueue API operation for Amazon Connect Service.
//
// Deletes a queue.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DeleteQueue for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ResourceInUseException
//     That resource is already in use. Please try another.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DeleteQueue
func (c *Connect) DeleteQueue(input *DeleteQueueInput) (*DeleteQueueOutput, error) {
	req, out := c.DeleteQueueRequest(input)
	return out, req.Send()
}

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

const opDeleteQuickConnect = "DeleteQuickConnect"

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

	if input == nil {
		input = &DeleteQuickConnectInput{}
	}

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

// DeleteQuickConnect API operation for Amazon Connect Service.
//
// Deletes a quick connect.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DeleteQuickConnect for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DeleteQuickConnect
func (c *Connect) DeleteQuickConnect(input *DeleteQuickConnectInput) (*DeleteQuickConnectOutput, error) {
	req, out := c.DeleteQuickConnectRequest(input)
	return out, req.Send()
}

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

const opDeleteRoutingProfile = "DeleteRoutingProfile"

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

	if input == nil {
		input = &DeleteRoutingProfileInput{}
	}

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

// DeleteRoutingProfile API operation for Amazon Connect Service.
//
// Deletes a routing profile.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DeleteRoutingProfile for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ResourceInUseException
//     That resource is already in use. Please try another.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DeleteRoutingProfile
func (c *Connect) DeleteRoutingProfile(input *DeleteRoutingProfileInput) (*DeleteRoutingProfileOutput, error) {
	req, out := c.DeleteRoutingProfileRequest(input)
	return out, req.Send()
}

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

const opDeleteRule = "DeleteRule"

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

	if input == nil {
		input = &DeleteRuleInput{}
	}

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

// DeleteRule API operation for Amazon Connect Service.
//
// Deletes a rule for the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DeleteRule for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DeleteRule
func (c *Connect) DeleteRule(input *DeleteRuleInput) (*DeleteRuleOutput, error) {
	req, out := c.DeleteRuleRequest(input)
	return out, req.Send()
}

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

const opDeleteSecurityProfile = "DeleteSecurityProfile"

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

	if input == nil {
		input = &DeleteSecurityProfileInput{}
	}

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

// DeleteSecurityProfile API operation for Amazon Connect Service.
//
// Deletes a security profile.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DeleteSecurityProfile for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ResourceInUseException
//     That resource is already in use. Please try another.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DeleteSecurityProfile
func (c *Connect) DeleteSecurityProfile(input *DeleteSecurityProfileInput) (*DeleteSecurityProfileOutput, error) {
	req, out := c.DeleteSecurityProfileRequest(input)
	return out, req.Send()
}

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

const opDeleteTaskTemplate = "DeleteTaskTemplate"

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

	if input == nil {
		input = &DeleteTaskTemplateInput{}
	}

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

// DeleteTaskTemplate API operation for Amazon Connect Service.
//
// Deletes the task template.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DeleteTaskTemplate for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DeleteTaskTemplate
func (c *Connect) DeleteTaskTemplate(input *DeleteTaskTemplateInput) (*DeleteTaskTemplateOutput, error) {
	req, out := c.DeleteTaskTemplateRequest(input)
	return out, req.Send()
}

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

const opDeleteTrafficDistributionGroup = "DeleteTrafficDistributionGroup"

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

	if input == nil {
		input = &DeleteTrafficDistributionGroupInput{}
	}

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

// DeleteTrafficDistributionGroup API operation for Amazon Connect Service.
//
// Deletes a traffic distribution group. This API can be called only in the
// Region where the traffic distribution group is created.
//
// For more information about deleting traffic distribution groups, see Delete
// traffic distribution groups (https://docs.aws.amazon.com/connect/latest/adminguide/delete-traffic-distribution-groups.html)
// in the Amazon Connect Administrator 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 Amazon Connect Service's
// API operation DeleteTrafficDistributionGroup for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ResourceInUseException
//     That resource is already in use. Please try another.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DeleteTrafficDistributionGroup
func (c *Connect) DeleteTrafficDistributionGroup(input *DeleteTrafficDistributionGroupInput) (*DeleteTrafficDistributionGroupOutput, error) {
	req, out := c.DeleteTrafficDistributionGroupRequest(input)
	return out, req.Send()
}

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

const opDeleteUseCase = "DeleteUseCase"

// DeleteUseCaseRequest generates a "aws/request.Request" representing the
// client's request for the DeleteUseCase operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeleteUseCase for more information on using the DeleteUseCase
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeleteUseCaseRequest method.
//	req, resp := client.DeleteUseCaseRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DeleteUseCase
func (c *Connect) DeleteUseCaseRequest(input *DeleteUseCaseInput) (req *request.Request, output *DeleteUseCaseOutput) {
	op := &request.Operation{
		Name:       opDeleteUseCase,
		HTTPMethod: "DELETE",
		HTTPPath:   "/instance/{InstanceId}/integration-associations/{IntegrationAssociationId}/use-cases/{UseCaseId}",
	}

	if input == nil {
		input = &DeleteUseCaseInput{}
	}

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

// DeleteUseCase API operation for Amazon Connect Service.
//
// Deletes a use case from an integration association.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DeleteUseCase for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DeleteUseCase
func (c *Connect) DeleteUseCase(input *DeleteUseCaseInput) (*DeleteUseCaseOutput, error) {
	req, out := c.DeleteUseCaseRequest(input)
	return out, req.Send()
}

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

const opDeleteUser = "DeleteUser"

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

	if input == nil {
		input = &DeleteUserInput{}
	}

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

// DeleteUser API operation for Amazon Connect Service.
//
// Deletes a user account from the specified Amazon Connect instance.
//
// For information about what happens to a user's data when their account is
// deleted, see Delete Users from Your Amazon Connect Instance (https://docs.aws.amazon.com/connect/latest/adminguide/delete-users.html)
// in the Amazon Connect Administrator 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 Amazon Connect Service's
// API operation DeleteUser for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DeleteUser
func (c *Connect) DeleteUser(input *DeleteUserInput) (*DeleteUserOutput, error) {
	req, out := c.DeleteUserRequest(input)
	return out, req.Send()
}

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

const opDeleteUserHierarchyGroup = "DeleteUserHierarchyGroup"

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

	if input == nil {
		input = &DeleteUserHierarchyGroupInput{}
	}

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

// DeleteUserHierarchyGroup API operation for Amazon Connect Service.
//
// Deletes an existing user hierarchy group. It must not be associated with
// any agents or have any active child groups.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DeleteUserHierarchyGroup for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ResourceInUseException
//     That resource is already in use. Please try another.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DeleteUserHierarchyGroup
func (c *Connect) DeleteUserHierarchyGroup(input *DeleteUserHierarchyGroupInput) (*DeleteUserHierarchyGroupOutput, error) {
	req, out := c.DeleteUserHierarchyGroupRequest(input)
	return out, req.Send()
}

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

const opDeleteView = "DeleteView"

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

	if input == nil {
		input = &DeleteViewInput{}
	}

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

// DeleteView API operation for Amazon Connect Service.
//
// Deletes the view entirely. It deletes the view and all associated qualifiers
// (versions and aliases).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DeleteView for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - TooManyRequestsException
//     Displayed when rate-related API limits are exceeded.
//
//   - ResourceInUseException
//     That resource is already in use. Please try another.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DeleteView
func (c *Connect) DeleteView(input *DeleteViewInput) (*DeleteViewOutput, error) {
	req, out := c.DeleteViewRequest(input)
	return out, req.Send()
}

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

const opDeleteViewVersion = "DeleteViewVersion"

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

	if input == nil {
		input = &DeleteViewVersionInput{}
	}

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

// DeleteViewVersion API operation for Amazon Connect Service.
//
// Deletes the particular version specified in ViewVersion identifier.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DeleteViewVersion for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - TooManyRequestsException
//     Displayed when rate-related API limits are exceeded.
//
//   - ResourceInUseException
//     That resource is already in use. Please try another.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DeleteViewVersion
func (c *Connect) DeleteViewVersion(input *DeleteViewVersionInput) (*DeleteViewVersionOutput, error) {
	req, out := c.DeleteViewVersionRequest(input)
	return out, req.Send()
}

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

const opDeleteVocabulary = "DeleteVocabulary"

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

	if input == nil {
		input = &DeleteVocabularyInput{}
	}

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

// DeleteVocabulary API operation for Amazon Connect Service.
//
// Deletes the vocabulary that has the given identifier.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DeleteVocabulary for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ResourceInUseException
//     That resource is already in use. Please try another.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DeleteVocabulary
func (c *Connect) DeleteVocabulary(input *DeleteVocabularyInput) (*DeleteVocabularyOutput, error) {
	req, out := c.DeleteVocabularyRequest(input)
	return out, req.Send()
}

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

const opDescribeAgentStatus = "DescribeAgentStatus"

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

	if input == nil {
		input = &DescribeAgentStatusInput{}
	}

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

// DescribeAgentStatus API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Describes an agent status.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DescribeAgentStatus for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DescribeAgentStatus
func (c *Connect) DescribeAgentStatus(input *DescribeAgentStatusInput) (*DescribeAgentStatusOutput, error) {
	req, out := c.DescribeAgentStatusRequest(input)
	return out, req.Send()
}

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

const opDescribeContact = "DescribeContact"

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

	if input == nil {
		input = &DescribeContactInput{}
	}

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

// DescribeContact API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Describes the specified contact.
//
// Contact information remains available in Amazon Connect for 24 months, and
// then it is deleted.
//
// Only data from November 12, 2021, and later is returned by this API.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DescribeContact for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DescribeContact
func (c *Connect) DescribeContact(input *DescribeContactInput) (*DescribeContactOutput, error) {
	req, out := c.DescribeContactRequest(input)
	return out, req.Send()
}

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

const opDescribeContactEvaluation = "DescribeContactEvaluation"

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

	if input == nil {
		input = &DescribeContactEvaluationInput{}
	}

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

// DescribeContactEvaluation API operation for Amazon Connect Service.
//
// Describes a contact evaluation in the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DescribeContactEvaluation for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DescribeContactEvaluation
func (c *Connect) DescribeContactEvaluation(input *DescribeContactEvaluationInput) (*DescribeContactEvaluationOutput, error) {
	req, out := c.DescribeContactEvaluationRequest(input)
	return out, req.Send()
}

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

const opDescribeContactFlow = "DescribeContactFlow"

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

	if input == nil {
		input = &DescribeContactFlowInput{}
	}

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

// DescribeContactFlow API operation for Amazon Connect Service.
//
// Describes the specified flow.
//
// You can also create and update flows using the Amazon Connect Flow language
// (https://docs.aws.amazon.com/connect/latest/APIReference/flow-language.html).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DescribeContactFlow for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ContactFlowNotPublishedException
//     The flow has not been published.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DescribeContactFlow
func (c *Connect) DescribeContactFlow(input *DescribeContactFlowInput) (*DescribeContactFlowOutput, error) {
	req, out := c.DescribeContactFlowRequest(input)
	return out, req.Send()
}

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

const opDescribeContactFlowModule = "DescribeContactFlowModule"

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

	if input == nil {
		input = &DescribeContactFlowModuleInput{}
	}

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

// DescribeContactFlowModule API operation for Amazon Connect Service.
//
// Describes the specified flow module.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DescribeContactFlowModule for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DescribeContactFlowModule
func (c *Connect) DescribeContactFlowModule(input *DescribeContactFlowModuleInput) (*DescribeContactFlowModuleOutput, error) {
	req, out := c.DescribeContactFlowModuleRequest(input)
	return out, req.Send()
}

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

const opDescribeEvaluationForm = "DescribeEvaluationForm"

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

	if input == nil {
		input = &DescribeEvaluationFormInput{}
	}

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

// DescribeEvaluationForm API operation for Amazon Connect Service.
//
// Describes an evaluation form in the specified Amazon Connect instance. If
// the version property is not provided, the latest version of the evaluation
// form is described.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DescribeEvaluationForm for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DescribeEvaluationForm
func (c *Connect) DescribeEvaluationForm(input *DescribeEvaluationFormInput) (*DescribeEvaluationFormOutput, error) {
	req, out := c.DescribeEvaluationFormRequest(input)
	return out, req.Send()
}

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

const opDescribeHoursOfOperation = "DescribeHoursOfOperation"

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

	if input == nil {
		input = &DescribeHoursOfOperationInput{}
	}

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

// DescribeHoursOfOperation API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Describes the hours of operation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DescribeHoursOfOperation for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DescribeHoursOfOperation
func (c *Connect) DescribeHoursOfOperation(input *DescribeHoursOfOperationInput) (*DescribeHoursOfOperationOutput, error) {
	req, out := c.DescribeHoursOfOperationRequest(input)
	return out, req.Send()
}

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

const opDescribeInstance = "DescribeInstance"

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

	if input == nil {
		input = &DescribeInstanceInput{}
	}

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

// DescribeInstance API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Returns the current state of the specified instance identifier. It tracks
// the instance while it is being created and returns an error status, if applicable.
//
// If an instance is not created successfully, the instance status reason field
// returns details relevant to the reason. The instance in a failed state is
// returned only for 24 hours after the CreateInstance API was invoked.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DescribeInstance for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DescribeInstance
func (c *Connect) DescribeInstance(input *DescribeInstanceInput) (*DescribeInstanceOutput, error) {
	req, out := c.DescribeInstanceRequest(input)
	return out, req.Send()
}

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

const opDescribeInstanceAttribute = "DescribeInstanceAttribute"

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

	if input == nil {
		input = &DescribeInstanceAttributeInput{}
	}

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

// DescribeInstanceAttribute API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Describes the specified instance attribute.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DescribeInstanceAttribute for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DescribeInstanceAttribute
func (c *Connect) DescribeInstanceAttribute(input *DescribeInstanceAttributeInput) (*DescribeInstanceAttributeOutput, error) {
	req, out := c.DescribeInstanceAttributeRequest(input)
	return out, req.Send()
}

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

const opDescribeInstanceStorageConfig = "DescribeInstanceStorageConfig"

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

	if input == nil {
		input = &DescribeInstanceStorageConfigInput{}
	}

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

// DescribeInstanceStorageConfig API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Retrieves the current storage configurations for the specified resource type,
// association ID, and instance ID.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DescribeInstanceStorageConfig for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DescribeInstanceStorageConfig
func (c *Connect) DescribeInstanceStorageConfig(input *DescribeInstanceStorageConfigInput) (*DescribeInstanceStorageConfigOutput, error) {
	req, out := c.DescribeInstanceStorageConfigRequest(input)
	return out, req.Send()
}

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

const opDescribePhoneNumber = "DescribePhoneNumber"

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

	if input == nil {
		input = &DescribePhoneNumberInput{}
	}

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

// DescribePhoneNumber API operation for Amazon Connect Service.
//
// Gets details and status of a phone number that’s claimed to your Amazon
// Connect instance or traffic distribution group.
//
// If the number is claimed to a traffic distribution group, and you are calling
// in the Amazon Web Services Region where the traffic distribution group was
// created, you can use either a phone number ARN or UUID value for the PhoneNumberId
// URI request parameter. However, if the number is claimed to a traffic distribution
// group and you are calling this API in the alternate Amazon Web Services Region
// associated with the traffic distribution group, you must provide a full phone
// number ARN. If a UUID is provided in this scenario, you will receive a ResourceNotFoundException.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DescribePhoneNumber for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DescribePhoneNumber
func (c *Connect) DescribePhoneNumber(input *DescribePhoneNumberInput) (*DescribePhoneNumberOutput, error) {
	req, out := c.DescribePhoneNumberRequest(input)
	return out, req.Send()
}

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

const opDescribePredefinedAttribute = "DescribePredefinedAttribute"

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

	if input == nil {
		input = &DescribePredefinedAttributeInput{}
	}

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

// DescribePredefinedAttribute API operation for Amazon Connect Service.
//
// Describes a predefined attribute for the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DescribePredefinedAttribute for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DescribePredefinedAttribute
func (c *Connect) DescribePredefinedAttribute(input *DescribePredefinedAttributeInput) (*DescribePredefinedAttributeOutput, error) {
	req, out := c.DescribePredefinedAttributeRequest(input)
	return out, req.Send()
}

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

const opDescribePrompt = "DescribePrompt"

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

	if input == nil {
		input = &DescribePromptInput{}
	}

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

// DescribePrompt API operation for Amazon Connect Service.
//
// Describes the prompt.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DescribePrompt for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DescribePrompt
func (c *Connect) DescribePrompt(input *DescribePromptInput) (*DescribePromptOutput, error) {
	req, out := c.DescribePromptRequest(input)
	return out, req.Send()
}

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

const opDescribeQueue = "DescribeQueue"

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

	if input == nil {
		input = &DescribeQueueInput{}
	}

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

// DescribeQueue API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Describes the specified queue.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DescribeQueue for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DescribeQueue
func (c *Connect) DescribeQueue(input *DescribeQueueInput) (*DescribeQueueOutput, error) {
	req, out := c.DescribeQueueRequest(input)
	return out, req.Send()
}

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

const opDescribeQuickConnect = "DescribeQuickConnect"

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

	if input == nil {
		input = &DescribeQuickConnectInput{}
	}

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

// DescribeQuickConnect API operation for Amazon Connect Service.
//
// Describes the quick connect.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DescribeQuickConnect for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DescribeQuickConnect
func (c *Connect) DescribeQuickConnect(input *DescribeQuickConnectInput) (*DescribeQuickConnectOutput, error) {
	req, out := c.DescribeQuickConnectRequest(input)
	return out, req.Send()
}

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

const opDescribeRoutingProfile = "DescribeRoutingProfile"

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

	if input == nil {
		input = &DescribeRoutingProfileInput{}
	}

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

// DescribeRoutingProfile API operation for Amazon Connect Service.
//
// Describes the specified routing profile.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DescribeRoutingProfile for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DescribeRoutingProfile
func (c *Connect) DescribeRoutingProfile(input *DescribeRoutingProfileInput) (*DescribeRoutingProfileOutput, error) {
	req, out := c.DescribeRoutingProfileRequest(input)
	return out, req.Send()
}

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

const opDescribeRule = "DescribeRule"

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

	if input == nil {
		input = &DescribeRuleInput{}
	}

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

// DescribeRule API operation for Amazon Connect Service.
//
// Describes a rule for the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DescribeRule for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DescribeRule
func (c *Connect) DescribeRule(input *DescribeRuleInput) (*DescribeRuleOutput, error) {
	req, out := c.DescribeRuleRequest(input)
	return out, req.Send()
}

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

const opDescribeSecurityProfile = "DescribeSecurityProfile"

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

	if input == nil {
		input = &DescribeSecurityProfileInput{}
	}

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

// DescribeSecurityProfile API operation for Amazon Connect Service.
//
// Gets basic information about the security profle.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DescribeSecurityProfile for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DescribeSecurityProfile
func (c *Connect) DescribeSecurityProfile(input *DescribeSecurityProfileInput) (*DescribeSecurityProfileOutput, error) {
	req, out := c.DescribeSecurityProfileRequest(input)
	return out, req.Send()
}

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

const opDescribeTrafficDistributionGroup = "DescribeTrafficDistributionGroup"

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

	if input == nil {
		input = &DescribeTrafficDistributionGroupInput{}
	}

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

// DescribeTrafficDistributionGroup API operation for Amazon Connect Service.
//
// Gets details and status of a traffic distribution group.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DescribeTrafficDistributionGroup for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DescribeTrafficDistributionGroup
func (c *Connect) DescribeTrafficDistributionGroup(input *DescribeTrafficDistributionGroupInput) (*DescribeTrafficDistributionGroupOutput, error) {
	req, out := c.DescribeTrafficDistributionGroupRequest(input)
	return out, req.Send()
}

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

const opDescribeUser = "DescribeUser"

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

	if input == nil {
		input = &DescribeUserInput{}
	}

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

// DescribeUser API operation for Amazon Connect Service.
//
// Describes the specified user. You can find the instance ID in the Amazon
// Connect console (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
// (it’s the final part of the ARN). The console does not display the user
// IDs. Instead, list the users and note the IDs provided in the output.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DescribeUser for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DescribeUser
func (c *Connect) DescribeUser(input *DescribeUserInput) (*DescribeUserOutput, error) {
	req, out := c.DescribeUserRequest(input)
	return out, req.Send()
}

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

const opDescribeUserHierarchyGroup = "DescribeUserHierarchyGroup"

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

	if input == nil {
		input = &DescribeUserHierarchyGroupInput{}
	}

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

// DescribeUserHierarchyGroup API operation for Amazon Connect Service.
//
// Describes the specified hierarchy group.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DescribeUserHierarchyGroup for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DescribeUserHierarchyGroup
func (c *Connect) DescribeUserHierarchyGroup(input *DescribeUserHierarchyGroupInput) (*DescribeUserHierarchyGroupOutput, error) {
	req, out := c.DescribeUserHierarchyGroupRequest(input)
	return out, req.Send()
}

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

const opDescribeUserHierarchyStructure = "DescribeUserHierarchyStructure"

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

	if input == nil {
		input = &DescribeUserHierarchyStructureInput{}
	}

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

// DescribeUserHierarchyStructure API operation for Amazon Connect Service.
//
// Describes the hierarchy structure of the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DescribeUserHierarchyStructure for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DescribeUserHierarchyStructure
func (c *Connect) DescribeUserHierarchyStructure(input *DescribeUserHierarchyStructureInput) (*DescribeUserHierarchyStructureOutput, error) {
	req, out := c.DescribeUserHierarchyStructureRequest(input)
	return out, req.Send()
}

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

const opDescribeView = "DescribeView"

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

	if input == nil {
		input = &DescribeViewInput{}
	}

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

// DescribeView API operation for Amazon Connect Service.
//
// Retrieves the view for the specified Amazon Connect instance and view identifier.
//
// The view identifier can be supplied as a ViewId or ARN.
//
// $SAVED needs to be supplied if a view is unpublished.
//
// The view identifier can contain an optional qualifier, for example, <view-id>:$SAVED,
// which is either an actual version number or an Amazon Connect managed qualifier
// $SAVED | $LATEST. If it is not supplied, then $LATEST is assumed for customer
// managed views and an error is returned if there is no published content available.
// Version 1 is assumed for Amazon Web Services managed views.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DescribeView for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - TooManyRequestsException
//     Displayed when rate-related API limits are exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DescribeView
func (c *Connect) DescribeView(input *DescribeViewInput) (*DescribeViewOutput, error) {
	req, out := c.DescribeViewRequest(input)
	return out, req.Send()
}

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

const opDescribeVocabulary = "DescribeVocabulary"

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

	if input == nil {
		input = &DescribeVocabularyInput{}
	}

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

// DescribeVocabulary API operation for Amazon Connect Service.
//
// Describes the specified vocabulary.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DescribeVocabulary for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DescribeVocabulary
func (c *Connect) DescribeVocabulary(input *DescribeVocabularyInput) (*DescribeVocabularyOutput, error) {
	req, out := c.DescribeVocabularyRequest(input)
	return out, req.Send()
}

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

const opDisassociateAnalyticsDataSet = "DisassociateAnalyticsDataSet"

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

	if input == nil {
		input = &DisassociateAnalyticsDataSetInput{}
	}

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

// DisassociateAnalyticsDataSet API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Removes the dataset ID associated with a given Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DisassociateAnalyticsDataSet for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DisassociateAnalyticsDataSet
func (c *Connect) DisassociateAnalyticsDataSet(input *DisassociateAnalyticsDataSetInput) (*DisassociateAnalyticsDataSetOutput, error) {
	req, out := c.DisassociateAnalyticsDataSetRequest(input)
	return out, req.Send()
}

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

const opDisassociateApprovedOrigin = "DisassociateApprovedOrigin"

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

	if input == nil {
		input = &DisassociateApprovedOriginInput{}
	}

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

// DisassociateApprovedOrigin API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Revokes access to integrated applications from Amazon Connect.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DisassociateApprovedOrigin for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DisassociateApprovedOrigin
func (c *Connect) DisassociateApprovedOrigin(input *DisassociateApprovedOriginInput) (*DisassociateApprovedOriginOutput, error) {
	req, out := c.DisassociateApprovedOriginRequest(input)
	return out, req.Send()
}

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

const opDisassociateBot = "DisassociateBot"

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

	if input == nil {
		input = &DisassociateBotInput{}
	}

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

// DisassociateBot API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Revokes authorization from the specified instance to access the specified
// Amazon Lex or Amazon Lex V2 bot.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DisassociateBot for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DisassociateBot
func (c *Connect) DisassociateBot(input *DisassociateBotInput) (*DisassociateBotOutput, error) {
	req, out := c.DisassociateBotRequest(input)
	return out, req.Send()
}

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

const opDisassociateFlow = "DisassociateFlow"

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

	if input == nil {
		input = &DisassociateFlowInput{}
	}

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

// DisassociateFlow API operation for Amazon Connect Service.
//
// Disassociates a connect resource from a flow.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DisassociateFlow for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DisassociateFlow
func (c *Connect) DisassociateFlow(input *DisassociateFlowInput) (*DisassociateFlowOutput, error) {
	req, out := c.DisassociateFlowRequest(input)
	return out, req.Send()
}

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

const opDisassociateInstanceStorageConfig = "DisassociateInstanceStorageConfig"

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

	if input == nil {
		input = &DisassociateInstanceStorageConfigInput{}
	}

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

// DisassociateInstanceStorageConfig API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Removes the storage type configurations for the specified resource type and
// association ID.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DisassociateInstanceStorageConfig for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DisassociateInstanceStorageConfig
func (c *Connect) DisassociateInstanceStorageConfig(input *DisassociateInstanceStorageConfigInput) (*DisassociateInstanceStorageConfigOutput, error) {
	req, out := c.DisassociateInstanceStorageConfigRequest(input)
	return out, req.Send()
}

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

const opDisassociateLambdaFunction = "DisassociateLambdaFunction"

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

	if input == nil {
		input = &DisassociateLambdaFunctionInput{}
	}

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

// DisassociateLambdaFunction API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Remove the Lambda function from the dropdown options available in the relevant
// flow blocks.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DisassociateLambdaFunction for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DisassociateLambdaFunction
func (c *Connect) DisassociateLambdaFunction(input *DisassociateLambdaFunctionInput) (*DisassociateLambdaFunctionOutput, error) {
	req, out := c.DisassociateLambdaFunctionRequest(input)
	return out, req.Send()
}

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

const opDisassociateLexBot = "DisassociateLexBot"

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

	if input == nil {
		input = &DisassociateLexBotInput{}
	}

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

// DisassociateLexBot API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Revokes authorization from the specified instance to access the specified
// Amazon Lex bot.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DisassociateLexBot for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DisassociateLexBot
func (c *Connect) DisassociateLexBot(input *DisassociateLexBotInput) (*DisassociateLexBotOutput, error) {
	req, out := c.DisassociateLexBotRequest(input)
	return out, req.Send()
}

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

const opDisassociatePhoneNumberContactFlow = "DisassociatePhoneNumberContactFlow"

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

	if input == nil {
		input = &DisassociatePhoneNumberContactFlowInput{}
	}

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

// DisassociatePhoneNumberContactFlow API operation for Amazon Connect Service.
//
// Removes the flow association from a phone number claimed to your Amazon Connect
// instance.
//
// If the number is claimed to a traffic distribution group, and you are calling
// this API using an instance in the Amazon Web Services Region where the traffic
// distribution group was created, you can use either a full phone number ARN
// or UUID value for the PhoneNumberId URI request parameter. However, if the
// number is claimed to a traffic distribution group and you are calling this
// API using an instance in the alternate Amazon Web Services Region associated
// with the traffic distribution group, you must provide a full phone number
// ARN. If a UUID is provided in this scenario, you will receive a ResourceNotFoundException.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DisassociatePhoneNumberContactFlow for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DisassociatePhoneNumberContactFlow
func (c *Connect) DisassociatePhoneNumberContactFlow(input *DisassociatePhoneNumberContactFlowInput) (*DisassociatePhoneNumberContactFlowOutput, error) {
	req, out := c.DisassociatePhoneNumberContactFlowRequest(input)
	return out, req.Send()
}

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

const opDisassociateQueueQuickConnects = "DisassociateQueueQuickConnects"

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

	if input == nil {
		input = &DisassociateQueueQuickConnectsInput{}
	}

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

// DisassociateQueueQuickConnects API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Disassociates a set of quick connects from a queue.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DisassociateQueueQuickConnects for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DisassociateQueueQuickConnects
func (c *Connect) DisassociateQueueQuickConnects(input *DisassociateQueueQuickConnectsInput) (*DisassociateQueueQuickConnectsOutput, error) {
	req, out := c.DisassociateQueueQuickConnectsRequest(input)
	return out, req.Send()
}

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

const opDisassociateRoutingProfileQueues = "DisassociateRoutingProfileQueues"

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

	if input == nil {
		input = &DisassociateRoutingProfileQueuesInput{}
	}

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

// DisassociateRoutingProfileQueues API operation for Amazon Connect Service.
//
// Disassociates a set of queues from a routing profile.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DisassociateRoutingProfileQueues for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DisassociateRoutingProfileQueues
func (c *Connect) DisassociateRoutingProfileQueues(input *DisassociateRoutingProfileQueuesInput) (*DisassociateRoutingProfileQueuesOutput, error) {
	req, out := c.DisassociateRoutingProfileQueuesRequest(input)
	return out, req.Send()
}

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

const opDisassociateSecurityKey = "DisassociateSecurityKey"

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

	if input == nil {
		input = &DisassociateSecurityKeyInput{}
	}

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

// DisassociateSecurityKey API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Deletes the specified security key.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DisassociateSecurityKey for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DisassociateSecurityKey
func (c *Connect) DisassociateSecurityKey(input *DisassociateSecurityKeyInput) (*DisassociateSecurityKeyOutput, error) {
	req, out := c.DisassociateSecurityKeyRequest(input)
	return out, req.Send()
}

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

const opDisassociateTrafficDistributionGroupUser = "DisassociateTrafficDistributionGroupUser"

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

	if input == nil {
		input = &DisassociateTrafficDistributionGroupUserInput{}
	}

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

// DisassociateTrafficDistributionGroupUser API operation for Amazon Connect Service.
//
// Disassociates an agent from a traffic distribution group.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DisassociateTrafficDistributionGroupUser for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ResourceConflictException
//     A resource already has that name.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DisassociateTrafficDistributionGroupUser
func (c *Connect) DisassociateTrafficDistributionGroupUser(input *DisassociateTrafficDistributionGroupUserInput) (*DisassociateTrafficDistributionGroupUserOutput, error) {
	req, out := c.DisassociateTrafficDistributionGroupUserRequest(input)
	return out, req.Send()
}

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

const opDisassociateUserProficiencies = "DisassociateUserProficiencies"

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

	if input == nil {
		input = &DisassociateUserProficienciesInput{}
	}

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

// DisassociateUserProficiencies API operation for Amazon Connect Service.
//
// Disassociates a set of proficiencies from a user.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DisassociateUserProficiencies for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DisassociateUserProficiencies
func (c *Connect) DisassociateUserProficiencies(input *DisassociateUserProficienciesInput) (*DisassociateUserProficienciesOutput, error) {
	req, out := c.DisassociateUserProficienciesRequest(input)
	return out, req.Send()
}

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

const opDismissUserContact = "DismissUserContact"

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

	if input == nil {
		input = &DismissUserContactInput{}
	}

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

// DismissUserContact API operation for Amazon Connect Service.
//
// Dismisses contacts from an agent’s CCP and returns the agent to an available
// state, which allows the agent to receive a new routed contact. Contacts can
// only be dismissed if they are in a MISSED, ERROR, ENDED, or REJECTED state
// in the Agent Event Stream (https://docs.aws.amazon.com/connect/latest/adminguide/about-contact-states.html).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation DismissUserContact for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/DismissUserContact
func (c *Connect) DismissUserContact(input *DismissUserContactInput) (*DismissUserContactOutput, error) {
	req, out := c.DismissUserContactRequest(input)
	return out, req.Send()
}

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

const opGetContactAttributes = "GetContactAttributes"

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

	if input == nil {
		input = &GetContactAttributesInput{}
	}

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

// GetContactAttributes API operation for Amazon Connect Service.
//
// Retrieves the contact attributes for the specified contact.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation GetContactAttributes for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/GetContactAttributes
func (c *Connect) GetContactAttributes(input *GetContactAttributesInput) (*GetContactAttributesOutput, error) {
	req, out := c.GetContactAttributesRequest(input)
	return out, req.Send()
}

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

const opGetCurrentMetricData = "GetCurrentMetricData"

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

	if input == nil {
		input = &GetCurrentMetricDataInput{}
	}

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

// GetCurrentMetricData API operation for Amazon Connect Service.
//
// Gets the real-time metric data from the specified Amazon Connect instance.
//
// For a description of each metric, see Real-time Metrics Definitions (https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html)
// in the Amazon Connect Administrator 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 Amazon Connect Service's
// API operation GetCurrentMetricData for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/GetCurrentMetricData
func (c *Connect) GetCurrentMetricData(input *GetCurrentMetricDataInput) (*GetCurrentMetricDataOutput, error) {
	req, out := c.GetCurrentMetricDataRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetCurrentUserData = "GetCurrentUserData"

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

	if input == nil {
		input = &GetCurrentUserDataInput{}
	}

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

// GetCurrentUserData API operation for Amazon Connect Service.
//
// Gets the real-time active user data from the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation GetCurrentUserData for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/GetCurrentUserData
func (c *Connect) GetCurrentUserData(input *GetCurrentUserDataInput) (*GetCurrentUserDataOutput, error) {
	req, out := c.GetCurrentUserDataRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetFederationToken = "GetFederationToken"

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

	if input == nil {
		input = &GetFederationTokenInput{}
	}

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

// GetFederationToken API operation for Amazon Connect Service.
//
// Supports SAML sign-in for Amazon Connect. Retrieves a token for federation.
// The token is for the Amazon Connect user which corresponds to the IAM credentials
// that were used to invoke this action.
//
// For more information about how SAML sign-in works in Amazon Connect, see
// Configure SAML with IAM for Amazon Connect in the Amazon Connect Administrator
// Guide. (https://docs.aws.amazon.com/connect/latest/adminguide/configure-saml.html)
//
// This API doesn't support root users. If you try to invoke GetFederationToken
// with root credentials, an error message similar to the following one appears:
//
// Provided identity: Principal: .... User: .... cannot be used for federation
// with Amazon Connect
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation GetFederationToken for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - UserNotFoundException
//     No user with the specified credentials was found in the Amazon Connect instance.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/GetFederationToken
func (c *Connect) GetFederationToken(input *GetFederationTokenInput) (*GetFederationTokenOutput, error) {
	req, out := c.GetFederationTokenRequest(input)
	return out, req.Send()
}

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

const opGetFlowAssociation = "GetFlowAssociation"

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

	if input == nil {
		input = &GetFlowAssociationInput{}
	}

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

// GetFlowAssociation API operation for Amazon Connect Service.
//
// Retrieves the flow associated for a given resource.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation GetFlowAssociation for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/GetFlowAssociation
func (c *Connect) GetFlowAssociation(input *GetFlowAssociationInput) (*GetFlowAssociationOutput, error) {
	req, out := c.GetFlowAssociationRequest(input)
	return out, req.Send()
}

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

const opGetMetricData = "GetMetricData"

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

	if input == nil {
		input = &GetMetricDataInput{}
	}

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

// GetMetricData API operation for Amazon Connect Service.
//
// Gets historical metric data from the specified Amazon Connect instance.
//
// For a description of each historical metric, see Historical Metrics Definitions
// (https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html)
// in the Amazon Connect Administrator Guide.
//
// We recommend using the GetMetricDataV2 (https://docs.aws.amazon.com/connect/latest/APIReference/API_GetMetricDataV2.html)
// API. It provides more flexibility, features, and the ability to query longer
// time ranges than GetMetricData. Use it to retrieve historical agent and contact
// metrics for the last 3 months, at varying intervals. You can also use it
// to build custom dashboards to measure historical queue and agent performance.
// For example, you can track the number of incoming contacts for the last 7
// days, with data split by day, to see how contact volume changed per day of
// the week.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation GetMetricData for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/GetMetricData
func (c *Connect) GetMetricData(input *GetMetricDataInput) (*GetMetricDataOutput, error) {
	req, out := c.GetMetricDataRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetMetricDataV2 = "GetMetricDataV2"

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

	if input == nil {
		input = &GetMetricDataV2Input{}
	}

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

// GetMetricDataV2 API operation for Amazon Connect Service.
//
// Gets metric data from the specified Amazon Connect instance.
//
// GetMetricDataV2 offers more features than GetMetricData (https://docs.aws.amazon.com/connect/latest/APIReference/API_GetMetricData.html),
// the previous version of this API. It has new metrics, offers filtering at
// a metric level, and offers the ability to filter and group data by channels,
// queues, routing profiles, agents, and agent hierarchy levels. It can retrieve
// historical data for the last 3 months, at varying intervals.
//
// For a description of the historical metrics that are supported by GetMetricDataV2
// and GetMetricData, see Historical metrics definitions (https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html)
// in the Amazon Connect Administrator's 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 Amazon Connect Service's
// API operation GetMetricDataV2 for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/GetMetricDataV2
func (c *Connect) GetMetricDataV2(input *GetMetricDataV2Input) (*GetMetricDataV2Output, error) {
	req, out := c.GetMetricDataV2Request(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetPromptFile = "GetPromptFile"

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

	if input == nil {
		input = &GetPromptFileInput{}
	}

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

// GetPromptFile API operation for Amazon Connect Service.
//
// Gets the prompt file.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation GetPromptFile for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/GetPromptFile
func (c *Connect) GetPromptFile(input *GetPromptFileInput) (*GetPromptFileOutput, error) {
	req, out := c.GetPromptFileRequest(input)
	return out, req.Send()
}

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

const opGetTaskTemplate = "GetTaskTemplate"

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

	if input == nil {
		input = &GetTaskTemplateInput{}
	}

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

// GetTaskTemplate API operation for Amazon Connect Service.
//
// Gets details about a specific task template in the specified Amazon Connect
// instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation GetTaskTemplate for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/GetTaskTemplate
func (c *Connect) GetTaskTemplate(input *GetTaskTemplateInput) (*GetTaskTemplateOutput, error) {
	req, out := c.GetTaskTemplateRequest(input)
	return out, req.Send()
}

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

const opGetTrafficDistribution = "GetTrafficDistribution"

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

	if input == nil {
		input = &GetTrafficDistributionInput{}
	}

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

// GetTrafficDistribution API operation for Amazon Connect Service.
//
// Retrieves the current traffic distribution for a given traffic distribution
// group.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation GetTrafficDistribution for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/GetTrafficDistribution
func (c *Connect) GetTrafficDistribution(input *GetTrafficDistributionInput) (*GetTrafficDistributionOutput, error) {
	req, out := c.GetTrafficDistributionRequest(input)
	return out, req.Send()
}

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

const opImportPhoneNumber = "ImportPhoneNumber"

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

	if input == nil {
		input = &ImportPhoneNumberInput{}
	}

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

// ImportPhoneNumber API operation for Amazon Connect Service.
//
// Imports a claimed phone number from an external service, such as Amazon Pinpoint,
// into an Amazon Connect instance. You can call this API only in the same Amazon
// Web Services Region where the Amazon Connect instance was created.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ImportPhoneNumber for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - IdempotencyException
//     An entity with the same name already exists.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ImportPhoneNumber
func (c *Connect) ImportPhoneNumber(input *ImportPhoneNumberInput) (*ImportPhoneNumberOutput, error) {
	req, out := c.ImportPhoneNumberRequest(input)
	return out, req.Send()
}

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

const opListAgentStatuses = "ListAgentStatuses"

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

	if input == nil {
		input = &ListAgentStatusesInput{}
	}

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

// ListAgentStatuses API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Lists agent statuses.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListAgentStatuses for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListAgentStatuses
func (c *Connect) ListAgentStatuses(input *ListAgentStatusesInput) (*ListAgentStatusesOutput, error) {
	req, out := c.ListAgentStatusesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListAnalyticsDataAssociations = "ListAnalyticsDataAssociations"

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

	if input == nil {
		input = &ListAnalyticsDataAssociationsInput{}
	}

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

// ListAnalyticsDataAssociations API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Lists the association status of requested dataset ID for a given Amazon Connect
// instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListAnalyticsDataAssociations for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListAnalyticsDataAssociations
func (c *Connect) ListAnalyticsDataAssociations(input *ListAnalyticsDataAssociationsInput) (*ListAnalyticsDataAssociationsOutput, error) {
	req, out := c.ListAnalyticsDataAssociationsRequest(input)
	return out, req.Send()
}

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

const opListApprovedOrigins = "ListApprovedOrigins"

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

	if input == nil {
		input = &ListApprovedOriginsInput{}
	}

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

// ListApprovedOrigins API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Returns a paginated list of all approved origins associated with the instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListApprovedOrigins for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListApprovedOrigins
func (c *Connect) ListApprovedOrigins(input *ListApprovedOriginsInput) (*ListApprovedOriginsOutput, error) {
	req, out := c.ListApprovedOriginsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListBots = "ListBots"

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

	if input == nil {
		input = &ListBotsInput{}
	}

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

// ListBots API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// For the specified version of Amazon Lex, returns a paginated list of all
// the Amazon Lex bots currently associated with the instance. Use this API
// to returns both Amazon Lex V1 and V2 bots.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListBots for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListBots
func (c *Connect) ListBots(input *ListBotsInput) (*ListBotsOutput, error) {
	req, out := c.ListBotsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListContactEvaluations = "ListContactEvaluations"

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

	if input == nil {
		input = &ListContactEvaluationsInput{}
	}

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

// ListContactEvaluations API operation for Amazon Connect Service.
//
// Lists contact evaluations in the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListContactEvaluations for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListContactEvaluations
func (c *Connect) ListContactEvaluations(input *ListContactEvaluationsInput) (*ListContactEvaluationsOutput, error) {
	req, out := c.ListContactEvaluationsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListContactFlowModules = "ListContactFlowModules"

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

	if input == nil {
		input = &ListContactFlowModulesInput{}
	}

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

// ListContactFlowModules API operation for Amazon Connect Service.
//
// Provides information about the flow modules for the specified Amazon Connect
// instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListContactFlowModules for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListContactFlowModules
func (c *Connect) ListContactFlowModules(input *ListContactFlowModulesInput) (*ListContactFlowModulesOutput, error) {
	req, out := c.ListContactFlowModulesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListContactFlows = "ListContactFlows"

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

	if input == nil {
		input = &ListContactFlowsInput{}
	}

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

// ListContactFlows API operation for Amazon Connect Service.
//
// Provides information about the flows for the specified Amazon Connect instance.
//
// You can also create and update flows using the Amazon Connect Flow language
// (https://docs.aws.amazon.com/connect/latest/APIReference/flow-language.html).
//
// For more information about flows, see Flows (https://docs.aws.amazon.com/connect/latest/adminguide/concepts-contact-flows.html)
// in the Amazon Connect Administrator 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 Amazon Connect Service's
// API operation ListContactFlows for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListContactFlows
func (c *Connect) ListContactFlows(input *ListContactFlowsInput) (*ListContactFlowsOutput, error) {
	req, out := c.ListContactFlowsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListContactReferences = "ListContactReferences"

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

	if input == nil {
		input = &ListContactReferencesInput{}
	}

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

// ListContactReferences API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// For the specified referenceTypes, returns a list of references associated
// with the contact.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListContactReferences for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListContactReferences
func (c *Connect) ListContactReferences(input *ListContactReferencesInput) (*ListContactReferencesOutput, error) {
	req, out := c.ListContactReferencesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListDefaultVocabularies = "ListDefaultVocabularies"

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

	if input == nil {
		input = &ListDefaultVocabulariesInput{}
	}

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

// ListDefaultVocabularies API operation for Amazon Connect Service.
//
// Lists the default vocabularies for the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListDefaultVocabularies for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListDefaultVocabularies
func (c *Connect) ListDefaultVocabularies(input *ListDefaultVocabulariesInput) (*ListDefaultVocabulariesOutput, error) {
	req, out := c.ListDefaultVocabulariesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListEvaluationFormVersions = "ListEvaluationFormVersions"

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

	if input == nil {
		input = &ListEvaluationFormVersionsInput{}
	}

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

// ListEvaluationFormVersions API operation for Amazon Connect Service.
//
// Lists versions of an evaluation form in the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListEvaluationFormVersions for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListEvaluationFormVersions
func (c *Connect) ListEvaluationFormVersions(input *ListEvaluationFormVersionsInput) (*ListEvaluationFormVersionsOutput, error) {
	req, out := c.ListEvaluationFormVersionsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListEvaluationForms = "ListEvaluationForms"

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

	if input == nil {
		input = &ListEvaluationFormsInput{}
	}

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

// ListEvaluationForms API operation for Amazon Connect Service.
//
// Lists evaluation forms in the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListEvaluationForms for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListEvaluationForms
func (c *Connect) ListEvaluationForms(input *ListEvaluationFormsInput) (*ListEvaluationFormsOutput, error) {
	req, out := c.ListEvaluationFormsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListFlowAssociations = "ListFlowAssociations"

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

	if input == nil {
		input = &ListFlowAssociationsInput{}
	}

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

// ListFlowAssociations API operation for Amazon Connect Service.
//
// List the flow association based on the filters.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListFlowAssociations for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListFlowAssociations
func (c *Connect) ListFlowAssociations(input *ListFlowAssociationsInput) (*ListFlowAssociationsOutput, error) {
	req, out := c.ListFlowAssociationsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListHoursOfOperations = "ListHoursOfOperations"

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

	if input == nil {
		input = &ListHoursOfOperationsInput{}
	}

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

// ListHoursOfOperations API operation for Amazon Connect Service.
//
// Provides information about the hours of operation for the specified Amazon
// Connect instance.
//
// For more information about hours of operation, see Set the Hours of Operation
// for a Queue (https://docs.aws.amazon.com/connect/latest/adminguide/set-hours-operation.html)
// in the Amazon Connect Administrator 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 Amazon Connect Service's
// API operation ListHoursOfOperations for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListHoursOfOperations
func (c *Connect) ListHoursOfOperations(input *ListHoursOfOperationsInput) (*ListHoursOfOperationsOutput, error) {
	req, out := c.ListHoursOfOperationsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListInstanceAttributes = "ListInstanceAttributes"

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

	if input == nil {
		input = &ListInstanceAttributesInput{}
	}

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

// ListInstanceAttributes API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Returns a paginated list of all attribute types for the given instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListInstanceAttributes for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListInstanceAttributes
func (c *Connect) ListInstanceAttributes(input *ListInstanceAttributesInput) (*ListInstanceAttributesOutput, error) {
	req, out := c.ListInstanceAttributesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListInstanceStorageConfigs = "ListInstanceStorageConfigs"

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

	if input == nil {
		input = &ListInstanceStorageConfigsInput{}
	}

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

// ListInstanceStorageConfigs API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Returns a paginated list of storage configs for the identified instance and
// resource type.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListInstanceStorageConfigs for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListInstanceStorageConfigs
func (c *Connect) ListInstanceStorageConfigs(input *ListInstanceStorageConfigsInput) (*ListInstanceStorageConfigsOutput, error) {
	req, out := c.ListInstanceStorageConfigsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListInstances = "ListInstances"

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

	if input == nil {
		input = &ListInstancesInput{}
	}

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

// ListInstances API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Return a list of instances which are in active state, creation-in-progress
// state, and failed state. Instances that aren't successfully created (they
// are in a failed state) are returned only for 24 hours after the CreateInstance
// API was invoked.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListInstances for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListInstances
func (c *Connect) ListInstances(input *ListInstancesInput) (*ListInstancesOutput, error) {
	req, out := c.ListInstancesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListIntegrationAssociations = "ListIntegrationAssociations"

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

	if input == nil {
		input = &ListIntegrationAssociationsInput{}
	}

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

// ListIntegrationAssociations API operation for Amazon Connect Service.
//
// Provides summary information about the Amazon Web Services resource associations
// for the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListIntegrationAssociations for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListIntegrationAssociations
func (c *Connect) ListIntegrationAssociations(input *ListIntegrationAssociationsInput) (*ListIntegrationAssociationsOutput, error) {
	req, out := c.ListIntegrationAssociationsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListLambdaFunctions = "ListLambdaFunctions"

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

	if input == nil {
		input = &ListLambdaFunctionsInput{}
	}

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

// ListLambdaFunctions API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Returns a paginated list of all Lambda functions that display in the dropdown
// options in the relevant flow blocks.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListLambdaFunctions for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListLambdaFunctions
func (c *Connect) ListLambdaFunctions(input *ListLambdaFunctionsInput) (*ListLambdaFunctionsOutput, error) {
	req, out := c.ListLambdaFunctionsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListLexBots = "ListLexBots"

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

	if input == nil {
		input = &ListLexBotsInput{}
	}

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

// ListLexBots API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Returns a paginated list of all the Amazon Lex V1 bots currently associated
// with the instance. To return both Amazon Lex V1 and V2 bots, use the ListBots
// (https://docs.aws.amazon.com/connect/latest/APIReference/API_ListBots.html)
// API.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListLexBots for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListLexBots
func (c *Connect) ListLexBots(input *ListLexBotsInput) (*ListLexBotsOutput, error) {
	req, out := c.ListLexBotsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListPhoneNumbers = "ListPhoneNumbers"

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

	if input == nil {
		input = &ListPhoneNumbersInput{}
	}

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

// ListPhoneNumbers API operation for Amazon Connect Service.
//
// Provides information about the phone numbers for the specified Amazon Connect
// instance.
//
// For more information about phone numbers, see Set Up Phone Numbers for Your
// Contact Center (https://docs.aws.amazon.com/connect/latest/adminguide/contact-center-phone-number.html)
// in the Amazon Connect Administrator Guide.
//
//   - We recommend using ListPhoneNumbersV2 (https://docs.aws.amazon.com/connect/latest/APIReference/API_ListPhoneNumbersV2.html)
//     to return phone number types. ListPhoneNumbers doesn't support number
//     types UIFN, SHARED, THIRD_PARTY_TF, and THIRD_PARTY_DID. While it returns
//     numbers of those types, it incorrectly lists them as TOLL_FREE or DID.
//
//   - The phone number Arn value that is returned from each of the items in
//     the PhoneNumberSummaryList (https://docs.aws.amazon.com/connect/latest/APIReference/API_ListPhoneNumbers.html#connect-ListPhoneNumbers-response-PhoneNumberSummaryList)
//     cannot be used to tag phone number resources. It will fail with a ResourceNotFoundException.
//     Instead, use the ListPhoneNumbersV2 (https://docs.aws.amazon.com/connect/latest/APIReference/API_ListPhoneNumbersV2.html)
//     API. It returns the new phone number ARN that can be used to tag phone
//     number resources.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListPhoneNumbers for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListPhoneNumbers
func (c *Connect) ListPhoneNumbers(input *ListPhoneNumbersInput) (*ListPhoneNumbersOutput, error) {
	req, out := c.ListPhoneNumbersRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListPhoneNumbersV2 = "ListPhoneNumbersV2"

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

	if input == nil {
		input = &ListPhoneNumbersV2Input{}
	}

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

// ListPhoneNumbersV2 API operation for Amazon Connect Service.
//
// Lists phone numbers claimed to your Amazon Connect instance or traffic distribution
// group. If the provided TargetArn is a traffic distribution group, you can
// call this API in both Amazon Web Services Regions associated with traffic
// distribution group.
//
// For more information about phone numbers, see Set Up Phone Numbers for Your
// Contact Center (https://docs.aws.amazon.com/connect/latest/adminguide/contact-center-phone-number.html)
// in the Amazon Connect Administrator Guide.
//
//   - When given an instance ARN, ListPhoneNumbersV2 returns only the phone
//     numbers claimed to the instance.
//
//   - When given a traffic distribution group ARN ListPhoneNumbersV2 returns
//     only the phone numbers claimed to the traffic distribution group.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListPhoneNumbersV2 for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListPhoneNumbersV2
func (c *Connect) ListPhoneNumbersV2(input *ListPhoneNumbersV2Input) (*ListPhoneNumbersV2Output, error) {
	req, out := c.ListPhoneNumbersV2Request(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListPredefinedAttributes = "ListPredefinedAttributes"

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

	if input == nil {
		input = &ListPredefinedAttributesInput{}
	}

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

// ListPredefinedAttributes API operation for Amazon Connect Service.
//
// Lists predefined attributes for the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListPredefinedAttributes for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListPredefinedAttributes
func (c *Connect) ListPredefinedAttributes(input *ListPredefinedAttributesInput) (*ListPredefinedAttributesOutput, error) {
	req, out := c.ListPredefinedAttributesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListPrompts = "ListPrompts"

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

	if input == nil {
		input = &ListPromptsInput{}
	}

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

// ListPrompts API operation for Amazon Connect Service.
//
// Provides information about the prompts for the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListPrompts for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListPrompts
func (c *Connect) ListPrompts(input *ListPromptsInput) (*ListPromptsOutput, error) {
	req, out := c.ListPromptsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListQueueQuickConnects = "ListQueueQuickConnects"

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

	if input == nil {
		input = &ListQueueQuickConnectsInput{}
	}

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

// ListQueueQuickConnects API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Lists the quick connects associated with a queue.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListQueueQuickConnects for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListQueueQuickConnects
func (c *Connect) ListQueueQuickConnects(input *ListQueueQuickConnectsInput) (*ListQueueQuickConnectsOutput, error) {
	req, out := c.ListQueueQuickConnectsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListQueues = "ListQueues"

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

	if input == nil {
		input = &ListQueuesInput{}
	}

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

// ListQueues API operation for Amazon Connect Service.
//
// Provides information about the queues for the specified Amazon Connect instance.
//
// If you do not specify a QueueTypes parameter, both standard and agent queues
// are returned. This might cause an unexpected truncation of results if you
// have more than 1000 agents and you limit the number of results of the API
// call in code.
//
// For more information about queues, see Queues: Standard and Agent (https://docs.aws.amazon.com/connect/latest/adminguide/concepts-queues-standard-and-agent.html)
// in the Amazon Connect Administrator 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 Amazon Connect Service's
// API operation ListQueues for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListQueues
func (c *Connect) ListQueues(input *ListQueuesInput) (*ListQueuesOutput, error) {
	req, out := c.ListQueuesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListQuickConnects = "ListQuickConnects"

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

	if input == nil {
		input = &ListQuickConnectsInput{}
	}

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

// ListQuickConnects API operation for Amazon Connect Service.
//
// Provides information about the quick connects for the specified Amazon Connect
// instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListQuickConnects for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListQuickConnects
func (c *Connect) ListQuickConnects(input *ListQuickConnectsInput) (*ListQuickConnectsOutput, error) {
	req, out := c.ListQuickConnectsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListRealtimeContactAnalysisSegmentsV2 = "ListRealtimeContactAnalysisSegmentsV2"

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

	if input == nil {
		input = &ListRealtimeContactAnalysisSegmentsV2Input{}
	}

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

// ListRealtimeContactAnalysisSegmentsV2 API operation for Amazon Connect Service.
//
// Provides a list of analysis segments for a real-time analysis session.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListRealtimeContactAnalysisSegmentsV2 for usage and error information.
//
// Returned Error Types:
//
//   - OutputTypeNotFoundException
//     Thrown for analyzed content when requested OutputType was not enabled for
//     a given contact. For example, if an OutputType.Raw was requested for a contact
//     that had `RedactedOnly` Redaction policy set in Contact flow.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListRealtimeContactAnalysisSegmentsV2
func (c *Connect) ListRealtimeContactAnalysisSegmentsV2(input *ListRealtimeContactAnalysisSegmentsV2Input) (*ListRealtimeContactAnalysisSegmentsV2Output, error) {
	req, out := c.ListRealtimeContactAnalysisSegmentsV2Request(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListRoutingProfileQueues = "ListRoutingProfileQueues"

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

	if input == nil {
		input = &ListRoutingProfileQueuesInput{}
	}

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

// ListRoutingProfileQueues API operation for Amazon Connect Service.
//
// Lists the queues associated with a routing profile.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListRoutingProfileQueues for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListRoutingProfileQueues
func (c *Connect) ListRoutingProfileQueues(input *ListRoutingProfileQueuesInput) (*ListRoutingProfileQueuesOutput, error) {
	req, out := c.ListRoutingProfileQueuesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListRoutingProfiles = "ListRoutingProfiles"

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

	if input == nil {
		input = &ListRoutingProfilesInput{}
	}

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

// ListRoutingProfiles API operation for Amazon Connect Service.
//
// Provides summary information about the routing profiles for the specified
// Amazon Connect instance.
//
// For more information about routing profiles, see Routing Profiles (https://docs.aws.amazon.com/connect/latest/adminguide/concepts-routing.html)
// and Create a Routing Profile (https://docs.aws.amazon.com/connect/latest/adminguide/routing-profiles.html)
// in the Amazon Connect Administrator 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 Amazon Connect Service's
// API operation ListRoutingProfiles for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListRoutingProfiles
func (c *Connect) ListRoutingProfiles(input *ListRoutingProfilesInput) (*ListRoutingProfilesOutput, error) {
	req, out := c.ListRoutingProfilesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListRules = "ListRules"

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

	if input == nil {
		input = &ListRulesInput{}
	}

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

// ListRules API operation for Amazon Connect Service.
//
// List all rules for the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListRules for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListRules
func (c *Connect) ListRules(input *ListRulesInput) (*ListRulesOutput, error) {
	req, out := c.ListRulesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListSecurityKeys = "ListSecurityKeys"

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

	if input == nil {
		input = &ListSecurityKeysInput{}
	}

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

// ListSecurityKeys API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Returns a paginated list of all security keys associated with the instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListSecurityKeys for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListSecurityKeys
func (c *Connect) ListSecurityKeys(input *ListSecurityKeysInput) (*ListSecurityKeysOutput, error) {
	req, out := c.ListSecurityKeysRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListSecurityProfileApplications = "ListSecurityProfileApplications"

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

	if input == nil {
		input = &ListSecurityProfileApplicationsInput{}
	}

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

// ListSecurityProfileApplications API operation for Amazon Connect Service.
//
// Returns a list of third-party applications in a specific security profile.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListSecurityProfileApplications for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListSecurityProfileApplications
func (c *Connect) ListSecurityProfileApplications(input *ListSecurityProfileApplicationsInput) (*ListSecurityProfileApplicationsOutput, error) {
	req, out := c.ListSecurityProfileApplicationsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListSecurityProfilePermissions = "ListSecurityProfilePermissions"

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

	if input == nil {
		input = &ListSecurityProfilePermissionsInput{}
	}

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

// ListSecurityProfilePermissions API operation for Amazon Connect Service.
//
// Lists the permissions granted to a security profile.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListSecurityProfilePermissions for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListSecurityProfilePermissions
func (c *Connect) ListSecurityProfilePermissions(input *ListSecurityProfilePermissionsInput) (*ListSecurityProfilePermissionsOutput, error) {
	req, out := c.ListSecurityProfilePermissionsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListSecurityProfiles = "ListSecurityProfiles"

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

	if input == nil {
		input = &ListSecurityProfilesInput{}
	}

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

// ListSecurityProfiles API operation for Amazon Connect Service.
//
// Provides summary information about the security profiles for the specified
// Amazon Connect instance.
//
// For more information about security profiles, see Security Profiles (https://docs.aws.amazon.com/connect/latest/adminguide/connect-security-profiles.html)
// in the Amazon Connect Administrator 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 Amazon Connect Service's
// API operation ListSecurityProfiles for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListSecurityProfiles
func (c *Connect) ListSecurityProfiles(input *ListSecurityProfilesInput) (*ListSecurityProfilesOutput, error) {
	req, out := c.ListSecurityProfilesRequest(input)
	return out, req.Send()
}

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

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

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

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

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

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

// ListTagsForResource API operation for Amazon Connect Service.
//
// Lists the tags for the specified resource.
//
// For sample policies that use tags, see Amazon Connect Identity-Based Policy
// Examples (https://docs.aws.amazon.com/connect/latest/adminguide/security_iam_id-based-policy-examples.html)
// in the Amazon Connect Administrator 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 Amazon Connect Service's
// API operation ListTagsForResource for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListTagsForResource
func (c *Connect) 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 *Connect) 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 opListTaskTemplates = "ListTaskTemplates"

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

	if input == nil {
		input = &ListTaskTemplatesInput{}
	}

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

// ListTaskTemplates API operation for Amazon Connect Service.
//
// Lists task templates for the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListTaskTemplates for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListTaskTemplates
func (c *Connect) ListTaskTemplates(input *ListTaskTemplatesInput) (*ListTaskTemplatesOutput, error) {
	req, out := c.ListTaskTemplatesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListTrafficDistributionGroupUsers = "ListTrafficDistributionGroupUsers"

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

	if input == nil {
		input = &ListTrafficDistributionGroupUsersInput{}
	}

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

// ListTrafficDistributionGroupUsers API operation for Amazon Connect Service.
//
// Lists traffic distribution group users.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListTrafficDistributionGroupUsers for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListTrafficDistributionGroupUsers
func (c *Connect) ListTrafficDistributionGroupUsers(input *ListTrafficDistributionGroupUsersInput) (*ListTrafficDistributionGroupUsersOutput, error) {
	req, out := c.ListTrafficDistributionGroupUsersRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListTrafficDistributionGroups = "ListTrafficDistributionGroups"

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

	if input == nil {
		input = &ListTrafficDistributionGroupsInput{}
	}

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

// ListTrafficDistributionGroups API operation for Amazon Connect Service.
//
// Lists traffic distribution groups.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListTrafficDistributionGroups for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListTrafficDistributionGroups
func (c *Connect) ListTrafficDistributionGroups(input *ListTrafficDistributionGroupsInput) (*ListTrafficDistributionGroupsOutput, error) {
	req, out := c.ListTrafficDistributionGroupsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListUseCases = "ListUseCases"

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

	if input == nil {
		input = &ListUseCasesInput{}
	}

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

// ListUseCases API operation for Amazon Connect Service.
//
// Lists the use cases for the integration association.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListUseCases for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListUseCases
func (c *Connect) ListUseCases(input *ListUseCasesInput) (*ListUseCasesOutput, error) {
	req, out := c.ListUseCasesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListUserHierarchyGroups = "ListUserHierarchyGroups"

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

	if input == nil {
		input = &ListUserHierarchyGroupsInput{}
	}

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

// ListUserHierarchyGroups API operation for Amazon Connect Service.
//
// Provides summary information about the hierarchy groups for the specified
// Amazon Connect instance.
//
// For more information about agent hierarchies, see Set Up Agent Hierarchies
// (https://docs.aws.amazon.com/connect/latest/adminguide/agent-hierarchy.html)
// in the Amazon Connect Administrator 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 Amazon Connect Service's
// API operation ListUserHierarchyGroups for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListUserHierarchyGroups
func (c *Connect) ListUserHierarchyGroups(input *ListUserHierarchyGroupsInput) (*ListUserHierarchyGroupsOutput, error) {
	req, out := c.ListUserHierarchyGroupsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListUserProficiencies = "ListUserProficiencies"

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

	if input == nil {
		input = &ListUserProficienciesInput{}
	}

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

// ListUserProficiencies API operation for Amazon Connect Service.
//
// Lists proficiencies associated with a user.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListUserProficiencies for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListUserProficiencies
func (c *Connect) ListUserProficiencies(input *ListUserProficienciesInput) (*ListUserProficienciesOutput, error) {
	req, out := c.ListUserProficienciesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListUsers = "ListUsers"

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

	if input == nil {
		input = &ListUsersInput{}
	}

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

// ListUsers API operation for Amazon Connect Service.
//
// Provides summary information about the users for the specified Amazon Connect
// instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListUsers for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListUsers
func (c *Connect) ListUsers(input *ListUsersInput) (*ListUsersOutput, error) {
	req, out := c.ListUsersRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListViewVersions = "ListViewVersions"

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

	if input == nil {
		input = &ListViewVersionsInput{}
	}

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

// ListViewVersions API operation for Amazon Connect Service.
//
// Returns all the available versions for the specified Amazon Connect instance
// and view identifier.
//
// Results will be sorted from highest to lowest.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListViewVersions for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - TooManyRequestsException
//     Displayed when rate-related API limits are exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListViewVersions
func (c *Connect) ListViewVersions(input *ListViewVersionsInput) (*ListViewVersionsOutput, error) {
	req, out := c.ListViewVersionsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListViews = "ListViews"

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

	if input == nil {
		input = &ListViewsInput{}
	}

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

// ListViews API operation for Amazon Connect Service.
//
// Returns views in the given instance.
//
// Results are sorted primarily by type, and secondarily by name.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ListViews for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - TooManyRequestsException
//     Displayed when rate-related API limits are exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ListViews
func (c *Connect) ListViews(input *ListViewsInput) (*ListViewsOutput, error) {
	req, out := c.ListViewsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opMonitorContact = "MonitorContact"

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

	if input == nil {
		input = &MonitorContactInput{}
	}

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

// MonitorContact API operation for Amazon Connect Service.
//
// Initiates silent monitoring of a contact. The Contact Control Panel (CCP)
// of the user specified by userId will be set to silent monitoring mode on
// the contact.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation MonitorContact for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - IdempotencyException
//     An entity with the same name already exists.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ServiceQuotaExceededException
//     The service quota has been exceeded.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/MonitorContact
func (c *Connect) MonitorContact(input *MonitorContactInput) (*MonitorContactOutput, error) {
	req, out := c.MonitorContactRequest(input)
	return out, req.Send()
}

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

const opPauseContact = "PauseContact"

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

	if input == nil {
		input = &PauseContactInput{}
	}

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

// PauseContact API operation for Amazon Connect Service.
//
// Allows pausing an ongoing task contact.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation PauseContact for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - LimitExceededException
//     The allowed limit for the resource has been exceeded.
//
//   - ConflictException
//     Operation cannot be performed at this time as there is a conflict with another
//     operation or contact state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/PauseContact
func (c *Connect) PauseContact(input *PauseContactInput) (*PauseContactOutput, error) {
	req, out := c.PauseContactRequest(input)
	return out, req.Send()
}

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

const opPutUserStatus = "PutUserStatus"

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

	if input == nil {
		input = &PutUserStatusInput{}
	}

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

// PutUserStatus API operation for Amazon Connect Service.
//
// Changes the current status of a user or agent in Amazon Connect. If the agent
// is currently handling a contact, this sets the agent's next status.
//
// For more information, see Agent status (https://docs.aws.amazon.com/connect/latest/adminguide/metrics-agent-status.html)
// and Set your next status (https://docs.aws.amazon.com/connect/latest/adminguide/set-next-status.html)
// in the Amazon Connect Administrator 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 Amazon Connect Service's
// API operation PutUserStatus for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/PutUserStatus
func (c *Connect) PutUserStatus(input *PutUserStatusInput) (*PutUserStatusOutput, error) {
	req, out := c.PutUserStatusRequest(input)
	return out, req.Send()
}

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

const opReleasePhoneNumber = "ReleasePhoneNumber"

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

	if input == nil {
		input = &ReleasePhoneNumberInput{}
	}

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

// ReleasePhoneNumber API operation for Amazon Connect Service.
//
// Releases a phone number previously claimed to an Amazon Connect instance
// or traffic distribution group. You can call this API only in the Amazon Web
// Services Region where the number was claimed.
//
// To release phone numbers from a traffic distribution group, use the ReleasePhoneNumber
// API, not the Amazon Connect admin website.
//
// After releasing a phone number, the phone number enters into a cooldown period
// of 30 days. It cannot be searched for or claimed again until the period has
// ended. If you accidentally release a phone number, contact Amazon Web Services
// Support.
//
// If you plan to claim and release numbers frequently during a 30 day period,
// contact us for a service quota exception. Otherwise, it is possible you will
// be blocked from claiming and releasing any more numbers until 30 days past
// the oldest number released has expired.
//
// By default you can claim and release up to 200% of your maximum number of
// active phone numbers during any 30 day period. If you claim and release phone
// numbers using the UI or API during a rolling 30 day cycle that exceeds 200%
// of your phone number service level quota, you will be blocked from claiming
// any more numbers until 30 days past the oldest number released has expired.
//
// For example, if you already have 99 claimed numbers and a service level quota
// of 99 phone numbers, and in any 30 day period you release 99, claim 99, and
// then release 99, you will have exceeded the 200% limit. At that point you
// are blocked from claiming any more numbers until you open an Amazon Web Services
// support ticket.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ReleasePhoneNumber for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ResourceInUseException
//     That resource is already in use. Please try another.
//
//   - IdempotencyException
//     An entity with the same name already exists.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ReleasePhoneNumber
func (c *Connect) ReleasePhoneNumber(input *ReleasePhoneNumberInput) (*ReleasePhoneNumberOutput, error) {
	req, out := c.ReleasePhoneNumberRequest(input)
	return out, req.Send()
}

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

const opReplicateInstance = "ReplicateInstance"

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

	if input == nil {
		input = &ReplicateInstanceInput{}
	}

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

// ReplicateInstance API operation for Amazon Connect Service.
//
// Replicates an Amazon Connect instance in the specified Amazon Web Services
// Region and copies configuration information for Amazon Connect resources
// across Amazon Web Services Regions.
//
// For more information about replicating an Amazon Connect instance, see Create
// a replica of your existing Amazon Connect instance (https://docs.aws.amazon.com/connect/latest/adminguide/create-replica-connect-instance.html)
// in the Amazon Connect Administrator 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 Amazon Connect Service's
// API operation ReplicateInstance for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ServiceQuotaExceededException
//     The service quota has been exceeded.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ResourceNotReadyException
//     The resource is not ready.
//
//   - ResourceConflictException
//     A resource already has that name.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ReplicateInstance
func (c *Connect) ReplicateInstance(input *ReplicateInstanceInput) (*ReplicateInstanceOutput, error) {
	req, out := c.ReplicateInstanceRequest(input)
	return out, req.Send()
}

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

const opResumeContact = "ResumeContact"

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

	if input == nil {
		input = &ResumeContactInput{}
	}

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

// ResumeContact API operation for Amazon Connect Service.
//
// Allows resuming a task contact in a paused state.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ResumeContact for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - ConflictException
//     Operation cannot be performed at this time as there is a conflict with another
//     operation or contact state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ResumeContact
func (c *Connect) ResumeContact(input *ResumeContactInput) (*ResumeContactOutput, error) {
	req, out := c.ResumeContactRequest(input)
	return out, req.Send()
}

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

const opResumeContactRecording = "ResumeContactRecording"

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

	if input == nil {
		input = &ResumeContactRecordingInput{}
	}

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

// ResumeContactRecording API operation for Amazon Connect Service.
//
// When a contact is being recorded, and the recording has been suspended using
// SuspendContactRecording, this API resumes recording whatever recording is
// selected in the flow configuration: call, screen, or both. If only call recording
// or only screen recording is enabled, then it would resume.
//
// Voice and screen recordings are supported.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation ResumeContactRecording for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/ResumeContactRecording
func (c *Connect) ResumeContactRecording(input *ResumeContactRecordingInput) (*ResumeContactRecordingOutput, error) {
	req, out := c.ResumeContactRecordingRequest(input)
	return out, req.Send()
}

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

const opSearchAvailablePhoneNumbers = "SearchAvailablePhoneNumbers"

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

	if input == nil {
		input = &SearchAvailablePhoneNumbersInput{}
	}

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

// SearchAvailablePhoneNumbers API operation for Amazon Connect Service.
//
// Searches for available phone numbers that you can claim to your Amazon Connect
// instance or traffic distribution group. If the provided TargetArn is a traffic
// distribution group, you can call this API in both Amazon Web Services Regions
// associated with the traffic distribution group.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation SearchAvailablePhoneNumbers for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/SearchAvailablePhoneNumbers
func (c *Connect) SearchAvailablePhoneNumbers(input *SearchAvailablePhoneNumbersInput) (*SearchAvailablePhoneNumbersOutput, error) {
	req, out := c.SearchAvailablePhoneNumbersRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opSearchContacts = "SearchContacts"

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

	if input == nil {
		input = &SearchContactsInput{}
	}

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

// SearchContacts API operation for Amazon Connect Service.
//
// Searches contacts in an Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation SearchContacts for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/SearchContacts
func (c *Connect) SearchContacts(input *SearchContactsInput) (*SearchContactsOutput, error) {
	req, out := c.SearchContactsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opSearchHoursOfOperations = "SearchHoursOfOperations"

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

	if input == nil {
		input = &SearchHoursOfOperationsInput{}
	}

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

// SearchHoursOfOperations API operation for Amazon Connect Service.
//
// Searches the hours of operation in an Amazon Connect instance, with optional
// filtering.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation SearchHoursOfOperations for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/SearchHoursOfOperations
func (c *Connect) SearchHoursOfOperations(input *SearchHoursOfOperationsInput) (*SearchHoursOfOperationsOutput, error) {
	req, out := c.SearchHoursOfOperationsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opSearchPredefinedAttributes = "SearchPredefinedAttributes"

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

	if input == nil {
		input = &SearchPredefinedAttributesInput{}
	}

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

// SearchPredefinedAttributes API operation for Amazon Connect Service.
//
// Predefined attributes that meet certain criteria.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation SearchPredefinedAttributes for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/SearchPredefinedAttributes
func (c *Connect) SearchPredefinedAttributes(input *SearchPredefinedAttributesInput) (*SearchPredefinedAttributesOutput, error) {
	req, out := c.SearchPredefinedAttributesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opSearchPrompts = "SearchPrompts"

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

	if input == nil {
		input = &SearchPromptsInput{}
	}

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

// SearchPrompts API operation for Amazon Connect Service.
//
// Searches prompts in an Amazon Connect instance, with optional filtering.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation SearchPrompts for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/SearchPrompts
func (c *Connect) SearchPrompts(input *SearchPromptsInput) (*SearchPromptsOutput, error) {
	req, out := c.SearchPromptsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opSearchQueues = "SearchQueues"

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

	if input == nil {
		input = &SearchQueuesInput{}
	}

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

// SearchQueues API operation for Amazon Connect Service.
//
// Searches queues in an Amazon Connect instance, with optional filtering.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation SearchQueues for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/SearchQueues
func (c *Connect) SearchQueues(input *SearchQueuesInput) (*SearchQueuesOutput, error) {
	req, out := c.SearchQueuesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opSearchQuickConnects = "SearchQuickConnects"

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

	if input == nil {
		input = &SearchQuickConnectsInput{}
	}

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

// SearchQuickConnects API operation for Amazon Connect Service.
//
// Searches quick connects in an Amazon Connect instance, with optional filtering.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation SearchQuickConnects for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/SearchQuickConnects
func (c *Connect) SearchQuickConnects(input *SearchQuickConnectsInput) (*SearchQuickConnectsOutput, error) {
	req, out := c.SearchQuickConnectsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opSearchResourceTags = "SearchResourceTags"

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

	if input == nil {
		input = &SearchResourceTagsInput{}
	}

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

// SearchResourceTags API operation for Amazon Connect Service.
//
// Searches tags used in an Amazon Connect instance using optional search criteria.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation SearchResourceTags for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - MaximumResultReturnedException
//     Maximum number (1000) of tags have been returned with current request. Consider
//     changing request parameters to get more tags.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/SearchResourceTags
func (c *Connect) SearchResourceTags(input *SearchResourceTagsInput) (*SearchResourceTagsOutput, error) {
	req, out := c.SearchResourceTagsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opSearchRoutingProfiles = "SearchRoutingProfiles"

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

	if input == nil {
		input = &SearchRoutingProfilesInput{}
	}

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

// SearchRoutingProfiles API operation for Amazon Connect Service.
//
// Searches routing profiles in an Amazon Connect instance, with optional filtering.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation SearchRoutingProfiles for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/SearchRoutingProfiles
func (c *Connect) SearchRoutingProfiles(input *SearchRoutingProfilesInput) (*SearchRoutingProfilesOutput, error) {
	req, out := c.SearchRoutingProfilesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opSearchSecurityProfiles = "SearchSecurityProfiles"

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

	if input == nil {
		input = &SearchSecurityProfilesInput{}
	}

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

// SearchSecurityProfiles API operation for Amazon Connect Service.
//
// Searches security profiles in an Amazon Connect instance, with optional filtering.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation SearchSecurityProfiles for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/SearchSecurityProfiles
func (c *Connect) SearchSecurityProfiles(input *SearchSecurityProfilesInput) (*SearchSecurityProfilesOutput, error) {
	req, out := c.SearchSecurityProfilesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opSearchUsers = "SearchUsers"

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

	if input == nil {
		input = &SearchUsersInput{}
	}

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

// SearchUsers API operation for Amazon Connect Service.
//
// Searches users in an Amazon Connect instance, with optional filtering.
//
// AfterContactWorkTimeLimit is returned in milliseconds.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation SearchUsers for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/SearchUsers
func (c *Connect) SearchUsers(input *SearchUsersInput) (*SearchUsersOutput, error) {
	req, out := c.SearchUsersRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opSearchVocabularies = "SearchVocabularies"

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

	if input == nil {
		input = &SearchVocabulariesInput{}
	}

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

// SearchVocabularies API operation for Amazon Connect Service.
//
// Searches for vocabularies within a specific Amazon Connect instance using
// State, NameStartsWith, and LanguageCode.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation SearchVocabularies for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/SearchVocabularies
func (c *Connect) SearchVocabularies(input *SearchVocabulariesInput) (*SearchVocabulariesOutput, error) {
	req, out := c.SearchVocabulariesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opSendChatIntegrationEvent = "SendChatIntegrationEvent"

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

	if input == nil {
		input = &SendChatIntegrationEventInput{}
	}

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

// SendChatIntegrationEvent API operation for Amazon Connect Service.
//
// Processes chat integration events from Amazon Web Services or external integrations
// to Amazon Connect. A chat integration event includes:
//
//   - SourceId, DestinationId, and Subtype: a set of identifiers, uniquely
//     representing a chat
//
//   - ChatEvent: details of the chat action to perform such as sending a message,
//     event, or disconnecting from a chat
//
// When a chat integration event is sent with chat identifiers that do not map
// to an active chat contact, a new chat contact is also created before handling
// chat action.
//
// Access to this API is currently restricted to Amazon Pinpoint for supporting
// SMS integration.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation SendChatIntegrationEvent for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/SendChatIntegrationEvent
func (c *Connect) SendChatIntegrationEvent(input *SendChatIntegrationEventInput) (*SendChatIntegrationEventOutput, error) {
	req, out := c.SendChatIntegrationEventRequest(input)
	return out, req.Send()
}

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

const opStartChatContact = "StartChatContact"

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

	if input == nil {
		input = &StartChatContactInput{}
	}

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

// StartChatContact API operation for Amazon Connect Service.
//
// Initiates a flow to start a new chat for the customer. Response of this API
// provides a token required to obtain credentials from the CreateParticipantConnection
// (https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html)
// API in the Amazon Connect Participant Service.
//
// When a new chat contact is successfully created, clients must subscribe to
// the participant’s connection for the created chat within 5 minutes. This
// is achieved by invoking CreateParticipantConnection (https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html)
// with WEBSOCKET and CONNECTION_CREDENTIALS.
//
// A 429 error occurs in the following situations:
//
//   - API rate limit is exceeded. API TPS throttling returns a TooManyRequests
//     exception.
//
//   - The quota for concurrent active chats (https://docs.aws.amazon.com/connect/latest/adminguide/amazon-connect-service-limits.html)
//     is exceeded. Active chat throttling returns a LimitExceededException.
//
// If you use the ChatDurationInMinutes parameter and receive a 400 error, your
// account may not support the ability to configure custom chat durations. For
// more information, contact Amazon Web Services Support.
//
// For more information about chat, see Chat (https://docs.aws.amazon.com/connect/latest/adminguide/chat.html)
// in the Amazon Connect Administrator 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 Amazon Connect Service's
// API operation StartChatContact for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - LimitExceededException
//     The allowed limit for the resource has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/StartChatContact
func (c *Connect) StartChatContact(input *StartChatContactInput) (*StartChatContactOutput, error) {
	req, out := c.StartChatContactRequest(input)
	return out, req.Send()
}

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

const opStartContactEvaluation = "StartContactEvaluation"

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

	if input == nil {
		input = &StartContactEvaluationInput{}
	}

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

// StartContactEvaluation API operation for Amazon Connect Service.
//
// Starts an empty evaluation in the specified Amazon Connect instance, using
// the given evaluation form for the particular contact. The evaluation form
// version used for the contact evaluation corresponds to the currently activated
// version. If no version is activated for the evaluation form, the contact
// evaluation cannot be started.
//
// Evaluations created through the public API do not contain answer values suggested
// from automation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation StartContactEvaluation for usage and error information.
//
// Returned Error Types:
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - ServiceQuotaExceededException
//     The service quota has been exceeded.
//
//   - ResourceConflictException
//     A resource already has that name.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/StartContactEvaluation
func (c *Connect) StartContactEvaluation(input *StartContactEvaluationInput) (*StartContactEvaluationOutput, error) {
	req, out := c.StartContactEvaluationRequest(input)
	return out, req.Send()
}

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

const opStartContactRecording = "StartContactRecording"

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

	if input == nil {
		input = &StartContactRecordingInput{}
	}

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

// StartContactRecording API operation for Amazon Connect Service.
//
// Starts recording the contact:
//
//   - If the API is called before the agent joins the call, recording starts
//     when the agent joins the call.
//
//   - If the API is called after the agent joins the call, recording starts
//     at the time of the API call.
//
// StartContactRecording is a one-time action. For example, if you use StopContactRecording
// to stop recording an ongoing call, you can't use StartContactRecording to
// restart it. For scenarios where the recording has started and you want to
// suspend and resume it, such as when collecting sensitive information (for
// example, a credit card number), use SuspendContactRecording and ResumeContactRecording.
//
// You can use this API to override the recording behavior configured in the
// Set recording behavior (https://docs.aws.amazon.com/connect/latest/adminguide/set-recording-behavior.html)
// block.
//
// Only voice recordings are supported at this time.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation StartContactRecording for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/StartContactRecording
func (c *Connect) StartContactRecording(input *StartContactRecordingInput) (*StartContactRecordingOutput, error) {
	req, out := c.StartContactRecordingRequest(input)
	return out, req.Send()
}

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

const opStartContactStreaming = "StartContactStreaming"

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

	if input == nil {
		input = &StartContactStreamingInput{}
	}

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

// StartContactStreaming API operation for Amazon Connect Service.
//
// Initiates real-time message streaming for a new chat contact.
//
// For more information about message streaming, see Enable real-time chat message
// streaming (https://docs.aws.amazon.com/connect/latest/adminguide/chat-message-streaming.html)
// in the Amazon Connect Administrator 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 Amazon Connect Service's
// API operation StartContactStreaming for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - LimitExceededException
//     The allowed limit for the resource has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/StartContactStreaming
func (c *Connect) StartContactStreaming(input *StartContactStreamingInput) (*StartContactStreamingOutput, error) {
	req, out := c.StartContactStreamingRequest(input)
	return out, req.Send()
}

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

const opStartOutboundVoiceContact = "StartOutboundVoiceContact"

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

	if input == nil {
		input = &StartOutboundVoiceContactInput{}
	}

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

// StartOutboundVoiceContact API operation for Amazon Connect Service.
//
// Places an outbound call to a contact, and then initiates the flow. It performs
// the actions in the flow that's specified (in ContactFlowId).
//
// Agents do not initiate the outbound API, which means that they do not dial
// the contact. If the flow places an outbound call to a contact, and then puts
// the contact in queue, the call is then routed to the agent, like any other
// inbound case.
//
// There is a 60-second dialing timeout for this operation. If the call is not
// connected after 60 seconds, it fails.
//
// UK numbers with a 447 prefix are not allowed by default. Before you can dial
// these UK mobile numbers, you must submit a service quota increase request.
// For more information, see Amazon Connect Service Quotas (https://docs.aws.amazon.com/connect/latest/adminguide/amazon-connect-service-limits.html)
// in the Amazon Connect Administrator Guide.
//
// Campaign calls are not allowed by default. Before you can make a call with
// TrafficType = CAMPAIGN, you must submit a service quota increase request
// to the quota Amazon Connect campaigns (https://docs.aws.amazon.com/connect/latest/adminguide/amazon-connect-service-limits.html#outbound-communications-quotas).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation StartOutboundVoiceContact for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - LimitExceededException
//     The allowed limit for the resource has been exceeded.
//
//   - DestinationNotAllowedException
//     Outbound calls to the destination number are not allowed.
//
//   - OutboundContactNotPermittedException
//     The contact is not permitted.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/StartOutboundVoiceContact
func (c *Connect) StartOutboundVoiceContact(input *StartOutboundVoiceContactInput) (*StartOutboundVoiceContactOutput, error) {
	req, out := c.StartOutboundVoiceContactRequest(input)
	return out, req.Send()
}

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

const opStartTaskContact = "StartTaskContact"

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

	if input == nil {
		input = &StartTaskContactInput{}
	}

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

// StartTaskContact API operation for Amazon Connect Service.
//
// Initiates a flow to start a new task contact. For more information about
// task contacts, see Concepts: Tasks in Amazon Connect (https://docs.aws.amazon.com/connect/latest/adminguide/tasks.html)
// in the Amazon Connect Administrator Guide.
//
// When using PreviousContactId and RelatedContactId input parameters, note
// the following:
//
//   - PreviousContactId Any updates to user-defined task contact attributes
//     on any contact linked through the same PreviousContactId will affect every
//     contact in the chain. There can be a maximum of 12 linked task contacts
//     in a chain. That is, 12 task contacts can be created that share the same
//     PreviousContactId.
//
//   - RelatedContactId Copies contact attributes from the related task contact
//     to the new contact. Any update on attributes in a new task contact does
//     not update attributes on previous contact. There’s no limit on the number
//     of task contacts that can be created that use the same RelatedContactId.
//
// In addition, when calling StartTaskContact include only one of these parameters:
// ContactFlowID, QuickConnectID, or TaskTemplateID. Only one parameter is required
// as long as the task template has a flow configured to run it. If more than
// one parameter is specified, or only the TaskTemplateID is specified but it
// does not have a flow configured, the request returns an error because Amazon
// Connect cannot identify the unique flow to run when the task is created.
//
// A ServiceQuotaExceededException occurs when the number of open tasks exceeds
// the active tasks quota or there are already 12 tasks referencing the same
// PreviousContactId. For more information about service quotas for task contacts,
// see Amazon Connect service quotas (https://docs.aws.amazon.com/connect/latest/adminguide/amazon-connect-service-limits.html)
// in the Amazon Connect Administrator 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 Amazon Connect Service's
// API operation StartTaskContact for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - ServiceQuotaExceededException
//     The service quota has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/StartTaskContact
func (c *Connect) StartTaskContact(input *StartTaskContactInput) (*StartTaskContactOutput, error) {
	req, out := c.StartTaskContactRequest(input)
	return out, req.Send()
}

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

const opStartWebRTCContact = "StartWebRTCContact"

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

	if input == nil {
		input = &StartWebRTCContactInput{}
	}

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

// StartWebRTCContact API operation for Amazon Connect Service.
//
// Places an inbound in-app, web, or video call to a contact, and then initiates
// the flow. It performs the actions in the flow that are specified (in ContactFlowId)
// and present in the Amazon Connect instance (specified as InstanceId).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation StartWebRTCContact for usage and error information.
//
// Returned Error Types:
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - LimitExceededException
//     The allowed limit for the resource has been exceeded.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/StartWebRTCContact
func (c *Connect) StartWebRTCContact(input *StartWebRTCContactInput) (*StartWebRTCContactOutput, error) {
	req, out := c.StartWebRTCContactRequest(input)
	return out, req.Send()
}

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

const opStopContact = "StopContact"

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

	if input == nil {
		input = &StopContactInput{}
	}

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

// StopContact API operation for Amazon Connect Service.
//
// Ends the specified contact. This call does not work for voice contacts that
// use the following initiation methods:
//
//   - DISCONNECT
//
//   - TRANSFER
//
//   - QUEUE_TRANSFER
//
// Chat and task contacts, however, can be terminated in any state, regardless
// of initiation method.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation StopContact for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ContactNotFoundException
//     The contact with the specified ID is not active or does not exist. Applies
//     to Voice calls only, not to Chat or Task contacts.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/StopContact
func (c *Connect) StopContact(input *StopContactInput) (*StopContactOutput, error) {
	req, out := c.StopContactRequest(input)
	return out, req.Send()
}

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

const opStopContactRecording = "StopContactRecording"

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

	if input == nil {
		input = &StopContactRecordingInput{}
	}

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

// StopContactRecording API operation for Amazon Connect Service.
//
// Stops recording a call when a contact is being recorded. StopContactRecording
// is a one-time action. If you use StopContactRecording to stop recording an
// ongoing call, you can't use StartContactRecording to restart it. For scenarios
// where the recording has started and you want to suspend it for sensitive
// information (for example, to collect a credit card number), and then restart
// it, use SuspendContactRecording and ResumeContactRecording.
//
// Only voice recordings are supported at this time.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation StopContactRecording for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/StopContactRecording
func (c *Connect) StopContactRecording(input *StopContactRecordingInput) (*StopContactRecordingOutput, error) {
	req, out := c.StopContactRecordingRequest(input)
	return out, req.Send()
}

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

const opStopContactStreaming = "StopContactStreaming"

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

	if input == nil {
		input = &StopContactStreamingInput{}
	}

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

// StopContactStreaming API operation for Amazon Connect Service.
//
// Ends message streaming on a specified contact. To restart message streaming
// on that contact, call the StartContactStreaming (https://docs.aws.amazon.com/connect/latest/APIReference/API_StartContactStreaming.html)
// API.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation StopContactStreaming for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/StopContactStreaming
func (c *Connect) StopContactStreaming(input *StopContactStreamingInput) (*StopContactStreamingOutput, error) {
	req, out := c.StopContactStreamingRequest(input)
	return out, req.Send()
}

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

const opSubmitContactEvaluation = "SubmitContactEvaluation"

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

	if input == nil {
		input = &SubmitContactEvaluationInput{}
	}

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

// SubmitContactEvaluation API operation for Amazon Connect Service.
//
// Submits a contact evaluation in the specified Amazon Connect instance. Answers
// included in the request are merged with existing answers for the given evaluation.
// If no answers or notes are passed, the evaluation is submitted with the existing
// answers and notes. You can delete an answer or note by passing an empty object
// ({}) to the question identifier.
//
// If a contact evaluation is already in submitted state, this operation will
// trigger a resubmission.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation SubmitContactEvaluation for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ResourceConflictException
//     A resource already has that name.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/SubmitContactEvaluation
func (c *Connect) SubmitContactEvaluation(input *SubmitContactEvaluationInput) (*SubmitContactEvaluationOutput, error) {
	req, out := c.SubmitContactEvaluationRequest(input)
	return out, req.Send()
}

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

const opSuspendContactRecording = "SuspendContactRecording"

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

	if input == nil {
		input = &SuspendContactRecordingInput{}
	}

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

// SuspendContactRecording API operation for Amazon Connect Service.
//
// When a contact is being recorded, this API suspends recording whatever is
// selected in the flow configuration: call, screen, or both. If only call recording
// or only screen recording is enabled, then it would be suspended. For example,
// you might suspend the screen recording while collecting sensitive information,
// such as a credit card number. Then use ResumeContactRecording to restart
// recording the screen.
//
// The period of time that the recording is suspended is filled with silence
// in the final recording.
//
// Voice and screen recordings are supported.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation SuspendContactRecording for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/SuspendContactRecording
func (c *Connect) SuspendContactRecording(input *SuspendContactRecordingInput) (*SuspendContactRecordingOutput, error) {
	req, out := c.SuspendContactRecordingRequest(input)
	return out, req.Send()
}

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

const opTagContact = "TagContact"

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

	if input == nil {
		input = &TagContactInput{}
	}

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

// TagContact API operation for Amazon Connect Service.
//
// Adds the specified tags to the contact resource. For more information about
// this API is used, see Set up granular billing for a detailed view of your
// Amazon Connect usage (https://docs.aws.amazon.com/connect/latest/adminguide/granular-billing.html).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation TagContact for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/TagContact
func (c *Connect) TagContact(input *TagContactInput) (*TagContactOutput, error) {
	req, out := c.TagContactRequest(input)
	return out, req.Send()
}

// TagContactWithContext is the same as TagContact with the addition of
// the ability to pass a context and additional request options.
//
// See TagContact for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) TagContactWithContext(ctx aws.Context, input *TagContactInput, opts ...request.Option) (*TagContactOutput, error) {
	req, out := c.TagContactRequest(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/connect-2017-08-08/TagResource
func (c *Connect) TagResourceRequest(input *TagResourceInput) (req *request.Request, output *TagResourceOutput) {
	op := &request.Operation{
		Name:       opTagResource,
		HTTPMethod: "POST",
		HTTPPath:   "/tags/{resourceArn}",
	}

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

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

// TagResource API operation for Amazon Connect Service.
//
// Adds the specified tags to the specified resource.
//
// Some of the supported resource types are agents, routing profiles, queues,
// quick connects, contact flows, agent statuses, hours of operation, phone
// numbers, security profiles, and task templates. For a complete list, see
// Tagging resources in Amazon Connect (https://docs.aws.amazon.com/connect/latest/adminguide/tagging.html).
//
// For sample policies that use tags, see Amazon Connect Identity-Based Policy
// Examples (https://docs.aws.amazon.com/connect/latest/adminguide/security_iam_id-based-policy-examples.html)
// in the Amazon Connect Administrator 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 Amazon Connect Service's
// API operation TagResource for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/TagResource
func (c *Connect) 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 *Connect) 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 opTransferContact = "TransferContact"

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

	if input == nil {
		input = &TransferContactInput{}
	}

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

// TransferContact API operation for Amazon Connect Service.
//
// Transfers contacts from one agent or queue to another agent or queue at any
// point after a contact is created. You can transfer a contact to another queue
// by providing the flow which orchestrates the contact to the destination queue.
// This gives you more control over contact handling and helps you adhere to
// the service level agreement (SLA) guaranteed to your customers.
//
// Note the following requirements:
//
//   - Transfer is supported for only TASK contacts.
//
//   - Do not use both QueueId and UserId in the same call.
//
//   - The following flow types are supported: Inbound flow, Transfer to agent
//     flow, and Transfer to queue flow.
//
//   - The TransferContact API can be called only on active contacts.
//
//   - A contact cannot be transferred more than 11 times.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation TransferContact for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - IdempotencyException
//     An entity with the same name already exists.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ServiceQuotaExceededException
//     The service quota has been exceeded.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/TransferContact
func (c *Connect) TransferContact(input *TransferContactInput) (*TransferContactOutput, error) {
	req, out := c.TransferContactRequest(input)
	return out, req.Send()
}

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

const opUntagContact = "UntagContact"

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

	if input == nil {
		input = &UntagContactInput{}
	}

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

// UntagContact API operation for Amazon Connect Service.
//
// Removes the specified tags from the contact resource. For more information
// about this API is used, see Set up granular billing for a detailed view of
// your Amazon Connect usage (https://docs.aws.amazon.com/connect/latest/adminguide/granular-billing.html).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UntagContact for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UntagContact
func (c *Connect) UntagContact(input *UntagContactInput) (*UntagContactOutput, error) {
	req, out := c.UntagContactRequest(input)
	return out, req.Send()
}

// UntagContactWithContext is the same as UntagContact with the addition of
// the ability to pass a context and additional request options.
//
// See UntagContact for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UntagContactWithContext(ctx aws.Context, input *UntagContactInput, opts ...request.Option) (*UntagContactOutput, error) {
	req, out := c.UntagContactRequest(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/connect-2017-08-08/UntagResource
func (c *Connect) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) {
	op := &request.Operation{
		Name:       opUntagResource,
		HTTPMethod: "DELETE",
		HTTPPath:   "/tags/{resourceArn}",
	}

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

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

// UntagResource API operation for Amazon Connect Service.
//
// Removes the specified tags from the specified resource.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UntagResource for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UntagResource
func (c *Connect) 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 *Connect) 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 opUpdateAgentStatus = "UpdateAgentStatus"

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

	if input == nil {
		input = &UpdateAgentStatusInput{}
	}

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

// UpdateAgentStatus API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Updates agent status.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateAgentStatus for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - LimitExceededException
//     The allowed limit for the resource has been exceeded.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateAgentStatus
func (c *Connect) UpdateAgentStatus(input *UpdateAgentStatusInput) (*UpdateAgentStatusOutput, error) {
	req, out := c.UpdateAgentStatusRequest(input)
	return out, req.Send()
}

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

const opUpdateContact = "UpdateContact"

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

	if input == nil {
		input = &UpdateContactInput{}
	}

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

// UpdateContact API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Adds or updates user-defined contact information associated with the specified
// contact. At least one field to be updated must be present in the request.
//
// You can add or update user-defined contact information for both ongoing and
// completed contacts.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateContact for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateContact
func (c *Connect) UpdateContact(input *UpdateContactInput) (*UpdateContactOutput, error) {
	req, out := c.UpdateContactRequest(input)
	return out, req.Send()
}

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

const opUpdateContactAttributes = "UpdateContactAttributes"

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

	if input == nil {
		input = &UpdateContactAttributesInput{}
	}

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

// UpdateContactAttributes API operation for Amazon Connect Service.
//
// Creates or updates user-defined contact attributes associated with the specified
// contact.
//
// You can create or update user-defined attributes for both ongoing and completed
// contacts. For example, while the call is active, you can update the customer's
// name or the reason the customer called. You can add notes about steps that
// the agent took during the call that display to the next agent that takes
// the call. You can also update attributes for a contact using data from your
// CRM application and save the data with the contact in Amazon Connect. You
// could also flag calls for additional analysis, such as legal review or to
// identify abusive callers.
//
// Contact attributes are available in Amazon Connect for 24 months, and are
// then deleted. For information about contact record retention and the maximum
// size of the contact record attributes section, see Feature specifications
// (https://docs.aws.amazon.com/connect/latest/adminguide/amazon-connect-service-limits.html#feature-limits)
// in the Amazon Connect Administrator 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 Amazon Connect Service's
// API operation UpdateContactAttributes for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateContactAttributes
func (c *Connect) UpdateContactAttributes(input *UpdateContactAttributesInput) (*UpdateContactAttributesOutput, error) {
	req, out := c.UpdateContactAttributesRequest(input)
	return out, req.Send()
}

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

const opUpdateContactEvaluation = "UpdateContactEvaluation"

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

	if input == nil {
		input = &UpdateContactEvaluationInput{}
	}

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

// UpdateContactEvaluation API operation for Amazon Connect Service.
//
// Updates details about a contact evaluation in the specified Amazon Connect
// instance. A contact evaluation must be in draft state. Answers included in
// the request are merged with existing answers for the given evaluation. An
// answer or note can be deleted by passing an empty object ({}) to the question
// identifier.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateContactEvaluation for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ResourceConflictException
//     A resource already has that name.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateContactEvaluation
func (c *Connect) UpdateContactEvaluation(input *UpdateContactEvaluationInput) (*UpdateContactEvaluationOutput, error) {
	req, out := c.UpdateContactEvaluationRequest(input)
	return out, req.Send()
}

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

const opUpdateContactFlowContent = "UpdateContactFlowContent"

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

	if input == nil {
		input = &UpdateContactFlowContentInput{}
	}

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

// UpdateContactFlowContent API operation for Amazon Connect Service.
//
// Updates the specified flow.
//
// You can also create and update flows using the Amazon Connect Flow language
// (https://docs.aws.amazon.com/connect/latest/APIReference/flow-language.html).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateContactFlowContent for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidContactFlowException
//     The flow is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateContactFlowContent
func (c *Connect) UpdateContactFlowContent(input *UpdateContactFlowContentInput) (*UpdateContactFlowContentOutput, error) {
	req, out := c.UpdateContactFlowContentRequest(input)
	return out, req.Send()
}

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

const opUpdateContactFlowMetadata = "UpdateContactFlowMetadata"

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

	if input == nil {
		input = &UpdateContactFlowMetadataInput{}
	}

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

// UpdateContactFlowMetadata API operation for Amazon Connect Service.
//
// Updates metadata about specified flow.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateContactFlowMetadata for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateContactFlowMetadata
func (c *Connect) UpdateContactFlowMetadata(input *UpdateContactFlowMetadataInput) (*UpdateContactFlowMetadataOutput, error) {
	req, out := c.UpdateContactFlowMetadataRequest(input)
	return out, req.Send()
}

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

const opUpdateContactFlowModuleContent = "UpdateContactFlowModuleContent"

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

	if input == nil {
		input = &UpdateContactFlowModuleContentInput{}
	}

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

// UpdateContactFlowModuleContent API operation for Amazon Connect Service.
//
// Updates specified flow module for the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateContactFlowModuleContent for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidContactFlowModuleException
//     The problems with the module. Please fix before trying again.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateContactFlowModuleContent
func (c *Connect) UpdateContactFlowModuleContent(input *UpdateContactFlowModuleContentInput) (*UpdateContactFlowModuleContentOutput, error) {
	req, out := c.UpdateContactFlowModuleContentRequest(input)
	return out, req.Send()
}

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

const opUpdateContactFlowModuleMetadata = "UpdateContactFlowModuleMetadata"

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

	if input == nil {
		input = &UpdateContactFlowModuleMetadataInput{}
	}

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

// UpdateContactFlowModuleMetadata API operation for Amazon Connect Service.
//
// Updates metadata about specified flow module.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateContactFlowModuleMetadata for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateContactFlowModuleMetadata
func (c *Connect) UpdateContactFlowModuleMetadata(input *UpdateContactFlowModuleMetadataInput) (*UpdateContactFlowModuleMetadataOutput, error) {
	req, out := c.UpdateContactFlowModuleMetadataRequest(input)
	return out, req.Send()
}

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

const opUpdateContactFlowName = "UpdateContactFlowName"

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

	if input == nil {
		input = &UpdateContactFlowNameInput{}
	}

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

// UpdateContactFlowName API operation for Amazon Connect Service.
//
// The name of the flow.
//
// You can also create and update flows using the Amazon Connect Flow language
// (https://docs.aws.amazon.com/connect/latest/APIReference/flow-language.html).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateContactFlowName for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateContactFlowName
func (c *Connect) UpdateContactFlowName(input *UpdateContactFlowNameInput) (*UpdateContactFlowNameOutput, error) {
	req, out := c.UpdateContactFlowNameRequest(input)
	return out, req.Send()
}

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

const opUpdateContactRoutingData = "UpdateContactRoutingData"

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

	if input == nil {
		input = &UpdateContactRoutingDataInput{}
	}

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

// UpdateContactRoutingData API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Updates routing priority and age on the contact (QueuePriority and QueueTimeAdjustmentInSeconds).
// These properties can be used to change a customer's position in the queue.
// For example, you can move a contact to the back of the queue by setting a
// lower routing priority relative to other contacts in queue; or you can move
// a contact to the front of the queue by increasing the routing age which will
// make the contact look artificially older and therefore higher up in the first-in-first-out
// routing order. Note that adjusting the routing age of a contact affects only
// its position in queue, and not its actual queue wait time as reported through
// metrics. These properties can also be updated by using the Set routing priority
// / age flow block (https://docs.aws.amazon.com/connect/latest/adminguide/change-routing-priority.html).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateContactRoutingData for usage and error information.
//
// Returned Error Types:
//
//   - ResourceConflictException
//     A resource already has that name.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateContactRoutingData
func (c *Connect) UpdateContactRoutingData(input *UpdateContactRoutingDataInput) (*UpdateContactRoutingDataOutput, error) {
	req, out := c.UpdateContactRoutingDataRequest(input)
	return out, req.Send()
}

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

const opUpdateContactSchedule = "UpdateContactSchedule"

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

	if input == nil {
		input = &UpdateContactScheduleInput{}
	}

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

// UpdateContactSchedule API operation for Amazon Connect Service.
//
// Updates the scheduled time of a task contact that is already scheduled.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateContactSchedule for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - LimitExceededException
//     The allowed limit for the resource has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateContactSchedule
func (c *Connect) UpdateContactSchedule(input *UpdateContactScheduleInput) (*UpdateContactScheduleOutput, error) {
	req, out := c.UpdateContactScheduleRequest(input)
	return out, req.Send()
}

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

const opUpdateEvaluationForm = "UpdateEvaluationForm"

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

	if input == nil {
		input = &UpdateEvaluationFormInput{}
	}

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

// UpdateEvaluationForm API operation for Amazon Connect Service.
//
// Updates details about a specific evaluation form version in the specified
// Amazon Connect instance. Question and section identifiers cannot be duplicated
// within the same evaluation form.
//
// This operation does not support partial updates. Instead it does a full update
// of evaluation form content.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateEvaluationForm for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ServiceQuotaExceededException
//     The service quota has been exceeded.
//
//   - ResourceConflictException
//     A resource already has that name.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateEvaluationForm
func (c *Connect) UpdateEvaluationForm(input *UpdateEvaluationFormInput) (*UpdateEvaluationFormOutput, error) {
	req, out := c.UpdateEvaluationFormRequest(input)
	return out, req.Send()
}

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

const opUpdateHoursOfOperation = "UpdateHoursOfOperation"

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

	if input == nil {
		input = &UpdateHoursOfOperationInput{}
	}

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

// UpdateHoursOfOperation API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Updates the hours of operation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateHoursOfOperation for usage and error information.
//
// Returned Error Types:
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateHoursOfOperation
func (c *Connect) UpdateHoursOfOperation(input *UpdateHoursOfOperationInput) (*UpdateHoursOfOperationOutput, error) {
	req, out := c.UpdateHoursOfOperationRequest(input)
	return out, req.Send()
}

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

const opUpdateInstanceAttribute = "UpdateInstanceAttribute"

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

	if input == nil {
		input = &UpdateInstanceAttributeInput{}
	}

	output = &UpdateInstanceAttributeOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateInstanceAttribute API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Updates the value for the specified attribute type.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateInstanceAttribute for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateInstanceAttribute
func (c *Connect) UpdateInstanceAttribute(input *UpdateInstanceAttributeInput) (*UpdateInstanceAttributeOutput, error) {
	req, out := c.UpdateInstanceAttributeRequest(input)
	return out, req.Send()
}

// UpdateInstanceAttributeWithContext is the same as UpdateInstanceAttribute with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateInstanceAttribute for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateInstanceAttributeWithContext(ctx aws.Context, input *UpdateInstanceAttributeInput, opts ...request.Option) (*UpdateInstanceAttributeOutput, error) {
	req, out := c.UpdateInstanceAttributeRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateInstanceStorageConfig = "UpdateInstanceStorageConfig"

// UpdateInstanceStorageConfigRequest generates a "aws/request.Request" representing the
// client's request for the UpdateInstanceStorageConfig operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateInstanceStorageConfig for more information on using the UpdateInstanceStorageConfig
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateInstanceStorageConfigRequest method.
//	req, resp := client.UpdateInstanceStorageConfigRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateInstanceStorageConfig
func (c *Connect) UpdateInstanceStorageConfigRequest(input *UpdateInstanceStorageConfigInput) (req *request.Request, output *UpdateInstanceStorageConfigOutput) {
	op := &request.Operation{
		Name:       opUpdateInstanceStorageConfig,
		HTTPMethod: "POST",
		HTTPPath:   "/instance/{InstanceId}/storage-config/{AssociationId}",
	}

	if input == nil {
		input = &UpdateInstanceStorageConfigInput{}
	}

	output = &UpdateInstanceStorageConfigOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateInstanceStorageConfig API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Updates an existing configuration for a resource type. This API is idempotent.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateInstanceStorageConfig for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateInstanceStorageConfig
func (c *Connect) UpdateInstanceStorageConfig(input *UpdateInstanceStorageConfigInput) (*UpdateInstanceStorageConfigOutput, error) {
	req, out := c.UpdateInstanceStorageConfigRequest(input)
	return out, req.Send()
}

// UpdateInstanceStorageConfigWithContext is the same as UpdateInstanceStorageConfig with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateInstanceStorageConfig for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateInstanceStorageConfigWithContext(ctx aws.Context, input *UpdateInstanceStorageConfigInput, opts ...request.Option) (*UpdateInstanceStorageConfigOutput, error) {
	req, out := c.UpdateInstanceStorageConfigRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateParticipantRoleConfig = "UpdateParticipantRoleConfig"

// UpdateParticipantRoleConfigRequest generates a "aws/request.Request" representing the
// client's request for the UpdateParticipantRoleConfig operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateParticipantRoleConfig for more information on using the UpdateParticipantRoleConfig
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateParticipantRoleConfigRequest method.
//	req, resp := client.UpdateParticipantRoleConfigRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateParticipantRoleConfig
func (c *Connect) UpdateParticipantRoleConfigRequest(input *UpdateParticipantRoleConfigInput) (req *request.Request, output *UpdateParticipantRoleConfigOutput) {
	op := &request.Operation{
		Name:       opUpdateParticipantRoleConfig,
		HTTPMethod: "PUT",
		HTTPPath:   "/contact/participant-role-config/{InstanceId}/{ContactId}",
	}

	if input == nil {
		input = &UpdateParticipantRoleConfigInput{}
	}

	output = &UpdateParticipantRoleConfigOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateParticipantRoleConfig API operation for Amazon Connect Service.
//
// Updates timeouts for when human chat participants are to be considered idle,
// and when agents are automatically disconnected from a chat due to idleness.
// You can set four timers:
//
//   - Customer idle timeout
//
//   - Customer auto-disconnect timeout
//
//   - Agent idle timeout
//
//   - Agent auto-disconnect timeout
//
// For more information about how chat timeouts work, see Set up chat timeouts
// for human participants (https://docs.aws.amazon.com/connect/latest/adminguide/setup-chat-timeouts.html).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateParticipantRoleConfig for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateParticipantRoleConfig
func (c *Connect) UpdateParticipantRoleConfig(input *UpdateParticipantRoleConfigInput) (*UpdateParticipantRoleConfigOutput, error) {
	req, out := c.UpdateParticipantRoleConfigRequest(input)
	return out, req.Send()
}

// UpdateParticipantRoleConfigWithContext is the same as UpdateParticipantRoleConfig with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateParticipantRoleConfig for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateParticipantRoleConfigWithContext(ctx aws.Context, input *UpdateParticipantRoleConfigInput, opts ...request.Option) (*UpdateParticipantRoleConfigOutput, error) {
	req, out := c.UpdateParticipantRoleConfigRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdatePhoneNumber = "UpdatePhoneNumber"

// UpdatePhoneNumberRequest generates a "aws/request.Request" representing the
// client's request for the UpdatePhoneNumber operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdatePhoneNumber for more information on using the UpdatePhoneNumber
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdatePhoneNumberRequest method.
//	req, resp := client.UpdatePhoneNumberRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdatePhoneNumber
func (c *Connect) UpdatePhoneNumberRequest(input *UpdatePhoneNumberInput) (req *request.Request, output *UpdatePhoneNumberOutput) {
	op := &request.Operation{
		Name:       opUpdatePhoneNumber,
		HTTPMethod: "PUT",
		HTTPPath:   "/phone-number/{PhoneNumberId}",
	}

	if input == nil {
		input = &UpdatePhoneNumberInput{}
	}

	output = &UpdatePhoneNumberOutput{}
	req = c.newRequest(op, input, output)
	return
}

// UpdatePhoneNumber API operation for Amazon Connect Service.
//
// Updates your claimed phone number from its current Amazon Connect instance
// or traffic distribution group to another Amazon Connect instance or traffic
// distribution group in the same Amazon Web Services Region.
//
// After using this API, you must verify that the phone number is attached to
// the correct flow in the target instance or traffic distribution group. You
// need to do this because the API switches only the phone number to a new instance
// or traffic distribution group. It doesn't migrate the flow configuration
// of the phone number, too.
//
// You can call DescribePhoneNumber (https://docs.aws.amazon.com/connect/latest/APIReference/API_DescribePhoneNumber.html)
// API to verify the status of a previous UpdatePhoneNumber (https://docs.aws.amazon.com/connect/latest/APIReference/API_UpdatePhoneNumber.html)
// operation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdatePhoneNumber for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ResourceInUseException
//     That resource is already in use. Please try another.
//
//   - IdempotencyException
//     An entity with the same name already exists.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdatePhoneNumber
func (c *Connect) UpdatePhoneNumber(input *UpdatePhoneNumberInput) (*UpdatePhoneNumberOutput, error) {
	req, out := c.UpdatePhoneNumberRequest(input)
	return out, req.Send()
}

// UpdatePhoneNumberWithContext is the same as UpdatePhoneNumber with the addition of
// the ability to pass a context and additional request options.
//
// See UpdatePhoneNumber for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdatePhoneNumberWithContext(ctx aws.Context, input *UpdatePhoneNumberInput, opts ...request.Option) (*UpdatePhoneNumberOutput, error) {
	req, out := c.UpdatePhoneNumberRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdatePhoneNumberMetadata = "UpdatePhoneNumberMetadata"

// UpdatePhoneNumberMetadataRequest generates a "aws/request.Request" representing the
// client's request for the UpdatePhoneNumberMetadata operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdatePhoneNumberMetadata for more information on using the UpdatePhoneNumberMetadata
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdatePhoneNumberMetadataRequest method.
//	req, resp := client.UpdatePhoneNumberMetadataRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdatePhoneNumberMetadata
func (c *Connect) UpdatePhoneNumberMetadataRequest(input *UpdatePhoneNumberMetadataInput) (req *request.Request, output *UpdatePhoneNumberMetadataOutput) {
	op := &request.Operation{
		Name:       opUpdatePhoneNumberMetadata,
		HTTPMethod: "PUT",
		HTTPPath:   "/phone-number/{PhoneNumberId}/metadata",
	}

	if input == nil {
		input = &UpdatePhoneNumberMetadataInput{}
	}

	output = &UpdatePhoneNumberMetadataOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdatePhoneNumberMetadata API operation for Amazon Connect Service.
//
// Updates a phone number’s metadata.
//
// To verify the status of a previous UpdatePhoneNumberMetadata operation, call
// the DescribePhoneNumber (https://docs.aws.amazon.com/connect/latest/APIReference/API_DescribePhoneNumber.html)
// API.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdatePhoneNumberMetadata for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ResourceInUseException
//     That resource is already in use. Please try another.
//
//   - IdempotencyException
//     An entity with the same name already exists.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdatePhoneNumberMetadata
func (c *Connect) UpdatePhoneNumberMetadata(input *UpdatePhoneNumberMetadataInput) (*UpdatePhoneNumberMetadataOutput, error) {
	req, out := c.UpdatePhoneNumberMetadataRequest(input)
	return out, req.Send()
}

// UpdatePhoneNumberMetadataWithContext is the same as UpdatePhoneNumberMetadata with the addition of
// the ability to pass a context and additional request options.
//
// See UpdatePhoneNumberMetadata for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdatePhoneNumberMetadataWithContext(ctx aws.Context, input *UpdatePhoneNumberMetadataInput, opts ...request.Option) (*UpdatePhoneNumberMetadataOutput, error) {
	req, out := c.UpdatePhoneNumberMetadataRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdatePredefinedAttribute = "UpdatePredefinedAttribute"

// UpdatePredefinedAttributeRequest generates a "aws/request.Request" representing the
// client's request for the UpdatePredefinedAttribute operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdatePredefinedAttribute for more information on using the UpdatePredefinedAttribute
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdatePredefinedAttributeRequest method.
//	req, resp := client.UpdatePredefinedAttributeRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdatePredefinedAttribute
func (c *Connect) UpdatePredefinedAttributeRequest(input *UpdatePredefinedAttributeInput) (req *request.Request, output *UpdatePredefinedAttributeOutput) {
	op := &request.Operation{
		Name:       opUpdatePredefinedAttribute,
		HTTPMethod: "POST",
		HTTPPath:   "/predefined-attributes/{InstanceId}/{Name}",
	}

	if input == nil {
		input = &UpdatePredefinedAttributeInput{}
	}

	output = &UpdatePredefinedAttributeOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdatePredefinedAttribute API operation for Amazon Connect Service.
//
// Updates a predefined attribute for the specified Amazon Connect instance.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdatePredefinedAttribute for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdatePredefinedAttribute
func (c *Connect) UpdatePredefinedAttribute(input *UpdatePredefinedAttributeInput) (*UpdatePredefinedAttributeOutput, error) {
	req, out := c.UpdatePredefinedAttributeRequest(input)
	return out, req.Send()
}

// UpdatePredefinedAttributeWithContext is the same as UpdatePredefinedAttribute with the addition of
// the ability to pass a context and additional request options.
//
// See UpdatePredefinedAttribute for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdatePredefinedAttributeWithContext(ctx aws.Context, input *UpdatePredefinedAttributeInput, opts ...request.Option) (*UpdatePredefinedAttributeOutput, error) {
	req, out := c.UpdatePredefinedAttributeRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdatePrompt = "UpdatePrompt"

// UpdatePromptRequest generates a "aws/request.Request" representing the
// client's request for the UpdatePrompt operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdatePrompt for more information on using the UpdatePrompt
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdatePromptRequest method.
//	req, resp := client.UpdatePromptRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdatePrompt
func (c *Connect) UpdatePromptRequest(input *UpdatePromptInput) (req *request.Request, output *UpdatePromptOutput) {
	op := &request.Operation{
		Name:       opUpdatePrompt,
		HTTPMethod: "POST",
		HTTPPath:   "/prompts/{InstanceId}/{PromptId}",
	}

	if input == nil {
		input = &UpdatePromptInput{}
	}

	output = &UpdatePromptOutput{}
	req = c.newRequest(op, input, output)
	return
}

// UpdatePrompt API operation for Amazon Connect Service.
//
// Updates a prompt.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdatePrompt for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdatePrompt
func (c *Connect) UpdatePrompt(input *UpdatePromptInput) (*UpdatePromptOutput, error) {
	req, out := c.UpdatePromptRequest(input)
	return out, req.Send()
}

// UpdatePromptWithContext is the same as UpdatePrompt with the addition of
// the ability to pass a context and additional request options.
//
// See UpdatePrompt for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdatePromptWithContext(ctx aws.Context, input *UpdatePromptInput, opts ...request.Option) (*UpdatePromptOutput, error) {
	req, out := c.UpdatePromptRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateQueueHoursOfOperation = "UpdateQueueHoursOfOperation"

// UpdateQueueHoursOfOperationRequest generates a "aws/request.Request" representing the
// client's request for the UpdateQueueHoursOfOperation operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateQueueHoursOfOperation for more information on using the UpdateQueueHoursOfOperation
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateQueueHoursOfOperationRequest method.
//	req, resp := client.UpdateQueueHoursOfOperationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateQueueHoursOfOperation
func (c *Connect) UpdateQueueHoursOfOperationRequest(input *UpdateQueueHoursOfOperationInput) (req *request.Request, output *UpdateQueueHoursOfOperationOutput) {
	op := &request.Operation{
		Name:       opUpdateQueueHoursOfOperation,
		HTTPMethod: "POST",
		HTTPPath:   "/queues/{InstanceId}/{QueueId}/hours-of-operation",
	}

	if input == nil {
		input = &UpdateQueueHoursOfOperationInput{}
	}

	output = &UpdateQueueHoursOfOperationOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateQueueHoursOfOperation API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Updates the hours of operation for the specified queue.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateQueueHoursOfOperation for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateQueueHoursOfOperation
func (c *Connect) UpdateQueueHoursOfOperation(input *UpdateQueueHoursOfOperationInput) (*UpdateQueueHoursOfOperationOutput, error) {
	req, out := c.UpdateQueueHoursOfOperationRequest(input)
	return out, req.Send()
}

// UpdateQueueHoursOfOperationWithContext is the same as UpdateQueueHoursOfOperation with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateQueueHoursOfOperation for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateQueueHoursOfOperationWithContext(ctx aws.Context, input *UpdateQueueHoursOfOperationInput, opts ...request.Option) (*UpdateQueueHoursOfOperationOutput, error) {
	req, out := c.UpdateQueueHoursOfOperationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateQueueMaxContacts = "UpdateQueueMaxContacts"

// UpdateQueueMaxContactsRequest generates a "aws/request.Request" representing the
// client's request for the UpdateQueueMaxContacts operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateQueueMaxContacts for more information on using the UpdateQueueMaxContacts
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateQueueMaxContactsRequest method.
//	req, resp := client.UpdateQueueMaxContactsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateQueueMaxContacts
func (c *Connect) UpdateQueueMaxContactsRequest(input *UpdateQueueMaxContactsInput) (req *request.Request, output *UpdateQueueMaxContactsOutput) {
	op := &request.Operation{
		Name:       opUpdateQueueMaxContacts,
		HTTPMethod: "POST",
		HTTPPath:   "/queues/{InstanceId}/{QueueId}/max-contacts",
	}

	if input == nil {
		input = &UpdateQueueMaxContactsInput{}
	}

	output = &UpdateQueueMaxContactsOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateQueueMaxContacts API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Updates the maximum number of contacts allowed in a queue before it is considered
// full.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateQueueMaxContacts for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateQueueMaxContacts
func (c *Connect) UpdateQueueMaxContacts(input *UpdateQueueMaxContactsInput) (*UpdateQueueMaxContactsOutput, error) {
	req, out := c.UpdateQueueMaxContactsRequest(input)
	return out, req.Send()
}

// UpdateQueueMaxContactsWithContext is the same as UpdateQueueMaxContacts with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateQueueMaxContacts for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateQueueMaxContactsWithContext(ctx aws.Context, input *UpdateQueueMaxContactsInput, opts ...request.Option) (*UpdateQueueMaxContactsOutput, error) {
	req, out := c.UpdateQueueMaxContactsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateQueueName = "UpdateQueueName"

// UpdateQueueNameRequest generates a "aws/request.Request" representing the
// client's request for the UpdateQueueName operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateQueueName for more information on using the UpdateQueueName
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateQueueNameRequest method.
//	req, resp := client.UpdateQueueNameRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateQueueName
func (c *Connect) UpdateQueueNameRequest(input *UpdateQueueNameInput) (req *request.Request, output *UpdateQueueNameOutput) {
	op := &request.Operation{
		Name:       opUpdateQueueName,
		HTTPMethod: "POST",
		HTTPPath:   "/queues/{InstanceId}/{QueueId}/name",
	}

	if input == nil {
		input = &UpdateQueueNameInput{}
	}

	output = &UpdateQueueNameOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateQueueName API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Updates the name and description of a queue. At least Name or Description
// must be provided.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateQueueName for usage and error information.
//
// Returned Error Types:
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateQueueName
func (c *Connect) UpdateQueueName(input *UpdateQueueNameInput) (*UpdateQueueNameOutput, error) {
	req, out := c.UpdateQueueNameRequest(input)
	return out, req.Send()
}

// UpdateQueueNameWithContext is the same as UpdateQueueName with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateQueueName for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateQueueNameWithContext(ctx aws.Context, input *UpdateQueueNameInput, opts ...request.Option) (*UpdateQueueNameOutput, error) {
	req, out := c.UpdateQueueNameRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateQueueOutboundCallerConfig = "UpdateQueueOutboundCallerConfig"

// UpdateQueueOutboundCallerConfigRequest generates a "aws/request.Request" representing the
// client's request for the UpdateQueueOutboundCallerConfig operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateQueueOutboundCallerConfig for more information on using the UpdateQueueOutboundCallerConfig
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateQueueOutboundCallerConfigRequest method.
//	req, resp := client.UpdateQueueOutboundCallerConfigRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateQueueOutboundCallerConfig
func (c *Connect) UpdateQueueOutboundCallerConfigRequest(input *UpdateQueueOutboundCallerConfigInput) (req *request.Request, output *UpdateQueueOutboundCallerConfigOutput) {
	op := &request.Operation{
		Name:       opUpdateQueueOutboundCallerConfig,
		HTTPMethod: "POST",
		HTTPPath:   "/queues/{InstanceId}/{QueueId}/outbound-caller-config",
	}

	if input == nil {
		input = &UpdateQueueOutboundCallerConfigInput{}
	}

	output = &UpdateQueueOutboundCallerConfigOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateQueueOutboundCallerConfig API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Updates the outbound caller ID name, number, and outbound whisper flow for
// a specified queue.
//
//   - If the phone number is claimed to a traffic distribution group that
//     was created in the same Region as the Amazon Connect instance where you
//     are calling this API, then you can use a full phone number ARN or a UUID
//     for OutboundCallerIdNumberId. However, if the phone number is claimed
//     to a traffic distribution group that is in one Region, and you are calling
//     this API from an instance in another Amazon Web Services Region that is
//     associated with the traffic distribution group, you must provide a full
//     phone number ARN. If a UUID is provided in this scenario, you will receive
//     a ResourceNotFoundException.
//
//   - Only use the phone number ARN format that doesn't contain instance in
//     the path, for example, arn:aws:connect:us-east-1:1234567890:phone-number/uuid.
//     This is the same ARN format that is returned when you call the ListPhoneNumbersV2
//     (https://docs.aws.amazon.com/connect/latest/APIReference/API_ListPhoneNumbersV2.html)
//     API.
//
//   - If you plan to use IAM policies to allow/deny access to this API for
//     phone number resources claimed to a traffic distribution group, see Allow
//     or Deny queue API actions for phone numbers in a replica Region (https://docs.aws.amazon.com/connect/latest/adminguide/security_iam_resource-level-policy-examples.html#allow-deny-queue-actions-replica-region).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateQueueOutboundCallerConfig for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateQueueOutboundCallerConfig
func (c *Connect) UpdateQueueOutboundCallerConfig(input *UpdateQueueOutboundCallerConfigInput) (*UpdateQueueOutboundCallerConfigOutput, error) {
	req, out := c.UpdateQueueOutboundCallerConfigRequest(input)
	return out, req.Send()
}

// UpdateQueueOutboundCallerConfigWithContext is the same as UpdateQueueOutboundCallerConfig with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateQueueOutboundCallerConfig for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateQueueOutboundCallerConfigWithContext(ctx aws.Context, input *UpdateQueueOutboundCallerConfigInput, opts ...request.Option) (*UpdateQueueOutboundCallerConfigOutput, error) {
	req, out := c.UpdateQueueOutboundCallerConfigRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateQueueStatus = "UpdateQueueStatus"

// UpdateQueueStatusRequest generates a "aws/request.Request" representing the
// client's request for the UpdateQueueStatus operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateQueueStatus for more information on using the UpdateQueueStatus
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateQueueStatusRequest method.
//	req, resp := client.UpdateQueueStatusRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateQueueStatus
func (c *Connect) UpdateQueueStatusRequest(input *UpdateQueueStatusInput) (req *request.Request, output *UpdateQueueStatusOutput) {
	op := &request.Operation{
		Name:       opUpdateQueueStatus,
		HTTPMethod: "POST",
		HTTPPath:   "/queues/{InstanceId}/{QueueId}/status",
	}

	if input == nil {
		input = &UpdateQueueStatusInput{}
	}

	output = &UpdateQueueStatusOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateQueueStatus API operation for Amazon Connect Service.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// Updates the status of the queue.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateQueueStatus for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateQueueStatus
func (c *Connect) UpdateQueueStatus(input *UpdateQueueStatusInput) (*UpdateQueueStatusOutput, error) {
	req, out := c.UpdateQueueStatusRequest(input)
	return out, req.Send()
}

// UpdateQueueStatusWithContext is the same as UpdateQueueStatus with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateQueueStatus for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateQueueStatusWithContext(ctx aws.Context, input *UpdateQueueStatusInput, opts ...request.Option) (*UpdateQueueStatusOutput, error) {
	req, out := c.UpdateQueueStatusRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateQuickConnectConfig = "UpdateQuickConnectConfig"

// UpdateQuickConnectConfigRequest generates a "aws/request.Request" representing the
// client's request for the UpdateQuickConnectConfig operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateQuickConnectConfig for more information on using the UpdateQuickConnectConfig
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateQuickConnectConfigRequest method.
//	req, resp := client.UpdateQuickConnectConfigRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateQuickConnectConfig
func (c *Connect) UpdateQuickConnectConfigRequest(input *UpdateQuickConnectConfigInput) (req *request.Request, output *UpdateQuickConnectConfigOutput) {
	op := &request.Operation{
		Name:       opUpdateQuickConnectConfig,
		HTTPMethod: "POST",
		HTTPPath:   "/quick-connects/{InstanceId}/{QuickConnectId}/config",
	}

	if input == nil {
		input = &UpdateQuickConnectConfigInput{}
	}

	output = &UpdateQuickConnectConfigOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateQuickConnectConfig API operation for Amazon Connect Service.
//
// Updates the configuration settings for the specified quick connect.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateQuickConnectConfig for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateQuickConnectConfig
func (c *Connect) UpdateQuickConnectConfig(input *UpdateQuickConnectConfigInput) (*UpdateQuickConnectConfigOutput, error) {
	req, out := c.UpdateQuickConnectConfigRequest(input)
	return out, req.Send()
}

// UpdateQuickConnectConfigWithContext is the same as UpdateQuickConnectConfig with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateQuickConnectConfig for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateQuickConnectConfigWithContext(ctx aws.Context, input *UpdateQuickConnectConfigInput, opts ...request.Option) (*UpdateQuickConnectConfigOutput, error) {
	req, out := c.UpdateQuickConnectConfigRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateQuickConnectName = "UpdateQuickConnectName"

// UpdateQuickConnectNameRequest generates a "aws/request.Request" representing the
// client's request for the UpdateQuickConnectName operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateQuickConnectName for more information on using the UpdateQuickConnectName
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateQuickConnectNameRequest method.
//	req, resp := client.UpdateQuickConnectNameRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateQuickConnectName
func (c *Connect) UpdateQuickConnectNameRequest(input *UpdateQuickConnectNameInput) (req *request.Request, output *UpdateQuickConnectNameOutput) {
	op := &request.Operation{
		Name:       opUpdateQuickConnectName,
		HTTPMethod: "POST",
		HTTPPath:   "/quick-connects/{InstanceId}/{QuickConnectId}/name",
	}

	if input == nil {
		input = &UpdateQuickConnectNameInput{}
	}

	output = &UpdateQuickConnectNameOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateQuickConnectName API operation for Amazon Connect Service.
//
// Updates the name and description of a quick connect. The request accepts
// the following data in JSON format. At least Name or Description must be provided.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateQuickConnectName for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateQuickConnectName
func (c *Connect) UpdateQuickConnectName(input *UpdateQuickConnectNameInput) (*UpdateQuickConnectNameOutput, error) {
	req, out := c.UpdateQuickConnectNameRequest(input)
	return out, req.Send()
}

// UpdateQuickConnectNameWithContext is the same as UpdateQuickConnectName with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateQuickConnectName for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateQuickConnectNameWithContext(ctx aws.Context, input *UpdateQuickConnectNameInput, opts ...request.Option) (*UpdateQuickConnectNameOutput, error) {
	req, out := c.UpdateQuickConnectNameRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateRoutingProfileAgentAvailabilityTimer = "UpdateRoutingProfileAgentAvailabilityTimer"

// UpdateRoutingProfileAgentAvailabilityTimerRequest generates a "aws/request.Request" representing the
// client's request for the UpdateRoutingProfileAgentAvailabilityTimer operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateRoutingProfileAgentAvailabilityTimer for more information on using the UpdateRoutingProfileAgentAvailabilityTimer
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateRoutingProfileAgentAvailabilityTimerRequest method.
//	req, resp := client.UpdateRoutingProfileAgentAvailabilityTimerRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateRoutingProfileAgentAvailabilityTimer
func (c *Connect) UpdateRoutingProfileAgentAvailabilityTimerRequest(input *UpdateRoutingProfileAgentAvailabilityTimerInput) (req *request.Request, output *UpdateRoutingProfileAgentAvailabilityTimerOutput) {
	op := &request.Operation{
		Name:       opUpdateRoutingProfileAgentAvailabilityTimer,
		HTTPMethod: "POST",
		HTTPPath:   "/routing-profiles/{InstanceId}/{RoutingProfileId}/agent-availability-timer",
	}

	if input == nil {
		input = &UpdateRoutingProfileAgentAvailabilityTimerInput{}
	}

	output = &UpdateRoutingProfileAgentAvailabilityTimerOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateRoutingProfileAgentAvailabilityTimer API operation for Amazon Connect Service.
//
// Whether agents with this routing profile will have their routing order calculated
// based on time since their last inbound contact or longest idle time.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateRoutingProfileAgentAvailabilityTimer for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateRoutingProfileAgentAvailabilityTimer
func (c *Connect) UpdateRoutingProfileAgentAvailabilityTimer(input *UpdateRoutingProfileAgentAvailabilityTimerInput) (*UpdateRoutingProfileAgentAvailabilityTimerOutput, error) {
	req, out := c.UpdateRoutingProfileAgentAvailabilityTimerRequest(input)
	return out, req.Send()
}

// UpdateRoutingProfileAgentAvailabilityTimerWithContext is the same as UpdateRoutingProfileAgentAvailabilityTimer with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateRoutingProfileAgentAvailabilityTimer for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateRoutingProfileAgentAvailabilityTimerWithContext(ctx aws.Context, input *UpdateRoutingProfileAgentAvailabilityTimerInput, opts ...request.Option) (*UpdateRoutingProfileAgentAvailabilityTimerOutput, error) {
	req, out := c.UpdateRoutingProfileAgentAvailabilityTimerRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateRoutingProfileConcurrency = "UpdateRoutingProfileConcurrency"

// UpdateRoutingProfileConcurrencyRequest generates a "aws/request.Request" representing the
// client's request for the UpdateRoutingProfileConcurrency operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateRoutingProfileConcurrency for more information on using the UpdateRoutingProfileConcurrency
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateRoutingProfileConcurrencyRequest method.
//	req, resp := client.UpdateRoutingProfileConcurrencyRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateRoutingProfileConcurrency
func (c *Connect) UpdateRoutingProfileConcurrencyRequest(input *UpdateRoutingProfileConcurrencyInput) (req *request.Request, output *UpdateRoutingProfileConcurrencyOutput) {
	op := &request.Operation{
		Name:       opUpdateRoutingProfileConcurrency,
		HTTPMethod: "POST",
		HTTPPath:   "/routing-profiles/{InstanceId}/{RoutingProfileId}/concurrency",
	}

	if input == nil {
		input = &UpdateRoutingProfileConcurrencyInput{}
	}

	output = &UpdateRoutingProfileConcurrencyOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateRoutingProfileConcurrency API operation for Amazon Connect Service.
//
// Updates the channels that agents can handle in the Contact Control Panel
// (CCP) for a routing profile.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateRoutingProfileConcurrency for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateRoutingProfileConcurrency
func (c *Connect) UpdateRoutingProfileConcurrency(input *UpdateRoutingProfileConcurrencyInput) (*UpdateRoutingProfileConcurrencyOutput, error) {
	req, out := c.UpdateRoutingProfileConcurrencyRequest(input)
	return out, req.Send()
}

// UpdateRoutingProfileConcurrencyWithContext is the same as UpdateRoutingProfileConcurrency with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateRoutingProfileConcurrency for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateRoutingProfileConcurrencyWithContext(ctx aws.Context, input *UpdateRoutingProfileConcurrencyInput, opts ...request.Option) (*UpdateRoutingProfileConcurrencyOutput, error) {
	req, out := c.UpdateRoutingProfileConcurrencyRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateRoutingProfileDefaultOutboundQueue = "UpdateRoutingProfileDefaultOutboundQueue"

// UpdateRoutingProfileDefaultOutboundQueueRequest generates a "aws/request.Request" representing the
// client's request for the UpdateRoutingProfileDefaultOutboundQueue operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateRoutingProfileDefaultOutboundQueue for more information on using the UpdateRoutingProfileDefaultOutboundQueue
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateRoutingProfileDefaultOutboundQueueRequest method.
//	req, resp := client.UpdateRoutingProfileDefaultOutboundQueueRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateRoutingProfileDefaultOutboundQueue
func (c *Connect) UpdateRoutingProfileDefaultOutboundQueueRequest(input *UpdateRoutingProfileDefaultOutboundQueueInput) (req *request.Request, output *UpdateRoutingProfileDefaultOutboundQueueOutput) {
	op := &request.Operation{
		Name:       opUpdateRoutingProfileDefaultOutboundQueue,
		HTTPMethod: "POST",
		HTTPPath:   "/routing-profiles/{InstanceId}/{RoutingProfileId}/default-outbound-queue",
	}

	if input == nil {
		input = &UpdateRoutingProfileDefaultOutboundQueueInput{}
	}

	output = &UpdateRoutingProfileDefaultOutboundQueueOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateRoutingProfileDefaultOutboundQueue API operation for Amazon Connect Service.
//
// Updates the default outbound queue of a routing profile.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateRoutingProfileDefaultOutboundQueue for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateRoutingProfileDefaultOutboundQueue
func (c *Connect) UpdateRoutingProfileDefaultOutboundQueue(input *UpdateRoutingProfileDefaultOutboundQueueInput) (*UpdateRoutingProfileDefaultOutboundQueueOutput, error) {
	req, out := c.UpdateRoutingProfileDefaultOutboundQueueRequest(input)
	return out, req.Send()
}

// UpdateRoutingProfileDefaultOutboundQueueWithContext is the same as UpdateRoutingProfileDefaultOutboundQueue with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateRoutingProfileDefaultOutboundQueue for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateRoutingProfileDefaultOutboundQueueWithContext(ctx aws.Context, input *UpdateRoutingProfileDefaultOutboundQueueInput, opts ...request.Option) (*UpdateRoutingProfileDefaultOutboundQueueOutput, error) {
	req, out := c.UpdateRoutingProfileDefaultOutboundQueueRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateRoutingProfileName = "UpdateRoutingProfileName"

// UpdateRoutingProfileNameRequest generates a "aws/request.Request" representing the
// client's request for the UpdateRoutingProfileName operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateRoutingProfileName for more information on using the UpdateRoutingProfileName
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateRoutingProfileNameRequest method.
//	req, resp := client.UpdateRoutingProfileNameRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateRoutingProfileName
func (c *Connect) UpdateRoutingProfileNameRequest(input *UpdateRoutingProfileNameInput) (req *request.Request, output *UpdateRoutingProfileNameOutput) {
	op := &request.Operation{
		Name:       opUpdateRoutingProfileName,
		HTTPMethod: "POST",
		HTTPPath:   "/routing-profiles/{InstanceId}/{RoutingProfileId}/name",
	}

	if input == nil {
		input = &UpdateRoutingProfileNameInput{}
	}

	output = &UpdateRoutingProfileNameOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateRoutingProfileName API operation for Amazon Connect Service.
//
// Updates the name and description of a routing profile. The request accepts
// the following data in JSON format. At least Name or Description must be provided.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateRoutingProfileName for usage and error information.
//
// Returned Error Types:
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateRoutingProfileName
func (c *Connect) UpdateRoutingProfileName(input *UpdateRoutingProfileNameInput) (*UpdateRoutingProfileNameOutput, error) {
	req, out := c.UpdateRoutingProfileNameRequest(input)
	return out, req.Send()
}

// UpdateRoutingProfileNameWithContext is the same as UpdateRoutingProfileName with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateRoutingProfileName for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateRoutingProfileNameWithContext(ctx aws.Context, input *UpdateRoutingProfileNameInput, opts ...request.Option) (*UpdateRoutingProfileNameOutput, error) {
	req, out := c.UpdateRoutingProfileNameRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateRoutingProfileQueues = "UpdateRoutingProfileQueues"

// UpdateRoutingProfileQueuesRequest generates a "aws/request.Request" representing the
// client's request for the UpdateRoutingProfileQueues operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateRoutingProfileQueues for more information on using the UpdateRoutingProfileQueues
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateRoutingProfileQueuesRequest method.
//	req, resp := client.UpdateRoutingProfileQueuesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateRoutingProfileQueues
func (c *Connect) UpdateRoutingProfileQueuesRequest(input *UpdateRoutingProfileQueuesInput) (req *request.Request, output *UpdateRoutingProfileQueuesOutput) {
	op := &request.Operation{
		Name:       opUpdateRoutingProfileQueues,
		HTTPMethod: "POST",
		HTTPPath:   "/routing-profiles/{InstanceId}/{RoutingProfileId}/queues",
	}

	if input == nil {
		input = &UpdateRoutingProfileQueuesInput{}
	}

	output = &UpdateRoutingProfileQueuesOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateRoutingProfileQueues API operation for Amazon Connect Service.
//
// Updates the properties associated with a set of queues for a routing profile.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateRoutingProfileQueues for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateRoutingProfileQueues
func (c *Connect) UpdateRoutingProfileQueues(input *UpdateRoutingProfileQueuesInput) (*UpdateRoutingProfileQueuesOutput, error) {
	req, out := c.UpdateRoutingProfileQueuesRequest(input)
	return out, req.Send()
}

// UpdateRoutingProfileQueuesWithContext is the same as UpdateRoutingProfileQueues with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateRoutingProfileQueues for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateRoutingProfileQueuesWithContext(ctx aws.Context, input *UpdateRoutingProfileQueuesInput, opts ...request.Option) (*UpdateRoutingProfileQueuesOutput, error) {
	req, out := c.UpdateRoutingProfileQueuesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateRule = "UpdateRule"

// UpdateRuleRequest generates a "aws/request.Request" representing the
// client's request for the UpdateRule operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateRule for more information on using the UpdateRule
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateRuleRequest method.
//	req, resp := client.UpdateRuleRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateRule
func (c *Connect) UpdateRuleRequest(input *UpdateRuleInput) (req *request.Request, output *UpdateRuleOutput) {
	op := &request.Operation{
		Name:       opUpdateRule,
		HTTPMethod: "PUT",
		HTTPPath:   "/rules/{InstanceId}/{RuleId}",
	}

	if input == nil {
		input = &UpdateRuleInput{}
	}

	output = &UpdateRuleOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateRule API operation for Amazon Connect Service.
//
// Updates a rule for the specified Amazon Connect instance.
//
// Use the Rules Function language (https://docs.aws.amazon.com/connect/latest/APIReference/connect-rules-language.html)
// to code conditions for the rule.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateRule for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ResourceConflictException
//     A resource already has that name.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateRule
func (c *Connect) UpdateRule(input *UpdateRuleInput) (*UpdateRuleOutput, error) {
	req, out := c.UpdateRuleRequest(input)
	return out, req.Send()
}

// UpdateRuleWithContext is the same as UpdateRule with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateRule for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateRuleWithContext(ctx aws.Context, input *UpdateRuleInput, opts ...request.Option) (*UpdateRuleOutput, error) {
	req, out := c.UpdateRuleRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateSecurityProfile = "UpdateSecurityProfile"

// UpdateSecurityProfileRequest generates a "aws/request.Request" representing the
// client's request for the UpdateSecurityProfile operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateSecurityProfile for more information on using the UpdateSecurityProfile
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateSecurityProfileRequest method.
//	req, resp := client.UpdateSecurityProfileRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateSecurityProfile
func (c *Connect) UpdateSecurityProfileRequest(input *UpdateSecurityProfileInput) (req *request.Request, output *UpdateSecurityProfileOutput) {
	op := &request.Operation{
		Name:       opUpdateSecurityProfile,
		HTTPMethod: "POST",
		HTTPPath:   "/security-profiles/{InstanceId}/{SecurityProfileId}",
	}

	if input == nil {
		input = &UpdateSecurityProfileInput{}
	}

	output = &UpdateSecurityProfileOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateSecurityProfile API operation for Amazon Connect Service.
//
// Updates a security profile.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateSecurityProfile for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateSecurityProfile
func (c *Connect) UpdateSecurityProfile(input *UpdateSecurityProfileInput) (*UpdateSecurityProfileOutput, error) {
	req, out := c.UpdateSecurityProfileRequest(input)
	return out, req.Send()
}

// UpdateSecurityProfileWithContext is the same as UpdateSecurityProfile with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateSecurityProfile for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateSecurityProfileWithContext(ctx aws.Context, input *UpdateSecurityProfileInput, opts ...request.Option) (*UpdateSecurityProfileOutput, error) {
	req, out := c.UpdateSecurityProfileRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateTaskTemplate = "UpdateTaskTemplate"

// UpdateTaskTemplateRequest generates a "aws/request.Request" representing the
// client's request for the UpdateTaskTemplate operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateTaskTemplate for more information on using the UpdateTaskTemplate
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateTaskTemplateRequest method.
//	req, resp := client.UpdateTaskTemplateRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateTaskTemplate
func (c *Connect) UpdateTaskTemplateRequest(input *UpdateTaskTemplateInput) (req *request.Request, output *UpdateTaskTemplateOutput) {
	op := &request.Operation{
		Name:       opUpdateTaskTemplate,
		HTTPMethod: "POST",
		HTTPPath:   "/instance/{InstanceId}/task/template/{TaskTemplateId}",
	}

	if input == nil {
		input = &UpdateTaskTemplateInput{}
	}

	output = &UpdateTaskTemplateOutput{}
	req = c.newRequest(op, input, output)
	return
}

// UpdateTaskTemplate API operation for Amazon Connect Service.
//
// Updates details about a specific task template in the specified Amazon Connect
// instance. This operation does not support partial updates. Instead it does
// a full update of template content.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateTaskTemplate for usage and error information.
//
// Returned Error Types:
//
//   - PropertyValidationException
//     The property is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - ServiceQuotaExceededException
//     The service quota has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateTaskTemplate
func (c *Connect) UpdateTaskTemplate(input *UpdateTaskTemplateInput) (*UpdateTaskTemplateOutput, error) {
	req, out := c.UpdateTaskTemplateRequest(input)
	return out, req.Send()
}

// UpdateTaskTemplateWithContext is the same as UpdateTaskTemplate with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateTaskTemplate for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateTaskTemplateWithContext(ctx aws.Context, input *UpdateTaskTemplateInput, opts ...request.Option) (*UpdateTaskTemplateOutput, error) {
	req, out := c.UpdateTaskTemplateRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateTrafficDistribution = "UpdateTrafficDistribution"

// UpdateTrafficDistributionRequest generates a "aws/request.Request" representing the
// client's request for the UpdateTrafficDistribution operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateTrafficDistribution for more information on using the UpdateTrafficDistribution
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateTrafficDistributionRequest method.
//	req, resp := client.UpdateTrafficDistributionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateTrafficDistribution
func (c *Connect) UpdateTrafficDistributionRequest(input *UpdateTrafficDistributionInput) (req *request.Request, output *UpdateTrafficDistributionOutput) {
	op := &request.Operation{
		Name:       opUpdateTrafficDistribution,
		HTTPMethod: "PUT",
		HTTPPath:   "/traffic-distribution/{Id}",
	}

	if input == nil {
		input = &UpdateTrafficDistributionInput{}
	}

	output = &UpdateTrafficDistributionOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateTrafficDistribution API operation for Amazon Connect Service.
//
// Updates the traffic distribution for a given traffic distribution group.
//
// The SignInConfig distribution is available only on a default TrafficDistributionGroup
// (see the IsDefault parameter in the TrafficDistributionGroup (https://docs.aws.amazon.com/connect/latest/APIReference/API_TrafficDistributionGroup.html)
// data type). If you call UpdateTrafficDistribution with a modified SignInConfig
// and a non-default TrafficDistributionGroup, an InvalidRequestException is
// returned.
//
// For more information about updating a traffic distribution group, see Update
// telephony traffic distribution across Amazon Web Services Regions (https://docs.aws.amazon.com/connect/latest/adminguide/update-telephony-traffic-distribution.html)
// in the Amazon Connect Administrator 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 Amazon Connect Service's
// API operation UpdateTrafficDistribution for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ResourceConflictException
//     A resource already has that name.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateTrafficDistribution
func (c *Connect) UpdateTrafficDistribution(input *UpdateTrafficDistributionInput) (*UpdateTrafficDistributionOutput, error) {
	req, out := c.UpdateTrafficDistributionRequest(input)
	return out, req.Send()
}

// UpdateTrafficDistributionWithContext is the same as UpdateTrafficDistribution with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateTrafficDistribution for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateTrafficDistributionWithContext(ctx aws.Context, input *UpdateTrafficDistributionInput, opts ...request.Option) (*UpdateTrafficDistributionOutput, error) {
	req, out := c.UpdateTrafficDistributionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateUserHierarchy = "UpdateUserHierarchy"

// UpdateUserHierarchyRequest generates a "aws/request.Request" representing the
// client's request for the UpdateUserHierarchy operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateUserHierarchy for more information on using the UpdateUserHierarchy
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateUserHierarchyRequest method.
//	req, resp := client.UpdateUserHierarchyRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateUserHierarchy
func (c *Connect) UpdateUserHierarchyRequest(input *UpdateUserHierarchyInput) (req *request.Request, output *UpdateUserHierarchyOutput) {
	op := &request.Operation{
		Name:       opUpdateUserHierarchy,
		HTTPMethod: "POST",
		HTTPPath:   "/users/{InstanceId}/{UserId}/hierarchy",
	}

	if input == nil {
		input = &UpdateUserHierarchyInput{}
	}

	output = &UpdateUserHierarchyOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateUserHierarchy API operation for Amazon Connect Service.
//
// Assigns the specified hierarchy group to the specified user.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateUserHierarchy for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateUserHierarchy
func (c *Connect) UpdateUserHierarchy(input *UpdateUserHierarchyInput) (*UpdateUserHierarchyOutput, error) {
	req, out := c.UpdateUserHierarchyRequest(input)
	return out, req.Send()
}

// UpdateUserHierarchyWithContext is the same as UpdateUserHierarchy with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateUserHierarchy for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateUserHierarchyWithContext(ctx aws.Context, input *UpdateUserHierarchyInput, opts ...request.Option) (*UpdateUserHierarchyOutput, error) {
	req, out := c.UpdateUserHierarchyRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateUserHierarchyGroupName = "UpdateUserHierarchyGroupName"

// UpdateUserHierarchyGroupNameRequest generates a "aws/request.Request" representing the
// client's request for the UpdateUserHierarchyGroupName operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateUserHierarchyGroupName for more information on using the UpdateUserHierarchyGroupName
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateUserHierarchyGroupNameRequest method.
//	req, resp := client.UpdateUserHierarchyGroupNameRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateUserHierarchyGroupName
func (c *Connect) UpdateUserHierarchyGroupNameRequest(input *UpdateUserHierarchyGroupNameInput) (req *request.Request, output *UpdateUserHierarchyGroupNameOutput) {
	op := &request.Operation{
		Name:       opUpdateUserHierarchyGroupName,
		HTTPMethod: "POST",
		HTTPPath:   "/user-hierarchy-groups/{InstanceId}/{HierarchyGroupId}/name",
	}

	if input == nil {
		input = &UpdateUserHierarchyGroupNameInput{}
	}

	output = &UpdateUserHierarchyGroupNameOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateUserHierarchyGroupName API operation for Amazon Connect Service.
//
// Updates the name of the user hierarchy group.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateUserHierarchyGroupName for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateUserHierarchyGroupName
func (c *Connect) UpdateUserHierarchyGroupName(input *UpdateUserHierarchyGroupNameInput) (*UpdateUserHierarchyGroupNameOutput, error) {
	req, out := c.UpdateUserHierarchyGroupNameRequest(input)
	return out, req.Send()
}

// UpdateUserHierarchyGroupNameWithContext is the same as UpdateUserHierarchyGroupName with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateUserHierarchyGroupName for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateUserHierarchyGroupNameWithContext(ctx aws.Context, input *UpdateUserHierarchyGroupNameInput, opts ...request.Option) (*UpdateUserHierarchyGroupNameOutput, error) {
	req, out := c.UpdateUserHierarchyGroupNameRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateUserHierarchyStructure = "UpdateUserHierarchyStructure"

// UpdateUserHierarchyStructureRequest generates a "aws/request.Request" representing the
// client's request for the UpdateUserHierarchyStructure operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateUserHierarchyStructure for more information on using the UpdateUserHierarchyStructure
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateUserHierarchyStructureRequest method.
//	req, resp := client.UpdateUserHierarchyStructureRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateUserHierarchyStructure
func (c *Connect) UpdateUserHierarchyStructureRequest(input *UpdateUserHierarchyStructureInput) (req *request.Request, output *UpdateUserHierarchyStructureOutput) {
	op := &request.Operation{
		Name:       opUpdateUserHierarchyStructure,
		HTTPMethod: "POST",
		HTTPPath:   "/user-hierarchy-structure/{InstanceId}",
	}

	if input == nil {
		input = &UpdateUserHierarchyStructureInput{}
	}

	output = &UpdateUserHierarchyStructureOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateUserHierarchyStructure API operation for Amazon Connect Service.
//
// Updates the user hierarchy structure: add, remove, and rename user hierarchy
// levels.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateUserHierarchyStructure for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ResourceInUseException
//     That resource is already in use. Please try another.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateUserHierarchyStructure
func (c *Connect) UpdateUserHierarchyStructure(input *UpdateUserHierarchyStructureInput) (*UpdateUserHierarchyStructureOutput, error) {
	req, out := c.UpdateUserHierarchyStructureRequest(input)
	return out, req.Send()
}

// UpdateUserHierarchyStructureWithContext is the same as UpdateUserHierarchyStructure with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateUserHierarchyStructure for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateUserHierarchyStructureWithContext(ctx aws.Context, input *UpdateUserHierarchyStructureInput, opts ...request.Option) (*UpdateUserHierarchyStructureOutput, error) {
	req, out := c.UpdateUserHierarchyStructureRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateUserIdentityInfo = "UpdateUserIdentityInfo"

// UpdateUserIdentityInfoRequest generates a "aws/request.Request" representing the
// client's request for the UpdateUserIdentityInfo operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateUserIdentityInfo for more information on using the UpdateUserIdentityInfo
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateUserIdentityInfoRequest method.
//	req, resp := client.UpdateUserIdentityInfoRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateUserIdentityInfo
func (c *Connect) UpdateUserIdentityInfoRequest(input *UpdateUserIdentityInfoInput) (req *request.Request, output *UpdateUserIdentityInfoOutput) {
	op := &request.Operation{
		Name:       opUpdateUserIdentityInfo,
		HTTPMethod: "POST",
		HTTPPath:   "/users/{InstanceId}/{UserId}/identity-info",
	}

	if input == nil {
		input = &UpdateUserIdentityInfoInput{}
	}

	output = &UpdateUserIdentityInfoOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateUserIdentityInfo API operation for Amazon Connect Service.
//
// Updates the identity information for the specified user.
//
// We strongly recommend limiting who has the ability to invoke UpdateUserIdentityInfo.
// Someone with that ability can change the login credentials of other users
// by changing their email address. This poses a security risk to your organization.
// They can change the email address of a user to the attacker's email address,
// and then reset the password through email. For more information, see Best
// Practices for Security Profiles (https://docs.aws.amazon.com/connect/latest/adminguide/security-profile-best-practices.html)
// in the Amazon Connect Administrator 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 Amazon Connect Service's
// API operation UpdateUserIdentityInfo for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateUserIdentityInfo
func (c *Connect) UpdateUserIdentityInfo(input *UpdateUserIdentityInfoInput) (*UpdateUserIdentityInfoOutput, error) {
	req, out := c.UpdateUserIdentityInfoRequest(input)
	return out, req.Send()
}

// UpdateUserIdentityInfoWithContext is the same as UpdateUserIdentityInfo with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateUserIdentityInfo for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateUserIdentityInfoWithContext(ctx aws.Context, input *UpdateUserIdentityInfoInput, opts ...request.Option) (*UpdateUserIdentityInfoOutput, error) {
	req, out := c.UpdateUserIdentityInfoRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateUserPhoneConfig = "UpdateUserPhoneConfig"

// UpdateUserPhoneConfigRequest generates a "aws/request.Request" representing the
// client's request for the UpdateUserPhoneConfig operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateUserPhoneConfig for more information on using the UpdateUserPhoneConfig
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateUserPhoneConfigRequest method.
//	req, resp := client.UpdateUserPhoneConfigRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateUserPhoneConfig
func (c *Connect) UpdateUserPhoneConfigRequest(input *UpdateUserPhoneConfigInput) (req *request.Request, output *UpdateUserPhoneConfigOutput) {
	op := &request.Operation{
		Name:       opUpdateUserPhoneConfig,
		HTTPMethod: "POST",
		HTTPPath:   "/users/{InstanceId}/{UserId}/phone-config",
	}

	if input == nil {
		input = &UpdateUserPhoneConfigInput{}
	}

	output = &UpdateUserPhoneConfigOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateUserPhoneConfig API operation for Amazon Connect Service.
//
// Updates the phone configuration settings for the specified user.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateUserPhoneConfig for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateUserPhoneConfig
func (c *Connect) UpdateUserPhoneConfig(input *UpdateUserPhoneConfigInput) (*UpdateUserPhoneConfigOutput, error) {
	req, out := c.UpdateUserPhoneConfigRequest(input)
	return out, req.Send()
}

// UpdateUserPhoneConfigWithContext is the same as UpdateUserPhoneConfig with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateUserPhoneConfig for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateUserPhoneConfigWithContext(ctx aws.Context, input *UpdateUserPhoneConfigInput, opts ...request.Option) (*UpdateUserPhoneConfigOutput, error) {
	req, out := c.UpdateUserPhoneConfigRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateUserProficiencies = "UpdateUserProficiencies"

// UpdateUserProficienciesRequest generates a "aws/request.Request" representing the
// client's request for the UpdateUserProficiencies operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateUserProficiencies for more information on using the UpdateUserProficiencies
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateUserProficienciesRequest method.
//	req, resp := client.UpdateUserProficienciesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateUserProficiencies
func (c *Connect) UpdateUserProficienciesRequest(input *UpdateUserProficienciesInput) (req *request.Request, output *UpdateUserProficienciesOutput) {
	op := &request.Operation{
		Name:       opUpdateUserProficiencies,
		HTTPMethod: "POST",
		HTTPPath:   "/users/{InstanceId}/{UserId}/proficiencies",
	}

	if input == nil {
		input = &UpdateUserProficienciesInput{}
	}

	output = &UpdateUserProficienciesOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateUserProficiencies API operation for Amazon Connect Service.
//
// Updates the properties associated with the proficiencies of a user.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateUserProficiencies for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateUserProficiencies
func (c *Connect) UpdateUserProficiencies(input *UpdateUserProficienciesInput) (*UpdateUserProficienciesOutput, error) {
	req, out := c.UpdateUserProficienciesRequest(input)
	return out, req.Send()
}

// UpdateUserProficienciesWithContext is the same as UpdateUserProficiencies with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateUserProficiencies for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateUserProficienciesWithContext(ctx aws.Context, input *UpdateUserProficienciesInput, opts ...request.Option) (*UpdateUserProficienciesOutput, error) {
	req, out := c.UpdateUserProficienciesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateUserRoutingProfile = "UpdateUserRoutingProfile"

// UpdateUserRoutingProfileRequest generates a "aws/request.Request" representing the
// client's request for the UpdateUserRoutingProfile operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateUserRoutingProfile for more information on using the UpdateUserRoutingProfile
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateUserRoutingProfileRequest method.
//	req, resp := client.UpdateUserRoutingProfileRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateUserRoutingProfile
func (c *Connect) UpdateUserRoutingProfileRequest(input *UpdateUserRoutingProfileInput) (req *request.Request, output *UpdateUserRoutingProfileOutput) {
	op := &request.Operation{
		Name:       opUpdateUserRoutingProfile,
		HTTPMethod: "POST",
		HTTPPath:   "/users/{InstanceId}/{UserId}/routing-profile",
	}

	if input == nil {
		input = &UpdateUserRoutingProfileInput{}
	}

	output = &UpdateUserRoutingProfileOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateUserRoutingProfile API operation for Amazon Connect Service.
//
// Assigns the specified routing profile to the specified user.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateUserRoutingProfile for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateUserRoutingProfile
func (c *Connect) UpdateUserRoutingProfile(input *UpdateUserRoutingProfileInput) (*UpdateUserRoutingProfileOutput, error) {
	req, out := c.UpdateUserRoutingProfileRequest(input)
	return out, req.Send()
}

// UpdateUserRoutingProfileWithContext is the same as UpdateUserRoutingProfile with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateUserRoutingProfile for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateUserRoutingProfileWithContext(ctx aws.Context, input *UpdateUserRoutingProfileInput, opts ...request.Option) (*UpdateUserRoutingProfileOutput, error) {
	req, out := c.UpdateUserRoutingProfileRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateUserSecurityProfiles = "UpdateUserSecurityProfiles"

// UpdateUserSecurityProfilesRequest generates a "aws/request.Request" representing the
// client's request for the UpdateUserSecurityProfiles operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateUserSecurityProfiles for more information on using the UpdateUserSecurityProfiles
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateUserSecurityProfilesRequest method.
//	req, resp := client.UpdateUserSecurityProfilesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateUserSecurityProfiles
func (c *Connect) UpdateUserSecurityProfilesRequest(input *UpdateUserSecurityProfilesInput) (req *request.Request, output *UpdateUserSecurityProfilesOutput) {
	op := &request.Operation{
		Name:       opUpdateUserSecurityProfiles,
		HTTPMethod: "POST",
		HTTPPath:   "/users/{InstanceId}/{UserId}/security-profiles",
	}

	if input == nil {
		input = &UpdateUserSecurityProfilesInput{}
	}

	output = &UpdateUserSecurityProfilesOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateUserSecurityProfiles API operation for Amazon Connect Service.
//
// Assigns the specified security profiles to the specified user.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateUserSecurityProfiles for usage and error information.
//
// Returned Error Types:
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - ThrottlingException
//     The throttling limit has been exceeded.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateUserSecurityProfiles
func (c *Connect) UpdateUserSecurityProfiles(input *UpdateUserSecurityProfilesInput) (*UpdateUserSecurityProfilesOutput, error) {
	req, out := c.UpdateUserSecurityProfilesRequest(input)
	return out, req.Send()
}

// UpdateUserSecurityProfilesWithContext is the same as UpdateUserSecurityProfiles with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateUserSecurityProfiles for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateUserSecurityProfilesWithContext(ctx aws.Context, input *UpdateUserSecurityProfilesInput, opts ...request.Option) (*UpdateUserSecurityProfilesOutput, error) {
	req, out := c.UpdateUserSecurityProfilesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateViewContent = "UpdateViewContent"

// UpdateViewContentRequest generates a "aws/request.Request" representing the
// client's request for the UpdateViewContent operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateViewContent for more information on using the UpdateViewContent
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateViewContentRequest method.
//	req, resp := client.UpdateViewContentRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateViewContent
func (c *Connect) UpdateViewContentRequest(input *UpdateViewContentInput) (req *request.Request, output *UpdateViewContentOutput) {
	op := &request.Operation{
		Name:       opUpdateViewContent,
		HTTPMethod: "POST",
		HTTPPath:   "/views/{InstanceId}/{ViewId}",
	}

	if input == nil {
		input = &UpdateViewContentInput{}
	}

	output = &UpdateViewContentOutput{}
	req = c.newRequest(op, input, output)
	return
}

// UpdateViewContent API operation for Amazon Connect Service.
//
// Updates the view content of the given view identifier in the specified Amazon
// Connect instance.
//
// It performs content validation if Status is set to SAVED and performs full
// content validation if Status is PUBLISHED. Note that the $SAVED alias' content
// will always be updated, but the $LATEST alias' content will only be updated
// if Status is PUBLISHED.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateViewContent for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - TooManyRequestsException
//     Displayed when rate-related API limits are exceeded.
//
//   - ResourceInUseException
//     That resource is already in use. Please try another.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateViewContent
func (c *Connect) UpdateViewContent(input *UpdateViewContentInput) (*UpdateViewContentOutput, error) {
	req, out := c.UpdateViewContentRequest(input)
	return out, req.Send()
}

// UpdateViewContentWithContext is the same as UpdateViewContent with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateViewContent for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateViewContentWithContext(ctx aws.Context, input *UpdateViewContentInput, opts ...request.Option) (*UpdateViewContentOutput, error) {
	req, out := c.UpdateViewContentRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateViewMetadata = "UpdateViewMetadata"

// UpdateViewMetadataRequest generates a "aws/request.Request" representing the
// client's request for the UpdateViewMetadata operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateViewMetadata for more information on using the UpdateViewMetadata
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateViewMetadataRequest method.
//	req, resp := client.UpdateViewMetadataRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateViewMetadata
func (c *Connect) UpdateViewMetadataRequest(input *UpdateViewMetadataInput) (req *request.Request, output *UpdateViewMetadataOutput) {
	op := &request.Operation{
		Name:       opUpdateViewMetadata,
		HTTPMethod: "POST",
		HTTPPath:   "/views/{InstanceId}/{ViewId}/metadata",
	}

	if input == nil {
		input = &UpdateViewMetadataInput{}
	}

	output = &UpdateViewMetadataOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UpdateViewMetadata API operation for Amazon Connect Service.
//
// Updates the view metadata. Note that either Name or Description must be provided.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Connect Service's
// API operation UpdateViewMetadata for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You do not have sufficient permissions to perform this action.
//
//   - InvalidRequestException
//     The request is not valid.
//
//   - InvalidParameterException
//     One or more of the specified parameters are not valid.
//
//   - ResourceNotFoundException
//     The specified resource was not found.
//
//   - InternalServiceException
//     Request processing failed because of an error or failure with the service.
//
//   - TooManyRequestsException
//     Displayed when rate-related API limits are exceeded.
//
//   - DuplicateResourceException
//     A resource with the specified name already exists.
//
//   - ResourceInUseException
//     That resource is already in use. Please try another.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/connect-2017-08-08/UpdateViewMetadata
func (c *Connect) UpdateViewMetadata(input *UpdateViewMetadataInput) (*UpdateViewMetadataOutput, error) {
	req, out := c.UpdateViewMetadataRequest(input)
	return out, req.Send()
}

// UpdateViewMetadataWithContext is the same as UpdateViewMetadata with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateViewMetadata for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Connect) UpdateViewMetadataWithContext(ctx aws.Context, input *UpdateViewMetadataInput, opts ...request.Option) (*UpdateViewMetadataOutput, error) {
	req, out := c.UpdateViewMetadataRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// You do not have sufficient permissions to perform this action.
type AccessDeniedException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AccessDeniedException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AccessDeniedException) GoString() string {
	return s.String()
}

func newErrorAccessDeniedException(v protocol.ResponseMetadata) error {
	return &AccessDeniedException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *AccessDeniedException) Code() string {
	return "AccessDeniedException"
}

// Message returns the exception's message.
func (s *AccessDeniedException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *AccessDeniedException) OrigErr() error {
	return nil
}

func (s *AccessDeniedException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *AccessDeniedException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *AccessDeniedException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Information about an action.
type ActionSummary struct {
	_ struct{} `type:"structure"`

	// The action type.
	//
	// ActionType is a required field
	ActionType *string `type:"string" required:"true" enum:"ActionType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ActionSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ActionSummary) GoString() string {
	return s.String()
}

// SetActionType sets the ActionType field's value.
func (s *ActionSummary) SetActionType(v string) *ActionSummary {
	s.ActionType = &v
	return s
}

type ActivateEvaluationFormInput struct {
	_ struct{} `type:"structure"`

	// The unique identifier for the evaluation form.
	//
	// EvaluationFormId is a required field
	EvaluationFormId *string `location:"uri" locationName:"EvaluationFormId" min:"1" type:"string" required:"true"`

	// The version of the evaluation form to activate. If the version property is
	// not provided, the latest version of the evaluation form is activated.
	//
	// EvaluationFormVersion is a required field
	EvaluationFormVersion *int64 `min:"1" type:"integer" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 ActivateEvaluationFormInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ActivateEvaluationFormInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ActivateEvaluationFormInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ActivateEvaluationFormInput"}
	if s.EvaluationFormId == nil {
		invalidParams.Add(request.NewErrParamRequired("EvaluationFormId"))
	}
	if s.EvaluationFormId != nil && len(*s.EvaluationFormId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EvaluationFormId", 1))
	}
	if s.EvaluationFormVersion == nil {
		invalidParams.Add(request.NewErrParamRequired("EvaluationFormVersion"))
	}
	if s.EvaluationFormVersion != nil && *s.EvaluationFormVersion < 1 {
		invalidParams.Add(request.NewErrParamMinValue("EvaluationFormVersion", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEvaluationFormId sets the EvaluationFormId field's value.
func (s *ActivateEvaluationFormInput) SetEvaluationFormId(v string) *ActivateEvaluationFormInput {
	s.EvaluationFormId = &v
	return s
}

// SetEvaluationFormVersion sets the EvaluationFormVersion field's value.
func (s *ActivateEvaluationFormInput) SetEvaluationFormVersion(v int64) *ActivateEvaluationFormInput {
	s.EvaluationFormVersion = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *ActivateEvaluationFormInput) SetInstanceId(v string) *ActivateEvaluationFormInput {
	s.InstanceId = &v
	return s
}

type ActivateEvaluationFormOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the evaluation form resource.
	//
	// EvaluationFormArn is a required field
	EvaluationFormArn *string `type:"string" required:"true"`

	// The unique identifier for the evaluation form.
	//
	// EvaluationFormId is a required field
	EvaluationFormId *string `min:"1" type:"string" required:"true"`

	// A version of the evaluation form.
	//
	// EvaluationFormVersion is a required field
	EvaluationFormVersion *int64 `min:"1" type:"integer" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ActivateEvaluationFormOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ActivateEvaluationFormOutput) GoString() string {
	return s.String()
}

// SetEvaluationFormArn sets the EvaluationFormArn field's value.
func (s *ActivateEvaluationFormOutput) SetEvaluationFormArn(v string) *ActivateEvaluationFormOutput {
	s.EvaluationFormArn = &v
	return s
}

// SetEvaluationFormId sets the EvaluationFormId field's value.
func (s *ActivateEvaluationFormOutput) SetEvaluationFormId(v string) *ActivateEvaluationFormOutput {
	s.EvaluationFormId = &v
	return s
}

// SetEvaluationFormVersion sets the EvaluationFormVersion field's value.
func (s *ActivateEvaluationFormOutput) SetEvaluationFormVersion(v int64) *ActivateEvaluationFormOutput {
	s.EvaluationFormVersion = &v
	return s
}

// The distribution of agents between the instance and its replica(s).
type AgentConfig struct {
	_ struct{} `type:"structure"`

	// Information about traffic distributions.
	//
	// Distributions is a required field
	Distributions []*Distribution `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 AgentConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AgentConfig) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AgentConfig) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AgentConfig"}
	if s.Distributions == nil {
		invalidParams.Add(request.NewErrParamRequired("Distributions"))
	}
	if s.Distributions != nil {
		for i, v := range s.Distributions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Distributions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDistributions sets the Distributions field's value.
func (s *AgentConfig) SetDistributions(v []*Distribution) *AgentConfig {
	s.Distributions = v
	return s
}

// Information about the contact (https://docs.aws.amazon.com/connect/latest/APIReference/API_Contact.html)
// associated to the user.
type AgentContactReference struct {
	_ struct{} `type:"structure"`

	// The state of the contact (https://docs.aws.amazon.com/connect/latest/adminguide/about-contact-states.html).
	AgentContactState *string `type:"string" enum:"ContactState"`

	// The channel of the contact.
	Channel *string `type:"string" enum:"Channel"`

	// The time at which the contact was connected to an agent.
	ConnectedToAgentTimestamp *time.Time `type:"timestamp"`

	// The identifier of the contact in this instance of Amazon Connect.
	ContactId *string `min:"1" type:"string"`

	// How the contact was initiated.
	InitiationMethod *string `type:"string" enum:"ContactInitiationMethod"`

	// Contains information about a queue resource for which metrics are returned.
	Queue *QueueReference `type:"structure"`

	// The epoch timestamp when the contact state started.
	StateStartTimestamp *time.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 AgentContactReference) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AgentContactReference) GoString() string {
	return s.String()
}

// SetAgentContactState sets the AgentContactState field's value.
func (s *AgentContactReference) SetAgentContactState(v string) *AgentContactReference {
	s.AgentContactState = &v
	return s
}

// SetChannel sets the Channel field's value.
func (s *AgentContactReference) SetChannel(v string) *AgentContactReference {
	s.Channel = &v
	return s
}

// SetConnectedToAgentTimestamp sets the ConnectedToAgentTimestamp field's value.
func (s *AgentContactReference) SetConnectedToAgentTimestamp(v time.Time) *AgentContactReference {
	s.ConnectedToAgentTimestamp = &v
	return s
}

// SetContactId sets the ContactId field's value.
func (s *AgentContactReference) SetContactId(v string) *AgentContactReference {
	s.ContactId = &v
	return s
}

// SetInitiationMethod sets the InitiationMethod field's value.
func (s *AgentContactReference) SetInitiationMethod(v string) *AgentContactReference {
	s.InitiationMethod = &v
	return s
}

// SetQueue sets the Queue field's value.
func (s *AgentContactReference) SetQueue(v *QueueReference) *AgentContactReference {
	s.Queue = v
	return s
}

// SetStateStartTimestamp sets the StateStartTimestamp field's value.
func (s *AgentContactReference) SetStateStartTimestamp(v time.Time) *AgentContactReference {
	s.StateStartTimestamp = &v
	return s
}

// A structure that defines search criteria for contacts using agent hierarchy
// group levels. For more information about agent hierarchies, see Set Up Agent
// Hierarchies (https://docs.aws.amazon.com/connect/latest/adminguide/agent-hierarchy.html)
// in the Amazon Connect Administrator Guide.
type AgentHierarchyGroups struct {
	_ struct{} `type:"structure"`

	// The identifiers for level 1 hierarchy groups.
	L1Ids []*string `type:"list"`

	// The identifiers for level 2 hierarchy groups.
	L2Ids []*string `type:"list"`

	// The identifiers for level 3 hierarchy groups.
	L3Ids []*string `type:"list"`

	// The identifiers for level 4 hierarchy groups.
	L4Ids []*string `type:"list"`

	// The identifiers for level 5 hierarchy groups.
	L5Ids []*string `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 AgentHierarchyGroups) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AgentHierarchyGroups) GoString() string {
	return s.String()
}

// SetL1Ids sets the L1Ids field's value.
func (s *AgentHierarchyGroups) SetL1Ids(v []*string) *AgentHierarchyGroups {
	s.L1Ids = v
	return s
}

// SetL2Ids sets the L2Ids field's value.
func (s *AgentHierarchyGroups) SetL2Ids(v []*string) *AgentHierarchyGroups {
	s.L2Ids = v
	return s
}

// SetL3Ids sets the L3Ids field's value.
func (s *AgentHierarchyGroups) SetL3Ids(v []*string) *AgentHierarchyGroups {
	s.L3Ids = v
	return s
}

// SetL4Ids sets the L4Ids field's value.
func (s *AgentHierarchyGroups) SetL4Ids(v []*string) *AgentHierarchyGroups {
	s.L4Ids = v
	return s
}

// SetL5Ids sets the L5Ids field's value.
func (s *AgentHierarchyGroups) SetL5Ids(v []*string) *AgentHierarchyGroups {
	s.L5Ids = v
	return s
}

// Information about the agent who accepted the contact.
type AgentInfo struct {
	_ struct{} `type:"structure"`

	// Agent pause duration for a contact in seconds.
	AgentPauseDurationInSeconds *int64 `type:"integer"`

	// The timestamp when the contact was connected to the agent.
	ConnectedToAgentTimestamp *time.Time `type:"timestamp"`

	// The identifier of the agent who accepted the contact.
	Id *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AgentInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AgentInfo) GoString() string {
	return s.String()
}

// SetAgentPauseDurationInSeconds sets the AgentPauseDurationInSeconds field's value.
func (s *AgentInfo) SetAgentPauseDurationInSeconds(v int64) *AgentInfo {
	s.AgentPauseDurationInSeconds = &v
	return s
}

// SetConnectedToAgentTimestamp sets the ConnectedToAgentTimestamp field's value.
func (s *AgentInfo) SetConnectedToAgentTimestamp(v time.Time) *AgentInfo {
	s.ConnectedToAgentTimestamp = &v
	return s
}

// SetId sets the Id field's value.
func (s *AgentInfo) SetId(v string) *AgentInfo {
	s.Id = &v
	return s
}

// Contains information about an agent status.
type AgentStatus struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the agent status.
	AgentStatusARN *string `type:"string"`

	// The identifier of the agent status.
	AgentStatusId *string `type:"string"`

	// The description of the agent status.
	Description *string `min:"1" type:"string"`

	// The display order of the agent status.
	DisplayOrder *int64 `min:"1" type:"integer"`

	// The Amazon Web Services Region where this resource was last modified.
	LastModifiedRegion *string `type:"string"`

	// The timestamp when this resource was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The name of the agent status.
	Name *string `min:"1" type:"string"`

	// The state of the agent status.
	State *string `type:"string" enum:"AgentStatusState"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`

	// The type of agent status.
	Type *string `type:"string" enum:"AgentStatusType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AgentStatus) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AgentStatus) GoString() string {
	return s.String()
}

// SetAgentStatusARN sets the AgentStatusARN field's value.
func (s *AgentStatus) SetAgentStatusARN(v string) *AgentStatus {
	s.AgentStatusARN = &v
	return s
}

// SetAgentStatusId sets the AgentStatusId field's value.
func (s *AgentStatus) SetAgentStatusId(v string) *AgentStatus {
	s.AgentStatusId = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *AgentStatus) SetDescription(v string) *AgentStatus {
	s.Description = &v
	return s
}

// SetDisplayOrder sets the DisplayOrder field's value.
func (s *AgentStatus) SetDisplayOrder(v int64) *AgentStatus {
	s.DisplayOrder = &v
	return s
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *AgentStatus) SetLastModifiedRegion(v string) *AgentStatus {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *AgentStatus) SetLastModifiedTime(v time.Time) *AgentStatus {
	s.LastModifiedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *AgentStatus) SetName(v string) *AgentStatus {
	s.Name = &v
	return s
}

// SetState sets the State field's value.
func (s *AgentStatus) SetState(v string) *AgentStatus {
	s.State = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *AgentStatus) SetTags(v map[string]*string) *AgentStatus {
	s.Tags = v
	return s
}

// SetType sets the Type field's value.
func (s *AgentStatus) SetType(v string) *AgentStatus {
	s.Type = &v
	return s
}

// Information about the agent's status.
type AgentStatusReference struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the agent's status.
	StatusArn *string `type:"string"`

	// The name of the agent status.
	StatusName *string `min:"1" type:"string"`

	// The start timestamp of the agent's status.
	StatusStartTimestamp *time.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 AgentStatusReference) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AgentStatusReference) GoString() string {
	return s.String()
}

// SetStatusArn sets the StatusArn field's value.
func (s *AgentStatusReference) SetStatusArn(v string) *AgentStatusReference {
	s.StatusArn = &v
	return s
}

// SetStatusName sets the StatusName field's value.
func (s *AgentStatusReference) SetStatusName(v string) *AgentStatusReference {
	s.StatusName = &v
	return s
}

// SetStatusStartTimestamp sets the StatusStartTimestamp field's value.
func (s *AgentStatusReference) SetStatusStartTimestamp(v time.Time) *AgentStatusReference {
	s.StatusStartTimestamp = &v
	return s
}

// Summary information for an agent status.
type AgentStatusSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the agent status.
	Arn *string `type:"string"`

	// The identifier for an agent status.
	Id *string `type:"string"`

	// The Amazon Web Services Region where this resource was last modified.
	LastModifiedRegion *string `type:"string"`

	// The timestamp when this resource was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The name of the agent status.
	Name *string `min:"1" type:"string"`

	// The type of the agent status.
	Type *string `type:"string" enum:"AgentStatusType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AgentStatusSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AgentStatusSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *AgentStatusSummary) SetArn(v string) *AgentStatusSummary {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *AgentStatusSummary) SetId(v string) *AgentStatusSummary {
	s.Id = &v
	return s
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *AgentStatusSummary) SetLastModifiedRegion(v string) *AgentStatusSummary {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *AgentStatusSummary) SetLastModifiedTime(v time.Time) *AgentStatusSummary {
	s.LastModifiedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *AgentStatusSummary) SetName(v string) *AgentStatusSummary {
	s.Name = &v
	return s
}

// SetType sets the Type field's value.
func (s *AgentStatusSummary) SetType(v string) *AgentStatusSummary {
	s.Type = &v
	return s
}

// Information about the capabilities enabled for participants of the contact.
type AllowedCapabilities struct {
	_ struct{} `type:"structure"`

	// Information about the agent's video sharing capabilities.
	Agent *ParticipantCapabilities `type:"structure"`

	// Information about the customer's video sharing capabilities.
	Customer *ParticipantCapabilities `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 AllowedCapabilities) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AllowedCapabilities) GoString() string {
	return s.String()
}

// SetAgent sets the Agent field's value.
func (s *AllowedCapabilities) SetAgent(v *ParticipantCapabilities) *AllowedCapabilities {
	s.Agent = v
	return s
}

// SetCustomer sets the Customer field's value.
func (s *AllowedCapabilities) SetCustomer(v *ParticipantCapabilities) *AllowedCapabilities {
	s.Customer = v
	return s
}

// This API is in preview release for Amazon Connect and is subject to change.
//
// Information about associations that are successfully created: DataSetId,
// TargetAccountId, ResourceShareId, ResourceShareArn.
type AnalyticsDataAssociationResult struct {
	_ struct{} `type:"structure"`

	// The identifier of the dataset.
	DataSetId *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the Resource Access Manager share.
	ResourceShareArn *string `type:"string"`

	// The Resource Access Manager share ID.
	ResourceShareId *string `type:"string"`

	// The identifier of the target account.
	TargetAccountId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AnalyticsDataAssociationResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AnalyticsDataAssociationResult) GoString() string {
	return s.String()
}

// SetDataSetId sets the DataSetId field's value.
func (s *AnalyticsDataAssociationResult) SetDataSetId(v string) *AnalyticsDataAssociationResult {
	s.DataSetId = &v
	return s
}

// SetResourceShareArn sets the ResourceShareArn field's value.
func (s *AnalyticsDataAssociationResult) SetResourceShareArn(v string) *AnalyticsDataAssociationResult {
	s.ResourceShareArn = &v
	return s
}

// SetResourceShareId sets the ResourceShareId field's value.
func (s *AnalyticsDataAssociationResult) SetResourceShareId(v string) *AnalyticsDataAssociationResult {
	s.ResourceShareId = &v
	return s
}

// SetTargetAccountId sets the TargetAccountId field's value.
func (s *AnalyticsDataAssociationResult) SetTargetAccountId(v string) *AnalyticsDataAssociationResult {
	s.TargetAccountId = &v
	return s
}

// Configuration of the answering machine detection.
type AnswerMachineDetectionConfig struct {
	_ struct{} `type:"structure"`

	// Wait for the answering machine prompt.
	AwaitAnswerMachinePrompt *bool `type:"boolean"`

	// The flag to indicate if answer machine detection analysis needs to be performed
	// for a voice call. If set to true, TrafficType must be set as CAMPAIGN.
	EnableAnswerMachineDetection *bool `type:"boolean"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AnswerMachineDetectionConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AnswerMachineDetectionConfig) GoString() string {
	return s.String()
}

// SetAwaitAnswerMachinePrompt sets the AwaitAnswerMachinePrompt field's value.
func (s *AnswerMachineDetectionConfig) SetAwaitAnswerMachinePrompt(v bool) *AnswerMachineDetectionConfig {
	s.AwaitAnswerMachinePrompt = &v
	return s
}

// SetEnableAnswerMachineDetection sets the EnableAnswerMachineDetection field's value.
func (s *AnswerMachineDetectionConfig) SetEnableAnswerMachineDetection(v bool) *AnswerMachineDetectionConfig {
	s.EnableAnswerMachineDetection = &v
	return s
}

// This API is in preview release for Amazon Connect and is subject to change.
//
// A third-party application's metadata.
type Application struct {
	_ struct{} `type:"structure"`

	// The permissions that the agent is granted on the application. Only the ACCESS
	// permission is supported.
	ApplicationPermissions []*string `min:"1" type:"list"`

	// Namespace of the application that you want to give access to.
	Namespace *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Application) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Application) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Application) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Application"}
	if s.ApplicationPermissions != nil && len(s.ApplicationPermissions) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ApplicationPermissions", 1))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetApplicationPermissions sets the ApplicationPermissions field's value.
func (s *Application) SetApplicationPermissions(v []*string) *Application {
	s.ApplicationPermissions = v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *Application) SetNamespace(v string) *Application {
	s.Namespace = &v
	return s
}

// This action must be set if TriggerEventSource is one of the following values:
// OnPostCallAnalysisAvailable | OnRealTimeCallAnalysisAvailable | OnRealTimeChatAnalysisAvailable
// | OnPostChatAnalysisAvailable. Contact is categorized using the rule name.
//
// RuleName is used as ContactCategory.
type AssignContactCategoryActionDefinition 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 AssignContactCategoryActionDefinition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssignContactCategoryActionDefinition) GoString() string {
	return s.String()
}

type AssociateAnalyticsDataSetInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the dataset to associate with the target account.
	//
	// DataSetId is a required field
	DataSetId *string `min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the target account. Use to associate a dataset to a different
	// account than the one containing the Amazon Connect instance. If not specified,
	// by default this value is the Amazon Web Services account that has the Amazon
	// Connect instance.
	TargetAccountId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateAnalyticsDataSetInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateAnalyticsDataSetInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AssociateAnalyticsDataSetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AssociateAnalyticsDataSetInput"}
	if s.DataSetId == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetId"))
	}
	if s.DataSetId != nil && len(*s.DataSetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSetId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataSetId sets the DataSetId field's value.
func (s *AssociateAnalyticsDataSetInput) SetDataSetId(v string) *AssociateAnalyticsDataSetInput {
	s.DataSetId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *AssociateAnalyticsDataSetInput) SetInstanceId(v string) *AssociateAnalyticsDataSetInput {
	s.InstanceId = &v
	return s
}

// SetTargetAccountId sets the TargetAccountId field's value.
func (s *AssociateAnalyticsDataSetInput) SetTargetAccountId(v string) *AssociateAnalyticsDataSetInput {
	s.TargetAccountId = &v
	return s
}

type AssociateAnalyticsDataSetOutput struct {
	_ struct{} `type:"structure"`

	// The identifier of the dataset that was associated.
	DataSetId *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the Resource Access Manager share.
	ResourceShareArn *string `type:"string"`

	// The Resource Access Manager share ID that is generated.
	ResourceShareId *string `type:"string"`

	// The identifier of the target account.
	TargetAccountId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateAnalyticsDataSetOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateAnalyticsDataSetOutput) GoString() string {
	return s.String()
}

// SetDataSetId sets the DataSetId field's value.
func (s *AssociateAnalyticsDataSetOutput) SetDataSetId(v string) *AssociateAnalyticsDataSetOutput {
	s.DataSetId = &v
	return s
}

// SetResourceShareArn sets the ResourceShareArn field's value.
func (s *AssociateAnalyticsDataSetOutput) SetResourceShareArn(v string) *AssociateAnalyticsDataSetOutput {
	s.ResourceShareArn = &v
	return s
}

// SetResourceShareId sets the ResourceShareId field's value.
func (s *AssociateAnalyticsDataSetOutput) SetResourceShareId(v string) *AssociateAnalyticsDataSetOutput {
	s.ResourceShareId = &v
	return s
}

// SetTargetAccountId sets the TargetAccountId field's value.
func (s *AssociateAnalyticsDataSetOutput) SetTargetAccountId(v string) *AssociateAnalyticsDataSetOutput {
	s.TargetAccountId = &v
	return s
}

type AssociateApprovedOriginInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The domain to add to your allow list.
	//
	// Origin is a required field
	Origin *string `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 AssociateApprovedOriginInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateApprovedOriginInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AssociateApprovedOriginInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AssociateApprovedOriginInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Origin == nil {
		invalidParams.Add(request.NewErrParamRequired("Origin"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *AssociateApprovedOriginInput) SetInstanceId(v string) *AssociateApprovedOriginInput {
	s.InstanceId = &v
	return s
}

// SetOrigin sets the Origin field's value.
func (s *AssociateApprovedOriginInput) SetOrigin(v string) *AssociateApprovedOriginInput {
	s.Origin = &v
	return s
}

type AssociateApprovedOriginOutput 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 AssociateApprovedOriginOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateApprovedOriginOutput) GoString() string {
	return s.String()
}

type AssociateBotInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// Configuration information of an Amazon Lex bot.
	LexBot *LexBot `type:"structure"`

	// The Amazon Lex V2 bot to associate with the instance.
	LexV2Bot *LexV2Bot `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 AssociateBotInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateBotInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AssociateBotInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AssociateBotInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.LexBot != nil {
		if err := s.LexBot.Validate(); err != nil {
			invalidParams.AddNested("LexBot", err.(request.ErrInvalidParams))
		}
	}
	if s.LexV2Bot != nil {
		if err := s.LexV2Bot.Validate(); err != nil {
			invalidParams.AddNested("LexV2Bot", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *AssociateBotInput) SetInstanceId(v string) *AssociateBotInput {
	s.InstanceId = &v
	return s
}

// SetLexBot sets the LexBot field's value.
func (s *AssociateBotInput) SetLexBot(v *LexBot) *AssociateBotInput {
	s.LexBot = v
	return s
}

// SetLexV2Bot sets the LexV2Bot field's value.
func (s *AssociateBotInput) SetLexV2Bot(v *LexV2Bot) *AssociateBotInput {
	s.LexV2Bot = v
	return s
}

type AssociateBotOutput 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 AssociateBotOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateBotOutput) GoString() string {
	return s.String()
}

type AssociateDefaultVocabularyInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The language code of the vocabulary entries. For a list of languages and
	// their corresponding language codes, see What is Amazon Transcribe? (https://docs.aws.amazon.com/transcribe/latest/dg/transcribe-whatis.html)
	//
	// LanguageCode is a required field
	LanguageCode *string `location:"uri" locationName:"LanguageCode" type:"string" required:"true" enum:"VocabularyLanguageCode"`

	// The identifier of the custom vocabulary. If this is empty, the default is
	// set to none.
	VocabularyId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateDefaultVocabularyInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateDefaultVocabularyInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AssociateDefaultVocabularyInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AssociateDefaultVocabularyInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.LanguageCode == nil {
		invalidParams.Add(request.NewErrParamRequired("LanguageCode"))
	}
	if s.LanguageCode != nil && len(*s.LanguageCode) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("LanguageCode", 1))
	}
	if s.VocabularyId != nil && len(*s.VocabularyId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VocabularyId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *AssociateDefaultVocabularyInput) SetInstanceId(v string) *AssociateDefaultVocabularyInput {
	s.InstanceId = &v
	return s
}

// SetLanguageCode sets the LanguageCode field's value.
func (s *AssociateDefaultVocabularyInput) SetLanguageCode(v string) *AssociateDefaultVocabularyInput {
	s.LanguageCode = &v
	return s
}

// SetVocabularyId sets the VocabularyId field's value.
func (s *AssociateDefaultVocabularyInput) SetVocabularyId(v string) *AssociateDefaultVocabularyInput {
	s.VocabularyId = &v
	return s
}

type AssociateDefaultVocabularyOutput 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 AssociateDefaultVocabularyOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateDefaultVocabularyOutput) GoString() string {
	return s.String()
}

type AssociateFlowInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the flow.
	//
	// FlowId is a required field
	FlowId *string `type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the resource.
	//
	// ResourceId is a required field
	ResourceId *string `type:"string" required:"true"`

	// A valid resource type.
	//
	// ResourceType is a required field
	ResourceType *string `type:"string" required:"true" enum:"FlowAssociationResourceType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateFlowInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateFlowInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AssociateFlowInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AssociateFlowInput"}
	if s.FlowId == nil {
		invalidParams.Add(request.NewErrParamRequired("FlowId"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.ResourceId == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceId"))
	}
	if s.ResourceType == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceType"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFlowId sets the FlowId field's value.
func (s *AssociateFlowInput) SetFlowId(v string) *AssociateFlowInput {
	s.FlowId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *AssociateFlowInput) SetInstanceId(v string) *AssociateFlowInput {
	s.InstanceId = &v
	return s
}

// SetResourceId sets the ResourceId field's value.
func (s *AssociateFlowInput) SetResourceId(v string) *AssociateFlowInput {
	s.ResourceId = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *AssociateFlowInput) SetResourceType(v string) *AssociateFlowInput {
	s.ResourceType = &v
	return s
}

type AssociateFlowOutput 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 AssociateFlowOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateFlowOutput) GoString() string {
	return s.String()
}

type AssociateInstanceStorageConfigInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// A valid resource type.
	//
	// ResourceType is a required field
	ResourceType *string `type:"string" required:"true" enum:"InstanceStorageResourceType"`

	// A valid storage type.
	//
	// StorageConfig is a required field
	StorageConfig *InstanceStorageConfig `type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateInstanceStorageConfigInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateInstanceStorageConfigInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AssociateInstanceStorageConfigInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AssociateInstanceStorageConfigInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.ResourceType == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceType"))
	}
	if s.StorageConfig == nil {
		invalidParams.Add(request.NewErrParamRequired("StorageConfig"))
	}
	if s.StorageConfig != nil {
		if err := s.StorageConfig.Validate(); err != nil {
			invalidParams.AddNested("StorageConfig", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *AssociateInstanceStorageConfigInput) SetInstanceId(v string) *AssociateInstanceStorageConfigInput {
	s.InstanceId = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *AssociateInstanceStorageConfigInput) SetResourceType(v string) *AssociateInstanceStorageConfigInput {
	s.ResourceType = &v
	return s
}

// SetStorageConfig sets the StorageConfig field's value.
func (s *AssociateInstanceStorageConfigInput) SetStorageConfig(v *InstanceStorageConfig) *AssociateInstanceStorageConfigInput {
	s.StorageConfig = v
	return s
}

type AssociateInstanceStorageConfigOutput struct {
	_ struct{} `type:"structure"`

	// The existing association identifier that uniquely identifies the resource
	// type and storage config for the given instance ID.
	AssociationId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateInstanceStorageConfigOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateInstanceStorageConfigOutput) GoString() string {
	return s.String()
}

// SetAssociationId sets the AssociationId field's value.
func (s *AssociateInstanceStorageConfigOutput) SetAssociationId(v string) *AssociateInstanceStorageConfigOutput {
	s.AssociationId = &v
	return s
}

type AssociateLambdaFunctionInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the Lambda function being associated.
	// Maximum number of characters allowed is 140.
	//
	// FunctionArn is a required field
	FunctionArn *string `min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 AssociateLambdaFunctionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateLambdaFunctionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AssociateLambdaFunctionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AssociateLambdaFunctionInput"}
	if s.FunctionArn == nil {
		invalidParams.Add(request.NewErrParamRequired("FunctionArn"))
	}
	if s.FunctionArn != nil && len(*s.FunctionArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FunctionArn", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFunctionArn sets the FunctionArn field's value.
func (s *AssociateLambdaFunctionInput) SetFunctionArn(v string) *AssociateLambdaFunctionInput {
	s.FunctionArn = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *AssociateLambdaFunctionInput) SetInstanceId(v string) *AssociateLambdaFunctionInput {
	s.InstanceId = &v
	return s
}

type AssociateLambdaFunctionOutput 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 AssociateLambdaFunctionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateLambdaFunctionOutput) GoString() string {
	return s.String()
}

type AssociateLexBotInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The Amazon Lex bot to associate with the instance.
	//
	// LexBot is a required field
	LexBot *LexBot `type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateLexBotInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateLexBotInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AssociateLexBotInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AssociateLexBotInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.LexBot == nil {
		invalidParams.Add(request.NewErrParamRequired("LexBot"))
	}
	if s.LexBot != nil {
		if err := s.LexBot.Validate(); err != nil {
			invalidParams.AddNested("LexBot", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *AssociateLexBotInput) SetInstanceId(v string) *AssociateLexBotInput {
	s.InstanceId = &v
	return s
}

// SetLexBot sets the LexBot field's value.
func (s *AssociateLexBotInput) SetLexBot(v *LexBot) *AssociateLexBotInput {
	s.LexBot = v
	return s
}

type AssociateLexBotOutput 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 AssociateLexBotOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateLexBotOutput) GoString() string {
	return s.String()
}

type AssociatePhoneNumberContactFlowInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the flow.
	//
	// ContactFlowId is a required field
	ContactFlowId *string `type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// A unique identifier for the phone number.
	//
	// PhoneNumberId is a required field
	PhoneNumberId *string `location:"uri" locationName:"PhoneNumberId" 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 AssociatePhoneNumberContactFlowInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociatePhoneNumberContactFlowInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AssociatePhoneNumberContactFlowInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AssociatePhoneNumberContactFlowInput"}
	if s.ContactFlowId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactFlowId"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.PhoneNumberId == nil {
		invalidParams.Add(request.NewErrParamRequired("PhoneNumberId"))
	}
	if s.PhoneNumberId != nil && len(*s.PhoneNumberId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PhoneNumberId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactFlowId sets the ContactFlowId field's value.
func (s *AssociatePhoneNumberContactFlowInput) SetContactFlowId(v string) *AssociatePhoneNumberContactFlowInput {
	s.ContactFlowId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *AssociatePhoneNumberContactFlowInput) SetInstanceId(v string) *AssociatePhoneNumberContactFlowInput {
	s.InstanceId = &v
	return s
}

// SetPhoneNumberId sets the PhoneNumberId field's value.
func (s *AssociatePhoneNumberContactFlowInput) SetPhoneNumberId(v string) *AssociatePhoneNumberContactFlowInput {
	s.PhoneNumberId = &v
	return s
}

type AssociatePhoneNumberContactFlowOutput 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 AssociatePhoneNumberContactFlowOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociatePhoneNumberContactFlowOutput) GoString() string {
	return s.String()
}

type AssociateQueueQuickConnectsInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier for the queue.
	//
	// QueueId is a required field
	QueueId *string `location:"uri" locationName:"QueueId" type:"string" required:"true"`

	// The quick connects to associate with this queue.
	//
	// QuickConnectIds is a required field
	QuickConnectIds []*string `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 AssociateQueueQuickConnectsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateQueueQuickConnectsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AssociateQueueQuickConnectsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AssociateQueueQuickConnectsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.QueueId == nil {
		invalidParams.Add(request.NewErrParamRequired("QueueId"))
	}
	if s.QueueId != nil && len(*s.QueueId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QueueId", 1))
	}
	if s.QuickConnectIds == nil {
		invalidParams.Add(request.NewErrParamRequired("QuickConnectIds"))
	}
	if s.QuickConnectIds != nil && len(s.QuickConnectIds) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QuickConnectIds", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *AssociateQueueQuickConnectsInput) SetInstanceId(v string) *AssociateQueueQuickConnectsInput {
	s.InstanceId = &v
	return s
}

// SetQueueId sets the QueueId field's value.
func (s *AssociateQueueQuickConnectsInput) SetQueueId(v string) *AssociateQueueQuickConnectsInput {
	s.QueueId = &v
	return s
}

// SetQuickConnectIds sets the QuickConnectIds field's value.
func (s *AssociateQueueQuickConnectsInput) SetQuickConnectIds(v []*string) *AssociateQueueQuickConnectsInput {
	s.QuickConnectIds = v
	return s
}

type AssociateQueueQuickConnectsOutput 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 AssociateQueueQuickConnectsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateQueueQuickConnectsOutput) GoString() string {
	return s.String()
}

type AssociateRoutingProfileQueuesInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The queues to associate with this routing profile.
	//
	// QueueConfigs is a required field
	QueueConfigs []*RoutingProfileQueueConfig `min:"1" type:"list" required:"true"`

	// The identifier of the routing profile.
	//
	// RoutingProfileId is a required field
	RoutingProfileId *string `location:"uri" locationName:"RoutingProfileId" 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 AssociateRoutingProfileQueuesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateRoutingProfileQueuesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AssociateRoutingProfileQueuesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AssociateRoutingProfileQueuesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.QueueConfigs == nil {
		invalidParams.Add(request.NewErrParamRequired("QueueConfigs"))
	}
	if s.QueueConfigs != nil && len(s.QueueConfigs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QueueConfigs", 1))
	}
	if s.RoutingProfileId == nil {
		invalidParams.Add(request.NewErrParamRequired("RoutingProfileId"))
	}
	if s.RoutingProfileId != nil && len(*s.RoutingProfileId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RoutingProfileId", 1))
	}
	if s.QueueConfigs != nil {
		for i, v := range s.QueueConfigs {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "QueueConfigs", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *AssociateRoutingProfileQueuesInput) SetInstanceId(v string) *AssociateRoutingProfileQueuesInput {
	s.InstanceId = &v
	return s
}

// SetQueueConfigs sets the QueueConfigs field's value.
func (s *AssociateRoutingProfileQueuesInput) SetQueueConfigs(v []*RoutingProfileQueueConfig) *AssociateRoutingProfileQueuesInput {
	s.QueueConfigs = v
	return s
}

// SetRoutingProfileId sets the RoutingProfileId field's value.
func (s *AssociateRoutingProfileQueuesInput) SetRoutingProfileId(v string) *AssociateRoutingProfileQueuesInput {
	s.RoutingProfileId = &v
	return s
}

type AssociateRoutingProfileQueuesOutput 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 AssociateRoutingProfileQueuesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateRoutingProfileQueuesOutput) GoString() string {
	return s.String()
}

type AssociateSecurityKeyInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// A valid security key in PEM format.
	//
	// Key is a required field
	Key *string `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 AssociateSecurityKeyInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateSecurityKeyInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AssociateSecurityKeyInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AssociateSecurityKeyInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Key == nil {
		invalidParams.Add(request.NewErrParamRequired("Key"))
	}
	if s.Key != nil && len(*s.Key) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *AssociateSecurityKeyInput) SetInstanceId(v string) *AssociateSecurityKeyInput {
	s.InstanceId = &v
	return s
}

// SetKey sets the Key field's value.
func (s *AssociateSecurityKeyInput) SetKey(v string) *AssociateSecurityKeyInput {
	s.Key = &v
	return s
}

type AssociateSecurityKeyOutput struct {
	_ struct{} `type:"structure"`

	// The existing association identifier that uniquely identifies the resource
	// type and storage config for the given instance ID.
	AssociationId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateSecurityKeyOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateSecurityKeyOutput) GoString() string {
	return s.String()
}

// SetAssociationId sets the AssociationId field's value.
func (s *AssociateSecurityKeyOutput) SetAssociationId(v string) *AssociateSecurityKeyOutput {
	s.AssociationId = &v
	return s
}

type AssociateTrafficDistributionGroupUserInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// The identifier of the traffic distribution group. This can be the ID or the
	// ARN if the API is being called in the Region where the traffic distribution
	// group was created. The ARN must be provided if the call is from the replicated
	// Region.
	//
	// TrafficDistributionGroupId is a required field
	TrafficDistributionGroupId *string `location:"uri" locationName:"TrafficDistributionGroupId" type:"string" required:"true"`

	// The identifier of the user account. This can be the ID or the ARN of the
	// user.
	//
	// UserId is a required field
	UserId *string `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 AssociateTrafficDistributionGroupUserInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateTrafficDistributionGroupUserInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AssociateTrafficDistributionGroupUserInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AssociateTrafficDistributionGroupUserInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.TrafficDistributionGroupId == nil {
		invalidParams.Add(request.NewErrParamRequired("TrafficDistributionGroupId"))
	}
	if s.TrafficDistributionGroupId != nil && len(*s.TrafficDistributionGroupId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TrafficDistributionGroupId", 1))
	}
	if s.UserId == nil {
		invalidParams.Add(request.NewErrParamRequired("UserId"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *AssociateTrafficDistributionGroupUserInput) SetInstanceId(v string) *AssociateTrafficDistributionGroupUserInput {
	s.InstanceId = &v
	return s
}

// SetTrafficDistributionGroupId sets the TrafficDistributionGroupId field's value.
func (s *AssociateTrafficDistributionGroupUserInput) SetTrafficDistributionGroupId(v string) *AssociateTrafficDistributionGroupUserInput {
	s.TrafficDistributionGroupId = &v
	return s
}

// SetUserId sets the UserId field's value.
func (s *AssociateTrafficDistributionGroupUserInput) SetUserId(v string) *AssociateTrafficDistributionGroupUserInput {
	s.UserId = &v
	return s
}

type AssociateTrafficDistributionGroupUserOutput 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 AssociateTrafficDistributionGroupUserOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateTrafficDistributionGroupUserOutput) GoString() string {
	return s.String()
}

type AssociateUserProficienciesInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID in the Amazon Resource Name (ARN of the instance).
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the user account.
	//
	// UserId is a required field
	UserId *string `location:"uri" locationName:"UserId" type:"string" required:"true"`

	// The proficiencies to associate with the user.
	//
	// UserProficiencies is a required field
	UserProficiencies []*UserProficiency `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 AssociateUserProficienciesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateUserProficienciesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AssociateUserProficienciesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AssociateUserProficienciesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.UserId == nil {
		invalidParams.Add(request.NewErrParamRequired("UserId"))
	}
	if s.UserId != nil && len(*s.UserId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserId", 1))
	}
	if s.UserProficiencies == nil {
		invalidParams.Add(request.NewErrParamRequired("UserProficiencies"))
	}
	if s.UserProficiencies != nil {
		for i, v := range s.UserProficiencies {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "UserProficiencies", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *AssociateUserProficienciesInput) SetInstanceId(v string) *AssociateUserProficienciesInput {
	s.InstanceId = &v
	return s
}

// SetUserId sets the UserId field's value.
func (s *AssociateUserProficienciesInput) SetUserId(v string) *AssociateUserProficienciesInput {
	s.UserId = &v
	return s
}

// SetUserProficiencies sets the UserProficiencies field's value.
func (s *AssociateUserProficienciesInput) SetUserProficiencies(v []*UserProficiency) *AssociateUserProficienciesInput {
	s.UserProficiencies = v
	return s
}

type AssociateUserProficienciesOutput 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 AssociateUserProficienciesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociateUserProficienciesOutput) GoString() string {
	return s.String()
}

// Information about a reference when the referenceType is ATTACHMENT. Otherwise,
// null.
type AttachmentReference struct {
	_ struct{} `type:"structure"`

	// Identifier of the attachment reference.
	Name *string `min:"1" type:"string"`

	// Status of the attachment reference type.
	Status *string `type:"string" enum:"ReferenceStatus"`

	// The location path of the attachment reference.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AttachmentReference) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AttachmentReference) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *AttachmentReference) SetName(v string) *AttachmentReference {
	s.Name = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AttachmentReference) SetStatus(v string) *AttachmentReference {
	s.Status = &v
	return s
}

// SetValue sets the Value field's value.
func (s *AttachmentReference) SetValue(v string) *AttachmentReference {
	s.Value = &v
	return s
}

// The attendee information, including attendee ID and join token.
type Attendee struct {
	_ struct{} `type:"structure"`

	// The Amazon Chime SDK attendee ID.
	AttendeeId *string `type:"string"`

	// The join token used by the Amazon Chime SDK attendee.
	//
	// JoinToken is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Attendee's
	// String and GoString methods.
	JoinToken *string `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 Attendee) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Attendee) GoString() string {
	return s.String()
}

// SetAttendeeId sets the AttendeeId field's value.
func (s *Attendee) SetAttendeeId(v string) *Attendee {
	s.AttendeeId = &v
	return s
}

// SetJoinToken sets the JoinToken field's value.
func (s *Attendee) SetJoinToken(v string) *Attendee {
	s.JoinToken = &v
	return s
}

// A toggle for an individual feature at the instance level.
type Attribute struct {
	_ struct{} `type:"structure"`

	// The type of attribute.
	AttributeType *string `type:"string" enum:"InstanceAttributeType"`

	// The value of the attribute.
	Value *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Attribute) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Attribute) GoString() string {
	return s.String()
}

// SetAttributeType sets the AttributeType field's value.
func (s *Attribute) SetAttributeType(v string) *Attribute {
	s.AttributeType = &v
	return s
}

// SetValue sets the Value field's value.
func (s *Attribute) SetValue(v string) *Attribute {
	s.Value = &v
	return s
}

// Has audio-specific configurations as the operating parameter for Echo Reduction.
type AudioFeatures struct {
	_ struct{} `type:"structure"`

	// Makes echo reduction available to clients who connect to the meeting.
	EchoReduction *string `type:"string" enum:"MeetingFeatureStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AudioFeatures) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AudioFeatures) GoString() string {
	return s.String()
}

// SetEchoReduction sets the EchoReduction field's value.
func (s *AudioFeatures) SetEchoReduction(v string) *AudioFeatures {
	s.EchoReduction = &v
	return s
}

// Information about available phone numbers.
type AvailableNumberSummary struct {
	_ struct{} `type:"structure"`

	// The phone number. Phone numbers are formatted [+] [country code] [subscriber
	// number including area code].
	PhoneNumber *string `type:"string"`

	// The ISO country code.
	PhoneNumberCountryCode *string `type:"string" enum:"PhoneNumberCountryCode"`

	// The type of phone number.
	PhoneNumberType *string `type:"string" enum:"PhoneNumberType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AvailableNumberSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AvailableNumberSummary) GoString() string {
	return s.String()
}

// SetPhoneNumber sets the PhoneNumber field's value.
func (s *AvailableNumberSummary) SetPhoneNumber(v string) *AvailableNumberSummary {
	s.PhoneNumber = &v
	return s
}

// SetPhoneNumberCountryCode sets the PhoneNumberCountryCode field's value.
func (s *AvailableNumberSummary) SetPhoneNumberCountryCode(v string) *AvailableNumberSummary {
	s.PhoneNumberCountryCode = &v
	return s
}

// SetPhoneNumberType sets the PhoneNumberType field's value.
func (s *AvailableNumberSummary) SetPhoneNumberType(v string) *AvailableNumberSummary {
	s.PhoneNumberType = &v
	return s
}

type BatchAssociateAnalyticsDataSetInput struct {
	_ struct{} `type:"structure"`

	// An array of dataset identifiers to associate.
	//
	// DataSetIds is a required field
	DataSetIds []*string `type:"list" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the target account. Use to associate a dataset to a different
	// account than the one containing the Amazon Connect instance. If not specified,
	// by default this value is the Amazon Web Services account that has the Amazon
	// Connect instance.
	TargetAccountId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchAssociateAnalyticsDataSetInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchAssociateAnalyticsDataSetInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *BatchAssociateAnalyticsDataSetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "BatchAssociateAnalyticsDataSetInput"}
	if s.DataSetIds == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetIds"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataSetIds sets the DataSetIds field's value.
func (s *BatchAssociateAnalyticsDataSetInput) SetDataSetIds(v []*string) *BatchAssociateAnalyticsDataSetInput {
	s.DataSetIds = v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *BatchAssociateAnalyticsDataSetInput) SetInstanceId(v string) *BatchAssociateAnalyticsDataSetInput {
	s.InstanceId = &v
	return s
}

// SetTargetAccountId sets the TargetAccountId field's value.
func (s *BatchAssociateAnalyticsDataSetInput) SetTargetAccountId(v string) *BatchAssociateAnalyticsDataSetInput {
	s.TargetAccountId = &v
	return s
}

type BatchAssociateAnalyticsDataSetOutput struct {
	_ struct{} `type:"structure"`

	// Information about associations that are successfully created: DataSetId,
	// TargetAccountId, ResourceShareId, ResourceShareArn.
	Created []*AnalyticsDataAssociationResult `type:"list"`

	// A list of errors for datasets that aren't successfully associated with the
	// target account.
	Errors []*ErrorResult `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 BatchAssociateAnalyticsDataSetOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchAssociateAnalyticsDataSetOutput) GoString() string {
	return s.String()
}

// SetCreated sets the Created field's value.
func (s *BatchAssociateAnalyticsDataSetOutput) SetCreated(v []*AnalyticsDataAssociationResult) *BatchAssociateAnalyticsDataSetOutput {
	s.Created = v
	return s
}

// SetErrors sets the Errors field's value.
func (s *BatchAssociateAnalyticsDataSetOutput) SetErrors(v []*ErrorResult) *BatchAssociateAnalyticsDataSetOutput {
	s.Errors = v
	return s
}

type BatchDisassociateAnalyticsDataSetInput struct {
	_ struct{} `type:"structure"`

	// An array of associated dataset identifiers to remove.
	//
	// DataSetIds is a required field
	DataSetIds []*string `type:"list" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the target account. Use to disassociate a dataset from
	// a different account than the one containing the Amazon Connect instance.
	// If not specified, by default this value is the Amazon Web Services account
	// that has the Amazon Connect instance.
	TargetAccountId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchDisassociateAnalyticsDataSetInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchDisassociateAnalyticsDataSetInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *BatchDisassociateAnalyticsDataSetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "BatchDisassociateAnalyticsDataSetInput"}
	if s.DataSetIds == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetIds"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataSetIds sets the DataSetIds field's value.
func (s *BatchDisassociateAnalyticsDataSetInput) SetDataSetIds(v []*string) *BatchDisassociateAnalyticsDataSetInput {
	s.DataSetIds = v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *BatchDisassociateAnalyticsDataSetInput) SetInstanceId(v string) *BatchDisassociateAnalyticsDataSetInput {
	s.InstanceId = &v
	return s
}

// SetTargetAccountId sets the TargetAccountId field's value.
func (s *BatchDisassociateAnalyticsDataSetInput) SetTargetAccountId(v string) *BatchDisassociateAnalyticsDataSetInput {
	s.TargetAccountId = &v
	return s
}

type BatchDisassociateAnalyticsDataSetOutput struct {
	_ struct{} `type:"structure"`

	// An array of successfully disassociated dataset identifiers.
	Deleted []*string `type:"list"`

	// A list of errors for any datasets not successfully removed.
	Errors []*ErrorResult `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 BatchDisassociateAnalyticsDataSetOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchDisassociateAnalyticsDataSetOutput) GoString() string {
	return s.String()
}

// SetDeleted sets the Deleted field's value.
func (s *BatchDisassociateAnalyticsDataSetOutput) SetDeleted(v []*string) *BatchDisassociateAnalyticsDataSetOutput {
	s.Deleted = v
	return s
}

// SetErrors sets the Errors field's value.
func (s *BatchDisassociateAnalyticsDataSetOutput) SetErrors(v []*ErrorResult) *BatchDisassociateAnalyticsDataSetOutput {
	s.Errors = v
	return s
}

type BatchGetFlowAssociationInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// A list of resource identifiers to retrieve flow associations.
	//
	// ResourceIds is a required field
	ResourceIds []*string `min:"1" type:"list" required:"true"`

	// The type of resource association.
	ResourceType *string `type:"string" enum:"ListFlowAssociationResourceType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchGetFlowAssociationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchGetFlowAssociationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *BatchGetFlowAssociationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "BatchGetFlowAssociationInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.ResourceIds == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceIds"))
	}
	if s.ResourceIds != nil && len(s.ResourceIds) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceIds", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *BatchGetFlowAssociationInput) SetInstanceId(v string) *BatchGetFlowAssociationInput {
	s.InstanceId = &v
	return s
}

// SetResourceIds sets the ResourceIds field's value.
func (s *BatchGetFlowAssociationInput) SetResourceIds(v []*string) *BatchGetFlowAssociationInput {
	s.ResourceIds = v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *BatchGetFlowAssociationInput) SetResourceType(v string) *BatchGetFlowAssociationInput {
	s.ResourceType = &v
	return s
}

type BatchGetFlowAssociationOutput struct {
	_ struct{} `type:"structure"`

	// Information about flow associations.
	FlowAssociationSummaryList []*FlowAssociationSummary `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 BatchGetFlowAssociationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchGetFlowAssociationOutput) GoString() string {
	return s.String()
}

// SetFlowAssociationSummaryList sets the FlowAssociationSummaryList field's value.
func (s *BatchGetFlowAssociationOutput) SetFlowAssociationSummaryList(v []*FlowAssociationSummary) *BatchGetFlowAssociationOutput {
	s.FlowAssociationSummaryList = v
	return s
}

type BatchPutContactInput struct {
	_ struct{} `type:"structure"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// List of individual contact requests.
	//
	// ContactDataRequestList is a required field
	ContactDataRequestList []*ContactDataRequest `min:"1" type:"list" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 BatchPutContactInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchPutContactInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *BatchPutContactInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "BatchPutContactInput"}
	if s.ContactDataRequestList == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactDataRequestList"))
	}
	if s.ContactDataRequestList != nil && len(s.ContactDataRequestList) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactDataRequestList", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.ContactDataRequestList != nil {
		for i, v := range s.ContactDataRequestList {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ContactDataRequestList", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *BatchPutContactInput) SetClientToken(v string) *BatchPutContactInput {
	s.ClientToken = &v
	return s
}

// SetContactDataRequestList sets the ContactDataRequestList field's value.
func (s *BatchPutContactInput) SetContactDataRequestList(v []*ContactDataRequest) *BatchPutContactInput {
	s.ContactDataRequestList = v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *BatchPutContactInput) SetInstanceId(v string) *BatchPutContactInput {
	s.InstanceId = &v
	return s
}

type BatchPutContactOutput struct {
	_ struct{} `type:"structure"`

	// List of requests for which contact creation failed.
	FailedRequestList []*FailedRequest `type:"list"`

	// List of requests for which contact was successfully created.
	SuccessfulRequestList []*SuccessfulRequest `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 BatchPutContactOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchPutContactOutput) GoString() string {
	return s.String()
}

// SetFailedRequestList sets the FailedRequestList field's value.
func (s *BatchPutContactOutput) SetFailedRequestList(v []*FailedRequest) *BatchPutContactOutput {
	s.FailedRequestList = v
	return s
}

// SetSuccessfulRequestList sets the SuccessfulRequestList field's value.
func (s *BatchPutContactOutput) SetSuccessfulRequestList(v []*SuccessfulRequest) *BatchPutContactOutput {
	s.SuccessfulRequestList = v
	return s
}

// Information associated with a campaign.
type Campaign struct {
	_ struct{} `type:"structure"`

	// A unique identifier for a campaign.
	CampaignId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Campaign) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Campaign) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Campaign) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Campaign"}
	if s.CampaignId != nil && len(*s.CampaignId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CampaignId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCampaignId sets the CampaignId field's value.
func (s *Campaign) SetCampaignId(v string) *Campaign {
	s.CampaignId = &v
	return s
}

// Chat integration event containing payload to perform different chat actions
// such as:
//
//   - Sending a chat message
//
//   - Sending a chat event, such as typing
//
//   - Disconnecting from a chat
type ChatEvent struct {
	_ struct{} `type:"structure"`

	// Content of the message or event. This is required when Type is MESSAGE and
	// for certain ContentTypes when Type is EVENT.
	//
	//    * For allowed message content, see the Content parameter in the SendMessage
	//    (https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_SendMessage.html)
	//    topic in the Amazon Connect Participant Service API Reference.
	//
	//    * For allowed event content, see the Content parameter in the SendEvent
	//    (https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_SendEvent.html)
	//    topic in the Amazon Connect Participant Service API Reference.
	Content *string `min:"1" type:"string"`

	// Type of content. This is required when Type is MESSAGE or EVENT.
	//
	//    * For allowed message content types, see the ContentType parameter in
	//    the SendMessage (https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_SendMessage.html)
	//    topic in the Amazon Connect Participant Service API Reference.
	//
	//    * For allowed event content types, see the ContentType parameter in the
	//    SendEvent (https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_SendEvent.html)
	//    topic in the Amazon Connect Participant Service API Reference.
	ContentType *string `min:"1" type:"string"`

	// Type of chat integration event.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"ChatEventType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ChatEvent) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ChatEvent) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ChatEvent) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ChatEvent"}
	if s.Content != nil && len(*s.Content) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Content", 1))
	}
	if s.ContentType != nil && len(*s.ContentType) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContentType", 1))
	}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContent sets the Content field's value.
func (s *ChatEvent) SetContent(v string) *ChatEvent {
	s.Content = &v
	return s
}

// SetContentType sets the ContentType field's value.
func (s *ChatEvent) SetContentType(v string) *ChatEvent {
	s.ContentType = &v
	return s
}

// SetType sets the Type field's value.
func (s *ChatEvent) SetType(v string) *ChatEvent {
	s.Type = &v
	return s
}

// A chat message.
type ChatMessage struct {
	_ struct{} `type:"structure"`

	// The content of the chat message.
	//
	//    * For text/plain and text/markdown, the Length Constraints are Minimum
	//    of 1, Maximum of 1024.
	//
	//    * For application/json, the Length Constraints are Minimum of 1, Maximum
	//    of 12000.
	//
	//    * For application/vnd.amazonaws.connect.message.interactive.response,
	//    the Length Constraints are Minimum of 1, Maximum of 12288.
	//
	// Content is a required field
	Content *string `min:"1" type:"string" required:"true"`

	// The type of the content. Supported types are text/plain, text/markdown, application/json,
	// and application/vnd.amazonaws.connect.message.interactive.response.
	//
	// ContentType is a required field
	ContentType *string `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 ChatMessage) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ChatMessage) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ChatMessage) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ChatMessage"}
	if s.Content == nil {
		invalidParams.Add(request.NewErrParamRequired("Content"))
	}
	if s.Content != nil && len(*s.Content) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Content", 1))
	}
	if s.ContentType == nil {
		invalidParams.Add(request.NewErrParamRequired("ContentType"))
	}
	if s.ContentType != nil && len(*s.ContentType) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContentType", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContent sets the Content field's value.
func (s *ChatMessage) SetContent(v string) *ChatMessage {
	s.Content = &v
	return s
}

// SetContentType sets the ContentType field's value.
func (s *ChatMessage) SetContentType(v string) *ChatMessage {
	s.ContentType = &v
	return s
}

// Configuration information for the chat participant role.
type ChatParticipantRoleConfig struct {
	_ struct{} `type:"structure"`

	// A list of participant timers. You can specify any unique combination of role
	// and timer type. Duplicate entries error out the request with a 400.
	//
	// ParticipantTimerConfigList is a required field
	ParticipantTimerConfigList []*ParticipantTimerConfiguration `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 ChatParticipantRoleConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ChatParticipantRoleConfig) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ChatParticipantRoleConfig) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ChatParticipantRoleConfig"}
	if s.ParticipantTimerConfigList == nil {
		invalidParams.Add(request.NewErrParamRequired("ParticipantTimerConfigList"))
	}
	if s.ParticipantTimerConfigList != nil && len(s.ParticipantTimerConfigList) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ParticipantTimerConfigList", 1))
	}
	if s.ParticipantTimerConfigList != nil {
		for i, v := range s.ParticipantTimerConfigList {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ParticipantTimerConfigList", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetParticipantTimerConfigList sets the ParticipantTimerConfigList field's value.
func (s *ChatParticipantRoleConfig) SetParticipantTimerConfigList(v []*ParticipantTimerConfiguration) *ChatParticipantRoleConfig {
	s.ParticipantTimerConfigList = v
	return s
}

// The streaming configuration, such as the Amazon SNS streaming endpoint.
type ChatStreamingConfiguration struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the standard Amazon SNS topic. The Amazon
	// Resource Name (ARN) of the streaming endpoint that is used to publish real-time
	// message streaming for chat conversations.
	//
	// StreamingEndpointArn is a required field
	StreamingEndpointArn *string `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 ChatStreamingConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ChatStreamingConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ChatStreamingConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ChatStreamingConfiguration"}
	if s.StreamingEndpointArn == nil {
		invalidParams.Add(request.NewErrParamRequired("StreamingEndpointArn"))
	}
	if s.StreamingEndpointArn != nil && len(*s.StreamingEndpointArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("StreamingEndpointArn", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetStreamingEndpointArn sets the StreamingEndpointArn field's value.
func (s *ChatStreamingConfiguration) SetStreamingEndpointArn(v string) *ChatStreamingConfiguration {
	s.StreamingEndpointArn = &v
	return s
}

type ClaimPhoneNumberInput struct {
	_ struct{} `type:"structure"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	//
	// Pattern: ^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// The identifier of the Amazon Connect instance that phone numbers are claimed
	// to. You can find the instance ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance. You must enter InstanceId
	// or TargetArn.
	InstanceId *string `min:"1" type:"string"`

	// The phone number you want to claim. Phone numbers are formatted [+] [country
	// code] [subscriber number including area code].
	//
	// PhoneNumber is a required field
	PhoneNumber *string `type:"string" required:"true"`

	// The description of the phone number.
	PhoneNumberDescription *string `type:"string"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`

	// The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution
	// groups that phone number inbound traffic is routed through. You must enter
	// InstanceId or TargetArn.
	TargetArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ClaimPhoneNumberInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ClaimPhoneNumberInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ClaimPhoneNumberInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ClaimPhoneNumberInput"}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.PhoneNumber == nil {
		invalidParams.Add(request.NewErrParamRequired("PhoneNumber"))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *ClaimPhoneNumberInput) SetClientToken(v string) *ClaimPhoneNumberInput {
	s.ClientToken = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *ClaimPhoneNumberInput) SetInstanceId(v string) *ClaimPhoneNumberInput {
	s.InstanceId = &v
	return s
}

// SetPhoneNumber sets the PhoneNumber field's value.
func (s *ClaimPhoneNumberInput) SetPhoneNumber(v string) *ClaimPhoneNumberInput {
	s.PhoneNumber = &v
	return s
}

// SetPhoneNumberDescription sets the PhoneNumberDescription field's value.
func (s *ClaimPhoneNumberInput) SetPhoneNumberDescription(v string) *ClaimPhoneNumberInput {
	s.PhoneNumberDescription = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *ClaimPhoneNumberInput) SetTags(v map[string]*string) *ClaimPhoneNumberInput {
	s.Tags = v
	return s
}

// SetTargetArn sets the TargetArn field's value.
func (s *ClaimPhoneNumberInput) SetTargetArn(v string) *ClaimPhoneNumberInput {
	s.TargetArn = &v
	return s
}

type ClaimPhoneNumberOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the phone number.
	PhoneNumberArn *string `type:"string"`

	// A unique identifier for the phone number.
	PhoneNumberId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ClaimPhoneNumberOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ClaimPhoneNumberOutput) GoString() string {
	return s.String()
}

// SetPhoneNumberArn sets the PhoneNumberArn field's value.
func (s *ClaimPhoneNumberOutput) SetPhoneNumberArn(v string) *ClaimPhoneNumberOutput {
	s.PhoneNumberArn = &v
	return s
}

// SetPhoneNumberId sets the PhoneNumberId field's value.
func (s *ClaimPhoneNumberOutput) SetPhoneNumberId(v string) *ClaimPhoneNumberOutput {
	s.PhoneNumberId = &v
	return s
}

// Information about a phone number that has been claimed to your Amazon Connect
// instance or traffic distribution group.
type ClaimedPhoneNumberSummary struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance that phone numbers are claimed
	// to. You can find the instance ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	InstanceId *string `min:"1" type:"string"`

	// The phone number. Phone numbers are formatted [+] [country code] [subscriber
	// number including area code].
	PhoneNumber *string `type:"string"`

	// The Amazon Resource Name (ARN) of the phone number.
	PhoneNumberArn *string `type:"string"`

	// The ISO country code.
	PhoneNumberCountryCode *string `type:"string" enum:"PhoneNumberCountryCode"`

	// The description of the phone number.
	PhoneNumberDescription *string `type:"string"`

	// A unique identifier for the phone number.
	PhoneNumberId *string `type:"string"`

	// The status of the phone number.
	//
	//    * CLAIMED means the previous ClaimPhoneNumber (https://docs.aws.amazon.com/connect/latest/APIReference/API_ClaimPhoneNumber.html)
	//    or UpdatePhoneNumber (https://docs.aws.amazon.com/connect/latest/APIReference/API_UpdatePhoneNumber.html)
	//    operation succeeded.
	//
	//    * IN_PROGRESS means a ClaimPhoneNumber (https://docs.aws.amazon.com/connect/latest/APIReference/API_ClaimPhoneNumber.html),
	//    UpdatePhoneNumber (https://docs.aws.amazon.com/connect/latest/APIReference/API_UpdatePhoneNumber.html),
	//    or UpdatePhoneNumberMetadata (https://docs.aws.amazon.com/connect/latest/APIReference/API_UpdatePhoneNumberMetadata.html)
	//    operation is still in progress and has not yet completed. You can call
	//    DescribePhoneNumber (https://docs.aws.amazon.com/connect/latest/APIReference/API_DescribePhoneNumber.html)
	//    at a later time to verify if the previous operation has completed.
	//
	//    * FAILED indicates that the previous ClaimPhoneNumber (https://docs.aws.amazon.com/connect/latest/APIReference/API_ClaimPhoneNumber.html)
	//    or UpdatePhoneNumber (https://docs.aws.amazon.com/connect/latest/APIReference/API_UpdatePhoneNumber.html)
	//    operation has failed. It will include a message indicating the failure
	//    reason. A common reason for a failure may be that the TargetArn value
	//    you are claiming or updating a phone number to has reached its limit of
	//    total claimed numbers. If you received a FAILED status from a ClaimPhoneNumber
	//    API call, you have one day to retry claiming the phone number before the
	//    number is released back to the inventory for other customers to claim.
	//
	// You will not be billed for the phone number during the 1-day period if number
	// claiming fails.
	PhoneNumberStatus *PhoneNumberStatus `type:"structure"`

	// The type of phone number.
	PhoneNumberType *string `type:"string" enum:"PhoneNumberType"`

	// The claimed phone number ARN that was previously imported from the external
	// service, such as Amazon Pinpoint. If it is from Amazon Pinpoint, it looks
	// like the ARN of the phone number that was imported from Amazon Pinpoint.
	SourcePhoneNumberArn *string `type:"string"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`

	// The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution
	// groups that phone number inbound traffic is routed through.
	TargetArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ClaimedPhoneNumberSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ClaimedPhoneNumberSummary) GoString() string {
	return s.String()
}

// SetInstanceId sets the InstanceId field's value.
func (s *ClaimedPhoneNumberSummary) SetInstanceId(v string) *ClaimedPhoneNumberSummary {
	s.InstanceId = &v
	return s
}

// SetPhoneNumber sets the PhoneNumber field's value.
func (s *ClaimedPhoneNumberSummary) SetPhoneNumber(v string) *ClaimedPhoneNumberSummary {
	s.PhoneNumber = &v
	return s
}

// SetPhoneNumberArn sets the PhoneNumberArn field's value.
func (s *ClaimedPhoneNumberSummary) SetPhoneNumberArn(v string) *ClaimedPhoneNumberSummary {
	s.PhoneNumberArn = &v
	return s
}

// SetPhoneNumberCountryCode sets the PhoneNumberCountryCode field's value.
func (s *ClaimedPhoneNumberSummary) SetPhoneNumberCountryCode(v string) *ClaimedPhoneNumberSummary {
	s.PhoneNumberCountryCode = &v
	return s
}

// SetPhoneNumberDescription sets the PhoneNumberDescription field's value.
func (s *ClaimedPhoneNumberSummary) SetPhoneNumberDescription(v string) *ClaimedPhoneNumberSummary {
	s.PhoneNumberDescription = &v
	return s
}

// SetPhoneNumberId sets the PhoneNumberId field's value.
func (s *ClaimedPhoneNumberSummary) SetPhoneNumberId(v string) *ClaimedPhoneNumberSummary {
	s.PhoneNumberId = &v
	return s
}

// SetPhoneNumberStatus sets the PhoneNumberStatus field's value.
func (s *ClaimedPhoneNumberSummary) SetPhoneNumberStatus(v *PhoneNumberStatus) *ClaimedPhoneNumberSummary {
	s.PhoneNumberStatus = v
	return s
}

// SetPhoneNumberType sets the PhoneNumberType field's value.
func (s *ClaimedPhoneNumberSummary) SetPhoneNumberType(v string) *ClaimedPhoneNumberSummary {
	s.PhoneNumberType = &v
	return s
}

// SetSourcePhoneNumberArn sets the SourcePhoneNumberArn field's value.
func (s *ClaimedPhoneNumberSummary) SetSourcePhoneNumberArn(v string) *ClaimedPhoneNumberSummary {
	s.SourcePhoneNumberArn = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *ClaimedPhoneNumberSummary) SetTags(v map[string]*string) *ClaimedPhoneNumberSummary {
	s.Tags = v
	return s
}

// SetTargetArn sets the TargetArn field's value.
func (s *ClaimedPhoneNumberSummary) SetTargetArn(v string) *ClaimedPhoneNumberSummary {
	s.TargetArn = &v
	return s
}

// Operation cannot be performed at this time as there is a conflict with another
// operation or contact state.
type ConflictException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConflictException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConflictException) GoString() string {
	return s.String()
}

func newErrorConflictException(v protocol.ResponseMetadata) error {
	return &ConflictException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ConflictException) Code() string {
	return "ConflictException"
}

// Message returns the exception's message.
func (s *ConflictException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ConflictException) OrigErr() error {
	return nil
}

func (s *ConflictException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ConflictException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ConflictException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Information required to join the call.
type ConnectionData struct {
	_ struct{} `type:"structure"`

	// The attendee information, including attendee ID and join token.
	Attendee *Attendee `type:"structure"`

	// A meeting created using the Amazon Chime SDK.
	Meeting *Meeting `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 ConnectionData) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConnectionData) GoString() string {
	return s.String()
}

// SetAttendee sets the Attendee field's value.
func (s *ConnectionData) SetAttendee(v *Attendee) *ConnectionData {
	s.Attendee = v
	return s
}

// SetMeeting sets the Meeting field's value.
func (s *ConnectionData) SetMeeting(v *Meeting) *ConnectionData {
	s.Meeting = v
	return s
}

// Contains information about a contact.
type Contact struct {
	_ struct{} `type:"structure"`

	// Information about the agent who accepted the contact.
	AgentInfo *AgentInfo `type:"structure"`

	// The Amazon Resource Name (ARN) for the contact.
	Arn *string `type:"string"`

	// How the contact reached your contact center.
	Channel *string `type:"string" enum:"Channel"`

	// The description of the contact.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Contact's
	// String and GoString methods.
	Description *string `type:"string" sensitive:"true"`

	// The timestamp when the customer endpoint disconnected from Amazon Connect.
	DisconnectTimestamp *time.Time `type:"timestamp"`

	// The identifier for the contact.
	Id *string `min:"1" type:"string"`

	// If this contact is related to other contacts, this is the ID of the initial
	// contact.
	InitialContactId *string `min:"1" type:"string"`

	// Indicates how the contact was initiated.
	InitiationMethod *string `type:"string" enum:"ContactInitiationMethod"`

	// The date and time this contact was initiated, in UTC time. For INBOUND, this
	// is when the contact arrived. For OUTBOUND, this is when the agent began dialing.
	// For CALLBACK, this is when the callback contact was created. For TRANSFER
	// and QUEUE_TRANSFER, this is when the transfer was initiated. For API, this
	// is when the request arrived. For EXTERNAL_OUTBOUND, this is when the agent
	// started dialing the external participant. For MONITOR, this is when the supervisor
	// started listening to a contact.
	InitiationTimestamp *time.Time `type:"timestamp"`

	// The timestamp when the contact was last paused.
	LastPausedTimestamp *time.Time `type:"timestamp"`

	// The timestamp when the contact was last resumed.
	LastResumedTimestamp *time.Time `type:"timestamp"`

	// The timestamp when contact was last updated.
	LastUpdateTimestamp *time.Time `type:"timestamp"`

	// The name of the contact.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Contact's
	// String and GoString methods.
	Name *string `type:"string" sensitive:"true"`

	// If this contact is not the first contact, this is the ID of the previous
	// contact.
	PreviousContactId *string `min:"1" type:"string"`

	// If this contact was queued, this contains information about the queue.
	QueueInfo *QueueInfo `type:"structure"`

	// An integer that represents the queue priority to be applied to the contact
	// (lower priorities are routed preferentially). Cannot be specified if the
	// QueueTimeAdjustmentSeconds is specified. Must be statically defined, must
	// be larger than zero, and a valid integer value. Default Value is 5.
	QueuePriority *int64 `min:"1" type:"long"`

	// An integer that represents the queue time adjust to be applied to the contact,
	// in seconds (longer / larger queue time are routed preferentially). Cannot
	// be specified if the QueuePriority is specified. Must be statically defined
	// and a valid integer value.
	QueueTimeAdjustmentSeconds *int64 `type:"integer"`

	// The contactId that is related (https://docs.aws.amazon.com/connect/latest/adminguide/chat-persistence.html#relatedcontactid)
	// to this contact.
	RelatedContactId *string `min:"1" type:"string"`

	// The timestamp, in Unix epoch time format, at which to start running the inbound
	// flow.
	ScheduledTimestamp *time.Time `type:"timestamp"`

	// Tags associated with the contact. This contains both Amazon Web Services
	// generated and user-defined tags.
	Tags map[string]*string `min:"1" type:"map"`

	// Total pause count for a contact.
	TotalPauseCount *int64 `type:"integer"`

	// Total pause duration for a contact in seconds.
	TotalPauseDurationInSeconds *int64 `type:"integer"`

	// Information about Amazon Connect Wisdom.
	WisdomInfo *WisdomInfo `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 Contact) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Contact) GoString() string {
	return s.String()
}

// SetAgentInfo sets the AgentInfo field's value.
func (s *Contact) SetAgentInfo(v *AgentInfo) *Contact {
	s.AgentInfo = v
	return s
}

// SetArn sets the Arn field's value.
func (s *Contact) SetArn(v string) *Contact {
	s.Arn = &v
	return s
}

// SetChannel sets the Channel field's value.
func (s *Contact) SetChannel(v string) *Contact {
	s.Channel = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *Contact) SetDescription(v string) *Contact {
	s.Description = &v
	return s
}

// SetDisconnectTimestamp sets the DisconnectTimestamp field's value.
func (s *Contact) SetDisconnectTimestamp(v time.Time) *Contact {
	s.DisconnectTimestamp = &v
	return s
}

// SetId sets the Id field's value.
func (s *Contact) SetId(v string) *Contact {
	s.Id = &v
	return s
}

// SetInitialContactId sets the InitialContactId field's value.
func (s *Contact) SetInitialContactId(v string) *Contact {
	s.InitialContactId = &v
	return s
}

// SetInitiationMethod sets the InitiationMethod field's value.
func (s *Contact) SetInitiationMethod(v string) *Contact {
	s.InitiationMethod = &v
	return s
}

// SetInitiationTimestamp sets the InitiationTimestamp field's value.
func (s *Contact) SetInitiationTimestamp(v time.Time) *Contact {
	s.InitiationTimestamp = &v
	return s
}

// SetLastPausedTimestamp sets the LastPausedTimestamp field's value.
func (s *Contact) SetLastPausedTimestamp(v time.Time) *Contact {
	s.LastPausedTimestamp = &v
	return s
}

// SetLastResumedTimestamp sets the LastResumedTimestamp field's value.
func (s *Contact) SetLastResumedTimestamp(v time.Time) *Contact {
	s.LastResumedTimestamp = &v
	return s
}

// SetLastUpdateTimestamp sets the LastUpdateTimestamp field's value.
func (s *Contact) SetLastUpdateTimestamp(v time.Time) *Contact {
	s.LastUpdateTimestamp = &v
	return s
}

// SetName sets the Name field's value.
func (s *Contact) SetName(v string) *Contact {
	s.Name = &v
	return s
}

// SetPreviousContactId sets the PreviousContactId field's value.
func (s *Contact) SetPreviousContactId(v string) *Contact {
	s.PreviousContactId = &v
	return s
}

// SetQueueInfo sets the QueueInfo field's value.
func (s *Contact) SetQueueInfo(v *QueueInfo) *Contact {
	s.QueueInfo = v
	return s
}

// SetQueuePriority sets the QueuePriority field's value.
func (s *Contact) SetQueuePriority(v int64) *Contact {
	s.QueuePriority = &v
	return s
}

// SetQueueTimeAdjustmentSeconds sets the QueueTimeAdjustmentSeconds field's value.
func (s *Contact) SetQueueTimeAdjustmentSeconds(v int64) *Contact {
	s.QueueTimeAdjustmentSeconds = &v
	return s
}

// SetRelatedContactId sets the RelatedContactId field's value.
func (s *Contact) SetRelatedContactId(v string) *Contact {
	s.RelatedContactId = &v
	return s
}

// SetScheduledTimestamp sets the ScheduledTimestamp field's value.
func (s *Contact) SetScheduledTimestamp(v time.Time) *Contact {
	s.ScheduledTimestamp = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *Contact) SetTags(v map[string]*string) *Contact {
	s.Tags = v
	return s
}

// SetTotalPauseCount sets the TotalPauseCount field's value.
func (s *Contact) SetTotalPauseCount(v int64) *Contact {
	s.TotalPauseCount = &v
	return s
}

// SetTotalPauseDurationInSeconds sets the TotalPauseDurationInSeconds field's value.
func (s *Contact) SetTotalPauseDurationInSeconds(v int64) *Contact {
	s.TotalPauseDurationInSeconds = &v
	return s
}

// SetWisdomInfo sets the WisdomInfo field's value.
func (s *Contact) SetWisdomInfo(v *WisdomInfo) *Contact {
	s.WisdomInfo = v
	return s
}

// A structure that defines search criteria for contacts using analysis outputs
// from Amazon Connect Contact Lens.
type ContactAnalysis struct {
	_ struct{} `type:"structure"`

	// Search criteria based on transcript analyzed by Amazon Connect Contact Lens.
	Transcript *Transcript `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 ContactAnalysis) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContactAnalysis) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ContactAnalysis) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ContactAnalysis"}
	if s.Transcript != nil {
		if err := s.Transcript.Validate(); err != nil {
			invalidParams.AddNested("Transcript", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetTranscript sets the Transcript field's value.
func (s *ContactAnalysis) SetTranscript(v *Transcript) *ContactAnalysis {
	s.Transcript = v
	return s
}

// Request object with information to create a contact.
type ContactDataRequest struct {
	_ struct{} `type:"structure"`

	// List of attributes to be stored in a contact.
	Attributes map[string]*string `type:"map"`

	// Structure to store information associated with a campaign.
	Campaign *Campaign `type:"structure"`

	// Endpoint of the customer for which contact will be initiated.
	CustomerEndpoint *Endpoint `type:"structure"`

	// The identifier of the queue associated with the Amazon Connect instance in
	// which contacts that are created will be queued.
	QueueId *string `type:"string"`

	// Identifier to uniquely identify individual requests in the batch.
	RequestIdentifier *string `type:"string"`

	// Endpoint associated with the Amazon Connect instance from which outbound
	// contact will be initiated for the campaign.
	SystemEndpoint *Endpoint `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 ContactDataRequest) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContactDataRequest) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ContactDataRequest) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ContactDataRequest"}
	if s.Campaign != nil {
		if err := s.Campaign.Validate(); err != nil {
			invalidParams.AddNested("Campaign", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAttributes sets the Attributes field's value.
func (s *ContactDataRequest) SetAttributes(v map[string]*string) *ContactDataRequest {
	s.Attributes = v
	return s
}

// SetCampaign sets the Campaign field's value.
func (s *ContactDataRequest) SetCampaign(v *Campaign) *ContactDataRequest {
	s.Campaign = v
	return s
}

// SetCustomerEndpoint sets the CustomerEndpoint field's value.
func (s *ContactDataRequest) SetCustomerEndpoint(v *Endpoint) *ContactDataRequest {
	s.CustomerEndpoint = v
	return s
}

// SetQueueId sets the QueueId field's value.
func (s *ContactDataRequest) SetQueueId(v string) *ContactDataRequest {
	s.QueueId = &v
	return s
}

// SetRequestIdentifier sets the RequestIdentifier field's value.
func (s *ContactDataRequest) SetRequestIdentifier(v string) *ContactDataRequest {
	s.RequestIdentifier = &v
	return s
}

// SetSystemEndpoint sets the SystemEndpoint field's value.
func (s *ContactDataRequest) SetSystemEndpoint(v *Endpoint) *ContactDataRequest {
	s.SystemEndpoint = v
	return s
}

// Filters user data based on the contact information that is associated to
// the users. It contains a list of contact states (https://docs.aws.amazon.com/connect/latest/adminguide/about-contact-states.html).
type ContactFilter struct {
	_ struct{} `type:"structure"`

	// A list of up to 9 contact states (https://docs.aws.amazon.com/connect/latest/adminguide/about-contact-states.html).
	ContactStates []*string `type:"list" enum:"ContactState"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContactFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContactFilter) GoString() string {
	return s.String()
}

// SetContactStates sets the ContactStates field's value.
func (s *ContactFilter) SetContactStates(v []*string) *ContactFilter {
	s.ContactStates = v
	return s
}

// Contains information about a flow.
type ContactFlow struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the flow.
	Arn *string `type:"string"`

	// The JSON string that represents the content of the flow. For an example,
	// see Example flow in Amazon Connect Flow language (https://docs.aws.amazon.com/connect/latest/APIReference/flow-language-example.html).
	//
	// Length Constraints: Minimum length of 1. Maximum length of 256000.
	Content *string `type:"string"`

	// The description of the flow.
	Description *string `type:"string"`

	// The identifier of the flow.
	Id *string `type:"string"`

	// The name of the flow.
	Name *string `min:"1" type:"string"`

	// The type of flow.
	State *string `type:"string" enum:"ContactFlowState"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`

	// The type of the flow. For descriptions of the available types, see Choose
	// a flow type (https://docs.aws.amazon.com/connect/latest/adminguide/create-contact-flow.html#contact-flow-types)
	// in the Amazon Connect Administrator Guide.
	Type *string `type:"string" enum:"ContactFlowType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContactFlow) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContactFlow) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *ContactFlow) SetArn(v string) *ContactFlow {
	s.Arn = &v
	return s
}

// SetContent sets the Content field's value.
func (s *ContactFlow) SetContent(v string) *ContactFlow {
	s.Content = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *ContactFlow) SetDescription(v string) *ContactFlow {
	s.Description = &v
	return s
}

// SetId sets the Id field's value.
func (s *ContactFlow) SetId(v string) *ContactFlow {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *ContactFlow) SetName(v string) *ContactFlow {
	s.Name = &v
	return s
}

// SetState sets the State field's value.
func (s *ContactFlow) SetState(v string) *ContactFlow {
	s.State = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *ContactFlow) SetTags(v map[string]*string) *ContactFlow {
	s.Tags = v
	return s
}

// SetType sets the Type field's value.
func (s *ContactFlow) SetType(v string) *ContactFlow {
	s.Type = &v
	return s
}

// Contains information about a flow module.
type ContactFlowModule struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN).
	Arn *string `type:"string"`

	// The JSON string that represents the content of the flow. For an example,
	// see Example flow in Amazon Connect Flow language (https://docs.aws.amazon.com/connect/latest/APIReference/flow-language-example.html).
	Content *string `min:"1" type:"string"`

	// The description of the flow module.
	Description *string `type:"string"`

	// The identifier of the flow module.
	Id *string `min:"1" type:"string"`

	// The name of the flow module.
	Name *string `min:"1" type:"string"`

	// The type of flow module.
	State *string `type:"string" enum:"ContactFlowModuleState"`

	// The status of the flow module.
	Status *string `type:"string" enum:"ContactFlowModuleStatus"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContactFlowModule) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContactFlowModule) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *ContactFlowModule) SetArn(v string) *ContactFlowModule {
	s.Arn = &v
	return s
}

// SetContent sets the Content field's value.
func (s *ContactFlowModule) SetContent(v string) *ContactFlowModule {
	s.Content = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *ContactFlowModule) SetDescription(v string) *ContactFlowModule {
	s.Description = &v
	return s
}

// SetId sets the Id field's value.
func (s *ContactFlowModule) SetId(v string) *ContactFlowModule {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *ContactFlowModule) SetName(v string) *ContactFlowModule {
	s.Name = &v
	return s
}

// SetState sets the State field's value.
func (s *ContactFlowModule) SetState(v string) *ContactFlowModule {
	s.State = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ContactFlowModule) SetStatus(v string) *ContactFlowModule {
	s.Status = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *ContactFlowModule) SetTags(v map[string]*string) *ContactFlowModule {
	s.Tags = v
	return s
}

// Contains summary information about a flow.
type ContactFlowModuleSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the flow module.
	Arn *string `type:"string"`

	// The identifier of the flow module.
	Id *string `min:"1" type:"string"`

	// The name of the flow module.
	Name *string `min:"1" type:"string"`

	// The type of flow module.
	State *string `type:"string" enum:"ContactFlowModuleState"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContactFlowModuleSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContactFlowModuleSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *ContactFlowModuleSummary) SetArn(v string) *ContactFlowModuleSummary {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *ContactFlowModuleSummary) SetId(v string) *ContactFlowModuleSummary {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *ContactFlowModuleSummary) SetName(v string) *ContactFlowModuleSummary {
	s.Name = &v
	return s
}

// SetState sets the State field's value.
func (s *ContactFlowModuleSummary) SetState(v string) *ContactFlowModuleSummary {
	s.State = &v
	return s
}

// The flow has not been published.
type ContactFlowNotPublishedException 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 ContactFlowNotPublishedException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContactFlowNotPublishedException) GoString() string {
	return s.String()
}

func newErrorContactFlowNotPublishedException(v protocol.ResponseMetadata) error {
	return &ContactFlowNotPublishedException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ContactFlowNotPublishedException) Code() string {
	return "ContactFlowNotPublishedException"
}

// Message returns the exception's message.
func (s *ContactFlowNotPublishedException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ContactFlowNotPublishedException) OrigErr() error {
	return nil
}

func (s *ContactFlowNotPublishedException) 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 *ContactFlowNotPublishedException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ContactFlowNotPublishedException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Contains summary information about a flow.
//
// You can also create and update flows using the Amazon Connect Flow language
// (https://docs.aws.amazon.com/connect/latest/APIReference/flow-language.html).
type ContactFlowSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the flow.
	Arn *string `type:"string"`

	// The type of flow.
	ContactFlowState *string `type:"string" enum:"ContactFlowState"`

	// The type of flow.
	ContactFlowType *string `type:"string" enum:"ContactFlowType"`

	// The identifier of the flow.
	Id *string `type:"string"`

	// The name of the flow.
	Name *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContactFlowSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContactFlowSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *ContactFlowSummary) SetArn(v string) *ContactFlowSummary {
	s.Arn = &v
	return s
}

// SetContactFlowState sets the ContactFlowState field's value.
func (s *ContactFlowSummary) SetContactFlowState(v string) *ContactFlowSummary {
	s.ContactFlowState = &v
	return s
}

// SetContactFlowType sets the ContactFlowType field's value.
func (s *ContactFlowSummary) SetContactFlowType(v string) *ContactFlowSummary {
	s.ContactFlowType = &v
	return s
}

// SetId sets the Id field's value.
func (s *ContactFlowSummary) SetId(v string) *ContactFlowSummary {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *ContactFlowSummary) SetName(v string) *ContactFlowSummary {
	s.Name = &v
	return s
}

// The contact with the specified ID is not active or does not exist. Applies
// to Voice calls only, not to Chat or Task contacts.
type ContactNotFoundException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The message.
	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 ContactNotFoundException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContactNotFoundException) GoString() string {
	return s.String()
}

func newErrorContactNotFoundException(v protocol.ResponseMetadata) error {
	return &ContactNotFoundException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ContactNotFoundException) Code() string {
	return "ContactNotFoundException"
}

// Message returns the exception's message.
func (s *ContactNotFoundException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ContactNotFoundException) OrigErr() error {
	return nil
}

func (s *ContactNotFoundException) 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 *ContactNotFoundException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ContactNotFoundException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Information of returned contact.
type ContactSearchSummary struct {
	_ struct{} `type:"structure"`

	// Information about the agent who accepted the contact.
	AgentInfo *ContactSearchSummaryAgentInfo `type:"structure"`

	// The Amazon Resource Name (ARN) of the contact.
	Arn *string `type:"string"`

	// How the contact reached your contact center.
	Channel *string `type:"string" enum:"Channel"`

	// The timestamp when the customer endpoint disconnected from Amazon Connect.
	DisconnectTimestamp *time.Time `type:"timestamp"`

	// The identifier of the contact summary.
	Id *string `min:"1" type:"string"`

	// If this contact is related to other contacts, this is the ID of the initial
	// contact.
	InitialContactId *string `min:"1" type:"string"`

	// Indicates how the contact was initiated.
	InitiationMethod *string `type:"string" enum:"ContactInitiationMethod"`

	// The date and time this contact was initiated, in UTC time. For INBOUND, this
	// is when the contact arrived. For OUTBOUND, this is when the agent began dialing.
	// For CALLBACK, this is when the callback contact was created. For TRANSFER
	// and QUEUE_TRANSFER, this is when the transfer was initiated. For API, this
	// is when the request arrived. For EXTERNAL_OUTBOUND, this is when the agent
	// started dialing the external participant. For MONITOR, this is when the supervisor
	// started listening to a contact.
	InitiationTimestamp *time.Time `type:"timestamp"`

	// If this contact is not the first contact, this is the ID of the previous
	// contact.
	PreviousContactId *string `min:"1" type:"string"`

	// If this contact was queued, this contains information about the queue.
	QueueInfo *ContactSearchSummaryQueueInfo `type:"structure"`

	// The timestamp, in Unix epoch time format, at which to start running the inbound
	// flow.
	ScheduledTimestamp *time.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 ContactSearchSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContactSearchSummary) GoString() string {
	return s.String()
}

// SetAgentInfo sets the AgentInfo field's value.
func (s *ContactSearchSummary) SetAgentInfo(v *ContactSearchSummaryAgentInfo) *ContactSearchSummary {
	s.AgentInfo = v
	return s
}

// SetArn sets the Arn field's value.
func (s *ContactSearchSummary) SetArn(v string) *ContactSearchSummary {
	s.Arn = &v
	return s
}

// SetChannel sets the Channel field's value.
func (s *ContactSearchSummary) SetChannel(v string) *ContactSearchSummary {
	s.Channel = &v
	return s
}

// SetDisconnectTimestamp sets the DisconnectTimestamp field's value.
func (s *ContactSearchSummary) SetDisconnectTimestamp(v time.Time) *ContactSearchSummary {
	s.DisconnectTimestamp = &v
	return s
}

// SetId sets the Id field's value.
func (s *ContactSearchSummary) SetId(v string) *ContactSearchSummary {
	s.Id = &v
	return s
}

// SetInitialContactId sets the InitialContactId field's value.
func (s *ContactSearchSummary) SetInitialContactId(v string) *ContactSearchSummary {
	s.InitialContactId = &v
	return s
}

// SetInitiationMethod sets the InitiationMethod field's value.
func (s *ContactSearchSummary) SetInitiationMethod(v string) *ContactSearchSummary {
	s.InitiationMethod = &v
	return s
}

// SetInitiationTimestamp sets the InitiationTimestamp field's value.
func (s *ContactSearchSummary) SetInitiationTimestamp(v time.Time) *ContactSearchSummary {
	s.InitiationTimestamp = &v
	return s
}

// SetPreviousContactId sets the PreviousContactId field's value.
func (s *ContactSearchSummary) SetPreviousContactId(v string) *ContactSearchSummary {
	s.PreviousContactId = &v
	return s
}

// SetQueueInfo sets the QueueInfo field's value.
func (s *ContactSearchSummary) SetQueueInfo(v *ContactSearchSummaryQueueInfo) *ContactSearchSummary {
	s.QueueInfo = v
	return s
}

// SetScheduledTimestamp sets the ScheduledTimestamp field's value.
func (s *ContactSearchSummary) SetScheduledTimestamp(v time.Time) *ContactSearchSummary {
	s.ScheduledTimestamp = &v
	return s
}

// Information about the agent who accepted the contact.
type ContactSearchSummaryAgentInfo struct {
	_ struct{} `type:"structure"`

	// The timestamp when the contact was connected to the agent.
	ConnectedToAgentTimestamp *time.Time `type:"timestamp"`

	// The identifier of the agent who accepted the contact.
	Id *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContactSearchSummaryAgentInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContactSearchSummaryAgentInfo) GoString() string {
	return s.String()
}

// SetConnectedToAgentTimestamp sets the ConnectedToAgentTimestamp field's value.
func (s *ContactSearchSummaryAgentInfo) SetConnectedToAgentTimestamp(v time.Time) *ContactSearchSummaryAgentInfo {
	s.ConnectedToAgentTimestamp = &v
	return s
}

// SetId sets the Id field's value.
func (s *ContactSearchSummaryAgentInfo) SetId(v string) *ContactSearchSummaryAgentInfo {
	s.Id = &v
	return s
}

// If this contact was queued, this contains information about the queue.
type ContactSearchSummaryQueueInfo struct {
	_ struct{} `type:"structure"`

	// The timestamp when the contact was added to the queue.
	EnqueueTimestamp *time.Time `type:"timestamp"`

	// The unique identifier for the queue.
	Id *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContactSearchSummaryQueueInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContactSearchSummaryQueueInfo) GoString() string {
	return s.String()
}

// SetEnqueueTimestamp sets the EnqueueTimestamp field's value.
func (s *ContactSearchSummaryQueueInfo) SetEnqueueTimestamp(v time.Time) *ContactSearchSummaryQueueInfo {
	s.EnqueueTimestamp = &v
	return s
}

// SetId sets the Id field's value.
func (s *ContactSearchSummaryQueueInfo) SetId(v string) *ContactSearchSummaryQueueInfo {
	s.Id = &v
	return s
}

// An object that can be used to specify Tag conditions inside the SearchFilter.
// This accepts an OR of AND (List of List) input where:
//
//   - Top level list specifies conditions that need to be applied with OR
//     operator
//
//   - Inner list specifies conditions that need to be applied with AND operator.
type ControlPlaneTagFilter struct {
	_ struct{} `type:"structure"`

	// A list of conditions which would be applied together with an AND condition.
	AndConditions []*TagCondition `type:"list"`

	// A list of conditions which would be applied together with an OR condition.
	OrConditions [][]*TagCondition `type:"list"`

	// A leaf node condition which can be used to specify a tag condition.
	TagCondition *TagCondition `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 ControlPlaneTagFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ControlPlaneTagFilter) GoString() string {
	return s.String()
}

// SetAndConditions sets the AndConditions field's value.
func (s *ControlPlaneTagFilter) SetAndConditions(v []*TagCondition) *ControlPlaneTagFilter {
	s.AndConditions = v
	return s
}

// SetOrConditions sets the OrConditions field's value.
func (s *ControlPlaneTagFilter) SetOrConditions(v [][]*TagCondition) *ControlPlaneTagFilter {
	s.OrConditions = v
	return s
}

// SetTagCondition sets the TagCondition field's value.
func (s *ControlPlaneTagFilter) SetTagCondition(v *TagCondition) *ControlPlaneTagFilter {
	s.TagCondition = v
	return s
}

type CreateAgentStatusInput struct {
	_ struct{} `type:"structure"`

	// The description of the status.
	Description *string `min:"1" type:"string"`

	// The display order of the status.
	DisplayOrder *int64 `min:"1" type:"integer"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the status.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The state of the status.
	//
	// State is a required field
	State *string `type:"string" required:"true" enum:"AgentStatusState"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateAgentStatusInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateAgentStatusInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateAgentStatusInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateAgentStatusInput"}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.DisplayOrder != nil && *s.DisplayOrder < 1 {
		invalidParams.Add(request.NewErrParamMinValue("DisplayOrder", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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.State == nil {
		invalidParams.Add(request.NewErrParamRequired("State"))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *CreateAgentStatusInput) SetDescription(v string) *CreateAgentStatusInput {
	s.Description = &v
	return s
}

// SetDisplayOrder sets the DisplayOrder field's value.
func (s *CreateAgentStatusInput) SetDisplayOrder(v int64) *CreateAgentStatusInput {
	s.DisplayOrder = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreateAgentStatusInput) SetInstanceId(v string) *CreateAgentStatusInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateAgentStatusInput) SetName(v string) *CreateAgentStatusInput {
	s.Name = &v
	return s
}

// SetState sets the State field's value.
func (s *CreateAgentStatusInput) SetState(v string) *CreateAgentStatusInput {
	s.State = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateAgentStatusInput) SetTags(v map[string]*string) *CreateAgentStatusInput {
	s.Tags = v
	return s
}

type CreateAgentStatusOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the agent status.
	AgentStatusARN *string `type:"string"`

	// The identifier of the agent status.
	AgentStatusId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateAgentStatusOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateAgentStatusOutput) GoString() string {
	return s.String()
}

// SetAgentStatusARN sets the AgentStatusARN field's value.
func (s *CreateAgentStatusOutput) SetAgentStatusARN(v string) *CreateAgentStatusOutput {
	s.AgentStatusARN = &v
	return s
}

// SetAgentStatusId sets the AgentStatusId field's value.
func (s *CreateAgentStatusOutput) SetAgentStatusId(v string) *CreateAgentStatusOutput {
	s.AgentStatusId = &v
	return s
}

// The CreateCase action definition.
type CreateCaseActionDefinition struct {
	_ struct{} `type:"structure"`

	// An array of objects with Field ID and Value data.
	//
	// Fields is a required field
	Fields []*FieldValue `type:"list" required:"true"`

	// A unique identifier of a template.
	//
	// TemplateId is a required field
	TemplateId *string `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 CreateCaseActionDefinition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateCaseActionDefinition) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateCaseActionDefinition) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateCaseActionDefinition"}
	if s.Fields == nil {
		invalidParams.Add(request.NewErrParamRequired("Fields"))
	}
	if s.TemplateId == nil {
		invalidParams.Add(request.NewErrParamRequired("TemplateId"))
	}
	if s.TemplateId != nil && len(*s.TemplateId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TemplateId", 1))
	}
	if s.Fields != nil {
		for i, v := range s.Fields {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Fields", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFields sets the Fields field's value.
func (s *CreateCaseActionDefinition) SetFields(v []*FieldValue) *CreateCaseActionDefinition {
	s.Fields = v
	return s
}

// SetTemplateId sets the TemplateId field's value.
func (s *CreateCaseActionDefinition) SetTemplateId(v string) *CreateCaseActionDefinition {
	s.TemplateId = &v
	return s
}

type CreateContactFlowInput struct {
	_ struct{} `type:"structure"`

	// The JSON string that represents the content of the flow. For an example,
	// see Example flow in Amazon Connect Flow language (https://docs.aws.amazon.com/connect/latest/APIReference/flow-language-example.html).
	//
	// Length Constraints: Minimum length of 1. Maximum length of 256000.
	//
	// Content is a required field
	Content *string `type:"string" required:"true"`

	// The description of the flow.
	Description *string `type:"string"`

	// The identifier of the Amazon Connect instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the flow.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`

	// The type of the flow. For descriptions of the available types, see Choose
	// a flow type (https://docs.aws.amazon.com/connect/latest/adminguide/create-contact-flow.html#contact-flow-types)
	// in the Amazon Connect Administrator Guide.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"ContactFlowType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateContactFlowInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateContactFlowInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateContactFlowInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateContactFlowInput"}
	if s.Content == nil {
		invalidParams.Add(request.NewErrParamRequired("Content"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContent sets the Content field's value.
func (s *CreateContactFlowInput) SetContent(v string) *CreateContactFlowInput {
	s.Content = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateContactFlowInput) SetDescription(v string) *CreateContactFlowInput {
	s.Description = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreateContactFlowInput) SetInstanceId(v string) *CreateContactFlowInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateContactFlowInput) SetName(v string) *CreateContactFlowInput {
	s.Name = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateContactFlowInput) SetTags(v map[string]*string) *CreateContactFlowInput {
	s.Tags = v
	return s
}

// SetType sets the Type field's value.
func (s *CreateContactFlowInput) SetType(v string) *CreateContactFlowInput {
	s.Type = &v
	return s
}

type CreateContactFlowModuleInput struct {
	_ struct{} `type:"structure"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// The JSON string that represents the content of the flow. For an example,
	// see Example flow in Amazon Connect Flow language (https://docs.aws.amazon.com/connect/latest/APIReference/flow-language-example.html).
	//
	// Content is a required field
	Content *string `min:"1" type:"string" required:"true"`

	// The description of the flow module.
	Description *string `type:"string"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the flow module.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateContactFlowModuleInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateContactFlowModuleInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateContactFlowModuleInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateContactFlowModuleInput"}
	if s.Content == nil {
		invalidParams.Add(request.NewErrParamRequired("Content"))
	}
	if s.Content != nil && len(*s.Content) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Content", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateContactFlowModuleInput) SetClientToken(v string) *CreateContactFlowModuleInput {
	s.ClientToken = &v
	return s
}

// SetContent sets the Content field's value.
func (s *CreateContactFlowModuleInput) SetContent(v string) *CreateContactFlowModuleInput {
	s.Content = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateContactFlowModuleInput) SetDescription(v string) *CreateContactFlowModuleInput {
	s.Description = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreateContactFlowModuleInput) SetInstanceId(v string) *CreateContactFlowModuleInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateContactFlowModuleInput) SetName(v string) *CreateContactFlowModuleInput {
	s.Name = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateContactFlowModuleInput) SetTags(v map[string]*string) *CreateContactFlowModuleInput {
	s.Tags = v
	return s
}

type CreateContactFlowModuleOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the flow module.
	Arn *string `type:"string"`

	// The identifier of the flow module.
	Id *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateContactFlowModuleOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateContactFlowModuleOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *CreateContactFlowModuleOutput) SetArn(v string) *CreateContactFlowModuleOutput {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *CreateContactFlowModuleOutput) SetId(v string) *CreateContactFlowModuleOutput {
	s.Id = &v
	return s
}

type CreateContactFlowOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the flow.
	ContactFlowArn *string `type:"string"`

	// The identifier of the flow.
	ContactFlowId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateContactFlowOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateContactFlowOutput) GoString() string {
	return s.String()
}

// SetContactFlowArn sets the ContactFlowArn field's value.
func (s *CreateContactFlowOutput) SetContactFlowArn(v string) *CreateContactFlowOutput {
	s.ContactFlowArn = &v
	return s
}

// SetContactFlowId sets the ContactFlowId field's value.
func (s *CreateContactFlowOutput) SetContactFlowId(v string) *CreateContactFlowOutput {
	s.ContactFlowId = &v
	return s
}

type CreateEvaluationFormInput struct {
	_ struct{} `type:"structure"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// The description of the evaluation form.
	Description *string `type:"string"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// Items that are part of the evaluation form. The total number of sections
	// and questions must not exceed 100 each. Questions must be contained in a
	// section.
	//
	// Items is a required field
	Items []*EvaluationFormItem `min:"1" type:"list" required:"true"`

	// A scoring strategy of the evaluation form.
	ScoringStrategy *EvaluationFormScoringStrategy `type:"structure"`

	// A title of the evaluation form.
	//
	// Title is a required field
	Title *string `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 CreateEvaluationFormInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateEvaluationFormInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateEvaluationFormInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateEvaluationFormInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Items == nil {
		invalidParams.Add(request.NewErrParamRequired("Items"))
	}
	if s.Items != nil && len(s.Items) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Items", 1))
	}
	if s.Title == nil {
		invalidParams.Add(request.NewErrParamRequired("Title"))
	}
	if s.Title != nil && len(*s.Title) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Title", 1))
	}
	if s.Items != nil {
		for i, v := range s.Items {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Items", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ScoringStrategy != nil {
		if err := s.ScoringStrategy.Validate(); err != nil {
			invalidParams.AddNested("ScoringStrategy", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateEvaluationFormInput) SetClientToken(v string) *CreateEvaluationFormInput {
	s.ClientToken = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateEvaluationFormInput) SetDescription(v string) *CreateEvaluationFormInput {
	s.Description = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreateEvaluationFormInput) SetInstanceId(v string) *CreateEvaluationFormInput {
	s.InstanceId = &v
	return s
}

// SetItems sets the Items field's value.
func (s *CreateEvaluationFormInput) SetItems(v []*EvaluationFormItem) *CreateEvaluationFormInput {
	s.Items = v
	return s
}

// SetScoringStrategy sets the ScoringStrategy field's value.
func (s *CreateEvaluationFormInput) SetScoringStrategy(v *EvaluationFormScoringStrategy) *CreateEvaluationFormInput {
	s.ScoringStrategy = v
	return s
}

// SetTitle sets the Title field's value.
func (s *CreateEvaluationFormInput) SetTitle(v string) *CreateEvaluationFormInput {
	s.Title = &v
	return s
}

type CreateEvaluationFormOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the evaluation form resource.
	//
	// EvaluationFormArn is a required field
	EvaluationFormArn *string `type:"string" required:"true"`

	// The unique identifier for the evaluation form.
	//
	// EvaluationFormId is a required field
	EvaluationFormId *string `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 CreateEvaluationFormOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateEvaluationFormOutput) GoString() string {
	return s.String()
}

// SetEvaluationFormArn sets the EvaluationFormArn field's value.
func (s *CreateEvaluationFormOutput) SetEvaluationFormArn(v string) *CreateEvaluationFormOutput {
	s.EvaluationFormArn = &v
	return s
}

// SetEvaluationFormId sets the EvaluationFormId field's value.
func (s *CreateEvaluationFormOutput) SetEvaluationFormId(v string) *CreateEvaluationFormOutput {
	s.EvaluationFormId = &v
	return s
}

type CreateHoursOfOperationInput struct {
	_ struct{} `type:"structure"`

	// Configuration information for the hours of operation: day, start time, and
	// end time.
	//
	// Config is a required field
	Config []*HoursOfOperationConfig `type:"list" required:"true"`

	// The description of the hours of operation.
	Description *string `min:"1" type:"string"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the hours of operation.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`

	// The time zone of the hours of operation.
	//
	// TimeZone is a required field
	TimeZone *string `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 CreateHoursOfOperationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateHoursOfOperationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateHoursOfOperationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateHoursOfOperationInput"}
	if s.Config == nil {
		invalidParams.Add(request.NewErrParamRequired("Config"))
	}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}
	if s.TimeZone == nil {
		invalidParams.Add(request.NewErrParamRequired("TimeZone"))
	}
	if s.Config != nil {
		for i, v := range s.Config {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Config", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConfig sets the Config field's value.
func (s *CreateHoursOfOperationInput) SetConfig(v []*HoursOfOperationConfig) *CreateHoursOfOperationInput {
	s.Config = v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateHoursOfOperationInput) SetDescription(v string) *CreateHoursOfOperationInput {
	s.Description = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreateHoursOfOperationInput) SetInstanceId(v string) *CreateHoursOfOperationInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateHoursOfOperationInput) SetName(v string) *CreateHoursOfOperationInput {
	s.Name = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateHoursOfOperationInput) SetTags(v map[string]*string) *CreateHoursOfOperationInput {
	s.Tags = v
	return s
}

// SetTimeZone sets the TimeZone field's value.
func (s *CreateHoursOfOperationInput) SetTimeZone(v string) *CreateHoursOfOperationInput {
	s.TimeZone = &v
	return s
}

type CreateHoursOfOperationOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the hours of operation.
	HoursOfOperationArn *string `type:"string"`

	// The identifier for the hours of operation.
	HoursOfOperationId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateHoursOfOperationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateHoursOfOperationOutput) GoString() string {
	return s.String()
}

// SetHoursOfOperationArn sets the HoursOfOperationArn field's value.
func (s *CreateHoursOfOperationOutput) SetHoursOfOperationArn(v string) *CreateHoursOfOperationOutput {
	s.HoursOfOperationArn = &v
	return s
}

// SetHoursOfOperationId sets the HoursOfOperationId field's value.
func (s *CreateHoursOfOperationOutput) SetHoursOfOperationId(v string) *CreateHoursOfOperationOutput {
	s.HoursOfOperationId = &v
	return s
}

type CreateInstanceInput struct {
	_ struct{} `type:"structure"`

	// The idempotency token.
	ClientToken *string `type:"string"`

	// The identifier for the directory.
	DirectoryId *string `min:"12" type:"string"`

	// The type of identity management for your Amazon Connect users.
	//
	// IdentityManagementType is a required field
	IdentityManagementType *string `type:"string" required:"true" enum:"DirectoryType"`

	// Your contact center handles incoming contacts.
	//
	// InboundCallsEnabled is a required field
	InboundCallsEnabled *bool `type:"boolean" required:"true"`

	// The name for your instance.
	//
	// InstanceAlias is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateInstanceInput's
	// String and GoString methods.
	InstanceAlias *string `min:"1" type:"string" sensitive:"true"`

	// Your contact center allows outbound calls.
	//
	// OutboundCallsEnabled is a required field
	OutboundCallsEnabled *bool `type:"boolean" required:"true"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateInstanceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateInstanceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateInstanceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateInstanceInput"}
	if s.DirectoryId != nil && len(*s.DirectoryId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("DirectoryId", 12))
	}
	if s.IdentityManagementType == nil {
		invalidParams.Add(request.NewErrParamRequired("IdentityManagementType"))
	}
	if s.InboundCallsEnabled == nil {
		invalidParams.Add(request.NewErrParamRequired("InboundCallsEnabled"))
	}
	if s.InstanceAlias != nil && len(*s.InstanceAlias) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceAlias", 1))
	}
	if s.OutboundCallsEnabled == nil {
		invalidParams.Add(request.NewErrParamRequired("OutboundCallsEnabled"))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateInstanceInput) SetClientToken(v string) *CreateInstanceInput {
	s.ClientToken = &v
	return s
}

// SetDirectoryId sets the DirectoryId field's value.
func (s *CreateInstanceInput) SetDirectoryId(v string) *CreateInstanceInput {
	s.DirectoryId = &v
	return s
}

// SetIdentityManagementType sets the IdentityManagementType field's value.
func (s *CreateInstanceInput) SetIdentityManagementType(v string) *CreateInstanceInput {
	s.IdentityManagementType = &v
	return s
}

// SetInboundCallsEnabled sets the InboundCallsEnabled field's value.
func (s *CreateInstanceInput) SetInboundCallsEnabled(v bool) *CreateInstanceInput {
	s.InboundCallsEnabled = &v
	return s
}

// SetInstanceAlias sets the InstanceAlias field's value.
func (s *CreateInstanceInput) SetInstanceAlias(v string) *CreateInstanceInput {
	s.InstanceAlias = &v
	return s
}

// SetOutboundCallsEnabled sets the OutboundCallsEnabled field's value.
func (s *CreateInstanceInput) SetOutboundCallsEnabled(v bool) *CreateInstanceInput {
	s.OutboundCallsEnabled = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateInstanceInput) SetTags(v map[string]*string) *CreateInstanceInput {
	s.Tags = v
	return s
}

type CreateInstanceOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the instance.
	Arn *string `type:"string"`

	// The identifier for the instance.
	Id *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateInstanceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateInstanceOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *CreateInstanceOutput) SetArn(v string) *CreateInstanceOutput {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *CreateInstanceOutput) SetId(v string) *CreateInstanceOutput {
	s.Id = &v
	return s
}

type CreateIntegrationAssociationInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of the integration.
	//
	// When integrating with Amazon Pinpoint, the Amazon Connect and Amazon Pinpoint
	// instances must be in the same account.
	//
	// IntegrationArn is a required field
	IntegrationArn *string `type:"string" required:"true"`

	// The type of information to be ingested.
	//
	// IntegrationType is a required field
	IntegrationType *string `type:"string" required:"true" enum:"IntegrationType"`

	// The name of the external application. This field is only required for the
	// EVENT integration type.
	SourceApplicationName *string `min:"1" type:"string"`

	// The URL for the external application. This field is only required for the
	// EVENT integration type.
	SourceApplicationUrl *string `min:"1" type:"string"`

	// The type of the data source. This field is only required for the EVENT integration
	// type.
	SourceType *string `type:"string" enum:"SourceType"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateIntegrationAssociationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateIntegrationAssociationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateIntegrationAssociationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateIntegrationAssociationInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.IntegrationArn == nil {
		invalidParams.Add(request.NewErrParamRequired("IntegrationArn"))
	}
	if s.IntegrationType == nil {
		invalidParams.Add(request.NewErrParamRequired("IntegrationType"))
	}
	if s.SourceApplicationName != nil && len(*s.SourceApplicationName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SourceApplicationName", 1))
	}
	if s.SourceApplicationUrl != nil && len(*s.SourceApplicationUrl) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SourceApplicationUrl", 1))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreateIntegrationAssociationInput) SetInstanceId(v string) *CreateIntegrationAssociationInput {
	s.InstanceId = &v
	return s
}

// SetIntegrationArn sets the IntegrationArn field's value.
func (s *CreateIntegrationAssociationInput) SetIntegrationArn(v string) *CreateIntegrationAssociationInput {
	s.IntegrationArn = &v
	return s
}

// SetIntegrationType sets the IntegrationType field's value.
func (s *CreateIntegrationAssociationInput) SetIntegrationType(v string) *CreateIntegrationAssociationInput {
	s.IntegrationType = &v
	return s
}

// SetSourceApplicationName sets the SourceApplicationName field's value.
func (s *CreateIntegrationAssociationInput) SetSourceApplicationName(v string) *CreateIntegrationAssociationInput {
	s.SourceApplicationName = &v
	return s
}

// SetSourceApplicationUrl sets the SourceApplicationUrl field's value.
func (s *CreateIntegrationAssociationInput) SetSourceApplicationUrl(v string) *CreateIntegrationAssociationInput {
	s.SourceApplicationUrl = &v
	return s
}

// SetSourceType sets the SourceType field's value.
func (s *CreateIntegrationAssociationInput) SetSourceType(v string) *CreateIntegrationAssociationInput {
	s.SourceType = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateIntegrationAssociationInput) SetTags(v map[string]*string) *CreateIntegrationAssociationInput {
	s.Tags = v
	return s
}

type CreateIntegrationAssociationOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the association.
	IntegrationAssociationArn *string `type:"string"`

	// The identifier for the integration association.
	IntegrationAssociationId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateIntegrationAssociationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateIntegrationAssociationOutput) GoString() string {
	return s.String()
}

// SetIntegrationAssociationArn sets the IntegrationAssociationArn field's value.
func (s *CreateIntegrationAssociationOutput) SetIntegrationAssociationArn(v string) *CreateIntegrationAssociationOutput {
	s.IntegrationAssociationArn = &v
	return s
}

// SetIntegrationAssociationId sets the IntegrationAssociationId field's value.
func (s *CreateIntegrationAssociationOutput) SetIntegrationAssociationId(v string) *CreateIntegrationAssociationOutput {
	s.IntegrationAssociationId = &v
	return s
}

type CreateParticipantInput struct {
	_ struct{} `type:"structure"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// The identifier of the contact in this instance of Amazon Connect. Only contacts
	// in the CHAT channel are supported.
	//
	// ContactId is a required field
	ContactId *string `min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// Information identifying the participant.
	//
	// The only Valid value for ParticipantRole is CUSTOM_BOT.
	//
	// DisplayName is Required.
	//
	// ParticipantDetails is a required field
	ParticipantDetails *ParticipantDetailsToAdd `type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateParticipantInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateParticipantInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateParticipantInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateParticipantInput"}
	if s.ContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactId"))
	}
	if s.ContactId != nil && len(*s.ContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.ParticipantDetails == nil {
		invalidParams.Add(request.NewErrParamRequired("ParticipantDetails"))
	}
	if s.ParticipantDetails != nil {
		if err := s.ParticipantDetails.Validate(); err != nil {
			invalidParams.AddNested("ParticipantDetails", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateParticipantInput) SetClientToken(v string) *CreateParticipantInput {
	s.ClientToken = &v
	return s
}

// SetContactId sets the ContactId field's value.
func (s *CreateParticipantInput) SetContactId(v string) *CreateParticipantInput {
	s.ContactId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreateParticipantInput) SetInstanceId(v string) *CreateParticipantInput {
	s.InstanceId = &v
	return s
}

// SetParticipantDetails sets the ParticipantDetails field's value.
func (s *CreateParticipantInput) SetParticipantDetails(v *ParticipantDetailsToAdd) *CreateParticipantInput {
	s.ParticipantDetails = v
	return s
}

type CreateParticipantOutput struct {
	_ struct{} `type:"structure"`

	// The token used by the chat participant to call CreateParticipantConnection.
	// The participant token is valid for the lifetime of a chat participant.
	ParticipantCredentials *ParticipantTokenCredentials `type:"structure"`

	// The identifier for a chat participant. The participantId for a chat participant
	// is the same throughout the chat lifecycle.
	ParticipantId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateParticipantOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateParticipantOutput) GoString() string {
	return s.String()
}

// SetParticipantCredentials sets the ParticipantCredentials field's value.
func (s *CreateParticipantOutput) SetParticipantCredentials(v *ParticipantTokenCredentials) *CreateParticipantOutput {
	s.ParticipantCredentials = v
	return s
}

// SetParticipantId sets the ParticipantId field's value.
func (s *CreateParticipantOutput) SetParticipantId(v string) *CreateParticipantOutput {
	s.ParticipantId = &v
	return s
}

type CreatePersistentContactAssociationInput struct {
	_ struct{} `type:"structure"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `type:"string"`

	// This is the contactId of the current contact that the CreatePersistentContactAssociation
	// API is being called from.
	//
	// InitialContactId is a required field
	InitialContactId *string `location:"uri" locationName:"InitialContactId" min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The contactId chosen for rehydration depends on the type chosen.
	//
	//    * ENTIRE_PAST_SESSION: Rehydrates a chat from the most recently terminated
	//    past chat contact of the specified past ended chat session. To use this
	//    type, provide the initialContactId of the past ended chat session in the
	//    sourceContactId field. In this type, Amazon Connect determines what the
	//    most recent chat contact on the past ended chat session and uses it to
	//    start a persistent chat.
	//
	//    * FROM_SEGMENT: Rehydrates a chat from the specified past chat contact
	//    provided in the sourceContactId field.
	//
	// The actual contactId used for rehydration is provided in the response of
	// this API.
	//
	// To illustrate how to use rehydration type, consider the following example:
	// A customer starts a chat session. Agent a1 accepts the chat and a conversation
	// starts between the customer and Agent a1. This first contact creates a contact
	// ID C1. Agent a1 then transfers the chat to Agent a2. This creates another
	// contact ID C2. At this point Agent a2 ends the chat. The customer is forwarded
	// to the disconnect flow for a post chat survey that creates another contact
	// ID C3. After the chat survey, the chat session ends. Later, the customer
	// returns and wants to resume their past chat session. At this point, the customer
	// can have following use cases:
	//
	//    * Use Case 1: The customer wants to continue the past chat session but
	//    they want to hide the post chat survey. For this they will use the following
	//    configuration: Configuration SourceContactId = "C2" RehydrationType =
	//    "FROM_SEGMENT" Expected behavior This starts a persistent chat session
	//    from the specified past ended contact (C2). Transcripts of past chat sessions
	//    C2 and C1 are accessible in the current persistent chat session. Note
	//    that chat segment C3 is dropped from the persistent chat session.
	//
	//    * Use Case 2: The customer wants to continue the past chat session and
	//    see the transcript of the entire past engagement, including the post chat
	//    survey. For this they will use the following configuration: Configuration
	//    SourceContactId = "C1" RehydrationType = "ENTIRE_PAST_SESSION" Expected
	//    behavior This starts a persistent chat session from the most recently
	//    ended chat contact (C3). Transcripts of past chat sessions C3, C2 and
	//    C1 are accessible in the current persistent chat session.
	//
	// RehydrationType is a required field
	RehydrationType *string `type:"string" required:"true" enum:"RehydrationType"`

	// The contactId from which a persistent chat session must be started.
	//
	// SourceContactId is a required field
	SourceContactId *string `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 CreatePersistentContactAssociationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreatePersistentContactAssociationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreatePersistentContactAssociationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreatePersistentContactAssociationInput"}
	if s.InitialContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("InitialContactId"))
	}
	if s.InitialContactId != nil && len(*s.InitialContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InitialContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.RehydrationType == nil {
		invalidParams.Add(request.NewErrParamRequired("RehydrationType"))
	}
	if s.SourceContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceContactId"))
	}
	if s.SourceContactId != nil && len(*s.SourceContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SourceContactId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *CreatePersistentContactAssociationInput) SetClientToken(v string) *CreatePersistentContactAssociationInput {
	s.ClientToken = &v
	return s
}

// SetInitialContactId sets the InitialContactId field's value.
func (s *CreatePersistentContactAssociationInput) SetInitialContactId(v string) *CreatePersistentContactAssociationInput {
	s.InitialContactId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreatePersistentContactAssociationInput) SetInstanceId(v string) *CreatePersistentContactAssociationInput {
	s.InstanceId = &v
	return s
}

// SetRehydrationType sets the RehydrationType field's value.
func (s *CreatePersistentContactAssociationInput) SetRehydrationType(v string) *CreatePersistentContactAssociationInput {
	s.RehydrationType = &v
	return s
}

// SetSourceContactId sets the SourceContactId field's value.
func (s *CreatePersistentContactAssociationInput) SetSourceContactId(v string) *CreatePersistentContactAssociationInput {
	s.SourceContactId = &v
	return s
}

type CreatePersistentContactAssociationOutput struct {
	_ struct{} `type:"structure"`

	// The contactId from which a persistent chat session is started. This field
	// is populated only for persistent chat.
	ContinuedFromContactId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreatePersistentContactAssociationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreatePersistentContactAssociationOutput) GoString() string {
	return s.String()
}

// SetContinuedFromContactId sets the ContinuedFromContactId field's value.
func (s *CreatePersistentContactAssociationOutput) SetContinuedFromContactId(v string) *CreatePersistentContactAssociationOutput {
	s.ContinuedFromContactId = &v
	return s
}

type CreatePredefinedAttributeInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the predefined attribute.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The values of the predefined attribute.
	//
	// Values is a required field
	Values *PredefinedAttributeValues `type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreatePredefinedAttributeInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreatePredefinedAttributeInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreatePredefinedAttributeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreatePredefinedAttributeInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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.Values == nil {
		invalidParams.Add(request.NewErrParamRequired("Values"))
	}
	if s.Values != nil {
		if err := s.Values.Validate(); err != nil {
			invalidParams.AddNested("Values", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreatePredefinedAttributeInput) SetInstanceId(v string) *CreatePredefinedAttributeInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreatePredefinedAttributeInput) SetName(v string) *CreatePredefinedAttributeInput {
	s.Name = &v
	return s
}

// SetValues sets the Values field's value.
func (s *CreatePredefinedAttributeInput) SetValues(v *PredefinedAttributeValues) *CreatePredefinedAttributeInput {
	s.Values = v
	return s
}

type CreatePredefinedAttributeOutput 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 CreatePredefinedAttributeOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreatePredefinedAttributeOutput) GoString() string {
	return s.String()
}

type CreatePromptInput struct {
	_ struct{} `type:"structure"`

	// The description of the prompt.
	Description *string `min:"1" type:"string"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the prompt.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The URI for the S3 bucket where the prompt is stored. You can provide S3
	// pre-signed URLs returned by the GetPromptFile (https://docs.aws.amazon.com/connect/latest/APIReference/API_GetPromptFile.html)
	// API instead of providing S3 URIs.
	//
	// S3Uri is a required field
	S3Uri *string `min:"1" type:"string" required:"true"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreatePromptInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreatePromptInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreatePromptInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreatePromptInput"}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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.S3Uri == nil {
		invalidParams.Add(request.NewErrParamRequired("S3Uri"))
	}
	if s.S3Uri != nil && len(*s.S3Uri) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("S3Uri", 1))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *CreatePromptInput) SetDescription(v string) *CreatePromptInput {
	s.Description = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreatePromptInput) SetInstanceId(v string) *CreatePromptInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreatePromptInput) SetName(v string) *CreatePromptInput {
	s.Name = &v
	return s
}

// SetS3Uri sets the S3Uri field's value.
func (s *CreatePromptInput) SetS3Uri(v string) *CreatePromptInput {
	s.S3Uri = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreatePromptInput) SetTags(v map[string]*string) *CreatePromptInput {
	s.Tags = v
	return s
}

type CreatePromptOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the prompt.
	PromptARN *string `type:"string"`

	// A unique identifier for the prompt.
	PromptId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreatePromptOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreatePromptOutput) GoString() string {
	return s.String()
}

// SetPromptARN sets the PromptARN field's value.
func (s *CreatePromptOutput) SetPromptARN(v string) *CreatePromptOutput {
	s.PromptARN = &v
	return s
}

// SetPromptId sets the PromptId field's value.
func (s *CreatePromptOutput) SetPromptId(v string) *CreatePromptOutput {
	s.PromptId = &v
	return s
}

type CreateQueueInput struct {
	_ struct{} `type:"structure"`

	// The description of the queue.
	Description *string `min:"1" type:"string"`

	// The identifier for the hours of operation.
	//
	// HoursOfOperationId is a required field
	HoursOfOperationId *string `type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of contacts that can be in the queue before it is considered
	// full.
	MaxContacts *int64 `type:"integer"`

	// The name of the queue.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The outbound caller ID name, number, and outbound whisper flow.
	OutboundCallerConfig *OutboundCallerConfig `type:"structure"`

	// The quick connects available to agents who are working the queue.
	QuickConnectIds []*string `min:"1" type:"list"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateQueueInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateQueueInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateQueueInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateQueueInput"}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.HoursOfOperationId == nil {
		invalidParams.Add(request.NewErrParamRequired("HoursOfOperationId"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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.QuickConnectIds != nil && len(s.QuickConnectIds) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QuickConnectIds", 1))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}
	if s.OutboundCallerConfig != nil {
		if err := s.OutboundCallerConfig.Validate(); err != nil {
			invalidParams.AddNested("OutboundCallerConfig", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *CreateQueueInput) SetDescription(v string) *CreateQueueInput {
	s.Description = &v
	return s
}

// SetHoursOfOperationId sets the HoursOfOperationId field's value.
func (s *CreateQueueInput) SetHoursOfOperationId(v string) *CreateQueueInput {
	s.HoursOfOperationId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreateQueueInput) SetInstanceId(v string) *CreateQueueInput {
	s.InstanceId = &v
	return s
}

// SetMaxContacts sets the MaxContacts field's value.
func (s *CreateQueueInput) SetMaxContacts(v int64) *CreateQueueInput {
	s.MaxContacts = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateQueueInput) SetName(v string) *CreateQueueInput {
	s.Name = &v
	return s
}

// SetOutboundCallerConfig sets the OutboundCallerConfig field's value.
func (s *CreateQueueInput) SetOutboundCallerConfig(v *OutboundCallerConfig) *CreateQueueInput {
	s.OutboundCallerConfig = v
	return s
}

// SetQuickConnectIds sets the QuickConnectIds field's value.
func (s *CreateQueueInput) SetQuickConnectIds(v []*string) *CreateQueueInput {
	s.QuickConnectIds = v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateQueueInput) SetTags(v map[string]*string) *CreateQueueInput {
	s.Tags = v
	return s
}

type CreateQueueOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the queue.
	QueueArn *string `type:"string"`

	// The identifier for the queue.
	QueueId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateQueueOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateQueueOutput) GoString() string {
	return s.String()
}

// SetQueueArn sets the QueueArn field's value.
func (s *CreateQueueOutput) SetQueueArn(v string) *CreateQueueOutput {
	s.QueueArn = &v
	return s
}

// SetQueueId sets the QueueId field's value.
func (s *CreateQueueOutput) SetQueueId(v string) *CreateQueueOutput {
	s.QueueId = &v
	return s
}

type CreateQuickConnectInput struct {
	_ struct{} `type:"structure"`

	// The description of the quick connect.
	Description *string `min:"1" type:"string"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// A unique name of the quick connect.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// Configuration settings for the quick connect.
	//
	// QuickConnectConfig is a required field
	QuickConnectConfig *QuickConnectConfig `type:"structure" required:"true"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateQuickConnectInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateQuickConnectInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateQuickConnectInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateQuickConnectInput"}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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.QuickConnectConfig == nil {
		invalidParams.Add(request.NewErrParamRequired("QuickConnectConfig"))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}
	if s.QuickConnectConfig != nil {
		if err := s.QuickConnectConfig.Validate(); err != nil {
			invalidParams.AddNested("QuickConnectConfig", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *CreateQuickConnectInput) SetDescription(v string) *CreateQuickConnectInput {
	s.Description = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreateQuickConnectInput) SetInstanceId(v string) *CreateQuickConnectInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateQuickConnectInput) SetName(v string) *CreateQuickConnectInput {
	s.Name = &v
	return s
}

// SetQuickConnectConfig sets the QuickConnectConfig field's value.
func (s *CreateQuickConnectInput) SetQuickConnectConfig(v *QuickConnectConfig) *CreateQuickConnectInput {
	s.QuickConnectConfig = v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateQuickConnectInput) SetTags(v map[string]*string) *CreateQuickConnectInput {
	s.Tags = v
	return s
}

type CreateQuickConnectOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the quick connect.
	QuickConnectARN *string `type:"string"`

	// The identifier for the quick connect.
	QuickConnectId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateQuickConnectOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateQuickConnectOutput) GoString() string {
	return s.String()
}

// SetQuickConnectARN sets the QuickConnectARN field's value.
func (s *CreateQuickConnectOutput) SetQuickConnectARN(v string) *CreateQuickConnectOutput {
	s.QuickConnectARN = &v
	return s
}

// SetQuickConnectId sets the QuickConnectId field's value.
func (s *CreateQuickConnectOutput) SetQuickConnectId(v string) *CreateQuickConnectOutput {
	s.QuickConnectId = &v
	return s
}

type CreateRoutingProfileInput struct {
	_ struct{} `type:"structure"`

	// Whether agents with this routing profile will have their routing order calculated
	// based on longest idle time or time since their last inbound contact.
	AgentAvailabilityTimer *string `type:"string" enum:"AgentAvailabilityTimer"`

	// The default outbound queue for the routing profile.
	//
	// DefaultOutboundQueueId is a required field
	DefaultOutboundQueueId *string `type:"string" required:"true"`

	// Description of the routing profile. Must not be more than 250 characters.
	//
	// Description is a required field
	Description *string `min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The channels that agents can handle in the Contact Control Panel (CCP) for
	// this routing profile.
	//
	// MediaConcurrencies is a required field
	MediaConcurrencies []*MediaConcurrency `type:"list" required:"true"`

	// The name of the routing profile. Must not be more than 127 characters.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The inbound queues associated with the routing profile. If no queue is added,
	// the agent can make only outbound calls.
	//
	// The limit of 10 array members applies to the maximum number of RoutingProfileQueueConfig
	// objects that can be passed during a CreateRoutingProfile API request. It
	// is different from the quota of 50 queues per routing profile per instance
	// that is listed in Amazon Connect service quotas (https://docs.aws.amazon.com/connect/latest/adminguide/amazon-connect-service-limits.html).
	QueueConfigs []*RoutingProfileQueueConfig `min:"1" type:"list"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateRoutingProfileInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateRoutingProfileInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateRoutingProfileInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateRoutingProfileInput"}
	if s.DefaultOutboundQueueId == nil {
		invalidParams.Add(request.NewErrParamRequired("DefaultOutboundQueueId"))
	}
	if s.Description == nil {
		invalidParams.Add(request.NewErrParamRequired("Description"))
	}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MediaConcurrencies == nil {
		invalidParams.Add(request.NewErrParamRequired("MediaConcurrencies"))
	}
	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.QueueConfigs != nil && len(s.QueueConfigs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QueueConfigs", 1))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}
	if s.MediaConcurrencies != nil {
		for i, v := range s.MediaConcurrencies {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "MediaConcurrencies", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.QueueConfigs != nil {
		for i, v := range s.QueueConfigs {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "QueueConfigs", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAgentAvailabilityTimer sets the AgentAvailabilityTimer field's value.
func (s *CreateRoutingProfileInput) SetAgentAvailabilityTimer(v string) *CreateRoutingProfileInput {
	s.AgentAvailabilityTimer = &v
	return s
}

// SetDefaultOutboundQueueId sets the DefaultOutboundQueueId field's value.
func (s *CreateRoutingProfileInput) SetDefaultOutboundQueueId(v string) *CreateRoutingProfileInput {
	s.DefaultOutboundQueueId = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateRoutingProfileInput) SetDescription(v string) *CreateRoutingProfileInput {
	s.Description = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreateRoutingProfileInput) SetInstanceId(v string) *CreateRoutingProfileInput {
	s.InstanceId = &v
	return s
}

// SetMediaConcurrencies sets the MediaConcurrencies field's value.
func (s *CreateRoutingProfileInput) SetMediaConcurrencies(v []*MediaConcurrency) *CreateRoutingProfileInput {
	s.MediaConcurrencies = v
	return s
}

// SetName sets the Name field's value.
func (s *CreateRoutingProfileInput) SetName(v string) *CreateRoutingProfileInput {
	s.Name = &v
	return s
}

// SetQueueConfigs sets the QueueConfigs field's value.
func (s *CreateRoutingProfileInput) SetQueueConfigs(v []*RoutingProfileQueueConfig) *CreateRoutingProfileInput {
	s.QueueConfigs = v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateRoutingProfileInput) SetTags(v map[string]*string) *CreateRoutingProfileInput {
	s.Tags = v
	return s
}

type CreateRoutingProfileOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the routing profile.
	RoutingProfileArn *string `type:"string"`

	// The identifier of the routing profile.
	RoutingProfileId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateRoutingProfileOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateRoutingProfileOutput) GoString() string {
	return s.String()
}

// SetRoutingProfileArn sets the RoutingProfileArn field's value.
func (s *CreateRoutingProfileOutput) SetRoutingProfileArn(v string) *CreateRoutingProfileOutput {
	s.RoutingProfileArn = &v
	return s
}

// SetRoutingProfileId sets the RoutingProfileId field's value.
func (s *CreateRoutingProfileOutput) SetRoutingProfileId(v string) *CreateRoutingProfileOutput {
	s.RoutingProfileId = &v
	return s
}

type CreateRuleInput struct {
	_ struct{} `type:"structure"`

	// A list of actions to be run when the rule is triggered.
	//
	// Actions is a required field
	Actions []*RuleAction `type:"list" required:"true"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// The conditions of the rule.
	//
	// Function is a required field
	Function *string `type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// A unique name for the rule.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The publish status of the rule.
	//
	// PublishStatus is a required field
	PublishStatus *string `type:"string" required:"true" enum:"RulePublishStatus"`

	// The event source to trigger the rule.
	//
	// TriggerEventSource is a required field
	TriggerEventSource *RuleTriggerEventSource `type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateRuleInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateRuleInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateRuleInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateRuleInput"}
	if s.Actions == nil {
		invalidParams.Add(request.NewErrParamRequired("Actions"))
	}
	if s.Function == nil {
		invalidParams.Add(request.NewErrParamRequired("Function"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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.PublishStatus == nil {
		invalidParams.Add(request.NewErrParamRequired("PublishStatus"))
	}
	if s.TriggerEventSource == nil {
		invalidParams.Add(request.NewErrParamRequired("TriggerEventSource"))
	}
	if s.Actions != nil {
		for i, v := range s.Actions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.TriggerEventSource != nil {
		if err := s.TriggerEventSource.Validate(); err != nil {
			invalidParams.AddNested("TriggerEventSource", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *CreateRuleInput) SetActions(v []*RuleAction) *CreateRuleInput {
	s.Actions = v
	return s
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateRuleInput) SetClientToken(v string) *CreateRuleInput {
	s.ClientToken = &v
	return s
}

// SetFunction sets the Function field's value.
func (s *CreateRuleInput) SetFunction(v string) *CreateRuleInput {
	s.Function = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreateRuleInput) SetInstanceId(v string) *CreateRuleInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateRuleInput) SetName(v string) *CreateRuleInput {
	s.Name = &v
	return s
}

// SetPublishStatus sets the PublishStatus field's value.
func (s *CreateRuleInput) SetPublishStatus(v string) *CreateRuleInput {
	s.PublishStatus = &v
	return s
}

// SetTriggerEventSource sets the TriggerEventSource field's value.
func (s *CreateRuleInput) SetTriggerEventSource(v *RuleTriggerEventSource) *CreateRuleInput {
	s.TriggerEventSource = v
	return s
}

type CreateRuleOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the rule.
	//
	// RuleArn is a required field
	RuleArn *string `type:"string" required:"true"`

	// A unique identifier for the rule.
	//
	// RuleId is a required field
	RuleId *string `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 CreateRuleOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateRuleOutput) GoString() string {
	return s.String()
}

// SetRuleArn sets the RuleArn field's value.
func (s *CreateRuleOutput) SetRuleArn(v string) *CreateRuleOutput {
	s.RuleArn = &v
	return s
}

// SetRuleId sets the RuleId field's value.
func (s *CreateRuleOutput) SetRuleId(v string) *CreateRuleOutput {
	s.RuleId = &v
	return s
}

type CreateSecurityProfileInput struct {
	_ struct{} `type:"structure"`

	// The list of tags that a security profile uses to restrict access to resources
	// in Amazon Connect.
	AllowedAccessControlTags map[string]*string `type:"map"`

	// This API is in preview release for Amazon Connect and is subject to change.
	//
	// A list of third-party applications that the security profile will give access
	// to.
	Applications []*Application `type:"list"`

	// The description of the security profile.
	Description *string `type:"string"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// Permissions assigned to the security profile. For a list of valid permissions,
	// see List of security profile permissions (https://docs.aws.amazon.com/connect/latest/adminguide/security-profile-list.html).
	Permissions []*string `type:"list"`

	// The name of the security profile.
	//
	// SecurityProfileName is a required field
	SecurityProfileName *string `min:"1" type:"string" required:"true"`

	// The list of resources that a security profile applies tag restrictions to
	// in Amazon Connect. Following are acceptable ResourceNames: User | SecurityProfile
	// | Queue | RoutingProfile
	TagRestrictedResources []*string `type:"list"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateSecurityProfileInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateSecurityProfileInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateSecurityProfileInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateSecurityProfileInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.SecurityProfileName == nil {
		invalidParams.Add(request.NewErrParamRequired("SecurityProfileName"))
	}
	if s.SecurityProfileName != nil && len(*s.SecurityProfileName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SecurityProfileName", 1))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}
	if s.Applications != nil {
		for i, v := range s.Applications {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Applications", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAllowedAccessControlTags sets the AllowedAccessControlTags field's value.
func (s *CreateSecurityProfileInput) SetAllowedAccessControlTags(v map[string]*string) *CreateSecurityProfileInput {
	s.AllowedAccessControlTags = v
	return s
}

// SetApplications sets the Applications field's value.
func (s *CreateSecurityProfileInput) SetApplications(v []*Application) *CreateSecurityProfileInput {
	s.Applications = v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateSecurityProfileInput) SetDescription(v string) *CreateSecurityProfileInput {
	s.Description = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreateSecurityProfileInput) SetInstanceId(v string) *CreateSecurityProfileInput {
	s.InstanceId = &v
	return s
}

// SetPermissions sets the Permissions field's value.
func (s *CreateSecurityProfileInput) SetPermissions(v []*string) *CreateSecurityProfileInput {
	s.Permissions = v
	return s
}

// SetSecurityProfileName sets the SecurityProfileName field's value.
func (s *CreateSecurityProfileInput) SetSecurityProfileName(v string) *CreateSecurityProfileInput {
	s.SecurityProfileName = &v
	return s
}

// SetTagRestrictedResources sets the TagRestrictedResources field's value.
func (s *CreateSecurityProfileInput) SetTagRestrictedResources(v []*string) *CreateSecurityProfileInput {
	s.TagRestrictedResources = v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateSecurityProfileInput) SetTags(v map[string]*string) *CreateSecurityProfileInput {
	s.Tags = v
	return s
}

type CreateSecurityProfileOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the security profile.
	SecurityProfileArn *string `type:"string"`

	// The identifier for the security profle.
	SecurityProfileId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateSecurityProfileOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateSecurityProfileOutput) GoString() string {
	return s.String()
}

// SetSecurityProfileArn sets the SecurityProfileArn field's value.
func (s *CreateSecurityProfileOutput) SetSecurityProfileArn(v string) *CreateSecurityProfileOutput {
	s.SecurityProfileArn = &v
	return s
}

// SetSecurityProfileId sets the SecurityProfileId field's value.
func (s *CreateSecurityProfileOutput) SetSecurityProfileId(v string) *CreateSecurityProfileOutput {
	s.SecurityProfileId = &v
	return s
}

type CreateTaskTemplateInput struct {
	_ struct{} `type:"structure"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// Constraints that are applicable to the fields listed.
	Constraints *TaskTemplateConstraints `type:"structure"`

	// The identifier of the flow that runs by default when a task is created by
	// referencing this template.
	ContactFlowId *string `type:"string"`

	// The default values for fields when a task is created by referencing this
	// template.
	Defaults *TaskTemplateDefaults `type:"structure"`

	// The description of the task template.
	Description *string `min:"1" type:"string"`

	// Fields that are part of the template.
	//
	// Fields is a required field
	Fields []*TaskTemplateField `type:"list" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the task template.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// Marks a template as ACTIVE or INACTIVE for a task to refer to it. Tasks can
	// only be created from ACTIVE templates. If a template is marked as INACTIVE,
	// then a task that refers to this template cannot be created.
	Status *string `type:"string" enum:"TaskTemplateStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateTaskTemplateInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateTaskTemplateInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateTaskTemplateInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateTaskTemplateInput"}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.Fields == nil {
		invalidParams.Add(request.NewErrParamRequired("Fields"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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.Constraints != nil {
		if err := s.Constraints.Validate(); err != nil {
			invalidParams.AddNested("Constraints", err.(request.ErrInvalidParams))
		}
	}
	if s.Defaults != nil {
		if err := s.Defaults.Validate(); err != nil {
			invalidParams.AddNested("Defaults", err.(request.ErrInvalidParams))
		}
	}
	if s.Fields != nil {
		for i, v := range s.Fields {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Fields", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateTaskTemplateInput) SetClientToken(v string) *CreateTaskTemplateInput {
	s.ClientToken = &v
	return s
}

// SetConstraints sets the Constraints field's value.
func (s *CreateTaskTemplateInput) SetConstraints(v *TaskTemplateConstraints) *CreateTaskTemplateInput {
	s.Constraints = v
	return s
}

// SetContactFlowId sets the ContactFlowId field's value.
func (s *CreateTaskTemplateInput) SetContactFlowId(v string) *CreateTaskTemplateInput {
	s.ContactFlowId = &v
	return s
}

// SetDefaults sets the Defaults field's value.
func (s *CreateTaskTemplateInput) SetDefaults(v *TaskTemplateDefaults) *CreateTaskTemplateInput {
	s.Defaults = v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateTaskTemplateInput) SetDescription(v string) *CreateTaskTemplateInput {
	s.Description = &v
	return s
}

// SetFields sets the Fields field's value.
func (s *CreateTaskTemplateInput) SetFields(v []*TaskTemplateField) *CreateTaskTemplateInput {
	s.Fields = v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreateTaskTemplateInput) SetInstanceId(v string) *CreateTaskTemplateInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateTaskTemplateInput) SetName(v string) *CreateTaskTemplateInput {
	s.Name = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *CreateTaskTemplateInput) SetStatus(v string) *CreateTaskTemplateInput {
	s.Status = &v
	return s
}

type CreateTaskTemplateOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the task template resource.
	//
	// Arn is a required field
	Arn *string `min:"1" type:"string" required:"true"`

	// The identifier of the task template resource.
	//
	// Id is a required field
	Id *string `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 CreateTaskTemplateOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateTaskTemplateOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *CreateTaskTemplateOutput) SetArn(v string) *CreateTaskTemplateOutput {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *CreateTaskTemplateOutput) SetId(v string) *CreateTaskTemplateOutput {
	s.Id = &v
	return s
}

type CreateTrafficDistributionGroupInput struct {
	_ struct{} `type:"structure"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// A description for the traffic distribution group.
	Description *string `min:"1" type:"string"`

	// The identifier of the Amazon Connect instance that has been replicated. You
	// can find the instanceId in the ARN of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// The name for the traffic distribution group.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateTrafficDistributionGroupInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateTrafficDistributionGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateTrafficDistributionGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateTrafficDistributionGroupInput"}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateTrafficDistributionGroupInput) SetClientToken(v string) *CreateTrafficDistributionGroupInput {
	s.ClientToken = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateTrafficDistributionGroupInput) SetDescription(v string) *CreateTrafficDistributionGroupInput {
	s.Description = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreateTrafficDistributionGroupInput) SetInstanceId(v string) *CreateTrafficDistributionGroupInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateTrafficDistributionGroupInput) SetName(v string) *CreateTrafficDistributionGroupInput {
	s.Name = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateTrafficDistributionGroupInput) SetTags(v map[string]*string) *CreateTrafficDistributionGroupInput {
	s.Tags = v
	return s
}

type CreateTrafficDistributionGroupOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the traffic distribution group.
	Arn *string `type:"string"`

	// The identifier of the traffic distribution group. This can be the ID or the
	// ARN if the API is being called in the Region where the traffic distribution
	// group was created. The ARN must be provided if the call is from the replicated
	// Region.
	Id *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateTrafficDistributionGroupOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateTrafficDistributionGroupOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *CreateTrafficDistributionGroupOutput) SetArn(v string) *CreateTrafficDistributionGroupOutput {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *CreateTrafficDistributionGroupOutput) SetId(v string) *CreateTrafficDistributionGroupOutput {
	s.Id = &v
	return s
}

type CreateUseCaseInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier for the integration association.
	//
	// IntegrationAssociationId is a required field
	IntegrationAssociationId *string `location:"uri" locationName:"IntegrationAssociationId" min:"1" type:"string" required:"true"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`

	// The type of use case to associate to the integration association. Each integration
	// association can have only one of each use case type.
	//
	// UseCaseType is a required field
	UseCaseType *string `type:"string" required:"true" enum:"UseCaseType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateUseCaseInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateUseCaseInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateUseCaseInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateUseCaseInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.IntegrationAssociationId == nil {
		invalidParams.Add(request.NewErrParamRequired("IntegrationAssociationId"))
	}
	if s.IntegrationAssociationId != nil && len(*s.IntegrationAssociationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("IntegrationAssociationId", 1))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}
	if s.UseCaseType == nil {
		invalidParams.Add(request.NewErrParamRequired("UseCaseType"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreateUseCaseInput) SetInstanceId(v string) *CreateUseCaseInput {
	s.InstanceId = &v
	return s
}

// SetIntegrationAssociationId sets the IntegrationAssociationId field's value.
func (s *CreateUseCaseInput) SetIntegrationAssociationId(v string) *CreateUseCaseInput {
	s.IntegrationAssociationId = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateUseCaseInput) SetTags(v map[string]*string) *CreateUseCaseInput {
	s.Tags = v
	return s
}

// SetUseCaseType sets the UseCaseType field's value.
func (s *CreateUseCaseInput) SetUseCaseType(v string) *CreateUseCaseInput {
	s.UseCaseType = &v
	return s
}

type CreateUseCaseOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the use case.
	UseCaseArn *string `type:"string"`

	// The identifier of the use case.
	UseCaseId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateUseCaseOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateUseCaseOutput) GoString() string {
	return s.String()
}

// SetUseCaseArn sets the UseCaseArn field's value.
func (s *CreateUseCaseOutput) SetUseCaseArn(v string) *CreateUseCaseOutput {
	s.UseCaseArn = &v
	return s
}

// SetUseCaseId sets the UseCaseId field's value.
func (s *CreateUseCaseOutput) SetUseCaseId(v string) *CreateUseCaseOutput {
	s.UseCaseId = &v
	return s
}

type CreateUserHierarchyGroupInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the user hierarchy group. Must not be more than 100 characters.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The identifier for the parent hierarchy group. The user hierarchy is created
	// at level one if the parent group ID is null.
	ParentGroupId *string `type:"string"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateUserHierarchyGroupInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateUserHierarchyGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateUserHierarchyGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateUserHierarchyGroupInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreateUserHierarchyGroupInput) SetInstanceId(v string) *CreateUserHierarchyGroupInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateUserHierarchyGroupInput) SetName(v string) *CreateUserHierarchyGroupInput {
	s.Name = &v
	return s
}

// SetParentGroupId sets the ParentGroupId field's value.
func (s *CreateUserHierarchyGroupInput) SetParentGroupId(v string) *CreateUserHierarchyGroupInput {
	s.ParentGroupId = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateUserHierarchyGroupInput) SetTags(v map[string]*string) *CreateUserHierarchyGroupInput {
	s.Tags = v
	return s
}

type CreateUserHierarchyGroupOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the hierarchy group.
	HierarchyGroupArn *string `type:"string"`

	// The identifier of the hierarchy group.
	HierarchyGroupId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateUserHierarchyGroupOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateUserHierarchyGroupOutput) GoString() string {
	return s.String()
}

// SetHierarchyGroupArn sets the HierarchyGroupArn field's value.
func (s *CreateUserHierarchyGroupOutput) SetHierarchyGroupArn(v string) *CreateUserHierarchyGroupOutput {
	s.HierarchyGroupArn = &v
	return s
}

// SetHierarchyGroupId sets the HierarchyGroupId field's value.
func (s *CreateUserHierarchyGroupOutput) SetHierarchyGroupId(v string) *CreateUserHierarchyGroupOutput {
	s.HierarchyGroupId = &v
	return s
}

type CreateUserInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the user account in the directory used for identity management.
	// If Amazon Connect cannot access the directory, you can specify this identifier
	// to authenticate users. If you include the identifier, we assume that Amazon
	// Connect cannot access the directory. Otherwise, the identity information
	// is used to authenticate users from your directory.
	//
	// This parameter is required if you are using an existing directory for identity
	// management in Amazon Connect when Amazon Connect cannot access your directory
	// to authenticate users. If you are using SAML for identity management and
	// include this parameter, an error is returned.
	DirectoryUserId *string `type:"string"`

	// The identifier of the hierarchy group for the user.
	HierarchyGroupId *string `type:"string"`

	// The information about the identity of the user.
	IdentityInfo *UserIdentityInfo `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The password for the user account. A password is required if you are using
	// Amazon Connect for identity management. Otherwise, it is an error to include
	// a password.
	//
	// Password is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateUserInput's
	// String and GoString methods.
	Password *string `type:"string" sensitive:"true"`

	// The phone settings for the user.
	//
	// PhoneConfig is a required field
	PhoneConfig *UserPhoneConfig `type:"structure" required:"true"`

	// The identifier of the routing profile for the user.
	//
	// RoutingProfileId is a required field
	RoutingProfileId *string `type:"string" required:"true"`

	// The identifier of the security profile for the user.
	//
	// SecurityProfileIds is a required field
	SecurityProfileIds []*string `min:"1" type:"list" required:"true"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`

	// The user name for the account. For instances not using SAML for identity
	// management, the user name can include up to 20 characters. If you are using
	// SAML for identity management, the user name can include up to 64 characters
	// from [a-zA-Z0-9_-.\@]+.
	//
	// Username is a required field
	Username *string `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 CreateUserInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateUserInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateUserInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateUserInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.PhoneConfig == nil {
		invalidParams.Add(request.NewErrParamRequired("PhoneConfig"))
	}
	if s.RoutingProfileId == nil {
		invalidParams.Add(request.NewErrParamRequired("RoutingProfileId"))
	}
	if s.SecurityProfileIds == nil {
		invalidParams.Add(request.NewErrParamRequired("SecurityProfileIds"))
	}
	if s.SecurityProfileIds != nil && len(s.SecurityProfileIds) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SecurityProfileIds", 1))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}
	if s.Username == nil {
		invalidParams.Add(request.NewErrParamRequired("Username"))
	}
	if s.Username != nil && len(*s.Username) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Username", 1))
	}
	if s.IdentityInfo != nil {
		if err := s.IdentityInfo.Validate(); err != nil {
			invalidParams.AddNested("IdentityInfo", err.(request.ErrInvalidParams))
		}
	}
	if s.PhoneConfig != nil {
		if err := s.PhoneConfig.Validate(); err != nil {
			invalidParams.AddNested("PhoneConfig", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDirectoryUserId sets the DirectoryUserId field's value.
func (s *CreateUserInput) SetDirectoryUserId(v string) *CreateUserInput {
	s.DirectoryUserId = &v
	return s
}

// SetHierarchyGroupId sets the HierarchyGroupId field's value.
func (s *CreateUserInput) SetHierarchyGroupId(v string) *CreateUserInput {
	s.HierarchyGroupId = &v
	return s
}

// SetIdentityInfo sets the IdentityInfo field's value.
func (s *CreateUserInput) SetIdentityInfo(v *UserIdentityInfo) *CreateUserInput {
	s.IdentityInfo = v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreateUserInput) SetInstanceId(v string) *CreateUserInput {
	s.InstanceId = &v
	return s
}

// SetPassword sets the Password field's value.
func (s *CreateUserInput) SetPassword(v string) *CreateUserInput {
	s.Password = &v
	return s
}

// SetPhoneConfig sets the PhoneConfig field's value.
func (s *CreateUserInput) SetPhoneConfig(v *UserPhoneConfig) *CreateUserInput {
	s.PhoneConfig = v
	return s
}

// SetRoutingProfileId sets the RoutingProfileId field's value.
func (s *CreateUserInput) SetRoutingProfileId(v string) *CreateUserInput {
	s.RoutingProfileId = &v
	return s
}

// SetSecurityProfileIds sets the SecurityProfileIds field's value.
func (s *CreateUserInput) SetSecurityProfileIds(v []*string) *CreateUserInput {
	s.SecurityProfileIds = v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateUserInput) SetTags(v map[string]*string) *CreateUserInput {
	s.Tags = v
	return s
}

// SetUsername sets the Username field's value.
func (s *CreateUserInput) SetUsername(v string) *CreateUserInput {
	s.Username = &v
	return s
}

type CreateUserOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the user account.
	UserArn *string `type:"string"`

	// The identifier of the user account.
	UserId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateUserOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateUserOutput) GoString() string {
	return s.String()
}

// SetUserArn sets the UserArn field's value.
func (s *CreateUserOutput) SetUserArn(v string) *CreateUserOutput {
	s.UserArn = &v
	return s
}

// SetUserId sets the UserId field's value.
func (s *CreateUserOutput) SetUserId(v string) *CreateUserOutput {
	s.UserId = &v
	return s
}

type CreateViewInput struct {
	_ struct{} `type:"structure"`

	// A unique Id for each create view request to avoid duplicate view creation.
	// For example, the view is idempotent ClientToken is provided.
	ClientToken *string `type:"string"`

	// View content containing all content necessary to render a view except for
	// runtime input data.
	//
	// The total uncompressed content has a maximum file size of 400kB.
	//
	// Content is a required field
	Content *ViewInputContent `type:"structure" required:"true"`

	// The description of the view.
	Description *string `min:"1" type:"string"`

	// The identifier of the Amazon Connect instance. You can find the instanceId
	// in the ARN of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the view.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateViewInput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true" sensitive:"true"`

	// Indicates the view status as either SAVED or PUBLISHED. The PUBLISHED status
	// will initiate validation on the content.
	//
	// Status is a required field
	Status *string `type:"string" required:"true" enum:"ViewStatus"`

	// The tags associated with the view resource (not specific to view version).These
	// tags can be used to organize, track, or control access for this resource.
	// For example, { "tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateViewInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateViewInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateViewInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateViewInput"}
	if s.Content == nil {
		invalidParams.Add(request.NewErrParamRequired("Content"))
	}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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.Status == nil {
		invalidParams.Add(request.NewErrParamRequired("Status"))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateViewInput) SetClientToken(v string) *CreateViewInput {
	s.ClientToken = &v
	return s
}

// SetContent sets the Content field's value.
func (s *CreateViewInput) SetContent(v *ViewInputContent) *CreateViewInput {
	s.Content = v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateViewInput) SetDescription(v string) *CreateViewInput {
	s.Description = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreateViewInput) SetInstanceId(v string) *CreateViewInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateViewInput) SetName(v string) *CreateViewInput {
	s.Name = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *CreateViewInput) SetStatus(v string) *CreateViewInput {
	s.Status = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateViewInput) SetTags(v map[string]*string) *CreateViewInput {
	s.Tags = v
	return s
}

type CreateViewOutput struct {
	_ struct{} `type:"structure"`

	// A view resource object. Contains metadata and content necessary to render
	// the view.
	View *View `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 CreateViewOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateViewOutput) GoString() string {
	return s.String()
}

// SetView sets the View field's value.
func (s *CreateViewOutput) SetView(v *View) *CreateViewOutput {
	s.View = v
	return s
}

type CreateViewVersionInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instanceId
	// in the ARN of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The description for the version being published.
	VersionDescription *string `min:"1" type:"string"`

	// Indicates the checksum value of the latest published view content.
	ViewContentSha256 *string `min:"1" type:"string"`

	// The identifier of the view. Both ViewArn and ViewId can be used.
	//
	// ViewId is a required field
	ViewId *string `location:"uri" locationName:"ViewId" 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 CreateViewVersionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateViewVersionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateViewVersionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateViewVersionInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.VersionDescription != nil && len(*s.VersionDescription) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VersionDescription", 1))
	}
	if s.ViewContentSha256 != nil && len(*s.ViewContentSha256) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ViewContentSha256", 1))
	}
	if s.ViewId == nil {
		invalidParams.Add(request.NewErrParamRequired("ViewId"))
	}
	if s.ViewId != nil && len(*s.ViewId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ViewId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreateViewVersionInput) SetInstanceId(v string) *CreateViewVersionInput {
	s.InstanceId = &v
	return s
}

// SetVersionDescription sets the VersionDescription field's value.
func (s *CreateViewVersionInput) SetVersionDescription(v string) *CreateViewVersionInput {
	s.VersionDescription = &v
	return s
}

// SetViewContentSha256 sets the ViewContentSha256 field's value.
func (s *CreateViewVersionInput) SetViewContentSha256(v string) *CreateViewVersionInput {
	s.ViewContentSha256 = &v
	return s
}

// SetViewId sets the ViewId field's value.
func (s *CreateViewVersionInput) SetViewId(v string) *CreateViewVersionInput {
	s.ViewId = &v
	return s
}

type CreateViewVersionOutput struct {
	_ struct{} `type:"structure"`

	// All view data is contained within the View object.
	View *View `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 CreateViewVersionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateViewVersionOutput) GoString() string {
	return s.String()
}

// SetView sets the View field's value.
func (s *CreateViewVersionOutput) SetView(v *View) *CreateViewVersionOutput {
	s.View = v
	return s
}

type CreateVocabularyInput struct {
	_ struct{} `type:"structure"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	// If a create request is received more than once with same client token, subsequent
	// requests return the previous response without creating a vocabulary again.
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// The content of the custom vocabulary in plain-text format with a table of
	// values. Each row in the table represents a word or a phrase, described with
	// Phrase, IPA, SoundsLike, and DisplayAs fields. Separate the fields with TAB
	// characters. The size limit is 50KB. For more information, see Create a custom
	// vocabulary using a table (https://docs.aws.amazon.com/transcribe/latest/dg/custom-vocabulary.html#create-vocabulary-table).
	//
	// Content is a required field
	Content *string `min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The language code of the vocabulary entries. For a list of languages and
	// their corresponding language codes, see What is Amazon Transcribe? (https://docs.aws.amazon.com/transcribe/latest/dg/transcribe-whatis.html)
	//
	// LanguageCode is a required field
	LanguageCode *string `type:"string" required:"true" enum:"VocabularyLanguageCode"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`

	// A unique name of the custom vocabulary.
	//
	// VocabularyName is a required field
	VocabularyName *string `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 CreateVocabularyInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateVocabularyInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateVocabularyInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateVocabularyInput"}
	if s.Content == nil {
		invalidParams.Add(request.NewErrParamRequired("Content"))
	}
	if s.Content != nil && len(*s.Content) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Content", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.LanguageCode == nil {
		invalidParams.Add(request.NewErrParamRequired("LanguageCode"))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}
	if s.VocabularyName == nil {
		invalidParams.Add(request.NewErrParamRequired("VocabularyName"))
	}
	if s.VocabularyName != nil && len(*s.VocabularyName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VocabularyName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateVocabularyInput) SetClientToken(v string) *CreateVocabularyInput {
	s.ClientToken = &v
	return s
}

// SetContent sets the Content field's value.
func (s *CreateVocabularyInput) SetContent(v string) *CreateVocabularyInput {
	s.Content = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *CreateVocabularyInput) SetInstanceId(v string) *CreateVocabularyInput {
	s.InstanceId = &v
	return s
}

// SetLanguageCode sets the LanguageCode field's value.
func (s *CreateVocabularyInput) SetLanguageCode(v string) *CreateVocabularyInput {
	s.LanguageCode = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateVocabularyInput) SetTags(v map[string]*string) *CreateVocabularyInput {
	s.Tags = v
	return s
}

// SetVocabularyName sets the VocabularyName field's value.
func (s *CreateVocabularyInput) SetVocabularyName(v string) *CreateVocabularyInput {
	s.VocabularyName = &v
	return s
}

type CreateVocabularyOutput struct {
	_ struct{} `type:"structure"`

	// The current state of the custom vocabulary.
	//
	// State is a required field
	State *string `type:"string" required:"true" enum:"VocabularyState"`

	// The Amazon Resource Name (ARN) of the custom vocabulary.
	//
	// VocabularyArn is a required field
	VocabularyArn *string `type:"string" required:"true"`

	// The identifier of the custom vocabulary.
	//
	// VocabularyId is a required field
	VocabularyId *string `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 CreateVocabularyOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateVocabularyOutput) GoString() string {
	return s.String()
}

// SetState sets the State field's value.
func (s *CreateVocabularyOutput) SetState(v string) *CreateVocabularyOutput {
	s.State = &v
	return s
}

// SetVocabularyArn sets the VocabularyArn field's value.
func (s *CreateVocabularyOutput) SetVocabularyArn(v string) *CreateVocabularyOutput {
	s.VocabularyArn = &v
	return s
}

// SetVocabularyId sets the VocabularyId field's value.
func (s *CreateVocabularyOutput) SetVocabularyId(v string) *CreateVocabularyOutput {
	s.VocabularyId = &v
	return s
}

// Contains credentials to use for federation.
type Credentials struct {
	_ struct{} `type:"structure" sensitive:"true"`

	// An access token generated for a federated user to access Amazon Connect.
	//
	// AccessToken is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Credentials's
	// String and GoString methods.
	AccessToken *string `type:"string" sensitive:"true"`

	// A token generated with an expiration time for the session a user is logged
	// in to Amazon Connect.
	AccessTokenExpiration *time.Time `type:"timestamp"`

	// Renews a token generated for a user to access the Amazon Connect instance.
	//
	// RefreshToken is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Credentials's
	// String and GoString methods.
	RefreshToken *string `type:"string" sensitive:"true"`

	// Renews the expiration timer for a generated token.
	RefreshTokenExpiration *time.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 Credentials) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Credentials) GoString() string {
	return s.String()
}

// SetAccessToken sets the AccessToken field's value.
func (s *Credentials) SetAccessToken(v string) *Credentials {
	s.AccessToken = &v
	return s
}

// SetAccessTokenExpiration sets the AccessTokenExpiration field's value.
func (s *Credentials) SetAccessTokenExpiration(v time.Time) *Credentials {
	s.AccessTokenExpiration = &v
	return s
}

// SetRefreshToken sets the RefreshToken field's value.
func (s *Credentials) SetRefreshToken(v string) *Credentials {
	s.RefreshToken = &v
	return s
}

// SetRefreshTokenExpiration sets the RefreshTokenExpiration field's value.
func (s *Credentials) SetRefreshTokenExpiration(v time.Time) *Credentials {
	s.RefreshTokenExpiration = &v
	return s
}

// Defines the cross-channel routing behavior that allows an agent working on
// a contact in one channel to be offered a contact from a different channel.
type CrossChannelBehavior struct {
	_ struct{} `type:"structure"`

	// Specifies the other channels that can be routed to an agent handling their
	// current channel.
	//
	// BehaviorType is a required field
	BehaviorType *string `type:"string" required:"true" enum:"BehaviorType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CrossChannelBehavior) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CrossChannelBehavior) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CrossChannelBehavior) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CrossChannelBehavior"}
	if s.BehaviorType == nil {
		invalidParams.Add(request.NewErrParamRequired("BehaviorType"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBehaviorType sets the BehaviorType field's value.
func (s *CrossChannelBehavior) SetBehaviorType(v string) *CrossChannelBehavior {
	s.BehaviorType = &v
	return s
}

// Contains information about a real-time metric. For a description of each
// metric, see Real-time Metrics Definitions (https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html)
// in the Amazon Connect Administrator Guide.
type CurrentMetric struct {
	_ struct{} `type:"structure"`

	// The name of the metric.
	Name *string `type:"string" enum:"CurrentMetricName"`

	// The unit for the metric.
	Unit *string `type:"string" enum:"Unit"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CurrentMetric) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CurrentMetric) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *CurrentMetric) SetName(v string) *CurrentMetric {
	s.Name = &v
	return s
}

// SetUnit sets the Unit field's value.
func (s *CurrentMetric) SetUnit(v string) *CurrentMetric {
	s.Unit = &v
	return s
}

// Contains the data for a real-time metric.
type CurrentMetricData struct {
	_ struct{} `type:"structure"`

	// Information about the metric.
	Metric *CurrentMetric `type:"structure"`

	// The value of the metric.
	Value *float64 `type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CurrentMetricData) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CurrentMetricData) GoString() string {
	return s.String()
}

// SetMetric sets the Metric field's value.
func (s *CurrentMetricData) SetMetric(v *CurrentMetric) *CurrentMetricData {
	s.Metric = v
	return s
}

// SetValue sets the Value field's value.
func (s *CurrentMetricData) SetValue(v float64) *CurrentMetricData {
	s.Value = &v
	return s
}

// Contains information about a set of real-time metrics.
type CurrentMetricResult struct {
	_ struct{} `type:"structure"`

	// The set of metrics.
	Collections []*CurrentMetricData `type:"list"`

	// The dimensions for the metrics.
	Dimensions *Dimensions `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 CurrentMetricResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CurrentMetricResult) GoString() string {
	return s.String()
}

// SetCollections sets the Collections field's value.
func (s *CurrentMetricResult) SetCollections(v []*CurrentMetricData) *CurrentMetricResult {
	s.Collections = v
	return s
}

// SetDimensions sets the Dimensions field's value.
func (s *CurrentMetricResult) SetDimensions(v *Dimensions) *CurrentMetricResult {
	s.Dimensions = v
	return s
}

// The way to sort the resulting response based on metrics. By default resources
// are sorted based on AGENTS_ONLINE, DESCENDING. The metric collection is sorted
// based on the input metrics.
type CurrentMetricSortCriteria struct {
	_ struct{} `type:"structure"`

	// The current metric names.
	SortByMetric *string `type:"string" enum:"CurrentMetricName"`

	// The way to sort.
	SortOrder *string `type:"string" enum:"SortOrder"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CurrentMetricSortCriteria) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CurrentMetricSortCriteria) GoString() string {
	return s.String()
}

// SetSortByMetric sets the SortByMetric field's value.
func (s *CurrentMetricSortCriteria) SetSortByMetric(v string) *CurrentMetricSortCriteria {
	s.SortByMetric = &v
	return s
}

// SetSortOrder sets the SortOrder field's value.
func (s *CurrentMetricSortCriteria) SetSortOrder(v string) *CurrentMetricSortCriteria {
	s.SortOrder = &v
	return s
}

// Information about a reference when the referenceType is DATE. Otherwise,
// null.
type DateReference struct {
	_ struct{} `type:"structure"`

	// Identifier of the date reference.
	Name *string `min:"1" type:"string"`

	// A valid date.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DateReference) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DateReference) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *DateReference) SetName(v string) *DateReference {
	s.Name = &v
	return s
}

// SetValue sets the Value field's value.
func (s *DateReference) SetValue(v string) *DateReference {
	s.Value = &v
	return s
}

type DeactivateEvaluationFormInput struct {
	_ struct{} `type:"structure"`

	// The unique identifier for the evaluation form.
	//
	// EvaluationFormId is a required field
	EvaluationFormId *string `location:"uri" locationName:"EvaluationFormId" min:"1" type:"string" required:"true"`

	// A version of the evaluation form. If the version property is not provided,
	// the latest version of the evaluation form is deactivated.
	//
	// EvaluationFormVersion is a required field
	EvaluationFormVersion *int64 `min:"1" type:"integer" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 DeactivateEvaluationFormInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeactivateEvaluationFormInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeactivateEvaluationFormInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeactivateEvaluationFormInput"}
	if s.EvaluationFormId == nil {
		invalidParams.Add(request.NewErrParamRequired("EvaluationFormId"))
	}
	if s.EvaluationFormId != nil && len(*s.EvaluationFormId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EvaluationFormId", 1))
	}
	if s.EvaluationFormVersion == nil {
		invalidParams.Add(request.NewErrParamRequired("EvaluationFormVersion"))
	}
	if s.EvaluationFormVersion != nil && *s.EvaluationFormVersion < 1 {
		invalidParams.Add(request.NewErrParamMinValue("EvaluationFormVersion", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEvaluationFormId sets the EvaluationFormId field's value.
func (s *DeactivateEvaluationFormInput) SetEvaluationFormId(v string) *DeactivateEvaluationFormInput {
	s.EvaluationFormId = &v
	return s
}

// SetEvaluationFormVersion sets the EvaluationFormVersion field's value.
func (s *DeactivateEvaluationFormInput) SetEvaluationFormVersion(v int64) *DeactivateEvaluationFormInput {
	s.EvaluationFormVersion = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DeactivateEvaluationFormInput) SetInstanceId(v string) *DeactivateEvaluationFormInput {
	s.InstanceId = &v
	return s
}

type DeactivateEvaluationFormOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the evaluation form resource.
	//
	// EvaluationFormArn is a required field
	EvaluationFormArn *string `type:"string" required:"true"`

	// The unique identifier for the evaluation form.
	//
	// EvaluationFormId is a required field
	EvaluationFormId *string `min:"1" type:"string" required:"true"`

	// The version of the deactivated evaluation form resource.
	//
	// EvaluationFormVersion is a required field
	EvaluationFormVersion *int64 `min:"1" type:"integer" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeactivateEvaluationFormOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeactivateEvaluationFormOutput) GoString() string {
	return s.String()
}

// SetEvaluationFormArn sets the EvaluationFormArn field's value.
func (s *DeactivateEvaluationFormOutput) SetEvaluationFormArn(v string) *DeactivateEvaluationFormOutput {
	s.EvaluationFormArn = &v
	return s
}

// SetEvaluationFormId sets the EvaluationFormId field's value.
func (s *DeactivateEvaluationFormOutput) SetEvaluationFormId(v string) *DeactivateEvaluationFormOutput {
	s.EvaluationFormId = &v
	return s
}

// SetEvaluationFormVersion sets the EvaluationFormVersion field's value.
func (s *DeactivateEvaluationFormOutput) SetEvaluationFormVersion(v int64) *DeactivateEvaluationFormOutput {
	s.EvaluationFormVersion = &v
	return s
}

// Contains information about a default vocabulary.
type DefaultVocabulary struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// The language code of the vocabulary entries. For a list of languages and
	// their corresponding language codes, see What is Amazon Transcribe? (https://docs.aws.amazon.com/transcribe/latest/dg/transcribe-whatis.html)
	//
	// LanguageCode is a required field
	LanguageCode *string `type:"string" required:"true" enum:"VocabularyLanguageCode"`

	// The identifier of the custom vocabulary.
	//
	// VocabularyId is a required field
	VocabularyId *string `min:"1" type:"string" required:"true"`

	// A unique name of the custom vocabulary.
	//
	// VocabularyName is a required field
	VocabularyName *string `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 DefaultVocabulary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DefaultVocabulary) GoString() string {
	return s.String()
}

// SetInstanceId sets the InstanceId field's value.
func (s *DefaultVocabulary) SetInstanceId(v string) *DefaultVocabulary {
	s.InstanceId = &v
	return s
}

// SetLanguageCode sets the LanguageCode field's value.
func (s *DefaultVocabulary) SetLanguageCode(v string) *DefaultVocabulary {
	s.LanguageCode = &v
	return s
}

// SetVocabularyId sets the VocabularyId field's value.
func (s *DefaultVocabulary) SetVocabularyId(v string) *DefaultVocabulary {
	s.VocabularyId = &v
	return s
}

// SetVocabularyName sets the VocabularyName field's value.
func (s *DefaultVocabulary) SetVocabularyName(v string) *DefaultVocabulary {
	s.VocabularyName = &v
	return s
}

type DeleteContactEvaluationInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// A unique identifier for the contact evaluation.
	//
	// EvaluationId is a required field
	EvaluationId *string `location:"uri" locationName:"EvaluationId" min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 DeleteContactEvaluationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteContactEvaluationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteContactEvaluationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteContactEvaluationInput"}
	if s.EvaluationId == nil {
		invalidParams.Add(request.NewErrParamRequired("EvaluationId"))
	}
	if s.EvaluationId != nil && len(*s.EvaluationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EvaluationId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEvaluationId sets the EvaluationId field's value.
func (s *DeleteContactEvaluationInput) SetEvaluationId(v string) *DeleteContactEvaluationInput {
	s.EvaluationId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DeleteContactEvaluationInput) SetInstanceId(v string) *DeleteContactEvaluationInput {
	s.InstanceId = &v
	return s
}

type DeleteContactEvaluationOutput 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 DeleteContactEvaluationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteContactEvaluationOutput) GoString() string {
	return s.String()
}

type DeleteContactFlowInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the flow.
	//
	// ContactFlowId is a required field
	ContactFlowId *string `location:"uri" locationName:"ContactFlowId" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 DeleteContactFlowInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteContactFlowInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteContactFlowInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteContactFlowInput"}
	if s.ContactFlowId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactFlowId"))
	}
	if s.ContactFlowId != nil && len(*s.ContactFlowId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactFlowId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactFlowId sets the ContactFlowId field's value.
func (s *DeleteContactFlowInput) SetContactFlowId(v string) *DeleteContactFlowInput {
	s.ContactFlowId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DeleteContactFlowInput) SetInstanceId(v string) *DeleteContactFlowInput {
	s.InstanceId = &v
	return s
}

type DeleteContactFlowModuleInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the flow module.
	//
	// ContactFlowModuleId is a required field
	ContactFlowModuleId *string `location:"uri" locationName:"ContactFlowModuleId" min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 DeleteContactFlowModuleInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteContactFlowModuleInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteContactFlowModuleInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteContactFlowModuleInput"}
	if s.ContactFlowModuleId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactFlowModuleId"))
	}
	if s.ContactFlowModuleId != nil && len(*s.ContactFlowModuleId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactFlowModuleId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactFlowModuleId sets the ContactFlowModuleId field's value.
func (s *DeleteContactFlowModuleInput) SetContactFlowModuleId(v string) *DeleteContactFlowModuleInput {
	s.ContactFlowModuleId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DeleteContactFlowModuleInput) SetInstanceId(v string) *DeleteContactFlowModuleInput {
	s.InstanceId = &v
	return s
}

type DeleteContactFlowModuleOutput 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 DeleteContactFlowModuleOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteContactFlowModuleOutput) GoString() string {
	return s.String()
}

type DeleteContactFlowOutput 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 DeleteContactFlowOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteContactFlowOutput) GoString() string {
	return s.String()
}

type DeleteEvaluationFormInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique identifier for the evaluation form.
	//
	// EvaluationFormId is a required field
	EvaluationFormId *string `location:"uri" locationName:"EvaluationFormId" min:"1" type:"string" required:"true"`

	// The unique identifier for the evaluation form.
	EvaluationFormVersion *int64 `location:"querystring" locationName:"version" min:"1" type:"integer"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 DeleteEvaluationFormInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteEvaluationFormInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteEvaluationFormInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteEvaluationFormInput"}
	if s.EvaluationFormId == nil {
		invalidParams.Add(request.NewErrParamRequired("EvaluationFormId"))
	}
	if s.EvaluationFormId != nil && len(*s.EvaluationFormId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EvaluationFormId", 1))
	}
	if s.EvaluationFormVersion != nil && *s.EvaluationFormVersion < 1 {
		invalidParams.Add(request.NewErrParamMinValue("EvaluationFormVersion", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEvaluationFormId sets the EvaluationFormId field's value.
func (s *DeleteEvaluationFormInput) SetEvaluationFormId(v string) *DeleteEvaluationFormInput {
	s.EvaluationFormId = &v
	return s
}

// SetEvaluationFormVersion sets the EvaluationFormVersion field's value.
func (s *DeleteEvaluationFormInput) SetEvaluationFormVersion(v int64) *DeleteEvaluationFormInput {
	s.EvaluationFormVersion = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DeleteEvaluationFormInput) SetInstanceId(v string) *DeleteEvaluationFormInput {
	s.InstanceId = &v
	return s
}

type DeleteEvaluationFormOutput 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 DeleteEvaluationFormOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteEvaluationFormOutput) GoString() string {
	return s.String()
}

type DeleteHoursOfOperationInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier for the hours of operation.
	//
	// HoursOfOperationId is a required field
	HoursOfOperationId *string `location:"uri" locationName:"HoursOfOperationId" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 DeleteHoursOfOperationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteHoursOfOperationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteHoursOfOperationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteHoursOfOperationInput"}
	if s.HoursOfOperationId == nil {
		invalidParams.Add(request.NewErrParamRequired("HoursOfOperationId"))
	}
	if s.HoursOfOperationId != nil && len(*s.HoursOfOperationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("HoursOfOperationId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetHoursOfOperationId sets the HoursOfOperationId field's value.
func (s *DeleteHoursOfOperationInput) SetHoursOfOperationId(v string) *DeleteHoursOfOperationInput {
	s.HoursOfOperationId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DeleteHoursOfOperationInput) SetInstanceId(v string) *DeleteHoursOfOperationInput {
	s.InstanceId = &v
	return s
}

type DeleteHoursOfOperationOutput 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 DeleteHoursOfOperationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteHoursOfOperationOutput) GoString() string {
	return s.String()
}

type DeleteInstanceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 DeleteInstanceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteInstanceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteInstanceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteInstanceInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DeleteInstanceInput) SetInstanceId(v string) *DeleteInstanceInput {
	s.InstanceId = &v
	return s
}

type DeleteInstanceOutput 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 DeleteInstanceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteInstanceOutput) GoString() string {
	return s.String()
}

type DeleteIntegrationAssociationInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier for the integration association.
	//
	// IntegrationAssociationId is a required field
	IntegrationAssociationId *string `location:"uri" locationName:"IntegrationAssociationId" 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 DeleteIntegrationAssociationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteIntegrationAssociationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteIntegrationAssociationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteIntegrationAssociationInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.IntegrationAssociationId == nil {
		invalidParams.Add(request.NewErrParamRequired("IntegrationAssociationId"))
	}
	if s.IntegrationAssociationId != nil && len(*s.IntegrationAssociationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("IntegrationAssociationId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DeleteIntegrationAssociationInput) SetInstanceId(v string) *DeleteIntegrationAssociationInput {
	s.InstanceId = &v
	return s
}

// SetIntegrationAssociationId sets the IntegrationAssociationId field's value.
func (s *DeleteIntegrationAssociationInput) SetIntegrationAssociationId(v string) *DeleteIntegrationAssociationInput {
	s.IntegrationAssociationId = &v
	return s
}

type DeleteIntegrationAssociationOutput 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 DeleteIntegrationAssociationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteIntegrationAssociationOutput) GoString() string {
	return s.String()
}

type DeletePredefinedAttributeInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the predefined attribute.
	//
	// Name is a required field
	Name *string `location:"uri" 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 DeletePredefinedAttributeInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeletePredefinedAttributeInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeletePredefinedAttributeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeletePredefinedAttributeInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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 invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DeletePredefinedAttributeInput) SetInstanceId(v string) *DeletePredefinedAttributeInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *DeletePredefinedAttributeInput) SetName(v string) *DeletePredefinedAttributeInput {
	s.Name = &v
	return s
}

type DeletePredefinedAttributeOutput 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 DeletePredefinedAttributeOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeletePredefinedAttributeOutput) GoString() string {
	return s.String()
}

type DeletePromptInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// A unique identifier for the prompt.
	//
	// PromptId is a required field
	PromptId *string `location:"uri" locationName:"PromptId" 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 DeletePromptInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeletePromptInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeletePromptInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeletePromptInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.PromptId == nil {
		invalidParams.Add(request.NewErrParamRequired("PromptId"))
	}
	if s.PromptId != nil && len(*s.PromptId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PromptId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DeletePromptInput) SetInstanceId(v string) *DeletePromptInput {
	s.InstanceId = &v
	return s
}

// SetPromptId sets the PromptId field's value.
func (s *DeletePromptInput) SetPromptId(v string) *DeletePromptInput {
	s.PromptId = &v
	return s
}

type DeletePromptOutput 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 DeletePromptOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeletePromptOutput) GoString() string {
	return s.String()
}

type DeleteQueueInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier for the queue.
	//
	// QueueId is a required field
	QueueId *string `location:"uri" locationName:"QueueId" 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 DeleteQueueInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteQueueInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteQueueInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteQueueInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.QueueId == nil {
		invalidParams.Add(request.NewErrParamRequired("QueueId"))
	}
	if s.QueueId != nil && len(*s.QueueId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QueueId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DeleteQueueInput) SetInstanceId(v string) *DeleteQueueInput {
	s.InstanceId = &v
	return s
}

// SetQueueId sets the QueueId field's value.
func (s *DeleteQueueInput) SetQueueId(v string) *DeleteQueueInput {
	s.QueueId = &v
	return s
}

type DeleteQueueOutput 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 DeleteQueueOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteQueueOutput) GoString() string {
	return s.String()
}

type DeleteQuickConnectInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier for the quick connect.
	//
	// QuickConnectId is a required field
	QuickConnectId *string `location:"uri" locationName:"QuickConnectId" 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 DeleteQuickConnectInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteQuickConnectInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteQuickConnectInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteQuickConnectInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.QuickConnectId == nil {
		invalidParams.Add(request.NewErrParamRequired("QuickConnectId"))
	}
	if s.QuickConnectId != nil && len(*s.QuickConnectId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QuickConnectId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DeleteQuickConnectInput) SetInstanceId(v string) *DeleteQuickConnectInput {
	s.InstanceId = &v
	return s
}

// SetQuickConnectId sets the QuickConnectId field's value.
func (s *DeleteQuickConnectInput) SetQuickConnectId(v string) *DeleteQuickConnectInput {
	s.QuickConnectId = &v
	return s
}

type DeleteQuickConnectOutput 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 DeleteQuickConnectOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteQuickConnectOutput) GoString() string {
	return s.String()
}

type DeleteRoutingProfileInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the routing profile.
	//
	// RoutingProfileId is a required field
	RoutingProfileId *string `location:"uri" locationName:"RoutingProfileId" 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 DeleteRoutingProfileInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteRoutingProfileInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteRoutingProfileInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteRoutingProfileInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.RoutingProfileId == nil {
		invalidParams.Add(request.NewErrParamRequired("RoutingProfileId"))
	}
	if s.RoutingProfileId != nil && len(*s.RoutingProfileId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RoutingProfileId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DeleteRoutingProfileInput) SetInstanceId(v string) *DeleteRoutingProfileInput {
	s.InstanceId = &v
	return s
}

// SetRoutingProfileId sets the RoutingProfileId field's value.
func (s *DeleteRoutingProfileInput) SetRoutingProfileId(v string) *DeleteRoutingProfileInput {
	s.RoutingProfileId = &v
	return s
}

type DeleteRoutingProfileOutput 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 DeleteRoutingProfileOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteRoutingProfileOutput) GoString() string {
	return s.String()
}

type DeleteRuleInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// A unique identifier for the rule.
	//
	// RuleId is a required field
	RuleId *string `location:"uri" locationName:"RuleId" 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 DeleteRuleInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteRuleInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteRuleInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteRuleInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.RuleId == nil {
		invalidParams.Add(request.NewErrParamRequired("RuleId"))
	}
	if s.RuleId != nil && len(*s.RuleId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RuleId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DeleteRuleInput) SetInstanceId(v string) *DeleteRuleInput {
	s.InstanceId = &v
	return s
}

// SetRuleId sets the RuleId field's value.
func (s *DeleteRuleInput) SetRuleId(v string) *DeleteRuleInput {
	s.RuleId = &v
	return s
}

type DeleteRuleOutput 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 DeleteRuleOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteRuleOutput) GoString() string {
	return s.String()
}

type DeleteSecurityProfileInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier for the security profle.
	//
	// SecurityProfileId is a required field
	SecurityProfileId *string `location:"uri" locationName:"SecurityProfileId" 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 DeleteSecurityProfileInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteSecurityProfileInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteSecurityProfileInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteSecurityProfileInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.SecurityProfileId == nil {
		invalidParams.Add(request.NewErrParamRequired("SecurityProfileId"))
	}
	if s.SecurityProfileId != nil && len(*s.SecurityProfileId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SecurityProfileId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DeleteSecurityProfileInput) SetInstanceId(v string) *DeleteSecurityProfileInput {
	s.InstanceId = &v
	return s
}

// SetSecurityProfileId sets the SecurityProfileId field's value.
func (s *DeleteSecurityProfileInput) SetSecurityProfileId(v string) *DeleteSecurityProfileInput {
	s.SecurityProfileId = &v
	return s
}

type DeleteSecurityProfileOutput 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 DeleteSecurityProfileOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteSecurityProfileOutput) GoString() string {
	return s.String()
}

type DeleteTaskTemplateInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// A unique identifier for the task template.
	//
	// TaskTemplateId is a required field
	TaskTemplateId *string `location:"uri" locationName:"TaskTemplateId" 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 DeleteTaskTemplateInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteTaskTemplateInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteTaskTemplateInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteTaskTemplateInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.TaskTemplateId == nil {
		invalidParams.Add(request.NewErrParamRequired("TaskTemplateId"))
	}
	if s.TaskTemplateId != nil && len(*s.TaskTemplateId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TaskTemplateId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DeleteTaskTemplateInput) SetInstanceId(v string) *DeleteTaskTemplateInput {
	s.InstanceId = &v
	return s
}

// SetTaskTemplateId sets the TaskTemplateId field's value.
func (s *DeleteTaskTemplateInput) SetTaskTemplateId(v string) *DeleteTaskTemplateInput {
	s.TaskTemplateId = &v
	return s
}

type DeleteTaskTemplateOutput 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 DeleteTaskTemplateOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteTaskTemplateOutput) GoString() string {
	return s.String()
}

type DeleteTrafficDistributionGroupInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the traffic distribution group. This can be the ID or the
	// ARN if the API is being called in the Region where the traffic distribution
	// group was created. The ARN must be provided if the call is from the replicated
	// Region.
	//
	// TrafficDistributionGroupId is a required field
	TrafficDistributionGroupId *string `location:"uri" locationName:"TrafficDistributionGroupId" 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 DeleteTrafficDistributionGroupInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteTrafficDistributionGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteTrafficDistributionGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteTrafficDistributionGroupInput"}
	if s.TrafficDistributionGroupId == nil {
		invalidParams.Add(request.NewErrParamRequired("TrafficDistributionGroupId"))
	}
	if s.TrafficDistributionGroupId != nil && len(*s.TrafficDistributionGroupId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TrafficDistributionGroupId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetTrafficDistributionGroupId sets the TrafficDistributionGroupId field's value.
func (s *DeleteTrafficDistributionGroupInput) SetTrafficDistributionGroupId(v string) *DeleteTrafficDistributionGroupInput {
	s.TrafficDistributionGroupId = &v
	return s
}

type DeleteTrafficDistributionGroupOutput 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 DeleteTrafficDistributionGroupOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteTrafficDistributionGroupOutput) GoString() string {
	return s.String()
}

type DeleteUseCaseInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier for the integration association.
	//
	// IntegrationAssociationId is a required field
	IntegrationAssociationId *string `location:"uri" locationName:"IntegrationAssociationId" min:"1" type:"string" required:"true"`

	// The identifier for the use case.
	//
	// UseCaseId is a required field
	UseCaseId *string `location:"uri" locationName:"UseCaseId" 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 DeleteUseCaseInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteUseCaseInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteUseCaseInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteUseCaseInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.IntegrationAssociationId == nil {
		invalidParams.Add(request.NewErrParamRequired("IntegrationAssociationId"))
	}
	if s.IntegrationAssociationId != nil && len(*s.IntegrationAssociationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("IntegrationAssociationId", 1))
	}
	if s.UseCaseId == nil {
		invalidParams.Add(request.NewErrParamRequired("UseCaseId"))
	}
	if s.UseCaseId != nil && len(*s.UseCaseId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UseCaseId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DeleteUseCaseInput) SetInstanceId(v string) *DeleteUseCaseInput {
	s.InstanceId = &v
	return s
}

// SetIntegrationAssociationId sets the IntegrationAssociationId field's value.
func (s *DeleteUseCaseInput) SetIntegrationAssociationId(v string) *DeleteUseCaseInput {
	s.IntegrationAssociationId = &v
	return s
}

// SetUseCaseId sets the UseCaseId field's value.
func (s *DeleteUseCaseInput) SetUseCaseId(v string) *DeleteUseCaseInput {
	s.UseCaseId = &v
	return s
}

type DeleteUseCaseOutput 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 DeleteUseCaseOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteUseCaseOutput) GoString() string {
	return s.String()
}

type DeleteUserHierarchyGroupInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the hierarchy group.
	//
	// HierarchyGroupId is a required field
	HierarchyGroupId *string `location:"uri" locationName:"HierarchyGroupId" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 DeleteUserHierarchyGroupInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteUserHierarchyGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteUserHierarchyGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteUserHierarchyGroupInput"}
	if s.HierarchyGroupId == nil {
		invalidParams.Add(request.NewErrParamRequired("HierarchyGroupId"))
	}
	if s.HierarchyGroupId != nil && len(*s.HierarchyGroupId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("HierarchyGroupId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetHierarchyGroupId sets the HierarchyGroupId field's value.
func (s *DeleteUserHierarchyGroupInput) SetHierarchyGroupId(v string) *DeleteUserHierarchyGroupInput {
	s.HierarchyGroupId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DeleteUserHierarchyGroupInput) SetInstanceId(v string) *DeleteUserHierarchyGroupInput {
	s.InstanceId = &v
	return s
}

type DeleteUserHierarchyGroupOutput 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 DeleteUserHierarchyGroupOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteUserHierarchyGroupOutput) GoString() string {
	return s.String()
}

type DeleteUserInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the user.
	//
	// UserId is a required field
	UserId *string `location:"uri" locationName:"UserId" 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 DeleteUserInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteUserInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteUserInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteUserInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.UserId == nil {
		invalidParams.Add(request.NewErrParamRequired("UserId"))
	}
	if s.UserId != nil && len(*s.UserId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DeleteUserInput) SetInstanceId(v string) *DeleteUserInput {
	s.InstanceId = &v
	return s
}

// SetUserId sets the UserId field's value.
func (s *DeleteUserInput) SetUserId(v string) *DeleteUserInput {
	s.UserId = &v
	return s
}

type DeleteUserOutput 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 DeleteUserOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteUserOutput) GoString() string {
	return s.String()
}

type DeleteViewInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instanceId
	// in the ARN of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the view. Both ViewArn and ViewId can be used.
	//
	// ViewId is a required field
	ViewId *string `location:"uri" locationName:"ViewId" 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 DeleteViewInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteViewInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteViewInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteViewInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.ViewId == nil {
		invalidParams.Add(request.NewErrParamRequired("ViewId"))
	}
	if s.ViewId != nil && len(*s.ViewId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ViewId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DeleteViewInput) SetInstanceId(v string) *DeleteViewInput {
	s.InstanceId = &v
	return s
}

// SetViewId sets the ViewId field's value.
func (s *DeleteViewInput) SetViewId(v string) *DeleteViewInput {
	s.ViewId = &v
	return s
}

type DeleteViewOutput 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 DeleteViewOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteViewOutput) GoString() string {
	return s.String()
}

type DeleteViewVersionInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instanceId
	// in the ARN of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the view. Both ViewArn and ViewId can be used.
	//
	// ViewId is a required field
	ViewId *string `location:"uri" locationName:"ViewId" min:"1" type:"string" required:"true"`

	// The version number of the view.
	//
	// ViewVersion is a required field
	ViewVersion *int64 `location:"uri" locationName:"ViewVersion" type:"integer" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteViewVersionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteViewVersionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteViewVersionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteViewVersionInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.ViewId == nil {
		invalidParams.Add(request.NewErrParamRequired("ViewId"))
	}
	if s.ViewId != nil && len(*s.ViewId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ViewId", 1))
	}
	if s.ViewVersion == nil {
		invalidParams.Add(request.NewErrParamRequired("ViewVersion"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DeleteViewVersionInput) SetInstanceId(v string) *DeleteViewVersionInput {
	s.InstanceId = &v
	return s
}

// SetViewId sets the ViewId field's value.
func (s *DeleteViewVersionInput) SetViewId(v string) *DeleteViewVersionInput {
	s.ViewId = &v
	return s
}

// SetViewVersion sets the ViewVersion field's value.
func (s *DeleteViewVersionInput) SetViewVersion(v int64) *DeleteViewVersionInput {
	s.ViewVersion = &v
	return s
}

type DeleteViewVersionOutput 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 DeleteViewVersionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteViewVersionOutput) GoString() string {
	return s.String()
}

type DeleteVocabularyInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the custom vocabulary.
	//
	// VocabularyId is a required field
	VocabularyId *string `location:"uri" locationName:"VocabularyId" 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 DeleteVocabularyInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteVocabularyInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteVocabularyInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteVocabularyInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.VocabularyId == nil {
		invalidParams.Add(request.NewErrParamRequired("VocabularyId"))
	}
	if s.VocabularyId != nil && len(*s.VocabularyId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VocabularyId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DeleteVocabularyInput) SetInstanceId(v string) *DeleteVocabularyInput {
	s.InstanceId = &v
	return s
}

// SetVocabularyId sets the VocabularyId field's value.
func (s *DeleteVocabularyInput) SetVocabularyId(v string) *DeleteVocabularyInput {
	s.VocabularyId = &v
	return s
}

type DeleteVocabularyOutput struct {
	_ struct{} `type:"structure"`

	// The current state of the custom vocabulary.
	//
	// State is a required field
	State *string `type:"string" required:"true" enum:"VocabularyState"`

	// The Amazon Resource Name (ARN) of the custom vocabulary.
	//
	// VocabularyArn is a required field
	VocabularyArn *string `type:"string" required:"true"`

	// The identifier of the custom vocabulary.
	//
	// VocabularyId is a required field
	VocabularyId *string `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 DeleteVocabularyOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteVocabularyOutput) GoString() string {
	return s.String()
}

// SetState sets the State field's value.
func (s *DeleteVocabularyOutput) SetState(v string) *DeleteVocabularyOutput {
	s.State = &v
	return s
}

// SetVocabularyArn sets the VocabularyArn field's value.
func (s *DeleteVocabularyOutput) SetVocabularyArn(v string) *DeleteVocabularyOutput {
	s.VocabularyArn = &v
	return s
}

// SetVocabularyId sets the VocabularyId field's value.
func (s *DeleteVocabularyOutput) SetVocabularyId(v string) *DeleteVocabularyOutput {
	s.VocabularyId = &v
	return s
}

type DescribeAgentStatusInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier for the agent status.
	//
	// AgentStatusId is a required field
	AgentStatusId *string `location:"uri" locationName:"AgentStatusId" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 DescribeAgentStatusInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeAgentStatusInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeAgentStatusInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeAgentStatusInput"}
	if s.AgentStatusId == nil {
		invalidParams.Add(request.NewErrParamRequired("AgentStatusId"))
	}
	if s.AgentStatusId != nil && len(*s.AgentStatusId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AgentStatusId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAgentStatusId sets the AgentStatusId field's value.
func (s *DescribeAgentStatusInput) SetAgentStatusId(v string) *DescribeAgentStatusInput {
	s.AgentStatusId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeAgentStatusInput) SetInstanceId(v string) *DescribeAgentStatusInput {
	s.InstanceId = &v
	return s
}

type DescribeAgentStatusOutput struct {
	_ struct{} `type:"structure"`

	// The agent status.
	AgentStatus *AgentStatus `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 DescribeAgentStatusOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeAgentStatusOutput) GoString() string {
	return s.String()
}

// SetAgentStatus sets the AgentStatus field's value.
func (s *DescribeAgentStatusOutput) SetAgentStatus(v *AgentStatus) *DescribeAgentStatusOutput {
	s.AgentStatus = v
	return s
}

type DescribeContactEvaluationInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// A unique identifier for the contact evaluation.
	//
	// EvaluationId is a required field
	EvaluationId *string `location:"uri" locationName:"EvaluationId" min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 DescribeContactEvaluationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeContactEvaluationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeContactEvaluationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeContactEvaluationInput"}
	if s.EvaluationId == nil {
		invalidParams.Add(request.NewErrParamRequired("EvaluationId"))
	}
	if s.EvaluationId != nil && len(*s.EvaluationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EvaluationId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEvaluationId sets the EvaluationId field's value.
func (s *DescribeContactEvaluationInput) SetEvaluationId(v string) *DescribeContactEvaluationInput {
	s.EvaluationId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeContactEvaluationInput) SetInstanceId(v string) *DescribeContactEvaluationInput {
	s.InstanceId = &v
	return s
}

type DescribeContactEvaluationOutput struct {
	_ struct{} `type:"structure"`

	// Information about the evaluation form completed for a specific contact.
	//
	// Evaluation is a required field
	Evaluation *Evaluation `type:"structure" required:"true"`

	// Information about the evaluation form.
	//
	// EvaluationForm is a required field
	EvaluationForm *EvaluationFormContent `type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeContactEvaluationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeContactEvaluationOutput) GoString() string {
	return s.String()
}

// SetEvaluation sets the Evaluation field's value.
func (s *DescribeContactEvaluationOutput) SetEvaluation(v *Evaluation) *DescribeContactEvaluationOutput {
	s.Evaluation = v
	return s
}

// SetEvaluationForm sets the EvaluationForm field's value.
func (s *DescribeContactEvaluationOutput) SetEvaluationForm(v *EvaluationFormContent) *DescribeContactEvaluationOutput {
	s.EvaluationForm = v
	return s
}

type DescribeContactFlowInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the flow.
	//
	// ContactFlowId is a required field
	ContactFlowId *string `location:"uri" locationName:"ContactFlowId" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 DescribeContactFlowInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeContactFlowInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeContactFlowInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeContactFlowInput"}
	if s.ContactFlowId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactFlowId"))
	}
	if s.ContactFlowId != nil && len(*s.ContactFlowId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactFlowId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactFlowId sets the ContactFlowId field's value.
func (s *DescribeContactFlowInput) SetContactFlowId(v string) *DescribeContactFlowInput {
	s.ContactFlowId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeContactFlowInput) SetInstanceId(v string) *DescribeContactFlowInput {
	s.InstanceId = &v
	return s
}

type DescribeContactFlowModuleInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the flow module.
	//
	// ContactFlowModuleId is a required field
	ContactFlowModuleId *string `location:"uri" locationName:"ContactFlowModuleId" min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 DescribeContactFlowModuleInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeContactFlowModuleInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeContactFlowModuleInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeContactFlowModuleInput"}
	if s.ContactFlowModuleId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactFlowModuleId"))
	}
	if s.ContactFlowModuleId != nil && len(*s.ContactFlowModuleId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactFlowModuleId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactFlowModuleId sets the ContactFlowModuleId field's value.
func (s *DescribeContactFlowModuleInput) SetContactFlowModuleId(v string) *DescribeContactFlowModuleInput {
	s.ContactFlowModuleId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeContactFlowModuleInput) SetInstanceId(v string) *DescribeContactFlowModuleInput {
	s.InstanceId = &v
	return s
}

type DescribeContactFlowModuleOutput struct {
	_ struct{} `type:"structure"`

	// Information about the flow module.
	ContactFlowModule *ContactFlowModule `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 DescribeContactFlowModuleOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeContactFlowModuleOutput) GoString() string {
	return s.String()
}

// SetContactFlowModule sets the ContactFlowModule field's value.
func (s *DescribeContactFlowModuleOutput) SetContactFlowModule(v *ContactFlowModule) *DescribeContactFlowModuleOutput {
	s.ContactFlowModule = v
	return s
}

type DescribeContactFlowOutput struct {
	_ struct{} `type:"structure"`

	// Information about the flow.
	ContactFlow *ContactFlow `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 DescribeContactFlowOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeContactFlowOutput) GoString() string {
	return s.String()
}

// SetContactFlow sets the ContactFlow field's value.
func (s *DescribeContactFlowOutput) SetContactFlow(v *ContactFlow) *DescribeContactFlowOutput {
	s.ContactFlow = v
	return s
}

type DescribeContactInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the contact.
	//
	// ContactId is a required field
	ContactId *string `location:"uri" locationName:"ContactId" min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 DescribeContactInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeContactInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeContactInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeContactInput"}
	if s.ContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactId"))
	}
	if s.ContactId != nil && len(*s.ContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactId sets the ContactId field's value.
func (s *DescribeContactInput) SetContactId(v string) *DescribeContactInput {
	s.ContactId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeContactInput) SetInstanceId(v string) *DescribeContactInput {
	s.InstanceId = &v
	return s
}

type DescribeContactOutput struct {
	_ struct{} `type:"structure"`

	// Information about the contact.
	Contact *Contact `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 DescribeContactOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeContactOutput) GoString() string {
	return s.String()
}

// SetContact sets the Contact field's value.
func (s *DescribeContactOutput) SetContact(v *Contact) *DescribeContactOutput {
	s.Contact = v
	return s
}

type DescribeEvaluationFormInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// A unique identifier for the contact evaluation.
	//
	// EvaluationFormId is a required field
	EvaluationFormId *string `location:"uri" locationName:"EvaluationFormId" min:"1" type:"string" required:"true"`

	// A version of the evaluation form.
	EvaluationFormVersion *int64 `location:"querystring" locationName:"version" min:"1" type:"integer"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 DescribeEvaluationFormInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeEvaluationFormInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeEvaluationFormInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeEvaluationFormInput"}
	if s.EvaluationFormId == nil {
		invalidParams.Add(request.NewErrParamRequired("EvaluationFormId"))
	}
	if s.EvaluationFormId != nil && len(*s.EvaluationFormId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EvaluationFormId", 1))
	}
	if s.EvaluationFormVersion != nil && *s.EvaluationFormVersion < 1 {
		invalidParams.Add(request.NewErrParamMinValue("EvaluationFormVersion", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEvaluationFormId sets the EvaluationFormId field's value.
func (s *DescribeEvaluationFormInput) SetEvaluationFormId(v string) *DescribeEvaluationFormInput {
	s.EvaluationFormId = &v
	return s
}

// SetEvaluationFormVersion sets the EvaluationFormVersion field's value.
func (s *DescribeEvaluationFormInput) SetEvaluationFormVersion(v int64) *DescribeEvaluationFormInput {
	s.EvaluationFormVersion = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeEvaluationFormInput) SetInstanceId(v string) *DescribeEvaluationFormInput {
	s.InstanceId = &v
	return s
}

type DescribeEvaluationFormOutput struct {
	_ struct{} `type:"structure"`

	// Information about the evaluation form.
	//
	// EvaluationForm is a required field
	EvaluationForm *EvaluationForm `type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeEvaluationFormOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeEvaluationFormOutput) GoString() string {
	return s.String()
}

// SetEvaluationForm sets the EvaluationForm field's value.
func (s *DescribeEvaluationFormOutput) SetEvaluationForm(v *EvaluationForm) *DescribeEvaluationFormOutput {
	s.EvaluationForm = v
	return s
}

type DescribeHoursOfOperationInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier for the hours of operation.
	//
	// HoursOfOperationId is a required field
	HoursOfOperationId *string `location:"uri" locationName:"HoursOfOperationId" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 DescribeHoursOfOperationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeHoursOfOperationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeHoursOfOperationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeHoursOfOperationInput"}
	if s.HoursOfOperationId == nil {
		invalidParams.Add(request.NewErrParamRequired("HoursOfOperationId"))
	}
	if s.HoursOfOperationId != nil && len(*s.HoursOfOperationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("HoursOfOperationId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetHoursOfOperationId sets the HoursOfOperationId field's value.
func (s *DescribeHoursOfOperationInput) SetHoursOfOperationId(v string) *DescribeHoursOfOperationInput {
	s.HoursOfOperationId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeHoursOfOperationInput) SetInstanceId(v string) *DescribeHoursOfOperationInput {
	s.InstanceId = &v
	return s
}

type DescribeHoursOfOperationOutput struct {
	_ struct{} `type:"structure"`

	// The hours of operation.
	HoursOfOperation *HoursOfOperation `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 DescribeHoursOfOperationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeHoursOfOperationOutput) GoString() string {
	return s.String()
}

// SetHoursOfOperation sets the HoursOfOperation field's value.
func (s *DescribeHoursOfOperationOutput) SetHoursOfOperation(v *HoursOfOperation) *DescribeHoursOfOperationOutput {
	s.HoursOfOperation = v
	return s
}

type DescribeInstanceAttributeInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The type of attribute.
	//
	// AttributeType is a required field
	AttributeType *string `location:"uri" locationName:"AttributeType" type:"string" required:"true" enum:"InstanceAttributeType"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 DescribeInstanceAttributeInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeInstanceAttributeInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeInstanceAttributeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeInstanceAttributeInput"}
	if s.AttributeType == nil {
		invalidParams.Add(request.NewErrParamRequired("AttributeType"))
	}
	if s.AttributeType != nil && len(*s.AttributeType) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AttributeType", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAttributeType sets the AttributeType field's value.
func (s *DescribeInstanceAttributeInput) SetAttributeType(v string) *DescribeInstanceAttributeInput {
	s.AttributeType = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeInstanceAttributeInput) SetInstanceId(v string) *DescribeInstanceAttributeInput {
	s.InstanceId = &v
	return s
}

type DescribeInstanceAttributeOutput struct {
	_ struct{} `type:"structure"`

	// The type of attribute.
	Attribute *Attribute `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 DescribeInstanceAttributeOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeInstanceAttributeOutput) GoString() string {
	return s.String()
}

// SetAttribute sets the Attribute field's value.
func (s *DescribeInstanceAttributeOutput) SetAttribute(v *Attribute) *DescribeInstanceAttributeOutput {
	s.Attribute = v
	return s
}

type DescribeInstanceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 DescribeInstanceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeInstanceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeInstanceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeInstanceInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeInstanceInput) SetInstanceId(v string) *DescribeInstanceInput {
	s.InstanceId = &v
	return s
}

type DescribeInstanceOutput struct {
	_ struct{} `type:"structure"`

	// The name of the instance.
	Instance *Instance `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 DescribeInstanceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeInstanceOutput) GoString() string {
	return s.String()
}

// SetInstance sets the Instance field's value.
func (s *DescribeInstanceOutput) SetInstance(v *Instance) *DescribeInstanceOutput {
	s.Instance = v
	return s
}

type DescribeInstanceStorageConfigInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The existing association identifier that uniquely identifies the resource
	// type and storage config for the given instance ID.
	//
	// AssociationId is a required field
	AssociationId *string `location:"uri" locationName:"AssociationId" min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// A valid resource type.
	//
	// ResourceType is a required field
	ResourceType *string `location:"querystring" locationName:"resourceType" type:"string" required:"true" enum:"InstanceStorageResourceType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeInstanceStorageConfigInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeInstanceStorageConfigInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeInstanceStorageConfigInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeInstanceStorageConfigInput"}
	if s.AssociationId == nil {
		invalidParams.Add(request.NewErrParamRequired("AssociationId"))
	}
	if s.AssociationId != nil && len(*s.AssociationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AssociationId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.ResourceType == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceType"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssociationId sets the AssociationId field's value.
func (s *DescribeInstanceStorageConfigInput) SetAssociationId(v string) *DescribeInstanceStorageConfigInput {
	s.AssociationId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeInstanceStorageConfigInput) SetInstanceId(v string) *DescribeInstanceStorageConfigInput {
	s.InstanceId = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *DescribeInstanceStorageConfigInput) SetResourceType(v string) *DescribeInstanceStorageConfigInput {
	s.ResourceType = &v
	return s
}

type DescribeInstanceStorageConfigOutput struct {
	_ struct{} `type:"structure"`

	// A valid storage type.
	StorageConfig *InstanceStorageConfig `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 DescribeInstanceStorageConfigOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeInstanceStorageConfigOutput) GoString() string {
	return s.String()
}

// SetStorageConfig sets the StorageConfig field's value.
func (s *DescribeInstanceStorageConfigOutput) SetStorageConfig(v *InstanceStorageConfig) *DescribeInstanceStorageConfigOutput {
	s.StorageConfig = v
	return s
}

type DescribePhoneNumberInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// A unique identifier for the phone number.
	//
	// PhoneNumberId is a required field
	PhoneNumberId *string `location:"uri" locationName:"PhoneNumberId" 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 DescribePhoneNumberInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribePhoneNumberInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribePhoneNumberInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribePhoneNumberInput"}
	if s.PhoneNumberId == nil {
		invalidParams.Add(request.NewErrParamRequired("PhoneNumberId"))
	}
	if s.PhoneNumberId != nil && len(*s.PhoneNumberId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PhoneNumberId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPhoneNumberId sets the PhoneNumberId field's value.
func (s *DescribePhoneNumberInput) SetPhoneNumberId(v string) *DescribePhoneNumberInput {
	s.PhoneNumberId = &v
	return s
}

type DescribePhoneNumberOutput struct {
	_ struct{} `type:"structure"`

	// Information about a phone number that's been claimed to your Amazon Connect
	// instance or traffic distribution group.
	ClaimedPhoneNumberSummary *ClaimedPhoneNumberSummary `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 DescribePhoneNumberOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribePhoneNumberOutput) GoString() string {
	return s.String()
}

// SetClaimedPhoneNumberSummary sets the ClaimedPhoneNumberSummary field's value.
func (s *DescribePhoneNumberOutput) SetClaimedPhoneNumberSummary(v *ClaimedPhoneNumberSummary) *DescribePhoneNumberOutput {
	s.ClaimedPhoneNumberSummary = v
	return s
}

type DescribePredefinedAttributeInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the predefined attribute.
	//
	// Name is a required field
	Name *string `location:"uri" 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 DescribePredefinedAttributeInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribePredefinedAttributeInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribePredefinedAttributeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribePredefinedAttributeInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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 invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribePredefinedAttributeInput) SetInstanceId(v string) *DescribePredefinedAttributeInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *DescribePredefinedAttributeInput) SetName(v string) *DescribePredefinedAttributeInput {
	s.Name = &v
	return s
}

type DescribePredefinedAttributeOutput struct {
	_ struct{} `type:"structure"`

	// Information about the predefined attribute.
	PredefinedAttribute *PredefinedAttribute `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 DescribePredefinedAttributeOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribePredefinedAttributeOutput) GoString() string {
	return s.String()
}

// SetPredefinedAttribute sets the PredefinedAttribute field's value.
func (s *DescribePredefinedAttributeOutput) SetPredefinedAttribute(v *PredefinedAttribute) *DescribePredefinedAttributeOutput {
	s.PredefinedAttribute = v
	return s
}

type DescribePromptInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// A unique identifier for the prompt.
	//
	// PromptId is a required field
	PromptId *string `location:"uri" locationName:"PromptId" 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 DescribePromptInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribePromptInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribePromptInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribePromptInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.PromptId == nil {
		invalidParams.Add(request.NewErrParamRequired("PromptId"))
	}
	if s.PromptId != nil && len(*s.PromptId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PromptId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribePromptInput) SetInstanceId(v string) *DescribePromptInput {
	s.InstanceId = &v
	return s
}

// SetPromptId sets the PromptId field's value.
func (s *DescribePromptInput) SetPromptId(v string) *DescribePromptInput {
	s.PromptId = &v
	return s
}

type DescribePromptOutput struct {
	_ struct{} `type:"structure"`

	// Information about the prompt.
	Prompt *Prompt `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 DescribePromptOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribePromptOutput) GoString() string {
	return s.String()
}

// SetPrompt sets the Prompt field's value.
func (s *DescribePromptOutput) SetPrompt(v *Prompt) *DescribePromptOutput {
	s.Prompt = v
	return s
}

type DescribeQueueInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier for the queue.
	//
	// QueueId is a required field
	QueueId *string `location:"uri" locationName:"QueueId" 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 DescribeQueueInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeQueueInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeQueueInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeQueueInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.QueueId == nil {
		invalidParams.Add(request.NewErrParamRequired("QueueId"))
	}
	if s.QueueId != nil && len(*s.QueueId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QueueId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeQueueInput) SetInstanceId(v string) *DescribeQueueInput {
	s.InstanceId = &v
	return s
}

// SetQueueId sets the QueueId field's value.
func (s *DescribeQueueInput) SetQueueId(v string) *DescribeQueueInput {
	s.QueueId = &v
	return s
}

type DescribeQueueOutput struct {
	_ struct{} `type:"structure"`

	// The name of the queue.
	Queue *Queue `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 DescribeQueueOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeQueueOutput) GoString() string {
	return s.String()
}

// SetQueue sets the Queue field's value.
func (s *DescribeQueueOutput) SetQueue(v *Queue) *DescribeQueueOutput {
	s.Queue = v
	return s
}

type DescribeQuickConnectInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier for the quick connect.
	//
	// QuickConnectId is a required field
	QuickConnectId *string `location:"uri" locationName:"QuickConnectId" 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 DescribeQuickConnectInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeQuickConnectInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeQuickConnectInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeQuickConnectInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.QuickConnectId == nil {
		invalidParams.Add(request.NewErrParamRequired("QuickConnectId"))
	}
	if s.QuickConnectId != nil && len(*s.QuickConnectId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QuickConnectId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeQuickConnectInput) SetInstanceId(v string) *DescribeQuickConnectInput {
	s.InstanceId = &v
	return s
}

// SetQuickConnectId sets the QuickConnectId field's value.
func (s *DescribeQuickConnectInput) SetQuickConnectId(v string) *DescribeQuickConnectInput {
	s.QuickConnectId = &v
	return s
}

type DescribeQuickConnectOutput struct {
	_ struct{} `type:"structure"`

	// Information about the quick connect.
	QuickConnect *QuickConnect `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 DescribeQuickConnectOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeQuickConnectOutput) GoString() string {
	return s.String()
}

// SetQuickConnect sets the QuickConnect field's value.
func (s *DescribeQuickConnectOutput) SetQuickConnect(v *QuickConnect) *DescribeQuickConnectOutput {
	s.QuickConnect = v
	return s
}

type DescribeRoutingProfileInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the routing profile.
	//
	// RoutingProfileId is a required field
	RoutingProfileId *string `location:"uri" locationName:"RoutingProfileId" 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 DescribeRoutingProfileInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeRoutingProfileInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeRoutingProfileInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeRoutingProfileInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.RoutingProfileId == nil {
		invalidParams.Add(request.NewErrParamRequired("RoutingProfileId"))
	}
	if s.RoutingProfileId != nil && len(*s.RoutingProfileId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RoutingProfileId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeRoutingProfileInput) SetInstanceId(v string) *DescribeRoutingProfileInput {
	s.InstanceId = &v
	return s
}

// SetRoutingProfileId sets the RoutingProfileId field's value.
func (s *DescribeRoutingProfileInput) SetRoutingProfileId(v string) *DescribeRoutingProfileInput {
	s.RoutingProfileId = &v
	return s
}

type DescribeRoutingProfileOutput struct {
	_ struct{} `type:"structure"`

	// The routing profile.
	RoutingProfile *RoutingProfile `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 DescribeRoutingProfileOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeRoutingProfileOutput) GoString() string {
	return s.String()
}

// SetRoutingProfile sets the RoutingProfile field's value.
func (s *DescribeRoutingProfileOutput) SetRoutingProfile(v *RoutingProfile) *DescribeRoutingProfileOutput {
	s.RoutingProfile = v
	return s
}

type DescribeRuleInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// A unique identifier for the rule.
	//
	// RuleId is a required field
	RuleId *string `location:"uri" locationName:"RuleId" 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 DescribeRuleInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeRuleInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeRuleInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeRuleInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.RuleId == nil {
		invalidParams.Add(request.NewErrParamRequired("RuleId"))
	}
	if s.RuleId != nil && len(*s.RuleId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RuleId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeRuleInput) SetInstanceId(v string) *DescribeRuleInput {
	s.InstanceId = &v
	return s
}

// SetRuleId sets the RuleId field's value.
func (s *DescribeRuleInput) SetRuleId(v string) *DescribeRuleInput {
	s.RuleId = &v
	return s
}

type DescribeRuleOutput struct {
	_ struct{} `type:"structure"`

	// Information about the rule.
	//
	// Rule is a required field
	Rule *Rule `type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeRuleOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeRuleOutput) GoString() string {
	return s.String()
}

// SetRule sets the Rule field's value.
func (s *DescribeRuleOutput) SetRule(v *Rule) *DescribeRuleOutput {
	s.Rule = v
	return s
}

type DescribeSecurityProfileInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier for the security profle.
	//
	// SecurityProfileId is a required field
	SecurityProfileId *string `location:"uri" locationName:"SecurityProfileId" 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 DescribeSecurityProfileInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeSecurityProfileInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeSecurityProfileInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeSecurityProfileInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.SecurityProfileId == nil {
		invalidParams.Add(request.NewErrParamRequired("SecurityProfileId"))
	}
	if s.SecurityProfileId != nil && len(*s.SecurityProfileId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SecurityProfileId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeSecurityProfileInput) SetInstanceId(v string) *DescribeSecurityProfileInput {
	s.InstanceId = &v
	return s
}

// SetSecurityProfileId sets the SecurityProfileId field's value.
func (s *DescribeSecurityProfileInput) SetSecurityProfileId(v string) *DescribeSecurityProfileInput {
	s.SecurityProfileId = &v
	return s
}

type DescribeSecurityProfileOutput struct {
	_ struct{} `type:"structure"`

	// The security profile.
	SecurityProfile *SecurityProfile `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 DescribeSecurityProfileOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeSecurityProfileOutput) GoString() string {
	return s.String()
}

// SetSecurityProfile sets the SecurityProfile field's value.
func (s *DescribeSecurityProfileOutput) SetSecurityProfile(v *SecurityProfile) *DescribeSecurityProfileOutput {
	s.SecurityProfile = v
	return s
}

type DescribeTrafficDistributionGroupInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the traffic distribution group. This can be the ID or the
	// ARN if the API is being called in the Region where the traffic distribution
	// group was created. The ARN must be provided if the call is from the replicated
	// Region.
	//
	// TrafficDistributionGroupId is a required field
	TrafficDistributionGroupId *string `location:"uri" locationName:"TrafficDistributionGroupId" 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 DescribeTrafficDistributionGroupInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeTrafficDistributionGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeTrafficDistributionGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeTrafficDistributionGroupInput"}
	if s.TrafficDistributionGroupId == nil {
		invalidParams.Add(request.NewErrParamRequired("TrafficDistributionGroupId"))
	}
	if s.TrafficDistributionGroupId != nil && len(*s.TrafficDistributionGroupId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TrafficDistributionGroupId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetTrafficDistributionGroupId sets the TrafficDistributionGroupId field's value.
func (s *DescribeTrafficDistributionGroupInput) SetTrafficDistributionGroupId(v string) *DescribeTrafficDistributionGroupInput {
	s.TrafficDistributionGroupId = &v
	return s
}

type DescribeTrafficDistributionGroupOutput struct {
	_ struct{} `type:"structure"`

	// Information about the traffic distribution group.
	TrafficDistributionGroup *TrafficDistributionGroup `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 DescribeTrafficDistributionGroupOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeTrafficDistributionGroupOutput) GoString() string {
	return s.String()
}

// SetTrafficDistributionGroup sets the TrafficDistributionGroup field's value.
func (s *DescribeTrafficDistributionGroupOutput) SetTrafficDistributionGroup(v *TrafficDistributionGroup) *DescribeTrafficDistributionGroupOutput {
	s.TrafficDistributionGroup = v
	return s
}

type DescribeUserHierarchyGroupInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the hierarchy group.
	//
	// HierarchyGroupId is a required field
	HierarchyGroupId *string `location:"uri" locationName:"HierarchyGroupId" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 DescribeUserHierarchyGroupInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeUserHierarchyGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeUserHierarchyGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeUserHierarchyGroupInput"}
	if s.HierarchyGroupId == nil {
		invalidParams.Add(request.NewErrParamRequired("HierarchyGroupId"))
	}
	if s.HierarchyGroupId != nil && len(*s.HierarchyGroupId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("HierarchyGroupId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetHierarchyGroupId sets the HierarchyGroupId field's value.
func (s *DescribeUserHierarchyGroupInput) SetHierarchyGroupId(v string) *DescribeUserHierarchyGroupInput {
	s.HierarchyGroupId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeUserHierarchyGroupInput) SetInstanceId(v string) *DescribeUserHierarchyGroupInput {
	s.InstanceId = &v
	return s
}

type DescribeUserHierarchyGroupOutput struct {
	_ struct{} `type:"structure"`

	// Information about the hierarchy group.
	HierarchyGroup *HierarchyGroup `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 DescribeUserHierarchyGroupOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeUserHierarchyGroupOutput) GoString() string {
	return s.String()
}

// SetHierarchyGroup sets the HierarchyGroup field's value.
func (s *DescribeUserHierarchyGroupOutput) SetHierarchyGroup(v *HierarchyGroup) *DescribeUserHierarchyGroupOutput {
	s.HierarchyGroup = v
	return s
}

type DescribeUserHierarchyStructureInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 DescribeUserHierarchyStructureInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeUserHierarchyStructureInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeUserHierarchyStructureInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeUserHierarchyStructureInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeUserHierarchyStructureInput) SetInstanceId(v string) *DescribeUserHierarchyStructureInput {
	s.InstanceId = &v
	return s
}

type DescribeUserHierarchyStructureOutput struct {
	_ struct{} `type:"structure"`

	// Information about the hierarchy structure.
	HierarchyStructure *HierarchyStructure `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 DescribeUserHierarchyStructureOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeUserHierarchyStructureOutput) GoString() string {
	return s.String()
}

// SetHierarchyStructure sets the HierarchyStructure field's value.
func (s *DescribeUserHierarchyStructureOutput) SetHierarchyStructure(v *HierarchyStructure) *DescribeUserHierarchyStructureOutput {
	s.HierarchyStructure = v
	return s
}

type DescribeUserInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the user account.
	//
	// UserId is a required field
	UserId *string `location:"uri" locationName:"UserId" 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 DescribeUserInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeUserInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeUserInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeUserInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.UserId == nil {
		invalidParams.Add(request.NewErrParamRequired("UserId"))
	}
	if s.UserId != nil && len(*s.UserId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeUserInput) SetInstanceId(v string) *DescribeUserInput {
	s.InstanceId = &v
	return s
}

// SetUserId sets the UserId field's value.
func (s *DescribeUserInput) SetUserId(v string) *DescribeUserInput {
	s.UserId = &v
	return s
}

type DescribeUserOutput struct {
	_ struct{} `type:"structure"`

	// Information about the user account and configuration settings.
	User *User `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 DescribeUserOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeUserOutput) GoString() string {
	return s.String()
}

// SetUser sets the User field's value.
func (s *DescribeUserOutput) SetUser(v *User) *DescribeUserOutput {
	s.User = v
	return s
}

type DescribeViewInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instanceId
	// in the ARN of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The ViewId of the view. This must be an ARN for Amazon Web Services managed
	// views.
	//
	// ViewId is a required field
	ViewId *string `location:"uri" locationName:"ViewId" 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 DescribeViewInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeViewInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeViewInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeViewInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.ViewId == nil {
		invalidParams.Add(request.NewErrParamRequired("ViewId"))
	}
	if s.ViewId != nil && len(*s.ViewId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ViewId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeViewInput) SetInstanceId(v string) *DescribeViewInput {
	s.InstanceId = &v
	return s
}

// SetViewId sets the ViewId field's value.
func (s *DescribeViewInput) SetViewId(v string) *DescribeViewInput {
	s.ViewId = &v
	return s
}

type DescribeViewOutput struct {
	_ struct{} `type:"structure"`

	// All view data is contained within the View object.
	View *View `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 DescribeViewOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeViewOutput) GoString() string {
	return s.String()
}

// SetView sets the View field's value.
func (s *DescribeViewOutput) SetView(v *View) *DescribeViewOutput {
	s.View = v
	return s
}

type DescribeVocabularyInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the custom vocabulary.
	//
	// VocabularyId is a required field
	VocabularyId *string `location:"uri" locationName:"VocabularyId" 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 DescribeVocabularyInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeVocabularyInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeVocabularyInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeVocabularyInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.VocabularyId == nil {
		invalidParams.Add(request.NewErrParamRequired("VocabularyId"))
	}
	if s.VocabularyId != nil && len(*s.VocabularyId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VocabularyId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DescribeVocabularyInput) SetInstanceId(v string) *DescribeVocabularyInput {
	s.InstanceId = &v
	return s
}

// SetVocabularyId sets the VocabularyId field's value.
func (s *DescribeVocabularyInput) SetVocabularyId(v string) *DescribeVocabularyInput {
	s.VocabularyId = &v
	return s
}

type DescribeVocabularyOutput struct {
	_ struct{} `type:"structure"`

	// A list of specific words that you want Contact Lens for Amazon Connect to
	// recognize in your audio input. They are generally domain-specific words and
	// phrases, words that Contact Lens is not recognizing, or proper nouns.
	//
	// Vocabulary is a required field
	Vocabulary *Vocabulary `type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeVocabularyOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeVocabularyOutput) GoString() string {
	return s.String()
}

// SetVocabulary sets the Vocabulary field's value.
func (s *DescribeVocabularyOutput) SetVocabulary(v *Vocabulary) *DescribeVocabularyOutput {
	s.Vocabulary = v
	return s
}

// Outbound calls to the destination number are not allowed.
type DestinationNotAllowedException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The message about the outbound calls.
	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 DestinationNotAllowedException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DestinationNotAllowedException) GoString() string {
	return s.String()
}

func newErrorDestinationNotAllowedException(v protocol.ResponseMetadata) error {
	return &DestinationNotAllowedException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *DestinationNotAllowedException) Code() string {
	return "DestinationNotAllowedException"
}

// Message returns the exception's message.
func (s *DestinationNotAllowedException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *DestinationNotAllowedException) OrigErr() error {
	return nil
}

func (s *DestinationNotAllowedException) 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 *DestinationNotAllowedException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *DestinationNotAllowedException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Contains information about the dimensions for a set of metrics.
type Dimensions struct {
	_ struct{} `type:"structure"`

	// The channel used for grouping and filters.
	Channel *string `type:"string" enum:"Channel"`

	// Information about the queue for which metrics are returned.
	Queue *QueueReference `type:"structure"`

	// Information about the routing profile assigned to the user.
	RoutingProfile *RoutingProfileReference `type:"structure"`

	// The expression of a step in a routing criteria.
	RoutingStepExpression *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Dimensions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Dimensions) GoString() string {
	return s.String()
}

// SetChannel sets the Channel field's value.
func (s *Dimensions) SetChannel(v string) *Dimensions {
	s.Channel = &v
	return s
}

// SetQueue sets the Queue field's value.
func (s *Dimensions) SetQueue(v *QueueReference) *Dimensions {
	s.Queue = v
	return s
}

// SetRoutingProfile sets the RoutingProfile field's value.
func (s *Dimensions) SetRoutingProfile(v *RoutingProfileReference) *Dimensions {
	s.RoutingProfile = v
	return s
}

// SetRoutingStepExpression sets the RoutingStepExpression field's value.
func (s *Dimensions) SetRoutingStepExpression(v string) *Dimensions {
	s.RoutingStepExpression = &v
	return s
}

type DisassociateAnalyticsDataSetInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the dataset to remove.
	//
	// DataSetId is a required field
	DataSetId *string `min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the target account. Use to associate a dataset to a different
	// account than the one containing the Amazon Connect instance. If not specified,
	// by default this value is the Amazon Web Services account that has the Amazon
	// Connect instance.
	TargetAccountId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateAnalyticsDataSetInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateAnalyticsDataSetInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DisassociateAnalyticsDataSetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DisassociateAnalyticsDataSetInput"}
	if s.DataSetId == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetId"))
	}
	if s.DataSetId != nil && len(*s.DataSetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSetId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataSetId sets the DataSetId field's value.
func (s *DisassociateAnalyticsDataSetInput) SetDataSetId(v string) *DisassociateAnalyticsDataSetInput {
	s.DataSetId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DisassociateAnalyticsDataSetInput) SetInstanceId(v string) *DisassociateAnalyticsDataSetInput {
	s.InstanceId = &v
	return s
}

// SetTargetAccountId sets the TargetAccountId field's value.
func (s *DisassociateAnalyticsDataSetInput) SetTargetAccountId(v string) *DisassociateAnalyticsDataSetInput {
	s.TargetAccountId = &v
	return s
}

type DisassociateAnalyticsDataSetOutput 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 DisassociateAnalyticsDataSetOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateAnalyticsDataSetOutput) GoString() string {
	return s.String()
}

type DisassociateApprovedOriginInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The domain URL of the integrated application.
	//
	// Origin is a required field
	Origin *string `location:"querystring" locationName:"origin" 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 DisassociateApprovedOriginInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateApprovedOriginInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DisassociateApprovedOriginInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DisassociateApprovedOriginInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Origin == nil {
		invalidParams.Add(request.NewErrParamRequired("Origin"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DisassociateApprovedOriginInput) SetInstanceId(v string) *DisassociateApprovedOriginInput {
	s.InstanceId = &v
	return s
}

// SetOrigin sets the Origin field's value.
func (s *DisassociateApprovedOriginInput) SetOrigin(v string) *DisassociateApprovedOriginInput {
	s.Origin = &v
	return s
}

type DisassociateApprovedOriginOutput 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 DisassociateApprovedOriginOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateApprovedOriginOutput) GoString() string {
	return s.String()
}

type DisassociateBotInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// Configuration information of an Amazon Lex bot.
	LexBot *LexBot `type:"structure"`

	// The Amazon Lex V2 bot to disassociate from the instance.
	LexV2Bot *LexV2Bot `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 DisassociateBotInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateBotInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DisassociateBotInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DisassociateBotInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.LexBot != nil {
		if err := s.LexBot.Validate(); err != nil {
			invalidParams.AddNested("LexBot", err.(request.ErrInvalidParams))
		}
	}
	if s.LexV2Bot != nil {
		if err := s.LexV2Bot.Validate(); err != nil {
			invalidParams.AddNested("LexV2Bot", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DisassociateBotInput) SetInstanceId(v string) *DisassociateBotInput {
	s.InstanceId = &v
	return s
}

// SetLexBot sets the LexBot field's value.
func (s *DisassociateBotInput) SetLexBot(v *LexBot) *DisassociateBotInput {
	s.LexBot = v
	return s
}

// SetLexV2Bot sets the LexV2Bot field's value.
func (s *DisassociateBotInput) SetLexV2Bot(v *LexV2Bot) *DisassociateBotInput {
	s.LexV2Bot = v
	return s
}

type DisassociateBotOutput 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 DisassociateBotOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateBotOutput) GoString() string {
	return s.String()
}

type DisassociateFlowInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the resource.
	//
	// ResourceId is a required field
	ResourceId *string `location:"uri" locationName:"ResourceId" type:"string" required:"true"`

	// A valid resource type.
	//
	// ResourceType is a required field
	ResourceType *string `location:"uri" locationName:"ResourceType" type:"string" required:"true" enum:"FlowAssociationResourceType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateFlowInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateFlowInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DisassociateFlowInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DisassociateFlowInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.ResourceId == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceId"))
	}
	if s.ResourceId != nil && len(*s.ResourceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceId", 1))
	}
	if s.ResourceType == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceType"))
	}
	if s.ResourceType != nil && len(*s.ResourceType) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceType", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DisassociateFlowInput) SetInstanceId(v string) *DisassociateFlowInput {
	s.InstanceId = &v
	return s
}

// SetResourceId sets the ResourceId field's value.
func (s *DisassociateFlowInput) SetResourceId(v string) *DisassociateFlowInput {
	s.ResourceId = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *DisassociateFlowInput) SetResourceType(v string) *DisassociateFlowInput {
	s.ResourceType = &v
	return s
}

type DisassociateFlowOutput 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 DisassociateFlowOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateFlowOutput) GoString() string {
	return s.String()
}

type DisassociateInstanceStorageConfigInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The existing association identifier that uniquely identifies the resource
	// type and storage config for the given instance ID.
	//
	// AssociationId is a required field
	AssociationId *string `location:"uri" locationName:"AssociationId" min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// A valid resource type.
	//
	// ResourceType is a required field
	ResourceType *string `location:"querystring" locationName:"resourceType" type:"string" required:"true" enum:"InstanceStorageResourceType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateInstanceStorageConfigInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateInstanceStorageConfigInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DisassociateInstanceStorageConfigInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DisassociateInstanceStorageConfigInput"}
	if s.AssociationId == nil {
		invalidParams.Add(request.NewErrParamRequired("AssociationId"))
	}
	if s.AssociationId != nil && len(*s.AssociationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AssociationId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.ResourceType == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceType"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssociationId sets the AssociationId field's value.
func (s *DisassociateInstanceStorageConfigInput) SetAssociationId(v string) *DisassociateInstanceStorageConfigInput {
	s.AssociationId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DisassociateInstanceStorageConfigInput) SetInstanceId(v string) *DisassociateInstanceStorageConfigInput {
	s.InstanceId = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *DisassociateInstanceStorageConfigInput) SetResourceType(v string) *DisassociateInstanceStorageConfigInput {
	s.ResourceType = &v
	return s
}

type DisassociateInstanceStorageConfigOutput 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 DisassociateInstanceStorageConfigOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateInstanceStorageConfigOutput) GoString() string {
	return s.String()
}

type DisassociateLambdaFunctionInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the Lambda function being disassociated.
	//
	// FunctionArn is a required field
	FunctionArn *string `location:"querystring" locationName:"functionArn" min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance..
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 DisassociateLambdaFunctionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateLambdaFunctionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DisassociateLambdaFunctionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DisassociateLambdaFunctionInput"}
	if s.FunctionArn == nil {
		invalidParams.Add(request.NewErrParamRequired("FunctionArn"))
	}
	if s.FunctionArn != nil && len(*s.FunctionArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FunctionArn", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFunctionArn sets the FunctionArn field's value.
func (s *DisassociateLambdaFunctionInput) SetFunctionArn(v string) *DisassociateLambdaFunctionInput {
	s.FunctionArn = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DisassociateLambdaFunctionInput) SetInstanceId(v string) *DisassociateLambdaFunctionInput {
	s.InstanceId = &v
	return s
}

type DisassociateLambdaFunctionOutput 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 DisassociateLambdaFunctionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateLambdaFunctionOutput) GoString() string {
	return s.String()
}

type DisassociateLexBotInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The name of the Amazon Lex bot. Maximum character limit of 50.
	//
	// BotName is a required field
	BotName *string `location:"querystring" locationName:"botName" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The Amazon Web Services Region in which the Amazon Lex bot has been created.
	//
	// LexRegion is a required field
	LexRegion *string `location:"querystring" locationName:"lexRegion" 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 DisassociateLexBotInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateLexBotInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DisassociateLexBotInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DisassociateLexBotInput"}
	if s.BotName == nil {
		invalidParams.Add(request.NewErrParamRequired("BotName"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.LexRegion == nil {
		invalidParams.Add(request.NewErrParamRequired("LexRegion"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBotName sets the BotName field's value.
func (s *DisassociateLexBotInput) SetBotName(v string) *DisassociateLexBotInput {
	s.BotName = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DisassociateLexBotInput) SetInstanceId(v string) *DisassociateLexBotInput {
	s.InstanceId = &v
	return s
}

// SetLexRegion sets the LexRegion field's value.
func (s *DisassociateLexBotInput) SetLexRegion(v string) *DisassociateLexBotInput {
	s.LexRegion = &v
	return s
}

type DisassociateLexBotOutput 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 DisassociateLexBotOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateLexBotOutput) GoString() string {
	return s.String()
}

type DisassociatePhoneNumberContactFlowInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"querystring" locationName:"instanceId" min:"1" type:"string" required:"true"`

	// A unique identifier for the phone number.
	//
	// PhoneNumberId is a required field
	PhoneNumberId *string `location:"uri" locationName:"PhoneNumberId" 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 DisassociatePhoneNumberContactFlowInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociatePhoneNumberContactFlowInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DisassociatePhoneNumberContactFlowInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DisassociatePhoneNumberContactFlowInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.PhoneNumberId == nil {
		invalidParams.Add(request.NewErrParamRequired("PhoneNumberId"))
	}
	if s.PhoneNumberId != nil && len(*s.PhoneNumberId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PhoneNumberId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DisassociatePhoneNumberContactFlowInput) SetInstanceId(v string) *DisassociatePhoneNumberContactFlowInput {
	s.InstanceId = &v
	return s
}

// SetPhoneNumberId sets the PhoneNumberId field's value.
func (s *DisassociatePhoneNumberContactFlowInput) SetPhoneNumberId(v string) *DisassociatePhoneNumberContactFlowInput {
	s.PhoneNumberId = &v
	return s
}

type DisassociatePhoneNumberContactFlowOutput 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 DisassociatePhoneNumberContactFlowOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociatePhoneNumberContactFlowOutput) GoString() string {
	return s.String()
}

type DisassociateQueueQuickConnectsInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier for the queue.
	//
	// QueueId is a required field
	QueueId *string `location:"uri" locationName:"QueueId" type:"string" required:"true"`

	// The quick connects to disassociate from the queue.
	//
	// QuickConnectIds is a required field
	QuickConnectIds []*string `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 DisassociateQueueQuickConnectsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateQueueQuickConnectsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DisassociateQueueQuickConnectsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DisassociateQueueQuickConnectsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.QueueId == nil {
		invalidParams.Add(request.NewErrParamRequired("QueueId"))
	}
	if s.QueueId != nil && len(*s.QueueId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QueueId", 1))
	}
	if s.QuickConnectIds == nil {
		invalidParams.Add(request.NewErrParamRequired("QuickConnectIds"))
	}
	if s.QuickConnectIds != nil && len(s.QuickConnectIds) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QuickConnectIds", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DisassociateQueueQuickConnectsInput) SetInstanceId(v string) *DisassociateQueueQuickConnectsInput {
	s.InstanceId = &v
	return s
}

// SetQueueId sets the QueueId field's value.
func (s *DisassociateQueueQuickConnectsInput) SetQueueId(v string) *DisassociateQueueQuickConnectsInput {
	s.QueueId = &v
	return s
}

// SetQuickConnectIds sets the QuickConnectIds field's value.
func (s *DisassociateQueueQuickConnectsInput) SetQuickConnectIds(v []*string) *DisassociateQueueQuickConnectsInput {
	s.QuickConnectIds = v
	return s
}

type DisassociateQueueQuickConnectsOutput 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 DisassociateQueueQuickConnectsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateQueueQuickConnectsOutput) GoString() string {
	return s.String()
}

type DisassociateRoutingProfileQueuesInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The queues to disassociate from this routing profile.
	//
	// QueueReferences is a required field
	QueueReferences []*RoutingProfileQueueReference `type:"list" required:"true"`

	// The identifier of the routing profile.
	//
	// RoutingProfileId is a required field
	RoutingProfileId *string `location:"uri" locationName:"RoutingProfileId" 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 DisassociateRoutingProfileQueuesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateRoutingProfileQueuesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DisassociateRoutingProfileQueuesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DisassociateRoutingProfileQueuesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.QueueReferences == nil {
		invalidParams.Add(request.NewErrParamRequired("QueueReferences"))
	}
	if s.RoutingProfileId == nil {
		invalidParams.Add(request.NewErrParamRequired("RoutingProfileId"))
	}
	if s.RoutingProfileId != nil && len(*s.RoutingProfileId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RoutingProfileId", 1))
	}
	if s.QueueReferences != nil {
		for i, v := range s.QueueReferences {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "QueueReferences", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DisassociateRoutingProfileQueuesInput) SetInstanceId(v string) *DisassociateRoutingProfileQueuesInput {
	s.InstanceId = &v
	return s
}

// SetQueueReferences sets the QueueReferences field's value.
func (s *DisassociateRoutingProfileQueuesInput) SetQueueReferences(v []*RoutingProfileQueueReference) *DisassociateRoutingProfileQueuesInput {
	s.QueueReferences = v
	return s
}

// SetRoutingProfileId sets the RoutingProfileId field's value.
func (s *DisassociateRoutingProfileQueuesInput) SetRoutingProfileId(v string) *DisassociateRoutingProfileQueuesInput {
	s.RoutingProfileId = &v
	return s
}

type DisassociateRoutingProfileQueuesOutput 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 DisassociateRoutingProfileQueuesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateRoutingProfileQueuesOutput) GoString() string {
	return s.String()
}

type DisassociateSecurityKeyInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The existing association identifier that uniquely identifies the resource
	// type and storage config for the given instance ID.
	//
	// AssociationId is a required field
	AssociationId *string `location:"uri" locationName:"AssociationId" min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 DisassociateSecurityKeyInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateSecurityKeyInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DisassociateSecurityKeyInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DisassociateSecurityKeyInput"}
	if s.AssociationId == nil {
		invalidParams.Add(request.NewErrParamRequired("AssociationId"))
	}
	if s.AssociationId != nil && len(*s.AssociationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AssociationId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssociationId sets the AssociationId field's value.
func (s *DisassociateSecurityKeyInput) SetAssociationId(v string) *DisassociateSecurityKeyInput {
	s.AssociationId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DisassociateSecurityKeyInput) SetInstanceId(v string) *DisassociateSecurityKeyInput {
	s.InstanceId = &v
	return s
}

type DisassociateSecurityKeyOutput 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 DisassociateSecurityKeyOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateSecurityKeyOutput) GoString() string {
	return s.String()
}

type DisassociateTrafficDistributionGroupUserInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"querystring" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the traffic distribution group. This can be the ID or the
	// ARN if the API is being called in the Region where the traffic distribution
	// group was created. The ARN must be provided if the call is from the replicated
	// Region.
	//
	// TrafficDistributionGroupId is a required field
	TrafficDistributionGroupId *string `location:"uri" locationName:"TrafficDistributionGroupId" type:"string" required:"true"`

	// The identifier for the user. This can be the ID or the ARN of the user.
	//
	// UserId is a required field
	UserId *string `location:"querystring" locationName:"UserId" 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 DisassociateTrafficDistributionGroupUserInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateTrafficDistributionGroupUserInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DisassociateTrafficDistributionGroupUserInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DisassociateTrafficDistributionGroupUserInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.TrafficDistributionGroupId == nil {
		invalidParams.Add(request.NewErrParamRequired("TrafficDistributionGroupId"))
	}
	if s.TrafficDistributionGroupId != nil && len(*s.TrafficDistributionGroupId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TrafficDistributionGroupId", 1))
	}
	if s.UserId == nil {
		invalidParams.Add(request.NewErrParamRequired("UserId"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DisassociateTrafficDistributionGroupUserInput) SetInstanceId(v string) *DisassociateTrafficDistributionGroupUserInput {
	s.InstanceId = &v
	return s
}

// SetTrafficDistributionGroupId sets the TrafficDistributionGroupId field's value.
func (s *DisassociateTrafficDistributionGroupUserInput) SetTrafficDistributionGroupId(v string) *DisassociateTrafficDistributionGroupUserInput {
	s.TrafficDistributionGroupId = &v
	return s
}

// SetUserId sets the UserId field's value.
func (s *DisassociateTrafficDistributionGroupUserInput) SetUserId(v string) *DisassociateTrafficDistributionGroupUserInput {
	s.UserId = &v
	return s
}

type DisassociateTrafficDistributionGroupUserOutput 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 DisassociateTrafficDistributionGroupUserOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateTrafficDistributionGroupUserOutput) GoString() string {
	return s.String()
}

type DisassociateUserProficienciesInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the user account.
	//
	// UserId is a required field
	UserId *string `location:"uri" locationName:"UserId" type:"string" required:"true"`

	// The proficiencies to disassociate from the user.
	//
	// UserProficiencies is a required field
	UserProficiencies []*UserProficiencyDisassociate `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 DisassociateUserProficienciesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateUserProficienciesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DisassociateUserProficienciesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DisassociateUserProficienciesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.UserId == nil {
		invalidParams.Add(request.NewErrParamRequired("UserId"))
	}
	if s.UserId != nil && len(*s.UserId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserId", 1))
	}
	if s.UserProficiencies == nil {
		invalidParams.Add(request.NewErrParamRequired("UserProficiencies"))
	}
	if s.UserProficiencies != nil {
		for i, v := range s.UserProficiencies {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "UserProficiencies", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *DisassociateUserProficienciesInput) SetInstanceId(v string) *DisassociateUserProficienciesInput {
	s.InstanceId = &v
	return s
}

// SetUserId sets the UserId field's value.
func (s *DisassociateUserProficienciesInput) SetUserId(v string) *DisassociateUserProficienciesInput {
	s.UserId = &v
	return s
}

// SetUserProficiencies sets the UserProficiencies field's value.
func (s *DisassociateUserProficienciesInput) SetUserProficiencies(v []*UserProficiencyDisassociate) *DisassociateUserProficienciesInput {
	s.UserProficiencies = v
	return s
}

type DisassociateUserProficienciesOutput 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 DisassociateUserProficienciesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisassociateUserProficienciesOutput) GoString() string {
	return s.String()
}

// Contains details about why a contact was disconnected. Only Amazon Connect
// outbound campaigns can provide this field.
type DisconnectReason struct {
	_ struct{} `type:"structure"`

	// A code that indicates how the contact was terminated.
	Code *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisconnectReason) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DisconnectReason) GoString() string {
	return s.String()
}

// SetCode sets the Code field's value.
func (s *DisconnectReason) SetCode(v string) *DisconnectReason {
	s.Code = &v
	return s
}

type DismissUserContactInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the contact.
	//
	// ContactId is a required field
	ContactId *string `min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instanceId
	// in the ARN of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the user account.
	//
	// UserId is a required field
	UserId *string `location:"uri" locationName:"UserId" 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 DismissUserContactInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DismissUserContactInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DismissUserContactInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DismissUserContactInput"}
	if s.ContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactId"))
	}
	if s.ContactId != nil && len(*s.ContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.UserId == nil {
		invalidParams.Add(request.NewErrParamRequired("UserId"))
	}
	if s.UserId != nil && len(*s.UserId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactId sets the ContactId field's value.
func (s *DismissUserContactInput) SetContactId(v string) *DismissUserContactInput {
	s.ContactId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *DismissUserContactInput) SetInstanceId(v string) *DismissUserContactInput {
	s.InstanceId = &v
	return s
}

// SetUserId sets the UserId field's value.
func (s *DismissUserContactInput) SetUserId(v string) *DismissUserContactInput {
	s.UserId = &v
	return s
}

type DismissUserContactOutput 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 DismissUserContactOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DismissUserContactOutput) GoString() string {
	return s.String()
}

// Information about a traffic distribution.
type Distribution struct {
	_ struct{} `type:"structure"`

	// The percentage of the traffic that is distributed, in increments of 10.
	//
	// Percentage is a required field
	Percentage *int64 `type:"integer" required:"true"`

	// The Amazon Web Services Region where the traffic is distributed.
	//
	// Region is a required field
	Region *string `min:"8" 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 Distribution) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Distribution) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Distribution) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Distribution"}
	if s.Percentage == nil {
		invalidParams.Add(request.NewErrParamRequired("Percentage"))
	}
	if s.Region == nil {
		invalidParams.Add(request.NewErrParamRequired("Region"))
	}
	if s.Region != nil && len(*s.Region) < 8 {
		invalidParams.Add(request.NewErrParamMinLen("Region", 8))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPercentage sets the Percentage field's value.
func (s *Distribution) SetPercentage(v int64) *Distribution {
	s.Percentage = &v
	return s
}

// SetRegion sets the Region field's value.
func (s *Distribution) SetRegion(v string) *Distribution {
	s.Region = &v
	return s
}

// A resource with the specified name already exists.
type DuplicateResourceException 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 DuplicateResourceException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DuplicateResourceException) GoString() string {
	return s.String()
}

func newErrorDuplicateResourceException(v protocol.ResponseMetadata) error {
	return &DuplicateResourceException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *DuplicateResourceException) Code() string {
	return "DuplicateResourceException"
}

// Message returns the exception's message.
func (s *DuplicateResourceException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *DuplicateResourceException) OrigErr() error {
	return nil
}

func (s *DuplicateResourceException) 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 *DuplicateResourceException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *DuplicateResourceException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Information about a reference when the referenceType is EMAIL. Otherwise,
// null.
type EmailReference struct {
	_ struct{} `type:"structure"`

	// Identifier of the email reference.
	Name *string `min:"1" type:"string"`

	// A valid email address.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EmailReference) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EmailReference) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *EmailReference) SetName(v string) *EmailReference {
	s.Name = &v
	return s
}

// SetValue sets the Value field's value.
func (s *EmailReference) SetValue(v string) *EmailReference {
	s.Value = &v
	return s
}

// An empty value.
type EmptyFieldValue 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 EmptyFieldValue) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EmptyFieldValue) GoString() string {
	return s.String()
}

// The encryption configuration.
type EncryptionConfig struct {
	_ struct{} `type:"structure"`

	// The type of encryption.
	//
	// EncryptionType is a required field
	EncryptionType *string `type:"string" required:"true" enum:"EncryptionType"`

	// The full ARN of the encryption key.
	//
	// Be sure to provide the full ARN of the encryption key, not just the ID.
	//
	// Amazon Connect supports only KMS keys with the default key spec of SYMMETRIC_DEFAULT
	// (https://docs.aws.amazon.com/kms/latest/developerguide/asymmetric-key-specs.html#key-spec-symmetric-default).
	//
	// KeyId is a required field
	KeyId *string `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 EncryptionConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EncryptionConfig) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EncryptionConfig) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EncryptionConfig"}
	if s.EncryptionType == nil {
		invalidParams.Add(request.NewErrParamRequired("EncryptionType"))
	}
	if s.KeyId == nil {
		invalidParams.Add(request.NewErrParamRequired("KeyId"))
	}
	if s.KeyId != nil && len(*s.KeyId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("KeyId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEncryptionType sets the EncryptionType field's value.
func (s *EncryptionConfig) SetEncryptionType(v string) *EncryptionConfig {
	s.EncryptionType = &v
	return s
}

// SetKeyId sets the KeyId field's value.
func (s *EncryptionConfig) SetKeyId(v string) *EncryptionConfig {
	s.KeyId = &v
	return s
}

// End associated tasks related to a case.
type EndAssociatedTasksActionDefinition 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 EndAssociatedTasksActionDefinition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EndAssociatedTasksActionDefinition) GoString() string {
	return s.String()
}

// Information about the endpoint.
type Endpoint struct {
	_ struct{} `type:"structure"`

	// Address of the endpoint.
	Address *string `type:"string"`

	// Type of the endpoint.
	Type *string `type:"string" enum:"EndpointType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Endpoint) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Endpoint) GoString() string {
	return s.String()
}

// SetAddress sets the Address field's value.
func (s *Endpoint) SetAddress(v string) *Endpoint {
	s.Address = &v
	return s
}

// SetType sets the Type field's value.
func (s *Endpoint) SetType(v string) *Endpoint {
	s.Type = &v
	return s
}

// This API is in preview release for Amazon Connect and is subject to change.
//
// List of errors for dataset association failures.
type ErrorResult struct {
	_ struct{} `type:"structure"`

	// The error code.
	ErrorCode *string `type:"string"`

	// The corresponding error message for the error code.
	ErrorMessage *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ErrorResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ErrorResult) GoString() string {
	return s.String()
}

// SetErrorCode sets the ErrorCode field's value.
func (s *ErrorResult) SetErrorCode(v string) *ErrorResult {
	s.ErrorCode = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *ErrorResult) SetErrorMessage(v string) *ErrorResult {
	s.ErrorMessage = &v
	return s
}

// Information about a contact evaluation.
type Evaluation struct {
	_ struct{} `type:"structure"`

	// A map of question identifiers to answer value.
	//
	// Answers is a required field
	Answers map[string]*EvaluationAnswerOutput_ `type:"map" required:"true"`

	// The timestamp for when the evaluation was created.
	//
	// CreatedTime is a required field
	CreatedTime *time.Time `type:"timestamp" required:"true"`

	// The Amazon Resource Name (ARN) for the contact evaluation resource.
	//
	// EvaluationArn is a required field
	EvaluationArn *string `type:"string" required:"true"`

	// A unique identifier for the contact evaluation.
	//
	// EvaluationId is a required field
	EvaluationId *string `min:"1" type:"string" required:"true"`

	// The timestamp for when the evaluation was last updated.
	//
	// LastModifiedTime is a required field
	LastModifiedTime *time.Time `type:"timestamp" required:"true"`

	// Metadata about the contact evaluation.
	//
	// Metadata is a required field
	Metadata *EvaluationMetadata `type:"structure" required:"true"`

	// A map of question identifiers to note value.
	//
	// Notes is a required field
	Notes map[string]*EvaluationNote `type:"map" required:"true"`

	// A map of item (section or question) identifiers to score value.
	Scores map[string]*EvaluationScore `type:"map"`

	// The status of the contact evaluation.
	//
	// Status is a required field
	Status *string `type:"string" required:"true" enum:"EvaluationStatus"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Evaluation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Evaluation) GoString() string {
	return s.String()
}

// SetAnswers sets the Answers field's value.
func (s *Evaluation) SetAnswers(v map[string]*EvaluationAnswerOutput_) *Evaluation {
	s.Answers = v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *Evaluation) SetCreatedTime(v time.Time) *Evaluation {
	s.CreatedTime = &v
	return s
}

// SetEvaluationArn sets the EvaluationArn field's value.
func (s *Evaluation) SetEvaluationArn(v string) *Evaluation {
	s.EvaluationArn = &v
	return s
}

// SetEvaluationId sets the EvaluationId field's value.
func (s *Evaluation) SetEvaluationId(v string) *Evaluation {
	s.EvaluationId = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *Evaluation) SetLastModifiedTime(v time.Time) *Evaluation {
	s.LastModifiedTime = &v
	return s
}

// SetMetadata sets the Metadata field's value.
func (s *Evaluation) SetMetadata(v *EvaluationMetadata) *Evaluation {
	s.Metadata = v
	return s
}

// SetNotes sets the Notes field's value.
func (s *Evaluation) SetNotes(v map[string]*EvaluationNote) *Evaluation {
	s.Notes = v
	return s
}

// SetScores sets the Scores field's value.
func (s *Evaluation) SetScores(v map[string]*EvaluationScore) *Evaluation {
	s.Scores = v
	return s
}

// SetStatus sets the Status field's value.
func (s *Evaluation) SetStatus(v string) *Evaluation {
	s.Status = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *Evaluation) SetTags(v map[string]*string) *Evaluation {
	s.Tags = v
	return s
}

// Information about answer data for a contact evaluation. Answer data must
// be either string, numeric, or not applicable.
type EvaluationAnswerData struct {
	_ struct{} `type:"structure"`

	// The flag to mark the question as not applicable.
	NotApplicable *bool `type:"boolean"`

	// The numeric value for an answer in a contact evaluation.
	NumericValue *float64 `type:"double"`

	// The string value for an answer in a contact evaluation.
	StringValue *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationAnswerData) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationAnswerData) GoString() string {
	return s.String()
}

// SetNotApplicable sets the NotApplicable field's value.
func (s *EvaluationAnswerData) SetNotApplicable(v bool) *EvaluationAnswerData {
	s.NotApplicable = &v
	return s
}

// SetNumericValue sets the NumericValue field's value.
func (s *EvaluationAnswerData) SetNumericValue(v float64) *EvaluationAnswerData {
	s.NumericValue = &v
	return s
}

// SetStringValue sets the StringValue field's value.
func (s *EvaluationAnswerData) SetStringValue(v string) *EvaluationAnswerData {
	s.StringValue = &v
	return s
}

// Information about input answers for a contact evaluation.
type EvaluationAnswerInput_ struct {
	_ struct{} `type:"structure"`

	// The value for an answer in a contact evaluation.
	Value *EvaluationAnswerData `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 EvaluationAnswerInput_) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationAnswerInput_) GoString() string {
	return s.String()
}

// SetValue sets the Value field's value.
func (s *EvaluationAnswerInput_) SetValue(v *EvaluationAnswerData) *EvaluationAnswerInput_ {
	s.Value = v
	return s
}

// Information about output answers for a contact evaluation.
type EvaluationAnswerOutput_ struct {
	_ struct{} `type:"structure"`

	// The system suggested value for an answer in a contact evaluation.
	SystemSuggestedValue *EvaluationAnswerData `type:"structure"`

	// The value for an answer in a contact evaluation.
	Value *EvaluationAnswerData `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 EvaluationAnswerOutput_) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationAnswerOutput_) GoString() string {
	return s.String()
}

// SetSystemSuggestedValue sets the SystemSuggestedValue field's value.
func (s *EvaluationAnswerOutput_) SetSystemSuggestedValue(v *EvaluationAnswerData) *EvaluationAnswerOutput_ {
	s.SystemSuggestedValue = v
	return s
}

// SetValue sets the Value field's value.
func (s *EvaluationAnswerOutput_) SetValue(v *EvaluationAnswerData) *EvaluationAnswerOutput_ {
	s.Value = v
	return s
}

// Information about the evaluation form.
type EvaluationForm struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the user who created the evaluation form.
	//
	// CreatedBy is a required field
	CreatedBy *string `type:"string" required:"true"`

	// The timestamp for when the evaluation form was created.
	//
	// CreatedTime is a required field
	CreatedTime *time.Time `type:"timestamp" required:"true"`

	// The description of the evaluation form.
	Description *string `type:"string"`

	// The Amazon Resource Name (ARN) for the evaluation form resource.
	//
	// EvaluationFormArn is a required field
	EvaluationFormArn *string `type:"string" required:"true"`

	// The unique identifier for the evaluation form.
	//
	// EvaluationFormId is a required field
	EvaluationFormId *string `min:"1" type:"string" required:"true"`

	// A version of the evaluation form.
	//
	// EvaluationFormVersion is a required field
	EvaluationFormVersion *int64 `min:"1" type:"integer" required:"true"`

	// Items that are part of the evaluation form. The total number of sections
	// and questions must not exceed 100 each. Questions must be contained in a
	// section.
	//
	// Items is a required field
	Items []*EvaluationFormItem `min:"1" type:"list" required:"true"`

	// The Amazon Resource Name (ARN) of the user who last updated the evaluation
	// form.
	//
	// LastModifiedBy is a required field
	LastModifiedBy *string `type:"string" required:"true"`

	// The timestamp for when the evaluation form was last updated.
	//
	// LastModifiedTime is a required field
	LastModifiedTime *time.Time `type:"timestamp" required:"true"`

	// The flag indicating whether the evaluation form is locked for changes.
	//
	// Locked is a required field
	Locked *bool `type:"boolean" required:"true"`

	// A scoring strategy of the evaluation form.
	ScoringStrategy *EvaluationFormScoringStrategy `type:"structure"`

	// The status of the evaluation form.
	//
	// Status is a required field
	Status *string `type:"string" required:"true" enum:"EvaluationFormVersionStatus"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`

	// A title of the evaluation form.
	//
	// Title is a required field
	Title *string `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 EvaluationForm) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationForm) GoString() string {
	return s.String()
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *EvaluationForm) SetCreatedBy(v string) *EvaluationForm {
	s.CreatedBy = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *EvaluationForm) SetCreatedTime(v time.Time) *EvaluationForm {
	s.CreatedTime = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *EvaluationForm) SetDescription(v string) *EvaluationForm {
	s.Description = &v
	return s
}

// SetEvaluationFormArn sets the EvaluationFormArn field's value.
func (s *EvaluationForm) SetEvaluationFormArn(v string) *EvaluationForm {
	s.EvaluationFormArn = &v
	return s
}

// SetEvaluationFormId sets the EvaluationFormId field's value.
func (s *EvaluationForm) SetEvaluationFormId(v string) *EvaluationForm {
	s.EvaluationFormId = &v
	return s
}

// SetEvaluationFormVersion sets the EvaluationFormVersion field's value.
func (s *EvaluationForm) SetEvaluationFormVersion(v int64) *EvaluationForm {
	s.EvaluationFormVersion = &v
	return s
}

// SetItems sets the Items field's value.
func (s *EvaluationForm) SetItems(v []*EvaluationFormItem) *EvaluationForm {
	s.Items = v
	return s
}

// SetLastModifiedBy sets the LastModifiedBy field's value.
func (s *EvaluationForm) SetLastModifiedBy(v string) *EvaluationForm {
	s.LastModifiedBy = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *EvaluationForm) SetLastModifiedTime(v time.Time) *EvaluationForm {
	s.LastModifiedTime = &v
	return s
}

// SetLocked sets the Locked field's value.
func (s *EvaluationForm) SetLocked(v bool) *EvaluationForm {
	s.Locked = &v
	return s
}

// SetScoringStrategy sets the ScoringStrategy field's value.
func (s *EvaluationForm) SetScoringStrategy(v *EvaluationFormScoringStrategy) *EvaluationForm {
	s.ScoringStrategy = v
	return s
}

// SetStatus sets the Status field's value.
func (s *EvaluationForm) SetStatus(v string) *EvaluationForm {
	s.Status = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *EvaluationForm) SetTags(v map[string]*string) *EvaluationForm {
	s.Tags = v
	return s
}

// SetTitle sets the Title field's value.
func (s *EvaluationForm) SetTitle(v string) *EvaluationForm {
	s.Title = &v
	return s
}

// Information about an evaluation form used in a contact evaluation.
type EvaluationFormContent struct {
	_ struct{} `type:"structure"`

	// The description of the evaluation form.
	Description *string `type:"string"`

	// The Amazon Resource Name (ARN) for the evaluation form resource.
	//
	// EvaluationFormArn is a required field
	EvaluationFormArn *string `type:"string" required:"true"`

	// The unique identifier for the evaluation form.
	//
	// EvaluationFormId is a required field
	EvaluationFormId *string `min:"1" type:"string" required:"true"`

	// A version of the evaluation form.
	//
	// EvaluationFormVersion is a required field
	EvaluationFormVersion *int64 `min:"1" type:"integer" required:"true"`

	// Items that are part of the evaluation form. The total number of sections
	// and questions must not exceed 100 each. Questions must be contained in a
	// section.
	//
	// Items is a required field
	Items []*EvaluationFormItem `min:"1" type:"list" required:"true"`

	// A scoring strategy of the evaluation form.
	ScoringStrategy *EvaluationFormScoringStrategy `type:"structure"`

	// A title of the evaluation form.
	//
	// Title is a required field
	Title *string `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 EvaluationFormContent) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationFormContent) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *EvaluationFormContent) SetDescription(v string) *EvaluationFormContent {
	s.Description = &v
	return s
}

// SetEvaluationFormArn sets the EvaluationFormArn field's value.
func (s *EvaluationFormContent) SetEvaluationFormArn(v string) *EvaluationFormContent {
	s.EvaluationFormArn = &v
	return s
}

// SetEvaluationFormId sets the EvaluationFormId field's value.
func (s *EvaluationFormContent) SetEvaluationFormId(v string) *EvaluationFormContent {
	s.EvaluationFormId = &v
	return s
}

// SetEvaluationFormVersion sets the EvaluationFormVersion field's value.
func (s *EvaluationFormContent) SetEvaluationFormVersion(v int64) *EvaluationFormContent {
	s.EvaluationFormVersion = &v
	return s
}

// SetItems sets the Items field's value.
func (s *EvaluationFormContent) SetItems(v []*EvaluationFormItem) *EvaluationFormContent {
	s.Items = v
	return s
}

// SetScoringStrategy sets the ScoringStrategy field's value.
func (s *EvaluationFormContent) SetScoringStrategy(v *EvaluationFormScoringStrategy) *EvaluationFormContent {
	s.ScoringStrategy = v
	return s
}

// SetTitle sets the Title field's value.
func (s *EvaluationFormContent) SetTitle(v string) *EvaluationFormContent {
	s.Title = &v
	return s
}

// Information about an item from an evaluation form. The item must be either
// a section or a question.
type EvaluationFormItem struct {
	_ struct{} `type:"structure"`

	// The information of the question.
	Question *EvaluationFormQuestion `type:"structure"`

	// The information of the section.
	Section *EvaluationFormSection `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 EvaluationFormItem) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationFormItem) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EvaluationFormItem) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EvaluationFormItem"}
	if s.Question != nil {
		if err := s.Question.Validate(); err != nil {
			invalidParams.AddNested("Question", err.(request.ErrInvalidParams))
		}
	}
	if s.Section != nil {
		if err := s.Section.Validate(); err != nil {
			invalidParams.AddNested("Section", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetQuestion sets the Question field's value.
func (s *EvaluationFormItem) SetQuestion(v *EvaluationFormQuestion) *EvaluationFormItem {
	s.Question = v
	return s
}

// SetSection sets the Section field's value.
func (s *EvaluationFormItem) SetSection(v *EvaluationFormSection) *EvaluationFormItem {
	s.Section = v
	return s
}

// Information about the automation configuration in numeric questions.
type EvaluationFormNumericQuestionAutomation struct {
	_ struct{} `type:"structure"`

	// The property value of the automation.
	PropertyValue *NumericQuestionPropertyValueAutomation `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 EvaluationFormNumericQuestionAutomation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationFormNumericQuestionAutomation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EvaluationFormNumericQuestionAutomation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EvaluationFormNumericQuestionAutomation"}
	if s.PropertyValue != nil {
		if err := s.PropertyValue.Validate(); err != nil {
			invalidParams.AddNested("PropertyValue", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPropertyValue sets the PropertyValue field's value.
func (s *EvaluationFormNumericQuestionAutomation) SetPropertyValue(v *NumericQuestionPropertyValueAutomation) *EvaluationFormNumericQuestionAutomation {
	s.PropertyValue = v
	return s
}

// Information about the option range used for scoring in numeric questions.
type EvaluationFormNumericQuestionOption struct {
	_ struct{} `type:"structure"`

	// The flag to mark the option as automatic fail. If an automatic fail answer
	// is provided, the overall evaluation gets a score of 0.
	AutomaticFail *bool `type:"boolean"`

	// The maximum answer value of the range option.
	//
	// MaxValue is a required field
	MaxValue *int64 `type:"integer" required:"true"`

	// The minimum answer value of the range option.
	//
	// MinValue is a required field
	MinValue *int64 `type:"integer" required:"true"`

	// The score assigned to answer values within the range option.
	Score *int64 `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 EvaluationFormNumericQuestionOption) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationFormNumericQuestionOption) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EvaluationFormNumericQuestionOption) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EvaluationFormNumericQuestionOption"}
	if s.MaxValue == nil {
		invalidParams.Add(request.NewErrParamRequired("MaxValue"))
	}
	if s.MinValue == nil {
		invalidParams.Add(request.NewErrParamRequired("MinValue"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAutomaticFail sets the AutomaticFail field's value.
func (s *EvaluationFormNumericQuestionOption) SetAutomaticFail(v bool) *EvaluationFormNumericQuestionOption {
	s.AutomaticFail = &v
	return s
}

// SetMaxValue sets the MaxValue field's value.
func (s *EvaluationFormNumericQuestionOption) SetMaxValue(v int64) *EvaluationFormNumericQuestionOption {
	s.MaxValue = &v
	return s
}

// SetMinValue sets the MinValue field's value.
func (s *EvaluationFormNumericQuestionOption) SetMinValue(v int64) *EvaluationFormNumericQuestionOption {
	s.MinValue = &v
	return s
}

// SetScore sets the Score field's value.
func (s *EvaluationFormNumericQuestionOption) SetScore(v int64) *EvaluationFormNumericQuestionOption {
	s.Score = &v
	return s
}

// Information about properties for a numeric question in an evaluation form.
type EvaluationFormNumericQuestionProperties struct {
	_ struct{} `type:"structure"`

	// The automation properties of the numeric question.
	Automation *EvaluationFormNumericQuestionAutomation `type:"structure"`

	// The maximum answer value.
	//
	// MaxValue is a required field
	MaxValue *int64 `type:"integer" required:"true"`

	// The minimum answer value.
	//
	// MinValue is a required field
	MinValue *int64 `type:"integer" required:"true"`

	// The scoring options of the numeric question.
	Options []*EvaluationFormNumericQuestionOption `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationFormNumericQuestionProperties) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationFormNumericQuestionProperties) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EvaluationFormNumericQuestionProperties) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EvaluationFormNumericQuestionProperties"}
	if s.MaxValue == nil {
		invalidParams.Add(request.NewErrParamRequired("MaxValue"))
	}
	if s.MinValue == nil {
		invalidParams.Add(request.NewErrParamRequired("MinValue"))
	}
	if s.Options != nil && len(s.Options) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Options", 1))
	}
	if s.Automation != nil {
		if err := s.Automation.Validate(); err != nil {
			invalidParams.AddNested("Automation", err.(request.ErrInvalidParams))
		}
	}
	if s.Options != nil {
		for i, v := range s.Options {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Options", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAutomation sets the Automation field's value.
func (s *EvaluationFormNumericQuestionProperties) SetAutomation(v *EvaluationFormNumericQuestionAutomation) *EvaluationFormNumericQuestionProperties {
	s.Automation = v
	return s
}

// SetMaxValue sets the MaxValue field's value.
func (s *EvaluationFormNumericQuestionProperties) SetMaxValue(v int64) *EvaluationFormNumericQuestionProperties {
	s.MaxValue = &v
	return s
}

// SetMinValue sets the MinValue field's value.
func (s *EvaluationFormNumericQuestionProperties) SetMinValue(v int64) *EvaluationFormNumericQuestionProperties {
	s.MinValue = &v
	return s
}

// SetOptions sets the Options field's value.
func (s *EvaluationFormNumericQuestionProperties) SetOptions(v []*EvaluationFormNumericQuestionOption) *EvaluationFormNumericQuestionProperties {
	s.Options = v
	return s
}

// Information about a question from an evaluation form.
type EvaluationFormQuestion struct {
	_ struct{} `type:"structure"`

	// The instructions of the section.
	Instructions *string `type:"string"`

	// The flag to enable not applicable answers to the question.
	NotApplicableEnabled *bool `type:"boolean"`

	// The type of the question.
	//
	// QuestionType is a required field
	QuestionType *string `type:"string" required:"true" enum:"EvaluationFormQuestionType"`

	// The properties of the type of question. Text questions do not have to define
	// question type properties.
	QuestionTypeProperties *EvaluationFormQuestionTypeProperties `type:"structure"`

	// The identifier of the question. An identifier must be unique within the evaluation
	// form.
	//
	// RefId is a required field
	RefId *string `min:"1" type:"string" required:"true"`

	// The title of the question.
	//
	// Title is a required field
	Title *string `type:"string" required:"true"`

	// The scoring weight of the section.
	Weight *float64 `type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationFormQuestion) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationFormQuestion) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EvaluationFormQuestion) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EvaluationFormQuestion"}
	if s.QuestionType == nil {
		invalidParams.Add(request.NewErrParamRequired("QuestionType"))
	}
	if s.RefId == nil {
		invalidParams.Add(request.NewErrParamRequired("RefId"))
	}
	if s.RefId != nil && len(*s.RefId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RefId", 1))
	}
	if s.Title == nil {
		invalidParams.Add(request.NewErrParamRequired("Title"))
	}
	if s.QuestionTypeProperties != nil {
		if err := s.QuestionTypeProperties.Validate(); err != nil {
			invalidParams.AddNested("QuestionTypeProperties", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstructions sets the Instructions field's value.
func (s *EvaluationFormQuestion) SetInstructions(v string) *EvaluationFormQuestion {
	s.Instructions = &v
	return s
}

// SetNotApplicableEnabled sets the NotApplicableEnabled field's value.
func (s *EvaluationFormQuestion) SetNotApplicableEnabled(v bool) *EvaluationFormQuestion {
	s.NotApplicableEnabled = &v
	return s
}

// SetQuestionType sets the QuestionType field's value.
func (s *EvaluationFormQuestion) SetQuestionType(v string) *EvaluationFormQuestion {
	s.QuestionType = &v
	return s
}

// SetQuestionTypeProperties sets the QuestionTypeProperties field's value.
func (s *EvaluationFormQuestion) SetQuestionTypeProperties(v *EvaluationFormQuestionTypeProperties) *EvaluationFormQuestion {
	s.QuestionTypeProperties = v
	return s
}

// SetRefId sets the RefId field's value.
func (s *EvaluationFormQuestion) SetRefId(v string) *EvaluationFormQuestion {
	s.RefId = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *EvaluationFormQuestion) SetTitle(v string) *EvaluationFormQuestion {
	s.Title = &v
	return s
}

// SetWeight sets the Weight field's value.
func (s *EvaluationFormQuestion) SetWeight(v float64) *EvaluationFormQuestion {
	s.Weight = &v
	return s
}

// Information about properties for a question in an evaluation form. The question
// type properties must be either for a numeric question or a single select
// question.
type EvaluationFormQuestionTypeProperties struct {
	_ struct{} `type:"structure"`

	// The properties of the numeric question.
	Numeric *EvaluationFormNumericQuestionProperties `type:"structure"`

	// The properties of the numeric question.
	SingleSelect *EvaluationFormSingleSelectQuestionProperties `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 EvaluationFormQuestionTypeProperties) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationFormQuestionTypeProperties) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EvaluationFormQuestionTypeProperties) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EvaluationFormQuestionTypeProperties"}
	if s.Numeric != nil {
		if err := s.Numeric.Validate(); err != nil {
			invalidParams.AddNested("Numeric", err.(request.ErrInvalidParams))
		}
	}
	if s.SingleSelect != nil {
		if err := s.SingleSelect.Validate(); err != nil {
			invalidParams.AddNested("SingleSelect", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetNumeric sets the Numeric field's value.
func (s *EvaluationFormQuestionTypeProperties) SetNumeric(v *EvaluationFormNumericQuestionProperties) *EvaluationFormQuestionTypeProperties {
	s.Numeric = v
	return s
}

// SetSingleSelect sets the SingleSelect field's value.
func (s *EvaluationFormQuestionTypeProperties) SetSingleSelect(v *EvaluationFormSingleSelectQuestionProperties) *EvaluationFormQuestionTypeProperties {
	s.SingleSelect = v
	return s
}

// Information about scoring strategy for an evaluation form.
type EvaluationFormScoringStrategy struct {
	_ struct{} `type:"structure"`

	// The scoring mode of the evaluation form.
	//
	// Mode is a required field
	Mode *string `type:"string" required:"true" enum:"EvaluationFormScoringMode"`

	// The scoring status of the evaluation form.
	//
	// Status is a required field
	Status *string `type:"string" required:"true" enum:"EvaluationFormScoringStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationFormScoringStrategy) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationFormScoringStrategy) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EvaluationFormScoringStrategy) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EvaluationFormScoringStrategy"}
	if s.Mode == nil {
		invalidParams.Add(request.NewErrParamRequired("Mode"))
	}
	if s.Status == nil {
		invalidParams.Add(request.NewErrParamRequired("Status"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMode sets the Mode field's value.
func (s *EvaluationFormScoringStrategy) SetMode(v string) *EvaluationFormScoringStrategy {
	s.Mode = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *EvaluationFormScoringStrategy) SetStatus(v string) *EvaluationFormScoringStrategy {
	s.Status = &v
	return s
}

// Information about a section from an evaluation form. A section can contain
// sections and/or questions. Evaluation forms can only contain sections and
// subsections (two level nesting).
type EvaluationFormSection struct {
	_ struct{} `type:"structure"`

	// The instructions of the section.
	Instructions *string `type:"string"`

	// The items of the section.
	//
	// Items is a required field
	Items []*EvaluationFormItem `min:"1" type:"list" required:"true"`

	// The identifier of the section. An identifier must be unique within the evaluation
	// form.
	//
	// RefId is a required field
	RefId *string `min:"1" type:"string" required:"true"`

	// The title of the section.
	//
	// Title is a required field
	Title *string `type:"string" required:"true"`

	// The scoring weight of the section.
	Weight *float64 `type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationFormSection) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationFormSection) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EvaluationFormSection) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EvaluationFormSection"}
	if s.Items == nil {
		invalidParams.Add(request.NewErrParamRequired("Items"))
	}
	if s.Items != nil && len(s.Items) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Items", 1))
	}
	if s.RefId == nil {
		invalidParams.Add(request.NewErrParamRequired("RefId"))
	}
	if s.RefId != nil && len(*s.RefId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RefId", 1))
	}
	if s.Title == nil {
		invalidParams.Add(request.NewErrParamRequired("Title"))
	}
	if s.Items != nil {
		for i, v := range s.Items {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Items", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstructions sets the Instructions field's value.
func (s *EvaluationFormSection) SetInstructions(v string) *EvaluationFormSection {
	s.Instructions = &v
	return s
}

// SetItems sets the Items field's value.
func (s *EvaluationFormSection) SetItems(v []*EvaluationFormItem) *EvaluationFormSection {
	s.Items = v
	return s
}

// SetRefId sets the RefId field's value.
func (s *EvaluationFormSection) SetRefId(v string) *EvaluationFormSection {
	s.RefId = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *EvaluationFormSection) SetTitle(v string) *EvaluationFormSection {
	s.Title = &v
	return s
}

// SetWeight sets the Weight field's value.
func (s *EvaluationFormSection) SetWeight(v float64) *EvaluationFormSection {
	s.Weight = &v
	return s
}

// Information about the automation configuration in single select questions.
// Automation options are evaluated in order, and the first matched option is
// applied. If no automation option matches, and there is a default option,
// then the default option is applied.
type EvaluationFormSingleSelectQuestionAutomation struct {
	_ struct{} `type:"structure"`

	// The identifier of the default answer option, when none of the automation
	// options match the criteria.
	DefaultOptionRefId *string `min:"1" type:"string"`

	// The automation options of the single select question.
	//
	// Options is a required field
	Options []*EvaluationFormSingleSelectQuestionAutomationOption `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 EvaluationFormSingleSelectQuestionAutomation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationFormSingleSelectQuestionAutomation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EvaluationFormSingleSelectQuestionAutomation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EvaluationFormSingleSelectQuestionAutomation"}
	if s.DefaultOptionRefId != nil && len(*s.DefaultOptionRefId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DefaultOptionRefId", 1))
	}
	if s.Options == nil {
		invalidParams.Add(request.NewErrParamRequired("Options"))
	}
	if s.Options != nil && len(s.Options) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Options", 1))
	}
	if s.Options != nil {
		for i, v := range s.Options {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Options", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDefaultOptionRefId sets the DefaultOptionRefId field's value.
func (s *EvaluationFormSingleSelectQuestionAutomation) SetDefaultOptionRefId(v string) *EvaluationFormSingleSelectQuestionAutomation {
	s.DefaultOptionRefId = &v
	return s
}

// SetOptions sets the Options field's value.
func (s *EvaluationFormSingleSelectQuestionAutomation) SetOptions(v []*EvaluationFormSingleSelectQuestionAutomationOption) *EvaluationFormSingleSelectQuestionAutomation {
	s.Options = v
	return s
}

// Information about the automation option of a single select question.
type EvaluationFormSingleSelectQuestionAutomationOption struct {
	_ struct{} `type:"structure"`

	// The automation option based on a rule category for the single select question.
	RuleCategory *SingleSelectQuestionRuleCategoryAutomation `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 EvaluationFormSingleSelectQuestionAutomationOption) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationFormSingleSelectQuestionAutomationOption) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EvaluationFormSingleSelectQuestionAutomationOption) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EvaluationFormSingleSelectQuestionAutomationOption"}
	if s.RuleCategory != nil {
		if err := s.RuleCategory.Validate(); err != nil {
			invalidParams.AddNested("RuleCategory", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRuleCategory sets the RuleCategory field's value.
func (s *EvaluationFormSingleSelectQuestionAutomationOption) SetRuleCategory(v *SingleSelectQuestionRuleCategoryAutomation) *EvaluationFormSingleSelectQuestionAutomationOption {
	s.RuleCategory = v
	return s
}

// Information about the automation configuration in single select questions.
type EvaluationFormSingleSelectQuestionOption struct {
	_ struct{} `type:"structure"`

	// The flag to mark the option as automatic fail. If an automatic fail answer
	// is provided, the overall evaluation gets a score of 0.
	AutomaticFail *bool `type:"boolean"`

	// The identifier of the answer option. An identifier must be unique within
	// the question.
	//
	// RefId is a required field
	RefId *string `min:"1" type:"string" required:"true"`

	// The score assigned to the answer option.
	Score *int64 `type:"integer"`

	// The title of the answer option.
	//
	// Text is a required field
	Text *string `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 EvaluationFormSingleSelectQuestionOption) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationFormSingleSelectQuestionOption) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EvaluationFormSingleSelectQuestionOption) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EvaluationFormSingleSelectQuestionOption"}
	if s.RefId == nil {
		invalidParams.Add(request.NewErrParamRequired("RefId"))
	}
	if s.RefId != nil && len(*s.RefId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RefId", 1))
	}
	if s.Text == nil {
		invalidParams.Add(request.NewErrParamRequired("Text"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAutomaticFail sets the AutomaticFail field's value.
func (s *EvaluationFormSingleSelectQuestionOption) SetAutomaticFail(v bool) *EvaluationFormSingleSelectQuestionOption {
	s.AutomaticFail = &v
	return s
}

// SetRefId sets the RefId field's value.
func (s *EvaluationFormSingleSelectQuestionOption) SetRefId(v string) *EvaluationFormSingleSelectQuestionOption {
	s.RefId = &v
	return s
}

// SetScore sets the Score field's value.
func (s *EvaluationFormSingleSelectQuestionOption) SetScore(v int64) *EvaluationFormSingleSelectQuestionOption {
	s.Score = &v
	return s
}

// SetText sets the Text field's value.
func (s *EvaluationFormSingleSelectQuestionOption) SetText(v string) *EvaluationFormSingleSelectQuestionOption {
	s.Text = &v
	return s
}

// Information about the options in single select questions.
type EvaluationFormSingleSelectQuestionProperties struct {
	_ struct{} `type:"structure"`

	// The display mode of the single select question.
	Automation *EvaluationFormSingleSelectQuestionAutomation `type:"structure"`

	// The display mode of the single select question.
	DisplayAs *string `type:"string" enum:"EvaluationFormSingleSelectQuestionDisplayMode"`

	// The answer options of the single select question.
	//
	// Options is a required field
	Options []*EvaluationFormSingleSelectQuestionOption `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 EvaluationFormSingleSelectQuestionProperties) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationFormSingleSelectQuestionProperties) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EvaluationFormSingleSelectQuestionProperties) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EvaluationFormSingleSelectQuestionProperties"}
	if s.Options == nil {
		invalidParams.Add(request.NewErrParamRequired("Options"))
	}
	if s.Options != nil && len(s.Options) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Options", 1))
	}
	if s.Automation != nil {
		if err := s.Automation.Validate(); err != nil {
			invalidParams.AddNested("Automation", err.(request.ErrInvalidParams))
		}
	}
	if s.Options != nil {
		for i, v := range s.Options {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Options", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAutomation sets the Automation field's value.
func (s *EvaluationFormSingleSelectQuestionProperties) SetAutomation(v *EvaluationFormSingleSelectQuestionAutomation) *EvaluationFormSingleSelectQuestionProperties {
	s.Automation = v
	return s
}

// SetDisplayAs sets the DisplayAs field's value.
func (s *EvaluationFormSingleSelectQuestionProperties) SetDisplayAs(v string) *EvaluationFormSingleSelectQuestionProperties {
	s.DisplayAs = &v
	return s
}

// SetOptions sets the Options field's value.
func (s *EvaluationFormSingleSelectQuestionProperties) SetOptions(v []*EvaluationFormSingleSelectQuestionOption) *EvaluationFormSingleSelectQuestionProperties {
	s.Options = v
	return s
}

// Summary information about an evaluation form.
type EvaluationFormSummary struct {
	_ struct{} `type:"structure"`

	// The version of the active evaluation form version.
	ActiveVersion *int64 `min:"1" type:"integer"`

	// The Amazon Resource Name (ARN) of the user who created the evaluation form.
	//
	// CreatedBy is a required field
	CreatedBy *string `type:"string" required:"true"`

	// The timestamp for when the evaluation form was created.
	//
	// CreatedTime is a required field
	CreatedTime *time.Time `type:"timestamp" required:"true"`

	// The Amazon Resource Name (ARN) for the evaluation form resource.
	//
	// EvaluationFormArn is a required field
	EvaluationFormArn *string `type:"string" required:"true"`

	// The unique identifier for the evaluation form.
	//
	// EvaluationFormId is a required field
	EvaluationFormId *string `min:"1" type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of the user who last activated the evaluation
	// form.
	LastActivatedBy *string `type:"string"`

	// The timestamp for when the evaluation form was last activated.
	LastActivatedTime *time.Time `type:"timestamp"`

	// The Amazon Resource Name (ARN) of the user who last updated the evaluation
	// form.
	//
	// LastModifiedBy is a required field
	LastModifiedBy *string `type:"string" required:"true"`

	// The timestamp for when the evaluation form was last updated.
	//
	// LastModifiedTime is a required field
	LastModifiedTime *time.Time `type:"timestamp" required:"true"`

	// The version number of the latest evaluation form version.
	//
	// LatestVersion is a required field
	LatestVersion *int64 `min:"1" type:"integer" required:"true"`

	// A title of the evaluation form.
	//
	// Title is a required field
	Title *string `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 EvaluationFormSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationFormSummary) GoString() string {
	return s.String()
}

// SetActiveVersion sets the ActiveVersion field's value.
func (s *EvaluationFormSummary) SetActiveVersion(v int64) *EvaluationFormSummary {
	s.ActiveVersion = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *EvaluationFormSummary) SetCreatedBy(v string) *EvaluationFormSummary {
	s.CreatedBy = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *EvaluationFormSummary) SetCreatedTime(v time.Time) *EvaluationFormSummary {
	s.CreatedTime = &v
	return s
}

// SetEvaluationFormArn sets the EvaluationFormArn field's value.
func (s *EvaluationFormSummary) SetEvaluationFormArn(v string) *EvaluationFormSummary {
	s.EvaluationFormArn = &v
	return s
}

// SetEvaluationFormId sets the EvaluationFormId field's value.
func (s *EvaluationFormSummary) SetEvaluationFormId(v string) *EvaluationFormSummary {
	s.EvaluationFormId = &v
	return s
}

// SetLastActivatedBy sets the LastActivatedBy field's value.
func (s *EvaluationFormSummary) SetLastActivatedBy(v string) *EvaluationFormSummary {
	s.LastActivatedBy = &v
	return s
}

// SetLastActivatedTime sets the LastActivatedTime field's value.
func (s *EvaluationFormSummary) SetLastActivatedTime(v time.Time) *EvaluationFormSummary {
	s.LastActivatedTime = &v
	return s
}

// SetLastModifiedBy sets the LastModifiedBy field's value.
func (s *EvaluationFormSummary) SetLastModifiedBy(v string) *EvaluationFormSummary {
	s.LastModifiedBy = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *EvaluationFormSummary) SetLastModifiedTime(v time.Time) *EvaluationFormSummary {
	s.LastModifiedTime = &v
	return s
}

// SetLatestVersion sets the LatestVersion field's value.
func (s *EvaluationFormSummary) SetLatestVersion(v int64) *EvaluationFormSummary {
	s.LatestVersion = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *EvaluationFormSummary) SetTitle(v string) *EvaluationFormSummary {
	s.Title = &v
	return s
}

// Summary information about an evaluation form.
type EvaluationFormVersionSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the user who created the evaluation form.
	//
	// CreatedBy is a required field
	CreatedBy *string `type:"string" required:"true"`

	// The timestamp for when the evaluation form was created.
	//
	// CreatedTime is a required field
	CreatedTime *time.Time `type:"timestamp" required:"true"`

	// The Amazon Resource Name (ARN) for the evaluation form resource.
	//
	// EvaluationFormArn is a required field
	EvaluationFormArn *string `type:"string" required:"true"`

	// The unique identifier for the evaluation form.
	//
	// EvaluationFormId is a required field
	EvaluationFormId *string `min:"1" type:"string" required:"true"`

	// A version of the evaluation form.
	//
	// EvaluationFormVersion is a required field
	EvaluationFormVersion *int64 `min:"1" type:"integer" required:"true"`

	// The Amazon Resource Name (ARN) of the user who last updated the evaluation
	// form.
	//
	// LastModifiedBy is a required field
	LastModifiedBy *string `type:"string" required:"true"`

	// The timestamp for when the evaluation form was last updated.
	//
	// LastModifiedTime is a required field
	LastModifiedTime *time.Time `type:"timestamp" required:"true"`

	// The flag indicating whether the evaluation form is locked for changes.
	//
	// Locked is a required field
	Locked *bool `type:"boolean" required:"true"`

	// The status of the evaluation form.
	//
	// Status is a required field
	Status *string `type:"string" required:"true" enum:"EvaluationFormVersionStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationFormVersionSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationFormVersionSummary) GoString() string {
	return s.String()
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *EvaluationFormVersionSummary) SetCreatedBy(v string) *EvaluationFormVersionSummary {
	s.CreatedBy = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *EvaluationFormVersionSummary) SetCreatedTime(v time.Time) *EvaluationFormVersionSummary {
	s.CreatedTime = &v
	return s
}

// SetEvaluationFormArn sets the EvaluationFormArn field's value.
func (s *EvaluationFormVersionSummary) SetEvaluationFormArn(v string) *EvaluationFormVersionSummary {
	s.EvaluationFormArn = &v
	return s
}

// SetEvaluationFormId sets the EvaluationFormId field's value.
func (s *EvaluationFormVersionSummary) SetEvaluationFormId(v string) *EvaluationFormVersionSummary {
	s.EvaluationFormId = &v
	return s
}

// SetEvaluationFormVersion sets the EvaluationFormVersion field's value.
func (s *EvaluationFormVersionSummary) SetEvaluationFormVersion(v int64) *EvaluationFormVersionSummary {
	s.EvaluationFormVersion = &v
	return s
}

// SetLastModifiedBy sets the LastModifiedBy field's value.
func (s *EvaluationFormVersionSummary) SetLastModifiedBy(v string) *EvaluationFormVersionSummary {
	s.LastModifiedBy = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *EvaluationFormVersionSummary) SetLastModifiedTime(v time.Time) *EvaluationFormVersionSummary {
	s.LastModifiedTime = &v
	return s
}

// SetLocked sets the Locked field's value.
func (s *EvaluationFormVersionSummary) SetLocked(v bool) *EvaluationFormVersionSummary {
	s.Locked = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *EvaluationFormVersionSummary) SetStatus(v string) *EvaluationFormVersionSummary {
	s.Status = &v
	return s
}

// Metadata information about a contact evaluation.
type EvaluationMetadata struct {
	_ struct{} `type:"structure"`

	// The identifier of the agent who performed the contact.
	ContactAgentId *string `min:"1" type:"string"`

	// The identifier of the contact in this instance of Amazon Connect.
	//
	// ContactId is a required field
	ContactId *string `min:"1" type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of the user who last updated the evaluation.
	//
	// EvaluatorArn is a required field
	EvaluatorArn *string `type:"string" required:"true"`

	// The overall score of the contact evaluation.
	Score *EvaluationScore `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 EvaluationMetadata) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationMetadata) GoString() string {
	return s.String()
}

// SetContactAgentId sets the ContactAgentId field's value.
func (s *EvaluationMetadata) SetContactAgentId(v string) *EvaluationMetadata {
	s.ContactAgentId = &v
	return s
}

// SetContactId sets the ContactId field's value.
func (s *EvaluationMetadata) SetContactId(v string) *EvaluationMetadata {
	s.ContactId = &v
	return s
}

// SetEvaluatorArn sets the EvaluatorArn field's value.
func (s *EvaluationMetadata) SetEvaluatorArn(v string) *EvaluationMetadata {
	s.EvaluatorArn = &v
	return s
}

// SetScore sets the Score field's value.
func (s *EvaluationMetadata) SetScore(v *EvaluationScore) *EvaluationMetadata {
	s.Score = v
	return s
}

// Information about notes for a contact evaluation.
type EvaluationNote struct {
	_ struct{} `type:"structure"`

	// The note for an item (section or question) in a contact evaluation.
	//
	// Even though a note in an evaluation can have up to 3072 chars, there is also
	// a limit on the total number of chars for all the notes in the evaluation
	// combined. Assuming there are N questions in the evaluation being submitted,
	// then the max char limit for all notes combined is N x 1024.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationNote) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationNote) GoString() string {
	return s.String()
}

// SetValue sets the Value field's value.
func (s *EvaluationNote) SetValue(v string) *EvaluationNote {
	s.Value = &v
	return s
}

// Information about scores of a contact evaluation item (section or question).
type EvaluationScore struct {
	_ struct{} `type:"structure"`

	// The flag that marks the item as automatic fail. If the item or a child item
	// gets an automatic fail answer, this flag will be true.
	AutomaticFail *bool `type:"boolean"`

	// The flag to mark the item as not applicable for scoring.
	NotApplicable *bool `type:"boolean"`

	// The score percentage for an item in a contact evaluation.
	Percentage *float64 `type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationScore) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationScore) GoString() string {
	return s.String()
}

// SetAutomaticFail sets the AutomaticFail field's value.
func (s *EvaluationScore) SetAutomaticFail(v bool) *EvaluationScore {
	s.AutomaticFail = &v
	return s
}

// SetNotApplicable sets the NotApplicable field's value.
func (s *EvaluationScore) SetNotApplicable(v bool) *EvaluationScore {
	s.NotApplicable = &v
	return s
}

// SetPercentage sets the Percentage field's value.
func (s *EvaluationScore) SetPercentage(v float64) *EvaluationScore {
	s.Percentage = &v
	return s
}

// Summary information about a contact evaluation.
type EvaluationSummary struct {
	_ struct{} `type:"structure"`

	// The timestamp for when the evaluation was created.
	//
	// CreatedTime is a required field
	CreatedTime *time.Time `type:"timestamp" required:"true"`

	// The Amazon Resource Name (ARN) for the contact evaluation resource.
	//
	// EvaluationArn is a required field
	EvaluationArn *string `type:"string" required:"true"`

	// The unique identifier for the evaluation form.
	//
	// EvaluationFormId is a required field
	EvaluationFormId *string `min:"1" type:"string" required:"true"`

	// A title of the evaluation form.
	//
	// EvaluationFormTitle is a required field
	EvaluationFormTitle *string `min:"1" type:"string" required:"true"`

	// A unique identifier for the contact evaluation.
	//
	// EvaluationId is a required field
	EvaluationId *string `min:"1" type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of the user who last updated the evaluation.
	//
	// EvaluatorArn is a required field
	EvaluatorArn *string `type:"string" required:"true"`

	// The timestamp for when the evaluation was last updated.
	//
	// LastModifiedTime is a required field
	LastModifiedTime *time.Time `type:"timestamp" required:"true"`

	// The overall score of the contact evaluation.
	Score *EvaluationScore `type:"structure"`

	// The status of the contact evaluation.
	//
	// Status is a required field
	Status *string `type:"string" required:"true" enum:"EvaluationStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationSummary) GoString() string {
	return s.String()
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *EvaluationSummary) SetCreatedTime(v time.Time) *EvaluationSummary {
	s.CreatedTime = &v
	return s
}

// SetEvaluationArn sets the EvaluationArn field's value.
func (s *EvaluationSummary) SetEvaluationArn(v string) *EvaluationSummary {
	s.EvaluationArn = &v
	return s
}

// SetEvaluationFormId sets the EvaluationFormId field's value.
func (s *EvaluationSummary) SetEvaluationFormId(v string) *EvaluationSummary {
	s.EvaluationFormId = &v
	return s
}

// SetEvaluationFormTitle sets the EvaluationFormTitle field's value.
func (s *EvaluationSummary) SetEvaluationFormTitle(v string) *EvaluationSummary {
	s.EvaluationFormTitle = &v
	return s
}

// SetEvaluationId sets the EvaluationId field's value.
func (s *EvaluationSummary) SetEvaluationId(v string) *EvaluationSummary {
	s.EvaluationId = &v
	return s
}

// SetEvaluatorArn sets the EvaluatorArn field's value.
func (s *EvaluationSummary) SetEvaluatorArn(v string) *EvaluationSummary {
	s.EvaluatorArn = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *EvaluationSummary) SetLastModifiedTime(v time.Time) *EvaluationSummary {
	s.LastModifiedTime = &v
	return s
}

// SetScore sets the Score field's value.
func (s *EvaluationSummary) SetScore(v *EvaluationScore) *EvaluationSummary {
	s.Score = v
	return s
}

// SetStatus sets the Status field's value.
func (s *EvaluationSummary) SetStatus(v string) *EvaluationSummary {
	s.Status = &v
	return s
}

// The EventBridge action definition.
type EventBridgeActionDefinition struct {
	_ struct{} `type:"structure"`

	// The name.
	//
	// Name is a required field
	Name *string `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 EventBridgeActionDefinition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EventBridgeActionDefinition) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EventBridgeActionDefinition) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EventBridgeActionDefinition"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *EventBridgeActionDefinition) SetName(v string) *EventBridgeActionDefinition {
	s.Name = &v
	return s
}

// Request for which contact failed to be generated.
type FailedRequest struct {
	_ struct{} `type:"structure"`

	// Reason code for the failure.
	FailureReasonCode *string `type:"string" enum:"FailureReasonCode"`

	// Why the request to create a contact failed.
	FailureReasonMessage *string `type:"string"`

	// Request identifier provided in the API call in the ContactDataRequest to
	// create a contact.
	RequestIdentifier *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FailedRequest) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FailedRequest) GoString() string {
	return s.String()
}

// SetFailureReasonCode sets the FailureReasonCode field's value.
func (s *FailedRequest) SetFailureReasonCode(v string) *FailedRequest {
	s.FailureReasonCode = &v
	return s
}

// SetFailureReasonMessage sets the FailureReasonMessage field's value.
func (s *FailedRequest) SetFailureReasonMessage(v string) *FailedRequest {
	s.FailureReasonMessage = &v
	return s
}

// SetRequestIdentifier sets the RequestIdentifier field's value.
func (s *FailedRequest) SetRequestIdentifier(v string) *FailedRequest {
	s.RequestIdentifier = &v
	return s
}

// Object for case field values.
type FieldValue struct {
	_ struct{} `type:"structure"`

	// Unique identifier of a field.
	//
	// Id is a required field
	Id *string `min:"1" type:"string" required:"true"`

	// Union of potential field value types.
	//
	// Value is a required field
	Value *FieldValueUnion `type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FieldValue) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FieldValue) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FieldValue) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FieldValue"}
	if s.Id == nil {
		invalidParams.Add(request.NewErrParamRequired("Id"))
	}
	if s.Id != nil && len(*s.Id) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
	}
	if s.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetId sets the Id field's value.
func (s *FieldValue) SetId(v string) *FieldValue {
	s.Id = &v
	return s
}

// SetValue sets the Value field's value.
func (s *FieldValue) SetValue(v *FieldValueUnion) *FieldValue {
	s.Value = v
	return s
}

// Object to store union of Field values.
type FieldValueUnion struct {
	_ struct{} `type:"structure"`

	// A Boolean number value type.
	BooleanValue *bool `type:"boolean"`

	// a Double number value type.
	DoubleValue *float64 `type:"double"`

	// An empty value.
	EmptyValue *EmptyFieldValue `type:"structure"`

	// String value type.
	StringValue *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FieldValueUnion) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FieldValueUnion) GoString() string {
	return s.String()
}

// SetBooleanValue sets the BooleanValue field's value.
func (s *FieldValueUnion) SetBooleanValue(v bool) *FieldValueUnion {
	s.BooleanValue = &v
	return s
}

// SetDoubleValue sets the DoubleValue field's value.
func (s *FieldValueUnion) SetDoubleValue(v float64) *FieldValueUnion {
	s.DoubleValue = &v
	return s
}

// SetEmptyValue sets the EmptyValue field's value.
func (s *FieldValueUnion) SetEmptyValue(v *EmptyFieldValue) *FieldValueUnion {
	s.EmptyValue = v
	return s
}

// SetStringValue sets the StringValue field's value.
func (s *FieldValueUnion) SetStringValue(v string) *FieldValueUnion {
	s.StringValue = &v
	return s
}

// Contains the filter to apply when retrieving metrics with the GetMetricDataV2
// (https://docs.aws.amazon.com/connect/latest/APIReference/API_GetMetricDataV2.html)
// API.
type FilterV2 struct {
	_ struct{} `type:"structure"`

	// The key to use for filtering data. For example, QUEUE, ROUTING_PROFILE, AGENT,
	// CHANNEL, AGENT_HIERARCHY_LEVEL_ONE, AGENT_HIERARCHY_LEVEL_TWO, AGENT_HIERARCHY_LEVEL_THREE,
	// AGENT_HIERARCHY_LEVEL_FOUR, AGENT_HIERARCHY_LEVEL_FIVE. There must be at
	// least 1 key and a maximum 5 keys.
	FilterKey *string `min:"1" type:"string"`

	// The identifiers to use for filtering data. For example, if you have a filter
	// key of QUEUE, you would add queue IDs or ARNs in FilterValues.
	FilterValues []*string `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FilterV2) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FilterV2) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilterV2) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilterV2"}
	if s.FilterKey != nil && len(*s.FilterKey) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FilterKey", 1))
	}
	if s.FilterValues != nil && len(s.FilterValues) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FilterValues", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilterKey sets the FilterKey field's value.
func (s *FilterV2) SetFilterKey(v string) *FilterV2 {
	s.FilterKey = &v
	return s
}

// SetFilterValues sets the FilterValues field's value.
func (s *FilterV2) SetFilterValues(v []*string) *FilterV2 {
	s.FilterValues = v
	return s
}

// Contains the filter to apply when retrieving metrics.
type Filters struct {
	_ struct{} `type:"structure"`

	// The channel to use to filter the metrics.
	Channels []*string `type:"list" enum:"Channel"`

	// The queues to use to filter the metrics. You should specify at least one
	// queue, and can specify up to 100 queues per request. The GetCurrentMetricsData
	// API in particular requires a queue when you include a Filter in your request.
	Queues []*string `min:"1" type:"list"`

	// A list of up to 100 routing profile IDs or ARNs.
	RoutingProfiles []*string `min:"1" type:"list"`

	// A list of expressions as a filter, in which an expression is an object of
	// a step in a routing criteria.
	RoutingStepExpressions []*string `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 Filters) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Filters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Filters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Filters"}
	if s.Queues != nil && len(s.Queues) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Queues", 1))
	}
	if s.RoutingProfiles != nil && len(s.RoutingProfiles) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RoutingProfiles", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetChannels sets the Channels field's value.
func (s *Filters) SetChannels(v []*string) *Filters {
	s.Channels = v
	return s
}

// SetQueues sets the Queues field's value.
func (s *Filters) SetQueues(v []*string) *Filters {
	s.Queues = v
	return s
}

// SetRoutingProfiles sets the RoutingProfiles field's value.
func (s *Filters) SetRoutingProfiles(v []*string) *Filters {
	s.RoutingProfiles = v
	return s
}

// SetRoutingStepExpressions sets the RoutingStepExpressions field's value.
func (s *Filters) SetRoutingStepExpressions(v []*string) *Filters {
	s.RoutingStepExpressions = v
	return s
}

// Information about flow associations.
type FlowAssociationSummary struct {
	_ struct{} `type:"structure"`

	// The identifier of the flow.
	FlowId *string `type:"string"`

	// The identifier of the resource.
	ResourceId *string `type:"string"`

	// The type of resource association.
	ResourceType *string `type:"string" enum:"ListFlowAssociationResourceType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FlowAssociationSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FlowAssociationSummary) GoString() string {
	return s.String()
}

// SetFlowId sets the FlowId field's value.
func (s *FlowAssociationSummary) SetFlowId(v string) *FlowAssociationSummary {
	s.FlowId = &v
	return s
}

// SetResourceId sets the ResourceId field's value.
func (s *FlowAssociationSummary) SetResourceId(v string) *FlowAssociationSummary {
	s.ResourceId = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *FlowAssociationSummary) SetResourceType(v string) *FlowAssociationSummary {
	s.ResourceType = &v
	return s
}

type GetContactAttributesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the initial contact.
	//
	// InitialContactId is a required field
	InitialContactId *string `location:"uri" locationName:"InitialContactId" min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 GetContactAttributesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetContactAttributesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetContactAttributesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetContactAttributesInput"}
	if s.InitialContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("InitialContactId"))
	}
	if s.InitialContactId != nil && len(*s.InitialContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InitialContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInitialContactId sets the InitialContactId field's value.
func (s *GetContactAttributesInput) SetInitialContactId(v string) *GetContactAttributesInput {
	s.InitialContactId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *GetContactAttributesInput) SetInstanceId(v string) *GetContactAttributesInput {
	s.InstanceId = &v
	return s
}

type GetContactAttributesOutput struct {
	_ struct{} `type:"structure"`

	// Information about the attributes.
	Attributes map[string]*string `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 GetContactAttributesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetContactAttributesOutput) GoString() string {
	return s.String()
}

// SetAttributes sets the Attributes field's value.
func (s *GetContactAttributesOutput) SetAttributes(v map[string]*string) *GetContactAttributesOutput {
	s.Attributes = v
	return s
}

type GetCurrentMetricDataInput struct {
	_ struct{} `type:"structure"`

	// The metrics to retrieve. Specify the name and unit for each metric. The following
	// metrics are available. For a description of all the metrics, see Real-time
	// Metrics Definitions (https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html)
	// in the Amazon Connect Administrator Guide.
	//
	// AGENTS_AFTER_CONTACT_WORK
	//
	// Unit: COUNT
	//
	// Name in real-time metrics report: ACW (https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#aftercallwork-real-time)
	//
	// AGENTS_AVAILABLE
	//
	// Unit: COUNT
	//
	// Name in real-time metrics report: Available (https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#available-real-time)
	//
	// AGENTS_ERROR
	//
	// Unit: COUNT
	//
	// Name in real-time metrics report: Error (https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#error-real-time)
	//
	// AGENTS_NON_PRODUCTIVE
	//
	// Unit: COUNT
	//
	// Name in real-time metrics report: NPT (Non-Productive Time) (https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#non-productive-time-real-time)
	//
	// AGENTS_ON_CALL
	//
	// Unit: COUNT
	//
	// Name in real-time metrics report: On contact (https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#on-call-real-time)
	//
	// AGENTS_ON_CONTACT
	//
	// Unit: COUNT
	//
	// Name in real-time metrics report: On contact (https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#on-call-real-time)
	//
	// AGENTS_ONLINE
	//
	// Unit: COUNT
	//
	// Name in real-time metrics report: Online (https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#online-real-time)
	//
	// AGENTS_STAFFED
	//
	// Unit: COUNT
	//
	// Name in real-time metrics report: Staffed (https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#staffed-real-time)
	//
	// CONTACTS_IN_QUEUE
	//
	// Unit: COUNT
	//
	// Name in real-time metrics report: In queue (https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#in-queue-real-time)
	//
	// CONTACTS_SCHEDULED
	//
	// Unit: COUNT
	//
	// Name in real-time metrics report: Scheduled (https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#scheduled-real-time)
	//
	// OLDEST_CONTACT_AGE
	//
	// Unit: SECONDS
	//
	// When you use groupings, Unit says SECONDS and the Value is returned in SECONDS.
	//
	// When you do not use groupings, Unit says SECONDS but the Value is returned
	// in MILLISECONDS. For example, if you get a response like this:
	//
	// { "Metric": { "Name": "OLDEST_CONTACT_AGE", "Unit": "SECONDS" }, "Value":
	// 24113.0 }
	//
	// The actual OLDEST_CONTACT_AGE is 24 seconds.
	//
	// When the filter RoutingStepExpression is used, this metric is still calculated
	// from enqueue time. For example, if a contact that has been queued under <Expression
	// 1> for 10 seconds has expired and <Expression 2> becomes active, then OLDEST_CONTACT_AGE
	// for this queue will be counted starting from 10, not 0.
	//
	// Name in real-time metrics report: Oldest (https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#oldest-real-time)
	//
	// SLOTS_ACTIVE
	//
	// Unit: COUNT
	//
	// Name in real-time metrics report: Active (https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#active-real-time)
	//
	// SLOTS_AVAILABLE
	//
	// Unit: COUNT
	//
	// Name in real-time metrics report: Availability (https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#availability-real-time)
	//
	// CurrentMetrics is a required field
	CurrentMetrics []*CurrentMetric `type:"list" required:"true"`

	// The filters to apply to returned metrics. You can filter up to the following
	// limits:
	//
	//    * Queues: 100
	//
	//    * Routing profiles: 100
	//
	//    * Channels: 3 (VOICE, CHAT, and TASK channels are supported.)
	//
	//    * RoutingStepExpressions: 50
	//
	// Metric data is retrieved only for the resources associated with the queues
	// or routing profiles, and by any channels included in the filter. (You cannot
	// filter by both queue AND routing profile.) You can include both resource
	// IDs and resource ARNs in the same request.
	//
	// When using the RoutingStepExpression filter, you need to pass exactly one
	// QueueId. The filter is also case sensitive so when using the RoutingStepExpression
	// filter, grouping by ROUTING_STEP_EXPRESSION is required.
	//
	// Currently tagging is only supported on the resources that are passed in the
	// filter.
	//
	// Filters is a required field
	Filters *Filters `type:"structure" required:"true"`

	// The grouping applied to the metrics returned. For example, when grouped by
	// QUEUE, the metrics returned apply to each queue rather than aggregated for
	// all queues.
	//
	//    * If you group by CHANNEL, you should include a Channels filter. VOICE,
	//    CHAT, and TASK channels are supported.
	//
	//    * If you group by ROUTING_PROFILE, you must include either a queue or
	//    routing profile filter. In addition, a routing profile filter is required
	//    for metrics CONTACTS_SCHEDULED, CONTACTS_IN_QUEUE, and OLDEST_CONTACT_AGE.
	//
	//    * If no Grouping is included in the request, a summary of metrics is returned.
	//
	//    * When using the RoutingStepExpression filter, group by ROUTING_STEP_EXPRESSION
	//    is required.
	Groupings []*string `type:"list" enum:"Grouping"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	//
	// The token expires after 5 minutes from the time it is created. Subsequent
	// requests that use the token must use the same request parameters as the request
	// that generated the token.
	NextToken *string `type:"string"`

	// The way to sort the resulting response based on metrics. You can enter one
	// sort criteria. By default resources are sorted based on AGENTS_ONLINE, DESCENDING.
	// The metric collection is sorted based on the input metrics.
	//
	// Note the following:
	//
	//    * Sorting on SLOTS_ACTIVE and SLOTS_AVAILABLE is not supported.
	SortCriteria []*CurrentMetricSortCriteria `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 GetCurrentMetricDataInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCurrentMetricDataInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetCurrentMetricDataInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetCurrentMetricDataInput"}
	if s.CurrentMetrics == nil {
		invalidParams.Add(request.NewErrParamRequired("CurrentMetrics"))
	}
	if s.Filters == nil {
		invalidParams.Add(request.NewErrParamRequired("Filters"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Filters != nil {
		if err := s.Filters.Validate(); err != nil {
			invalidParams.AddNested("Filters", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCurrentMetrics sets the CurrentMetrics field's value.
func (s *GetCurrentMetricDataInput) SetCurrentMetrics(v []*CurrentMetric) *GetCurrentMetricDataInput {
	s.CurrentMetrics = v
	return s
}

// SetFilters sets the Filters field's value.
func (s *GetCurrentMetricDataInput) SetFilters(v *Filters) *GetCurrentMetricDataInput {
	s.Filters = v
	return s
}

// SetGroupings sets the Groupings field's value.
func (s *GetCurrentMetricDataInput) SetGroupings(v []*string) *GetCurrentMetricDataInput {
	s.Groupings = v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *GetCurrentMetricDataInput) SetInstanceId(v string) *GetCurrentMetricDataInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetCurrentMetricDataInput) SetMaxResults(v int64) *GetCurrentMetricDataInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetCurrentMetricDataInput) SetNextToken(v string) *GetCurrentMetricDataInput {
	s.NextToken = &v
	return s
}

// SetSortCriteria sets the SortCriteria field's value.
func (s *GetCurrentMetricDataInput) SetSortCriteria(v []*CurrentMetricSortCriteria) *GetCurrentMetricDataInput {
	s.SortCriteria = v
	return s
}

type GetCurrentMetricDataOutput struct {
	_ struct{} `type:"structure"`

	// The total count of the result, regardless of the current page size.
	ApproximateTotalCount *int64 `type:"long"`

	// The time at which the metrics were retrieved and cached for pagination.
	DataSnapshotTime *time.Time `type:"timestamp"`

	// Information about the real-time metrics.
	MetricResults []*CurrentMetricResult `type:"list"`

	// If there are additional results, this is the token for the next set of results.
	//
	// The token expires after 5 minutes from the time it is created. Subsequent
	// requests that use the token must use the same request parameters as the request
	// that generated the token.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCurrentMetricDataOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCurrentMetricDataOutput) GoString() string {
	return s.String()
}

// SetApproximateTotalCount sets the ApproximateTotalCount field's value.
func (s *GetCurrentMetricDataOutput) SetApproximateTotalCount(v int64) *GetCurrentMetricDataOutput {
	s.ApproximateTotalCount = &v
	return s
}

// SetDataSnapshotTime sets the DataSnapshotTime field's value.
func (s *GetCurrentMetricDataOutput) SetDataSnapshotTime(v time.Time) *GetCurrentMetricDataOutput {
	s.DataSnapshotTime = &v
	return s
}

// SetMetricResults sets the MetricResults field's value.
func (s *GetCurrentMetricDataOutput) SetMetricResults(v []*CurrentMetricResult) *GetCurrentMetricDataOutput {
	s.MetricResults = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetCurrentMetricDataOutput) SetNextToken(v string) *GetCurrentMetricDataOutput {
	s.NextToken = &v
	return s
}

type GetCurrentUserDataInput struct {
	_ struct{} `type:"structure"`

	// The filters to apply to returned user data. You can filter up to the following
	// limits:
	//
	//    * Queues: 100
	//
	//    * Routing profiles: 100
	//
	//    * Agents: 100
	//
	//    * Contact states: 9
	//
	//    * User hierarchy groups: 1
	//
	// The user data is retrieved for only the specified values/resources in the
	// filter. A maximum of one filter can be passed from queues, routing profiles,
	// agents, and user hierarchy groups.
	//
	// Currently tagging is only supported on the resources that are passed in the
	// filter.
	//
	// Filters is a required field
	Filters *UserDataFilters `type:"structure" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCurrentUserDataInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCurrentUserDataInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetCurrentUserDataInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetCurrentUserDataInput"}
	if s.Filters == nil {
		invalidParams.Add(request.NewErrParamRequired("Filters"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Filters != nil {
		if err := s.Filters.Validate(); err != nil {
			invalidParams.AddNested("Filters", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *GetCurrentUserDataInput) SetFilters(v *UserDataFilters) *GetCurrentUserDataInput {
	s.Filters = v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *GetCurrentUserDataInput) SetInstanceId(v string) *GetCurrentUserDataInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetCurrentUserDataInput) SetMaxResults(v int64) *GetCurrentUserDataInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetCurrentUserDataInput) SetNextToken(v string) *GetCurrentUserDataInput {
	s.NextToken = &v
	return s
}

type GetCurrentUserDataOutput struct {
	_ struct{} `type:"structure"`

	// The total count of the result, regardless of the current page size.
	ApproximateTotalCount *int64 `type:"long"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`

	// A list of the user data that is returned.
	UserDataList []*UserData `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 GetCurrentUserDataOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCurrentUserDataOutput) GoString() string {
	return s.String()
}

// SetApproximateTotalCount sets the ApproximateTotalCount field's value.
func (s *GetCurrentUserDataOutput) SetApproximateTotalCount(v int64) *GetCurrentUserDataOutput {
	s.ApproximateTotalCount = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetCurrentUserDataOutput) SetNextToken(v string) *GetCurrentUserDataOutput {
	s.NextToken = &v
	return s
}

// SetUserDataList sets the UserDataList field's value.
func (s *GetCurrentUserDataOutput) SetUserDataList(v []*UserData) *GetCurrentUserDataOutput {
	s.UserDataList = v
	return s
}

type GetFederationTokenInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 GetFederationTokenInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetFederationTokenInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetFederationTokenInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetFederationTokenInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *GetFederationTokenInput) SetInstanceId(v string) *GetFederationTokenInput {
	s.InstanceId = &v
	return s
}

type GetFederationTokenOutput struct {
	_ struct{} `type:"structure"`

	// The credentials to use for federation.
	//
	// Credentials is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetFederationTokenOutput's
	// String and GoString methods.
	Credentials *Credentials `type:"structure" sensitive:"true"`

	// The URL to sign into the user's instance.
	SignInUrl *string `type:"string"`

	// The Amazon Resource Name (ARN) of the user.
	UserArn *string `type:"string"`

	// The identifier for the user. This can be the ID or the ARN of the user.
	UserId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetFederationTokenOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetFederationTokenOutput) GoString() string {
	return s.String()
}

// SetCredentials sets the Credentials field's value.
func (s *GetFederationTokenOutput) SetCredentials(v *Credentials) *GetFederationTokenOutput {
	s.Credentials = v
	return s
}

// SetSignInUrl sets the SignInUrl field's value.
func (s *GetFederationTokenOutput) SetSignInUrl(v string) *GetFederationTokenOutput {
	s.SignInUrl = &v
	return s
}

// SetUserArn sets the UserArn field's value.
func (s *GetFederationTokenOutput) SetUserArn(v string) *GetFederationTokenOutput {
	s.UserArn = &v
	return s
}

// SetUserId sets the UserId field's value.
func (s *GetFederationTokenOutput) SetUserId(v string) *GetFederationTokenOutput {
	s.UserId = &v
	return s
}

type GetFlowAssociationInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the resource.
	//
	// ResourceId is a required field
	ResourceId *string `location:"uri" locationName:"ResourceId" type:"string" required:"true"`

	// A valid resource type.
	//
	// ResourceType is a required field
	ResourceType *string `location:"uri" locationName:"ResourceType" type:"string" required:"true" enum:"FlowAssociationResourceType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetFlowAssociationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetFlowAssociationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetFlowAssociationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetFlowAssociationInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.ResourceId == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceId"))
	}
	if s.ResourceId != nil && len(*s.ResourceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceId", 1))
	}
	if s.ResourceType == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceType"))
	}
	if s.ResourceType != nil && len(*s.ResourceType) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceType", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *GetFlowAssociationInput) SetInstanceId(v string) *GetFlowAssociationInput {
	s.InstanceId = &v
	return s
}

// SetResourceId sets the ResourceId field's value.
func (s *GetFlowAssociationInput) SetResourceId(v string) *GetFlowAssociationInput {
	s.ResourceId = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *GetFlowAssociationInput) SetResourceType(v string) *GetFlowAssociationInput {
	s.ResourceType = &v
	return s
}

type GetFlowAssociationOutput struct {
	_ struct{} `type:"structure"`

	// The identifier of the flow.
	FlowId *string `type:"string"`

	// The identifier of the resource.
	ResourceId *string `type:"string"`

	// A valid resource type.
	ResourceType *string `type:"string" enum:"FlowAssociationResourceType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetFlowAssociationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetFlowAssociationOutput) GoString() string {
	return s.String()
}

// SetFlowId sets the FlowId field's value.
func (s *GetFlowAssociationOutput) SetFlowId(v string) *GetFlowAssociationOutput {
	s.FlowId = &v
	return s
}

// SetResourceId sets the ResourceId field's value.
func (s *GetFlowAssociationOutput) SetResourceId(v string) *GetFlowAssociationOutput {
	s.ResourceId = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *GetFlowAssociationOutput) SetResourceType(v string) *GetFlowAssociationOutput {
	s.ResourceType = &v
	return s
}

type GetMetricDataInput struct {
	_ struct{} `type:"structure"`

	// The timestamp, in UNIX Epoch time format, at which to end the reporting interval
	// for the retrieval of historical metrics data. The time must be specified
	// using an interval of 5 minutes, such as 11:00, 11:05, 11:10, and must be
	// later than the start time timestamp.
	//
	// The time range between the start and end time must be less than 24 hours.
	//
	// EndTime is a required field
	EndTime *time.Time `type:"timestamp" required:"true"`

	// The queues, up to 100, or channels, to use to filter the metrics returned.
	// Metric data is retrieved only for the resources associated with the queues
	// or channels included in the filter. You can include both queue IDs and queue
	// ARNs in the same request. VOICE, CHAT, and TASK channels are supported.
	//
	// RoutingStepExpression is not a valid filter for GetMetricData and we recommend
	// switching to GetMetricDataV2 for more up-to-date features.
	//
	// To filter by Queues, enter the queue ID/ARN, not the name of the queue.
	//
	// Filters is a required field
	Filters *Filters `type:"structure" required:"true"`

	// The grouping applied to the metrics returned. For example, when results are
	// grouped by queue, the metrics returned are grouped by queue. The values returned
	// apply to the metrics for each queue rather than aggregated for all queues.
	//
	// If no grouping is specified, a summary of metrics for all queues is returned.
	//
	// RoutingStepExpression is not a valid filter for GetMetricData and we recommend
	// switching to GetMetricDataV2 for more up-to-date features.
	Groupings []*string `type:"list" enum:"Grouping"`

	// The metrics to retrieve. Specify the name, unit, and statistic for each metric.
	// The following historical metrics are available. For a description of each
	// metric, see Historical Metrics Definitions (https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html)
	// in the Amazon Connect Administrator Guide.
	//
	// This API does not support a contacts incoming metric (there's no CONTACTS_INCOMING
	// metric missing from the documented list).
	//
	// ABANDON_TIME
	//
	// Unit: SECONDS
	//
	// Statistic: AVG
	//
	// AFTER_CONTACT_WORK_TIME
	//
	// Unit: SECONDS
	//
	// Statistic: AVG
	//
	// API_CONTACTS_HANDLED
	//
	// Unit: COUNT
	//
	// Statistic: SUM
	//
	// CALLBACK_CONTACTS_HANDLED
	//
	// Unit: COUNT
	//
	// Statistic: SUM
	//
	// CONTACTS_ABANDONED
	//
	// Unit: COUNT
	//
	// Statistic: SUM
	//
	// CONTACTS_AGENT_HUNG_UP_FIRST
	//
	// Unit: COUNT
	//
	// Statistic: SUM
	//
	// CONTACTS_CONSULTED
	//
	// Unit: COUNT
	//
	// Statistic: SUM
	//
	// CONTACTS_HANDLED
	//
	// Unit: COUNT
	//
	// Statistic: SUM
	//
	// CONTACTS_HANDLED_INCOMING
	//
	// Unit: COUNT
	//
	// Statistic: SUM
	//
	// CONTACTS_HANDLED_OUTBOUND
	//
	// Unit: COUNT
	//
	// Statistic: SUM
	//
	// CONTACTS_HOLD_ABANDONS
	//
	// Unit: COUNT
	//
	// Statistic: SUM
	//
	// CONTACTS_MISSED
	//
	// Unit: COUNT
	//
	// Statistic: SUM
	//
	// CONTACTS_QUEUED
	//
	// Unit: COUNT
	//
	// Statistic: SUM
	//
	// CONTACTS_TRANSFERRED_IN
	//
	// Unit: COUNT
	//
	// Statistic: SUM
	//
	// CONTACTS_TRANSFERRED_IN_FROM_QUEUE
	//
	// Unit: COUNT
	//
	// Statistic: SUM
	//
	// CONTACTS_TRANSFERRED_OUT
	//
	// Unit: COUNT
	//
	// Statistic: SUM
	//
	// CONTACTS_TRANSFERRED_OUT_FROM_QUEUE
	//
	// Unit: COUNT
	//
	// Statistic: SUM
	//
	// HANDLE_TIME
	//
	// Unit: SECONDS
	//
	// Statistic: AVG
	//
	// HOLD_TIME
	//
	// Unit: SECONDS
	//
	// Statistic: AVG
	//
	// INTERACTION_AND_HOLD_TIME
	//
	// Unit: SECONDS
	//
	// Statistic: AVG
	//
	// INTERACTION_TIME
	//
	// Unit: SECONDS
	//
	// Statistic: AVG
	//
	// OCCUPANCY
	//
	// Unit: PERCENT
	//
	// Statistic: AVG
	//
	// QUEUE_ANSWER_TIME
	//
	// Unit: SECONDS
	//
	// Statistic: AVG
	//
	// QUEUED_TIME
	//
	// Unit: SECONDS
	//
	// Statistic: MAX
	//
	// SERVICE_LEVEL
	//
	// You can include up to 20 SERVICE_LEVEL metrics in a request.
	//
	// Unit: PERCENT
	//
	// Statistic: AVG
	//
	// Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive),
	// in seconds. For Comparison, you must enter LT (for "Less than").
	//
	// HistoricalMetrics is a required field
	HistoricalMetrics []*HistoricalMetric `type:"list" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `type:"string"`

	// The timestamp, in UNIX Epoch time format, at which to start the reporting
	// interval for the retrieval of historical metrics data. The time must be specified
	// using a multiple of 5 minutes, such as 10:05, 10:10, 10:15.
	//
	// The start time cannot be earlier than 24 hours before the time of the request.
	// Historical metrics are available only for 24 hours.
	//
	// StartTime is a required field
	StartTime *time.Time `type:"timestamp" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetMetricDataInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetMetricDataInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetMetricDataInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetMetricDataInput"}
	if s.EndTime == nil {
		invalidParams.Add(request.NewErrParamRequired("EndTime"))
	}
	if s.Filters == nil {
		invalidParams.Add(request.NewErrParamRequired("Filters"))
	}
	if s.HistoricalMetrics == nil {
		invalidParams.Add(request.NewErrParamRequired("HistoricalMetrics"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.StartTime == nil {
		invalidParams.Add(request.NewErrParamRequired("StartTime"))
	}
	if s.Filters != nil {
		if err := s.Filters.Validate(); err != nil {
			invalidParams.AddNested("Filters", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEndTime sets the EndTime field's value.
func (s *GetMetricDataInput) SetEndTime(v time.Time) *GetMetricDataInput {
	s.EndTime = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *GetMetricDataInput) SetFilters(v *Filters) *GetMetricDataInput {
	s.Filters = v
	return s
}

// SetGroupings sets the Groupings field's value.
func (s *GetMetricDataInput) SetGroupings(v []*string) *GetMetricDataInput {
	s.Groupings = v
	return s
}

// SetHistoricalMetrics sets the HistoricalMetrics field's value.
func (s *GetMetricDataInput) SetHistoricalMetrics(v []*HistoricalMetric) *GetMetricDataInput {
	s.HistoricalMetrics = v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *GetMetricDataInput) SetInstanceId(v string) *GetMetricDataInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetMetricDataInput) SetMaxResults(v int64) *GetMetricDataInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetMetricDataInput) SetNextToken(v string) *GetMetricDataInput {
	s.NextToken = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *GetMetricDataInput) SetStartTime(v time.Time) *GetMetricDataInput {
	s.StartTime = &v
	return s
}

type GetMetricDataOutput struct {
	_ struct{} `type:"structure"`

	// Information about the historical metrics.
	//
	// If no grouping is specified, a summary of metric data is returned.
	MetricResults []*HistoricalMetricResult `type:"list"`

	// If there are additional results, this is the token for the next set of results.
	//
	// The token expires after 5 minutes from the time it is created. Subsequent
	// requests that use the token must use the same request parameters as the request
	// that generated the token.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetMetricDataOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetMetricDataOutput) GoString() string {
	return s.String()
}

// SetMetricResults sets the MetricResults field's value.
func (s *GetMetricDataOutput) SetMetricResults(v []*HistoricalMetricResult) *GetMetricDataOutput {
	s.MetricResults = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetMetricDataOutput) SetNextToken(v string) *GetMetricDataOutput {
	s.NextToken = &v
	return s
}

type GetMetricDataV2Input struct {
	_ struct{} `type:"structure"`

	// The timestamp, in UNIX Epoch time format, at which to end the reporting interval
	// for the retrieval of historical metrics data. The time must be later than
	// the start time timestamp. It cannot be later than the current timestamp.
	//
	// EndTime is a required field
	EndTime *time.Time `type:"timestamp" required:"true"`

	// The filters to apply to returned metrics. You can filter on the following
	// resources:
	//
	//    * Queues
	//
	//    * Routing profiles
	//
	//    * Agents
	//
	//    * Channels
	//
	//    * User hierarchy groups
	//
	//    * Feature
	//
	//    * Routing step expression
	//
	// At least one filter must be passed from queues, routing profiles, agents,
	// or user hierarchy groups.
	//
	// To filter by phone number, see Create a historical metrics report (https://docs.aws.amazon.com/connect/latest/adminguide/create-historical-metrics-report.html)
	// in the Amazon Connect Administrator's Guide.
	//
	// Note the following limits:
	//
	//    * Filter keys: A maximum of 5 filter keys are supported in a single request.
	//    Valid filter keys: QUEUE | ROUTING_PROFILE | AGENT | CHANNEL | AGENT_HIERARCHY_LEVEL_ONE
	//    | AGENT_HIERARCHY_LEVEL_TWO | AGENT_HIERARCHY_LEVEL_THREE | AGENT_HIERARCHY_LEVEL_FOUR
	//    | AGENT_HIERARCHY_LEVEL_FIVE | FEATURE | contact/segmentAttributes/connect:Subtype
	//    | ROUTING_STEP_EXPRESSION
	//
	//    * Filter values: A maximum of 100 filter values are supported in a single
	//    request. VOICE, CHAT, and TASK are valid filterValue for the CHANNEL filter
	//    key. They do not count towards limitation of 100 filter values. For example,
	//    a GetMetricDataV2 request can filter by 50 queues, 35 agents, and 15 routing
	//    profiles for a total of 100 filter values, along with 3 channel filters.
	//    contact_lens_conversational_analytics is a valid filterValue for the FEATURE
	//    filter key. It is available only to contacts analyzed by Contact Lens
	//    conversational analytics. connect:Chat, connect:SMS, connect:Telephony,
	//    and connect:WebRTC are valid filterValue examples (not exhaustive) for
	//    the contact/segmentAttributes/connect:Subtype filter key. ROUTING_STEP_EXPRESSION
	//    is a valid filter key with a filter value up to 3000 length. This filter
	//    is case and order sensitive. JSON string fields must be sorted in ascending
	//    order and JSON array order should be kept as is.
	//
	// Filters is a required field
	Filters []*FilterV2 `min:"1" type:"list" required:"true"`

	// The grouping applied to the metrics that are returned. For example, when
	// results are grouped by queue, the metrics returned are grouped by queue.
	// The values that are returned apply to the metrics for each queue. They are
	// not aggregated for all queues.
	//
	// If no grouping is specified, a summary of all metrics is returned.
	//
	// Valid grouping keys: QUEUE | ROUTING_PROFILE | AGENT | CHANNEL | AGENT_HIERARCHY_LEVEL_ONE
	// | AGENT_HIERARCHY_LEVEL_TWO | AGENT_HIERARCHY_LEVEL_THREE | AGENT_HIERARCHY_LEVEL_FOUR
	// | AGENT_HIERARCHY_LEVEL_FIVE, contact/segmentAttributes/connect:Subtype |
	// ROUTING_STEP_EXPRESSION
	Groupings []*string `type:"list"`

	// The interval period and timezone to apply to returned metrics.
	//
	//    * IntervalPeriod: An aggregated grouping applied to request metrics. Valid
	//    IntervalPeriod values are: FIFTEEN_MIN | THIRTY_MIN | HOUR | DAY | WEEK
	//    | TOTAL. For example, if IntervalPeriod is selected THIRTY_MIN, StartTime
	//    and EndTime differs by 1 day, then Amazon Connect returns 48 results in
	//    the response. Each result is aggregated by the THIRTY_MIN period. By default
	//    Amazon Connect aggregates results based on the TOTAL interval period.
	//    The following list describes restrictions on StartTime and EndTime based
	//    on which IntervalPeriod is requested. FIFTEEN_MIN: The difference between
	//    StartTime and EndTime must be less than 3 days. THIRTY_MIN: The difference
	//    between StartTime and EndTime must be less than 3 days. HOUR: The difference
	//    between StartTime and EndTime must be less than 3 days. DAY: The difference
	//    between StartTime and EndTime must be less than 35 days. WEEK: The difference
	//    between StartTime and EndTime must be less than 35 days. TOTAL: The difference
	//    between StartTime and EndTime must be less than 35 days.
	//
	//    * TimeZone: The timezone applied to requested metrics.
	Interval *IntervalDetails `type:"structure"`

	// The maximum number of results to return per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// The metrics to retrieve. Specify the name, groupings, and filters for each
	// metric. The following historical metrics are available. For a description
	// of each metric, see Historical metrics definitions (https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html)
	// in the Amazon Connect Administrator's Guide.
	//
	// ABANDONMENT_RATE
	//
	// Unit: Percent
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, Feature, contact/segmentAttributes/connect:Subtype
	//
	// AGENT_ADHERENT_TIME
	//
	// This metric is available only in Amazon Web Services Regions where Forecasting,
	// capacity planning, and scheduling (https://docs.aws.amazon.com/connect/latest/adminguide/regions.html#optimization_region)
	// is available.
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy
	//
	// AGENT_ANSWER_RATE
	//
	// Unit: Percent
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy
	//
	// AGENT_NON_ADHERENT_TIME
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy
	//
	// AGENT_NON_RESPONSE
	//
	// Unit: Count
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy
	//
	// AGENT_NON_RESPONSE_WITHOUT_CUSTOMER_ABANDONS
	//
	// Unit: Count
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy
	//
	// Data for this metric is available starting from October 1, 2023 0:00:00 GMT.
	//
	// AGENT_OCCUPANCY
	//
	// Unit: Percentage
	//
	// Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy
	//
	// AGENT_SCHEDULE_ADHERENCE
	//
	// This metric is available only in Amazon Web Services Regions where Forecasting,
	// capacity planning, and scheduling (https://docs.aws.amazon.com/connect/latest/adminguide/regions.html#optimization_region)
	// is available.
	//
	// Unit: Percent
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy
	//
	// AGENT_SCHEDULED_TIME
	//
	// This metric is available only in Amazon Web Services Regions where Forecasting,
	// capacity planning, and scheduling (https://docs.aws.amazon.com/connect/latest/adminguide/regions.html#optimization_region)
	// is available.
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy
	//
	// AVG_ABANDON_TIME
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, Feature, contact/segmentAttributes/connect:Subtype
	//
	// AVG_ACTIVE_TIME
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy
	//
	// AVG_AFTER_CONTACT_WORK_TIME
	//
	// Unit: Seconds
	//
	// Valid metric filter key: INITIATION_METHOD
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, Feature, contact/segmentAttributes/connect:Subtype
	//
	// Feature is a valid filter but not a valid grouping.
	//
	// AVG_AGENT_CONNECTING_TIME
	//
	// Unit: Seconds
	//
	// Valid metric filter key: INITIATION_METHOD. For now, this metric only supports
	// the following as INITIATION_METHOD: INBOUND | OUTBOUND | CALLBACK | API
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy
	//
	// The Negate key in Metric Level Filters is not applicable for this metric.
	//
	// AVG_AGENT_PAUSE_TIME
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy
	//
	// AVG_CONTACT_DURATION
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, Feature, contact/segmentAttributes/connect:Subtype
	//
	// Feature is a valid filter but not a valid grouping.
	//
	// AVG_CONVERSATION_DURATION
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, Feature, contact/segmentAttributes/connect:Subtype
	//
	// AVG_GREETING_TIME_AGENT
	//
	// This metric is available only for contacts analyzed by Contact Lens conversational
	// analytics.
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, contact/segmentAttributes/connect:Subtype
	//
	// AVG_HANDLE_TIME
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, Feature, contact/segmentAttributes/connect:Subtype, RoutingStepExpression
	//
	// Feature is a valid filter but not a valid grouping.
	//
	// AVG_HOLD_TIME
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, Feature, contact/segmentAttributes/connect:Subtype
	//
	// Feature is a valid filter but not a valid grouping.
	//
	// AVG_HOLD_TIME_ALL_CONTACTS
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, contact/segmentAttributes/connect:Subtype
	//
	// AVG_HOLDS
	//
	// Unit: Count
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, Feature, contact/segmentAttributes/connect:Subtype
	//
	// Feature is a valid filter but not a valid grouping.
	//
	// AVG_INTERACTION_AND_HOLD_TIME
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, contact/segmentAttributes/connect:Subtype
	//
	// AVG_INTERACTION_TIME
	//
	// Unit: Seconds
	//
	// Valid metric filter key: INITIATION_METHOD
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype
	//
	// Feature is a valid filter but not a valid grouping.
	//
	// AVG_INTERRUPTIONS_AGENT
	//
	// This metric is available only for contacts analyzed by Contact Lens conversational
	// analytics.
	//
	// Unit: Count
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, contact/segmentAttributes/connect:Subtype
	//
	// AVG_INTERRUPTION_TIME_AGENT
	//
	// This metric is available only for contacts analyzed by Contact Lens conversational
	// analytics.
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, contact/segmentAttributes/connect:Subtype
	//
	// AVG_NON_TALK_TIME
	//
	// This metric is available only for contacts analyzed by Contact Lens conversational
	// analytics.
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, contact/segmentAttributes/connect:Subtype
	//
	// AVG_QUEUE_ANSWER_TIME
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype
	//
	// Feature is a valid filter but not a valid grouping.
	//
	// AVG_RESOLUTION_TIME
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype
	//
	// AVG_TALK_TIME
	//
	// This metric is available only for contacts analyzed by Contact Lens conversational
	// analytics.
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, contact/segmentAttributes/connect:Subtype
	//
	// AVG_TALK_TIME_AGENT
	//
	// This metric is available only for contacts analyzed by Contact Lens conversational
	// analytics.
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, contact/segmentAttributes/connect:Subtype
	//
	// AVG_TALK_TIME_CUSTOMER
	//
	// This metric is available only for contacts analyzed by Contact Lens conversational
	// analytics.
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, contact/segmentAttributes/connect:Subtype
	//
	// CONTACTS_ABANDONED
	//
	// Unit: Count
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, contact/segmentAttributes/connect:Subtype, RoutingStepExpression
	//
	// CONTACTS_CREATED
	//
	// Unit: Count
	//
	// Valid metric filter key: INITIATION_METHOD
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype
	//
	// Feature is a valid filter but not a valid grouping.
	//
	// CONTACTS_HANDLED
	//
	// Unit: Count
	//
	// Valid metric filter key: INITIATION_METHOD, DISCONNECT_REASON
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, Feature, contact/segmentAttributes/connect:Subtype, RoutingStepExpression
	//
	// Feature is a valid filter but not a valid grouping.
	//
	// CONTACTS_HANDLED_BY_CONNECTED_TO_AGENT
	//
	// Unit: Count
	//
	// Valid metric filter key: INITIATION_METHOD
	//
	// Valid groupings and filters: Queue, Channel, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype
	//
	// CONTACTS_HOLD_ABANDONS
	//
	// Unit: Count
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, contact/segmentAttributes/connect:Subtype
	//
	// CONTACTS_ON_HOLD_AGENT_DISCONNECT
	//
	// Unit: Count
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy
	//
	// CONTACTS_ON_HOLD_CUSTOMER_DISCONNECT
	//
	// Unit: Count
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy
	//
	// CONTACTS_PUT_ON_HOLD
	//
	// Unit: Count
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy
	//
	// CONTACTS_TRANSFERRED_OUT_EXTERNAL
	//
	// Unit: Count
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy
	//
	// CONTACTS_TRANSFERRED_OUT_INTERNAL
	//
	// Unit: Percent
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy
	//
	// CONTACTS_QUEUED
	//
	// Unit: Count
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, contact/segmentAttributes/connect:Subtype
	//
	// CONTACTS_QUEUED_BY_ENQUEUE
	//
	// Unit: Count
	//
	// Valid groupings and filters: Queue, Channel, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype
	//
	// CONTACTS_RESOLVED_IN_X
	//
	// Unit: Count
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype
	//
	// Threshold: For ThresholdValue enter any whole number from 1 to 604800 (inclusive),
	// in seconds. For Comparison, you must enter LT (for "Less than").
	//
	// CONTACTS_TRANSFERRED_OUT
	//
	// Unit: Count
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, Feature, contact/segmentAttributes/connect:Subtype
	//
	// Feature is a valid filter but not a valid grouping.
	//
	// CONTACTS_TRANSFERRED_OUT_BY_AGENT
	//
	// Unit: Count
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, contact/segmentAttributes/connect:Subtype
	//
	// CONTACTS_TRANSFERRED_OUT_FROM_QUEUE
	//
	// Unit: Count
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, contact/segmentAttributes/connect:Subtype
	//
	// MAX_QUEUED_TIME
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, contact/segmentAttributes/connect:Subtype
	//
	// PERCENT_CONTACTS_STEP_EXPIRED
	//
	// Unit: Percent
	//
	// Valid groupings and filters: Queue, RoutingStepExpression
	//
	// PERCENT_CONTACTS_STEP_JOINED
	//
	// Unit: Percent
	//
	// Valid groupings and filters: Queue, RoutingStepExpression
	//
	// PERCENT_NON_TALK_TIME
	//
	// This metric is available only for contacts analyzed by Contact Lens conversational
	// analytics.
	//
	// Unit: Percentage
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, contact/segmentAttributes/connect:Subtype
	//
	// PERCENT_TALK_TIME
	//
	// This metric is available only for contacts analyzed by Contact Lens conversational
	// analytics.
	//
	// Unit: Percentage
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, contact/segmentAttributes/connect:Subtype
	//
	// PERCENT_TALK_TIME_AGENT
	//
	// This metric is available only for contacts analyzed by Contact Lens conversational
	// analytics.
	//
	// Unit: Percentage
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, contact/segmentAttributes/connect:Subtype
	//
	// PERCENT_TALK_TIME_CUSTOMER
	//
	// This metric is available only for contacts analyzed by Contact Lens conversational
	// analytics.
	//
	// Unit: Percentage
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, contact/segmentAttributes/connect:Subtype
	//
	// SERVICE_LEVEL
	//
	// You can include up to 20 SERVICE_LEVEL metrics in a request.
	//
	// Unit: Percent
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile
	//
	// Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive),
	// in seconds. For Comparison, you must enter LT (for "Less than").
	//
	// STEP_CONTACTS_QUEUED
	//
	// Unit: Count
	//
	// Valid groupings and filters: Queue, RoutingStepExpression
	//
	// SUM_AFTER_CONTACT_WORK_TIME
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy
	//
	// SUM_CONNECTING_TIME_AGENT
	//
	// Unit: Seconds
	//
	// Valid metric filter key: INITIATION_METHOD. This metric only supports the
	// following filter keys as INITIATION_METHOD: INBOUND | OUTBOUND | CALLBACK
	// | API
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy
	//
	// The Negate key in Metric Level Filters is not applicable for this metric.
	//
	// SUM_CONTACT_FLOW_TIME
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy
	//
	// SUM_CONTACT_TIME_AGENT
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy
	//
	// SUM_CONTACTS_ANSWERED_IN_X
	//
	// Unit: Count
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype
	//
	// Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive),
	// in seconds. For Comparison, you must enter LT (for "Less than").
	//
	// SUM_CONTACTS_ABANDONED_IN_X
	//
	// Unit: Count
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype
	//
	// Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive),
	// in seconds. For Comparison, you must enter LT (for "Less than").
	//
	// SUM_CONTACTS_DISCONNECTED
	//
	// Valid metric filter key: DISCONNECT_REASON
	//
	// Unit: Count
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy, contact/segmentAttributes/connect:Subtype
	//
	// SUM_ERROR_STATUS_TIME_AGENT
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy
	//
	// SUM_HANDLE_TIME
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy
	//
	// SUM_HOLD_TIME
	//
	// Unit: Count
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy
	//
	// SUM_IDLE_TIME_AGENT
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy
	//
	// SUM_INTERACTION_AND_HOLD_TIME
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy
	//
	// SUM_INTERACTION_TIME
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent
	// Hierarchy
	//
	// SUM_NON_PRODUCTIVE_TIME_AGENT
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy
	//
	// SUM_ONLINE_TIME_AGENT
	//
	// Unit: Seconds
	//
	// Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy
	//
	// SUM_RETRY_CALLBACK_ATTEMPTS
	//
	// Unit: Count
	//
	// Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype
	//
	// Metrics is a required field
	Metrics []*MetricV2 `type:"list" required:"true"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the resource. This includes the instanceId
	// an Amazon Connect instance.
	//
	// ResourceArn is a required field
	ResourceArn *string `type:"string" required:"true"`

	// The timestamp, in UNIX Epoch time format, at which to start the reporting
	// interval for the retrieval of historical metrics data. The time must be before
	// the end time timestamp. The start and end time depends on the IntervalPeriod
	// selected. By default the time range between start and end time is 35 days.
	// Historical metrics are available for 3 months.
	//
	// StartTime is a required field
	StartTime *time.Time `type:"timestamp" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetMetricDataV2Input) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetMetricDataV2Input) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetMetricDataV2Input) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetMetricDataV2Input"}
	if s.EndTime == nil {
		invalidParams.Add(request.NewErrParamRequired("EndTime"))
	}
	if s.Filters == nil {
		invalidParams.Add(request.NewErrParamRequired("Filters"))
	}
	if s.Filters != nil && len(s.Filters) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Filters", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Metrics == nil {
		invalidParams.Add(request.NewErrParamRequired("Metrics"))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}
	if s.StartTime == nil {
		invalidParams.Add(request.NewErrParamRequired("StartTime"))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Metrics != nil {
		for i, v := range s.Metrics {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Metrics", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEndTime sets the EndTime field's value.
func (s *GetMetricDataV2Input) SetEndTime(v time.Time) *GetMetricDataV2Input {
	s.EndTime = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *GetMetricDataV2Input) SetFilters(v []*FilterV2) *GetMetricDataV2Input {
	s.Filters = v
	return s
}

// SetGroupings sets the Groupings field's value.
func (s *GetMetricDataV2Input) SetGroupings(v []*string) *GetMetricDataV2Input {
	s.Groupings = v
	return s
}

// SetInterval sets the Interval field's value.
func (s *GetMetricDataV2Input) SetInterval(v *IntervalDetails) *GetMetricDataV2Input {
	s.Interval = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetMetricDataV2Input) SetMaxResults(v int64) *GetMetricDataV2Input {
	s.MaxResults = &v
	return s
}

// SetMetrics sets the Metrics field's value.
func (s *GetMetricDataV2Input) SetMetrics(v []*MetricV2) *GetMetricDataV2Input {
	s.Metrics = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetMetricDataV2Input) SetNextToken(v string) *GetMetricDataV2Input {
	s.NextToken = &v
	return s
}

// SetResourceArn sets the ResourceArn field's value.
func (s *GetMetricDataV2Input) SetResourceArn(v string) *GetMetricDataV2Input {
	s.ResourceArn = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *GetMetricDataV2Input) SetStartTime(v time.Time) *GetMetricDataV2Input {
	s.StartTime = &v
	return s
}

type GetMetricDataV2Output struct {
	_ struct{} `type:"structure"`

	// Information about the metrics requested in the API request If no grouping
	// is specified, a summary of metric data is returned.
	MetricResults []*MetricResultV2 `type:"list"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetMetricDataV2Output) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetMetricDataV2Output) GoString() string {
	return s.String()
}

// SetMetricResults sets the MetricResults field's value.
func (s *GetMetricDataV2Output) SetMetricResults(v []*MetricResultV2) *GetMetricDataV2Output {
	s.MetricResults = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetMetricDataV2Output) SetNextToken(v string) *GetMetricDataV2Output {
	s.NextToken = &v
	return s
}

type GetPromptFileInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// A unique identifier for the prompt.
	//
	// PromptId is a required field
	PromptId *string `location:"uri" locationName:"PromptId" 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 GetPromptFileInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetPromptFileInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetPromptFileInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetPromptFileInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.PromptId == nil {
		invalidParams.Add(request.NewErrParamRequired("PromptId"))
	}
	if s.PromptId != nil && len(*s.PromptId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PromptId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *GetPromptFileInput) SetInstanceId(v string) *GetPromptFileInput {
	s.InstanceId = &v
	return s
}

// SetPromptId sets the PromptId field's value.
func (s *GetPromptFileInput) SetPromptId(v string) *GetPromptFileInput {
	s.PromptId = &v
	return s
}

type GetPromptFileOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services Region where this resource was last modified.
	LastModifiedRegion *string `type:"string"`

	// The timestamp when this resource was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// A generated URL to the prompt that can be given to an unauthorized user so
	// they can access the prompt in S3.
	PromptPresignedUrl *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetPromptFileOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetPromptFileOutput) GoString() string {
	return s.String()
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *GetPromptFileOutput) SetLastModifiedRegion(v string) *GetPromptFileOutput {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *GetPromptFileOutput) SetLastModifiedTime(v time.Time) *GetPromptFileOutput {
	s.LastModifiedTime = &v
	return s
}

// SetPromptPresignedUrl sets the PromptPresignedUrl field's value.
func (s *GetPromptFileOutput) SetPromptPresignedUrl(v string) *GetPromptFileOutput {
	s.PromptPresignedUrl = &v
	return s
}

type GetTaskTemplateInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The system generated version of a task template that is associated with a
	// task, when the task is created.
	SnapshotVersion *string `location:"querystring" locationName:"snapshotVersion" type:"string"`

	// A unique identifier for the task template.
	//
	// TaskTemplateId is a required field
	TaskTemplateId *string `location:"uri" locationName:"TaskTemplateId" 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 GetTaskTemplateInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTaskTemplateInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetTaskTemplateInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetTaskTemplateInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.TaskTemplateId == nil {
		invalidParams.Add(request.NewErrParamRequired("TaskTemplateId"))
	}
	if s.TaskTemplateId != nil && len(*s.TaskTemplateId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TaskTemplateId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *GetTaskTemplateInput) SetInstanceId(v string) *GetTaskTemplateInput {
	s.InstanceId = &v
	return s
}

// SetSnapshotVersion sets the SnapshotVersion field's value.
func (s *GetTaskTemplateInput) SetSnapshotVersion(v string) *GetTaskTemplateInput {
	s.SnapshotVersion = &v
	return s
}

// SetTaskTemplateId sets the TaskTemplateId field's value.
func (s *GetTaskTemplateInput) SetTaskTemplateId(v string) *GetTaskTemplateInput {
	s.TaskTemplateId = &v
	return s
}

type GetTaskTemplateOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN).
	//
	// Arn is a required field
	Arn *string `min:"1" type:"string" required:"true"`

	// Constraints that are applicable to the fields listed.
	Constraints *TaskTemplateConstraints `type:"structure"`

	// The identifier of the flow that runs by default when a task is created by
	// referencing this template.
	ContactFlowId *string `type:"string"`

	// The timestamp when the task template was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The default values for fields when a task is created by referencing this
	// template.
	Defaults *TaskTemplateDefaults `type:"structure"`

	// The description of the task template.
	Description *string `min:"1" type:"string"`

	// Fields that are part of the template.
	Fields []*TaskTemplateField `type:"list"`

	// A unique identifier for the task template.
	//
	// Id is a required field
	Id *string `min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	InstanceId *string `min:"1" type:"string"`

	// The timestamp when the task template was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The name of the task template.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// Marks a template as ACTIVE or INACTIVE for a task to refer to it. Tasks can
	// only be created from ACTIVE templates. If a template is marked as INACTIVE,
	// then a task that refers to this template cannot be created.
	Status *string `type:"string" enum:"TaskTemplateStatus"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTaskTemplateOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTaskTemplateOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *GetTaskTemplateOutput) SetArn(v string) *GetTaskTemplateOutput {
	s.Arn = &v
	return s
}

// SetConstraints sets the Constraints field's value.
func (s *GetTaskTemplateOutput) SetConstraints(v *TaskTemplateConstraints) *GetTaskTemplateOutput {
	s.Constraints = v
	return s
}

// SetContactFlowId sets the ContactFlowId field's value.
func (s *GetTaskTemplateOutput) SetContactFlowId(v string) *GetTaskTemplateOutput {
	s.ContactFlowId = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *GetTaskTemplateOutput) SetCreatedTime(v time.Time) *GetTaskTemplateOutput {
	s.CreatedTime = &v
	return s
}

// SetDefaults sets the Defaults field's value.
func (s *GetTaskTemplateOutput) SetDefaults(v *TaskTemplateDefaults) *GetTaskTemplateOutput {
	s.Defaults = v
	return s
}

// SetDescription sets the Description field's value.
func (s *GetTaskTemplateOutput) SetDescription(v string) *GetTaskTemplateOutput {
	s.Description = &v
	return s
}

// SetFields sets the Fields field's value.
func (s *GetTaskTemplateOutput) SetFields(v []*TaskTemplateField) *GetTaskTemplateOutput {
	s.Fields = v
	return s
}

// SetId sets the Id field's value.
func (s *GetTaskTemplateOutput) SetId(v string) *GetTaskTemplateOutput {
	s.Id = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *GetTaskTemplateOutput) SetInstanceId(v string) *GetTaskTemplateOutput {
	s.InstanceId = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *GetTaskTemplateOutput) SetLastModifiedTime(v time.Time) *GetTaskTemplateOutput {
	s.LastModifiedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetTaskTemplateOutput) SetName(v string) *GetTaskTemplateOutput {
	s.Name = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetTaskTemplateOutput) SetStatus(v string) *GetTaskTemplateOutput {
	s.Status = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *GetTaskTemplateOutput) SetTags(v map[string]*string) *GetTaskTemplateOutput {
	s.Tags = v
	return s
}

type GetTrafficDistributionInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the traffic distribution group. This can be the ID or the
	// ARN if the API is being called in the Region where the traffic distribution
	// group was created. The ARN must be provided if the call is from the replicated
	// Region.
	//
	// Id is a required field
	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTrafficDistributionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTrafficDistributionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetTrafficDistributionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetTrafficDistributionInput"}
	if s.Id == nil {
		invalidParams.Add(request.NewErrParamRequired("Id"))
	}
	if s.Id != nil && len(*s.Id) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetId sets the Id field's value.
func (s *GetTrafficDistributionInput) SetId(v string) *GetTrafficDistributionInput {
	s.Id = &v
	return s
}

type GetTrafficDistributionOutput struct {
	_ struct{} `type:"structure"`

	// The distribution of agents between the instance and its replica(s).
	AgentConfig *AgentConfig `type:"structure"`

	// The Amazon Resource Name (ARN) of the traffic distribution group.
	Arn *string `type:"string"`

	// The identifier of the traffic distribution group. This can be the ID or the
	// ARN if the API is being called in the Region where the traffic distribution
	// group was created. The ARN must be provided if the call is from the replicated
	// Region.
	Id *string `type:"string"`

	// The distribution that determines which Amazon Web Services Regions should
	// be used to sign in agents in to both the instance and its replica(s).
	SignInConfig *SignInConfig `type:"structure"`

	// The distribution of traffic between the instance and its replicas.
	TelephonyConfig *TelephonyConfig `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 GetTrafficDistributionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTrafficDistributionOutput) GoString() string {
	return s.String()
}

// SetAgentConfig sets the AgentConfig field's value.
func (s *GetTrafficDistributionOutput) SetAgentConfig(v *AgentConfig) *GetTrafficDistributionOutput {
	s.AgentConfig = v
	return s
}

// SetArn sets the Arn field's value.
func (s *GetTrafficDistributionOutput) SetArn(v string) *GetTrafficDistributionOutput {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *GetTrafficDistributionOutput) SetId(v string) *GetTrafficDistributionOutput {
	s.Id = &v
	return s
}

// SetSignInConfig sets the SignInConfig field's value.
func (s *GetTrafficDistributionOutput) SetSignInConfig(v *SignInConfig) *GetTrafficDistributionOutput {
	s.SignInConfig = v
	return s
}

// SetTelephonyConfig sets the TelephonyConfig field's value.
func (s *GetTrafficDistributionOutput) SetTelephonyConfig(v *TelephonyConfig) *GetTrafficDistributionOutput {
	s.TelephonyConfig = v
	return s
}

// Contains information about a hierarchy group.
type HierarchyGroup struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the hierarchy group.
	Arn *string `type:"string"`

	// Information about the levels in the hierarchy group.
	HierarchyPath *HierarchyPath `type:"structure"`

	// The identifier of the hierarchy group.
	Id *string `type:"string"`

	// The Amazon Web Services Region where this resource was last modified.
	LastModifiedRegion *string `type:"string"`

	// The timestamp when this resource was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The identifier of the level in the hierarchy group.
	LevelId *string `type:"string"`

	// The name of the hierarchy group.
	Name *string `type:"string"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HierarchyGroup) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HierarchyGroup) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *HierarchyGroup) SetArn(v string) *HierarchyGroup {
	s.Arn = &v
	return s
}

// SetHierarchyPath sets the HierarchyPath field's value.
func (s *HierarchyGroup) SetHierarchyPath(v *HierarchyPath) *HierarchyGroup {
	s.HierarchyPath = v
	return s
}

// SetId sets the Id field's value.
func (s *HierarchyGroup) SetId(v string) *HierarchyGroup {
	s.Id = &v
	return s
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *HierarchyGroup) SetLastModifiedRegion(v string) *HierarchyGroup {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *HierarchyGroup) SetLastModifiedTime(v time.Time) *HierarchyGroup {
	s.LastModifiedTime = &v
	return s
}

// SetLevelId sets the LevelId field's value.
func (s *HierarchyGroup) SetLevelId(v string) *HierarchyGroup {
	s.LevelId = &v
	return s
}

// SetName sets the Name field's value.
func (s *HierarchyGroup) SetName(v string) *HierarchyGroup {
	s.Name = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *HierarchyGroup) SetTags(v map[string]*string) *HierarchyGroup {
	s.Tags = v
	return s
}

// A leaf node condition which can be used to specify a hierarchy group condition.
type HierarchyGroupCondition struct {
	_ struct{} `type:"structure"`

	// The type of hierarchy group match.
	HierarchyGroupMatchType *string `type:"string" enum:"HierarchyGroupMatchType"`

	// The value in the hierarchy group condition.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HierarchyGroupCondition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HierarchyGroupCondition) GoString() string {
	return s.String()
}

// SetHierarchyGroupMatchType sets the HierarchyGroupMatchType field's value.
func (s *HierarchyGroupCondition) SetHierarchyGroupMatchType(v string) *HierarchyGroupCondition {
	s.HierarchyGroupMatchType = &v
	return s
}

// SetValue sets the Value field's value.
func (s *HierarchyGroupCondition) SetValue(v string) *HierarchyGroupCondition {
	s.Value = &v
	return s
}

// Contains summary information about a hierarchy group.
type HierarchyGroupSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the hierarchy group.
	Arn *string `type:"string"`

	// The identifier of the hierarchy group.
	Id *string `type:"string"`

	// The Amazon Web Services Region where this resource was last modified.
	LastModifiedRegion *string `type:"string"`

	// The timestamp when this resource was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The name of the hierarchy group.
	Name *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HierarchyGroupSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HierarchyGroupSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *HierarchyGroupSummary) SetArn(v string) *HierarchyGroupSummary {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *HierarchyGroupSummary) SetId(v string) *HierarchyGroupSummary {
	s.Id = &v
	return s
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *HierarchyGroupSummary) SetLastModifiedRegion(v string) *HierarchyGroupSummary {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *HierarchyGroupSummary) SetLastModifiedTime(v time.Time) *HierarchyGroupSummary {
	s.LastModifiedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *HierarchyGroupSummary) SetName(v string) *HierarchyGroupSummary {
	s.Name = &v
	return s
}

// Information about the hierarchy group.
type HierarchyGroupSummaryReference struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the hierarchy group.
	Arn *string `type:"string"`

	// The unique identifier for the hierarchy group.
	Id *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HierarchyGroupSummaryReference) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HierarchyGroupSummaryReference) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *HierarchyGroupSummaryReference) SetArn(v string) *HierarchyGroupSummaryReference {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *HierarchyGroupSummaryReference) SetId(v string) *HierarchyGroupSummaryReference {
	s.Id = &v
	return s
}

// Contains information about a hierarchy level.
type HierarchyLevel struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the hierarchy level.
	Arn *string `type:"string"`

	// The identifier of the hierarchy level.
	Id *string `type:"string"`

	// The Amazon Web Services Region where this resource was last modified.
	LastModifiedRegion *string `type:"string"`

	// The timestamp when this resource was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The name of the hierarchy level.
	Name *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HierarchyLevel) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HierarchyLevel) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *HierarchyLevel) SetArn(v string) *HierarchyLevel {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *HierarchyLevel) SetId(v string) *HierarchyLevel {
	s.Id = &v
	return s
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *HierarchyLevel) SetLastModifiedRegion(v string) *HierarchyLevel {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *HierarchyLevel) SetLastModifiedTime(v time.Time) *HierarchyLevel {
	s.LastModifiedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *HierarchyLevel) SetName(v string) *HierarchyLevel {
	s.Name = &v
	return s
}

// Contains information about the hierarchy level to update.
type HierarchyLevelUpdate struct {
	_ struct{} `type:"structure"`

	// The name of the user hierarchy level. Must not be more than 50 characters.
	//
	// Name is a required field
	Name *string `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 HierarchyLevelUpdate) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HierarchyLevelUpdate) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *HierarchyLevelUpdate) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "HierarchyLevelUpdate"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *HierarchyLevelUpdate) SetName(v string) *HierarchyLevelUpdate {
	s.Name = &v
	return s
}

// Contains information about the levels of a hierarchy group.
type HierarchyPath struct {
	_ struct{} `type:"structure"`

	// Information about level five.
	LevelFive *HierarchyGroupSummary `type:"structure"`

	// Information about level four.
	LevelFour *HierarchyGroupSummary `type:"structure"`

	// Information about level one.
	LevelOne *HierarchyGroupSummary `type:"structure"`

	// Information about level three.
	LevelThree *HierarchyGroupSummary `type:"structure"`

	// Information about level two.
	LevelTwo *HierarchyGroupSummary `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 HierarchyPath) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HierarchyPath) GoString() string {
	return s.String()
}

// SetLevelFive sets the LevelFive field's value.
func (s *HierarchyPath) SetLevelFive(v *HierarchyGroupSummary) *HierarchyPath {
	s.LevelFive = v
	return s
}

// SetLevelFour sets the LevelFour field's value.
func (s *HierarchyPath) SetLevelFour(v *HierarchyGroupSummary) *HierarchyPath {
	s.LevelFour = v
	return s
}

// SetLevelOne sets the LevelOne field's value.
func (s *HierarchyPath) SetLevelOne(v *HierarchyGroupSummary) *HierarchyPath {
	s.LevelOne = v
	return s
}

// SetLevelThree sets the LevelThree field's value.
func (s *HierarchyPath) SetLevelThree(v *HierarchyGroupSummary) *HierarchyPath {
	s.LevelThree = v
	return s
}

// SetLevelTwo sets the LevelTwo field's value.
func (s *HierarchyPath) SetLevelTwo(v *HierarchyGroupSummary) *HierarchyPath {
	s.LevelTwo = v
	return s
}

// Information about the levels in the hierarchy group.
type HierarchyPathReference struct {
	_ struct{} `type:"structure"`

	// Information about level five.
	LevelFive *HierarchyGroupSummaryReference `type:"structure"`

	// Information about level four.
	LevelFour *HierarchyGroupSummaryReference `type:"structure"`

	// Information about level one.
	LevelOne *HierarchyGroupSummaryReference `type:"structure"`

	// Information about level three.
	LevelThree *HierarchyGroupSummaryReference `type:"structure"`

	// Information about level two.
	LevelTwo *HierarchyGroupSummaryReference `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 HierarchyPathReference) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HierarchyPathReference) GoString() string {
	return s.String()
}

// SetLevelFive sets the LevelFive field's value.
func (s *HierarchyPathReference) SetLevelFive(v *HierarchyGroupSummaryReference) *HierarchyPathReference {
	s.LevelFive = v
	return s
}

// SetLevelFour sets the LevelFour field's value.
func (s *HierarchyPathReference) SetLevelFour(v *HierarchyGroupSummaryReference) *HierarchyPathReference {
	s.LevelFour = v
	return s
}

// SetLevelOne sets the LevelOne field's value.
func (s *HierarchyPathReference) SetLevelOne(v *HierarchyGroupSummaryReference) *HierarchyPathReference {
	s.LevelOne = v
	return s
}

// SetLevelThree sets the LevelThree field's value.
func (s *HierarchyPathReference) SetLevelThree(v *HierarchyGroupSummaryReference) *HierarchyPathReference {
	s.LevelThree = v
	return s
}

// SetLevelTwo sets the LevelTwo field's value.
func (s *HierarchyPathReference) SetLevelTwo(v *HierarchyGroupSummaryReference) *HierarchyPathReference {
	s.LevelTwo = v
	return s
}

// Contains information about a hierarchy structure.
type HierarchyStructure struct {
	_ struct{} `type:"structure"`

	// Information about level five.
	LevelFive *HierarchyLevel `type:"structure"`

	// Information about level four.
	LevelFour *HierarchyLevel `type:"structure"`

	// Information about level one.
	LevelOne *HierarchyLevel `type:"structure"`

	// Information about level three.
	LevelThree *HierarchyLevel `type:"structure"`

	// Information about level two.
	LevelTwo *HierarchyLevel `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 HierarchyStructure) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HierarchyStructure) GoString() string {
	return s.String()
}

// SetLevelFive sets the LevelFive field's value.
func (s *HierarchyStructure) SetLevelFive(v *HierarchyLevel) *HierarchyStructure {
	s.LevelFive = v
	return s
}

// SetLevelFour sets the LevelFour field's value.
func (s *HierarchyStructure) SetLevelFour(v *HierarchyLevel) *HierarchyStructure {
	s.LevelFour = v
	return s
}

// SetLevelOne sets the LevelOne field's value.
func (s *HierarchyStructure) SetLevelOne(v *HierarchyLevel) *HierarchyStructure {
	s.LevelOne = v
	return s
}

// SetLevelThree sets the LevelThree field's value.
func (s *HierarchyStructure) SetLevelThree(v *HierarchyLevel) *HierarchyStructure {
	s.LevelThree = v
	return s
}

// SetLevelTwo sets the LevelTwo field's value.
func (s *HierarchyStructure) SetLevelTwo(v *HierarchyLevel) *HierarchyStructure {
	s.LevelTwo = v
	return s
}

// Contains information about the level hierarchy to update.
type HierarchyStructureUpdate struct {
	_ struct{} `type:"structure"`

	// The update for level five.
	LevelFive *HierarchyLevelUpdate `type:"structure"`

	// The update for level four.
	LevelFour *HierarchyLevelUpdate `type:"structure"`

	// The update for level one.
	LevelOne *HierarchyLevelUpdate `type:"structure"`

	// The update for level three.
	LevelThree *HierarchyLevelUpdate `type:"structure"`

	// The update for level two.
	LevelTwo *HierarchyLevelUpdate `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 HierarchyStructureUpdate) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HierarchyStructureUpdate) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *HierarchyStructureUpdate) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "HierarchyStructureUpdate"}
	if s.LevelFive != nil {
		if err := s.LevelFive.Validate(); err != nil {
			invalidParams.AddNested("LevelFive", err.(request.ErrInvalidParams))
		}
	}
	if s.LevelFour != nil {
		if err := s.LevelFour.Validate(); err != nil {
			invalidParams.AddNested("LevelFour", err.(request.ErrInvalidParams))
		}
	}
	if s.LevelOne != nil {
		if err := s.LevelOne.Validate(); err != nil {
			invalidParams.AddNested("LevelOne", err.(request.ErrInvalidParams))
		}
	}
	if s.LevelThree != nil {
		if err := s.LevelThree.Validate(); err != nil {
			invalidParams.AddNested("LevelThree", err.(request.ErrInvalidParams))
		}
	}
	if s.LevelTwo != nil {
		if err := s.LevelTwo.Validate(); err != nil {
			invalidParams.AddNested("LevelTwo", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetLevelFive sets the LevelFive field's value.
func (s *HierarchyStructureUpdate) SetLevelFive(v *HierarchyLevelUpdate) *HierarchyStructureUpdate {
	s.LevelFive = v
	return s
}

// SetLevelFour sets the LevelFour field's value.
func (s *HierarchyStructureUpdate) SetLevelFour(v *HierarchyLevelUpdate) *HierarchyStructureUpdate {
	s.LevelFour = v
	return s
}

// SetLevelOne sets the LevelOne field's value.
func (s *HierarchyStructureUpdate) SetLevelOne(v *HierarchyLevelUpdate) *HierarchyStructureUpdate {
	s.LevelOne = v
	return s
}

// SetLevelThree sets the LevelThree field's value.
func (s *HierarchyStructureUpdate) SetLevelThree(v *HierarchyLevelUpdate) *HierarchyStructureUpdate {
	s.LevelThree = v
	return s
}

// SetLevelTwo sets the LevelTwo field's value.
func (s *HierarchyStructureUpdate) SetLevelTwo(v *HierarchyLevelUpdate) *HierarchyStructureUpdate {
	s.LevelTwo = v
	return s
}

// Contains information about a historical metric. For a description of each
// metric, see Historical Metrics Definitions (https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html)
// in the Amazon Connect Administrator Guide.
type HistoricalMetric struct {
	_ struct{} `type:"structure"`

	// The name of the metric.
	Name *string `type:"string" enum:"HistoricalMetricName"`

	// The statistic for the metric.
	Statistic *string `type:"string" enum:"Statistic"`

	// The threshold for the metric, used with service level metrics.
	Threshold *Threshold `type:"structure"`

	// The unit for the metric.
	Unit *string `type:"string" enum:"Unit"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HistoricalMetric) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HistoricalMetric) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *HistoricalMetric) SetName(v string) *HistoricalMetric {
	s.Name = &v
	return s
}

// SetStatistic sets the Statistic field's value.
func (s *HistoricalMetric) SetStatistic(v string) *HistoricalMetric {
	s.Statistic = &v
	return s
}

// SetThreshold sets the Threshold field's value.
func (s *HistoricalMetric) SetThreshold(v *Threshold) *HistoricalMetric {
	s.Threshold = v
	return s
}

// SetUnit sets the Unit field's value.
func (s *HistoricalMetric) SetUnit(v string) *HistoricalMetric {
	s.Unit = &v
	return s
}

// Contains the data for a historical metric.
type HistoricalMetricData struct {
	_ struct{} `type:"structure"`

	// Information about the metric.
	Metric *HistoricalMetric `type:"structure"`

	// The value of the metric.
	Value *float64 `type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HistoricalMetricData) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HistoricalMetricData) GoString() string {
	return s.String()
}

// SetMetric sets the Metric field's value.
func (s *HistoricalMetricData) SetMetric(v *HistoricalMetric) *HistoricalMetricData {
	s.Metric = v
	return s
}

// SetValue sets the Value field's value.
func (s *HistoricalMetricData) SetValue(v float64) *HistoricalMetricData {
	s.Value = &v
	return s
}

// Contains information about the historical metrics retrieved.
type HistoricalMetricResult struct {
	_ struct{} `type:"structure"`

	// The set of metrics.
	Collections []*HistoricalMetricData `type:"list"`

	// The dimension for the metrics.
	Dimensions *Dimensions `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 HistoricalMetricResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HistoricalMetricResult) GoString() string {
	return s.String()
}

// SetCollections sets the Collections field's value.
func (s *HistoricalMetricResult) SetCollections(v []*HistoricalMetricData) *HistoricalMetricResult {
	s.Collections = v
	return s
}

// SetDimensions sets the Dimensions field's value.
func (s *HistoricalMetricResult) SetDimensions(v *Dimensions) *HistoricalMetricResult {
	s.Dimensions = v
	return s
}

// Information about of the hours of operation.
type HoursOfOperation struct {
	_ struct{} `type:"structure"`

	// Configuration information for the hours of operation.
	Config []*HoursOfOperationConfig `type:"list"`

	// The description for the hours of operation.
	Description *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) for the hours of operation.
	HoursOfOperationArn *string `type:"string"`

	// The identifier for the hours of operation.
	HoursOfOperationId *string `type:"string"`

	// The Amazon Web Services Region where this resource was last modified.
	LastModifiedRegion *string `type:"string"`

	// The timestamp when this resource was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The name for the hours of operation.
	Name *string `min:"1" type:"string"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`

	// The time zone for the hours of operation.
	TimeZone *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HoursOfOperation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HoursOfOperation) GoString() string {
	return s.String()
}

// SetConfig sets the Config field's value.
func (s *HoursOfOperation) SetConfig(v []*HoursOfOperationConfig) *HoursOfOperation {
	s.Config = v
	return s
}

// SetDescription sets the Description field's value.
func (s *HoursOfOperation) SetDescription(v string) *HoursOfOperation {
	s.Description = &v
	return s
}

// SetHoursOfOperationArn sets the HoursOfOperationArn field's value.
func (s *HoursOfOperation) SetHoursOfOperationArn(v string) *HoursOfOperation {
	s.HoursOfOperationArn = &v
	return s
}

// SetHoursOfOperationId sets the HoursOfOperationId field's value.
func (s *HoursOfOperation) SetHoursOfOperationId(v string) *HoursOfOperation {
	s.HoursOfOperationId = &v
	return s
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *HoursOfOperation) SetLastModifiedRegion(v string) *HoursOfOperation {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *HoursOfOperation) SetLastModifiedTime(v time.Time) *HoursOfOperation {
	s.LastModifiedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *HoursOfOperation) SetName(v string) *HoursOfOperation {
	s.Name = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *HoursOfOperation) SetTags(v map[string]*string) *HoursOfOperation {
	s.Tags = v
	return s
}

// SetTimeZone sets the TimeZone field's value.
func (s *HoursOfOperation) SetTimeZone(v string) *HoursOfOperation {
	s.TimeZone = &v
	return s
}

// Contains information about the hours of operation.
type HoursOfOperationConfig struct {
	_ struct{} `type:"structure"`

	// The day that the hours of operation applies to.
	//
	// Day is a required field
	Day *string `type:"string" required:"true" enum:"HoursOfOperationDays"`

	// The end time that your contact center closes.
	//
	// EndTime is a required field
	EndTime *HoursOfOperationTimeSlice `type:"structure" required:"true"`

	// The start time that your contact center opens.
	//
	// StartTime is a required field
	StartTime *HoursOfOperationTimeSlice `type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HoursOfOperationConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HoursOfOperationConfig) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *HoursOfOperationConfig) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "HoursOfOperationConfig"}
	if s.Day == nil {
		invalidParams.Add(request.NewErrParamRequired("Day"))
	}
	if s.EndTime == nil {
		invalidParams.Add(request.NewErrParamRequired("EndTime"))
	}
	if s.StartTime == nil {
		invalidParams.Add(request.NewErrParamRequired("StartTime"))
	}
	if s.EndTime != nil {
		if err := s.EndTime.Validate(); err != nil {
			invalidParams.AddNested("EndTime", err.(request.ErrInvalidParams))
		}
	}
	if s.StartTime != nil {
		if err := s.StartTime.Validate(); err != nil {
			invalidParams.AddNested("StartTime", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDay sets the Day field's value.
func (s *HoursOfOperationConfig) SetDay(v string) *HoursOfOperationConfig {
	s.Day = &v
	return s
}

// SetEndTime sets the EndTime field's value.
func (s *HoursOfOperationConfig) SetEndTime(v *HoursOfOperationTimeSlice) *HoursOfOperationConfig {
	s.EndTime = v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *HoursOfOperationConfig) SetStartTime(v *HoursOfOperationTimeSlice) *HoursOfOperationConfig {
	s.StartTime = v
	return s
}

// The search criteria to be used to return hours of operations.
type HoursOfOperationSearchCriteria struct {
	_ struct{} `type:"structure"`

	// A list of conditions which would be applied together with an AND condition.
	AndConditions []*HoursOfOperationSearchCriteria `type:"list"`

	// A list of conditions which would be applied together with an OR condition.
	OrConditions []*HoursOfOperationSearchCriteria `type:"list"`

	// A leaf node condition which can be used to specify a string condition.
	//
	// The currently supported values for FieldName are name, description, timezone,
	// and resourceID.
	StringCondition *StringCondition `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 HoursOfOperationSearchCriteria) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HoursOfOperationSearchCriteria) GoString() string {
	return s.String()
}

// SetAndConditions sets the AndConditions field's value.
func (s *HoursOfOperationSearchCriteria) SetAndConditions(v []*HoursOfOperationSearchCriteria) *HoursOfOperationSearchCriteria {
	s.AndConditions = v
	return s
}

// SetOrConditions sets the OrConditions field's value.
func (s *HoursOfOperationSearchCriteria) SetOrConditions(v []*HoursOfOperationSearchCriteria) *HoursOfOperationSearchCriteria {
	s.OrConditions = v
	return s
}

// SetStringCondition sets the StringCondition field's value.
func (s *HoursOfOperationSearchCriteria) SetStringCondition(v *StringCondition) *HoursOfOperationSearchCriteria {
	s.StringCondition = v
	return s
}

// Filters to be applied to search results.
type HoursOfOperationSearchFilter struct {
	_ struct{} `type:"structure"`

	// An object that can be used to specify Tag conditions inside the SearchFilter.
	// This accepts an OR of AND (List of List) input where:
	//
	//    * Top level list specifies conditions that need to be applied with OR
	//    operator
	//
	//    * Inner list specifies conditions that need to be applied with AND operator.
	TagFilter *ControlPlaneTagFilter `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 HoursOfOperationSearchFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HoursOfOperationSearchFilter) GoString() string {
	return s.String()
}

// SetTagFilter sets the TagFilter field's value.
func (s *HoursOfOperationSearchFilter) SetTagFilter(v *ControlPlaneTagFilter) *HoursOfOperationSearchFilter {
	s.TagFilter = v
	return s
}

// Contains summary information about hours of operation for a contact center.
type HoursOfOperationSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the hours of operation.
	Arn *string `type:"string"`

	// The identifier of the hours of operation.
	Id *string `type:"string"`

	// The Amazon Web Services Region where this resource was last modified.
	LastModifiedRegion *string `type:"string"`

	// The timestamp when this resource was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The name of the hours of operation.
	Name *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HoursOfOperationSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HoursOfOperationSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *HoursOfOperationSummary) SetArn(v string) *HoursOfOperationSummary {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *HoursOfOperationSummary) SetId(v string) *HoursOfOperationSummary {
	s.Id = &v
	return s
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *HoursOfOperationSummary) SetLastModifiedRegion(v string) *HoursOfOperationSummary {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *HoursOfOperationSummary) SetLastModifiedTime(v time.Time) *HoursOfOperationSummary {
	s.LastModifiedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *HoursOfOperationSummary) SetName(v string) *HoursOfOperationSummary {
	s.Name = &v
	return s
}

// The start time or end time for an hours of operation.
type HoursOfOperationTimeSlice struct {
	_ struct{} `type:"structure"`

	// The hours.
	//
	// Hours is a required field
	Hours *int64 `type:"integer" required:"true"`

	// The minutes.
	//
	// Minutes is a required field
	Minutes *int64 `type:"integer" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HoursOfOperationTimeSlice) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HoursOfOperationTimeSlice) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *HoursOfOperationTimeSlice) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "HoursOfOperationTimeSlice"}
	if s.Hours == nil {
		invalidParams.Add(request.NewErrParamRequired("Hours"))
	}
	if s.Minutes == nil {
		invalidParams.Add(request.NewErrParamRequired("Minutes"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetHours sets the Hours field's value.
func (s *HoursOfOperationTimeSlice) SetHours(v int64) *HoursOfOperationTimeSlice {
	s.Hours = &v
	return s
}

// SetMinutes sets the Minutes field's value.
func (s *HoursOfOperationTimeSlice) SetMinutes(v int64) *HoursOfOperationTimeSlice {
	s.Minutes = &v
	return s
}

// An entity with the same name already exists.
type IdempotencyException 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 IdempotencyException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IdempotencyException) GoString() string {
	return s.String()
}

func newErrorIdempotencyException(v protocol.ResponseMetadata) error {
	return &IdempotencyException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *IdempotencyException) Code() string {
	return "IdempotencyException"
}

// Message returns the exception's message.
func (s *IdempotencyException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *IdempotencyException) OrigErr() error {
	return nil
}

func (s *IdempotencyException) 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 *IdempotencyException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *IdempotencyException) RequestID() string {
	return s.RespMetadata.RequestID
}

type ImportPhoneNumberInput struct {
	_ struct{} `type:"structure"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// The description of the phone number.
	PhoneNumberDescription *string `type:"string"`

	// The claimed phone number ARN being imported from the external service, such
	// as Amazon Pinpoint. If it is from Amazon Pinpoint, it looks like the ARN
	// of the phone number to import from Amazon Pinpoint.
	//
	// SourcePhoneNumberArn is a required field
	SourcePhoneNumberArn *string `type:"string" required:"true"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImportPhoneNumberInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImportPhoneNumberInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ImportPhoneNumberInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ImportPhoneNumberInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.SourcePhoneNumberArn == nil {
		invalidParams.Add(request.NewErrParamRequired("SourcePhoneNumberArn"))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *ImportPhoneNumberInput) SetClientToken(v string) *ImportPhoneNumberInput {
	s.ClientToken = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *ImportPhoneNumberInput) SetInstanceId(v string) *ImportPhoneNumberInput {
	s.InstanceId = &v
	return s
}

// SetPhoneNumberDescription sets the PhoneNumberDescription field's value.
func (s *ImportPhoneNumberInput) SetPhoneNumberDescription(v string) *ImportPhoneNumberInput {
	s.PhoneNumberDescription = &v
	return s
}

// SetSourcePhoneNumberArn sets the SourcePhoneNumberArn field's value.
func (s *ImportPhoneNumberInput) SetSourcePhoneNumberArn(v string) *ImportPhoneNumberInput {
	s.SourcePhoneNumberArn = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *ImportPhoneNumberInput) SetTags(v map[string]*string) *ImportPhoneNumberInput {
	s.Tags = v
	return s
}

type ImportPhoneNumberOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the phone number.
	PhoneNumberArn *string `type:"string"`

	// A unique identifier for the phone number.
	PhoneNumberId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImportPhoneNumberOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImportPhoneNumberOutput) GoString() string {
	return s.String()
}

// SetPhoneNumberArn sets the PhoneNumberArn field's value.
func (s *ImportPhoneNumberOutput) SetPhoneNumberArn(v string) *ImportPhoneNumberOutput {
	s.PhoneNumberArn = &v
	return s
}

// SetPhoneNumberId sets the PhoneNumberId field's value.
func (s *ImportPhoneNumberOutput) SetPhoneNumberId(v string) *ImportPhoneNumberOutput {
	s.PhoneNumberId = &v
	return s
}

// The Amazon Connect instance.
type Instance struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the instance.
	Arn *string `type:"string"`

	// When the instance was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	Id *string `min:"1" type:"string"`

	// The identity management type.
	IdentityManagementType *string `type:"string" enum:"DirectoryType"`

	// Whether inbound calls are enabled.
	InboundCallsEnabled *bool `type:"boolean"`

	// This URL allows contact center users to access the Amazon Connect admin website.
	InstanceAccessUrl *string `type:"string"`

	// The alias of instance.
	//
	// InstanceAlias is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Instance's
	// String and GoString methods.
	InstanceAlias *string `min:"1" type:"string" sensitive:"true"`

	// The state of the instance.
	InstanceStatus *string `type:"string" enum:"InstanceStatus"`

	// Whether outbound calls are enabled.
	OutboundCallsEnabled *bool `type:"boolean"`

	// The service role of the instance.
	ServiceRole *string `type:"string"`

	// Relevant details why the instance was not successfully created.
	StatusReason *InstanceStatusReason `type:"structure"`

	// The tags of an instance.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Instance) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Instance) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *Instance) SetArn(v string) *Instance {
	s.Arn = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *Instance) SetCreatedTime(v time.Time) *Instance {
	s.CreatedTime = &v
	return s
}

// SetId sets the Id field's value.
func (s *Instance) SetId(v string) *Instance {
	s.Id = &v
	return s
}

// SetIdentityManagementType sets the IdentityManagementType field's value.
func (s *Instance) SetIdentityManagementType(v string) *Instance {
	s.IdentityManagementType = &v
	return s
}

// SetInboundCallsEnabled sets the InboundCallsEnabled field's value.
func (s *Instance) SetInboundCallsEnabled(v bool) *Instance {
	s.InboundCallsEnabled = &v
	return s
}

// SetInstanceAccessUrl sets the InstanceAccessUrl field's value.
func (s *Instance) SetInstanceAccessUrl(v string) *Instance {
	s.InstanceAccessUrl = &v
	return s
}

// SetInstanceAlias sets the InstanceAlias field's value.
func (s *Instance) SetInstanceAlias(v string) *Instance {
	s.InstanceAlias = &v
	return s
}

// SetInstanceStatus sets the InstanceStatus field's value.
func (s *Instance) SetInstanceStatus(v string) *Instance {
	s.InstanceStatus = &v
	return s
}

// SetOutboundCallsEnabled sets the OutboundCallsEnabled field's value.
func (s *Instance) SetOutboundCallsEnabled(v bool) *Instance {
	s.OutboundCallsEnabled = &v
	return s
}

// SetServiceRole sets the ServiceRole field's value.
func (s *Instance) SetServiceRole(v string) *Instance {
	s.ServiceRole = &v
	return s
}

// SetStatusReason sets the StatusReason field's value.
func (s *Instance) SetStatusReason(v *InstanceStatusReason) *Instance {
	s.StatusReason = v
	return s
}

// SetTags sets the Tags field's value.
func (s *Instance) SetTags(v map[string]*string) *Instance {
	s.Tags = v
	return s
}

// Relevant details why the instance was not successfully created.
type InstanceStatusReason struct {
	_ struct{} `type:"structure"`

	// The message.
	Message *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceStatusReason) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceStatusReason) GoString() string {
	return s.String()
}

// SetMessage sets the Message field's value.
func (s *InstanceStatusReason) SetMessage(v string) *InstanceStatusReason {
	s.Message = &v
	return s
}

// The storage configuration for the instance.
type InstanceStorageConfig struct {
	_ struct{} `type:"structure"`

	// The existing association identifier that uniquely identifies the resource
	// type and storage config for the given instance ID.
	AssociationId *string `min:"1" type:"string"`

	// The configuration of the Kinesis Firehose delivery stream.
	KinesisFirehoseConfig *KinesisFirehoseConfig `type:"structure"`

	// The configuration of the Kinesis data stream.
	KinesisStreamConfig *KinesisStreamConfig `type:"structure"`

	// The configuration of the Kinesis video stream.
	KinesisVideoStreamConfig *KinesisVideoStreamConfig `type:"structure"`

	// The S3 bucket configuration.
	S3Config *S3Config `type:"structure"`

	// A valid storage type.
	//
	// StorageType is a required field
	StorageType *string `type:"string" required:"true" enum:"StorageType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceStorageConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceStorageConfig) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *InstanceStorageConfig) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "InstanceStorageConfig"}
	if s.AssociationId != nil && len(*s.AssociationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AssociationId", 1))
	}
	if s.StorageType == nil {
		invalidParams.Add(request.NewErrParamRequired("StorageType"))
	}
	if s.KinesisFirehoseConfig != nil {
		if err := s.KinesisFirehoseConfig.Validate(); err != nil {
			invalidParams.AddNested("KinesisFirehoseConfig", err.(request.ErrInvalidParams))
		}
	}
	if s.KinesisStreamConfig != nil {
		if err := s.KinesisStreamConfig.Validate(); err != nil {
			invalidParams.AddNested("KinesisStreamConfig", err.(request.ErrInvalidParams))
		}
	}
	if s.KinesisVideoStreamConfig != nil {
		if err := s.KinesisVideoStreamConfig.Validate(); err != nil {
			invalidParams.AddNested("KinesisVideoStreamConfig", err.(request.ErrInvalidParams))
		}
	}
	if s.S3Config != nil {
		if err := s.S3Config.Validate(); err != nil {
			invalidParams.AddNested("S3Config", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssociationId sets the AssociationId field's value.
func (s *InstanceStorageConfig) SetAssociationId(v string) *InstanceStorageConfig {
	s.AssociationId = &v
	return s
}

// SetKinesisFirehoseConfig sets the KinesisFirehoseConfig field's value.
func (s *InstanceStorageConfig) SetKinesisFirehoseConfig(v *KinesisFirehoseConfig) *InstanceStorageConfig {
	s.KinesisFirehoseConfig = v
	return s
}

// SetKinesisStreamConfig sets the KinesisStreamConfig field's value.
func (s *InstanceStorageConfig) SetKinesisStreamConfig(v *KinesisStreamConfig) *InstanceStorageConfig {
	s.KinesisStreamConfig = v
	return s
}

// SetKinesisVideoStreamConfig sets the KinesisVideoStreamConfig field's value.
func (s *InstanceStorageConfig) SetKinesisVideoStreamConfig(v *KinesisVideoStreamConfig) *InstanceStorageConfig {
	s.KinesisVideoStreamConfig = v
	return s
}

// SetS3Config sets the S3Config field's value.
func (s *InstanceStorageConfig) SetS3Config(v *S3Config) *InstanceStorageConfig {
	s.S3Config = v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *InstanceStorageConfig) SetStorageType(v string) *InstanceStorageConfig {
	s.StorageType = &v
	return s
}

// Information about the instance.
type InstanceSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the instance.
	Arn *string `type:"string"`

	// When the instance was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The identifier of the instance.
	Id *string `min:"1" type:"string"`

	// The identity management type of the instance.
	IdentityManagementType *string `type:"string" enum:"DirectoryType"`

	// Whether inbound calls are enabled.
	InboundCallsEnabled *bool `type:"boolean"`

	// This URL allows contact center users to access the Amazon Connect admin website.
	InstanceAccessUrl *string `type:"string"`

	// The alias of the instance.
	//
	// InstanceAlias is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by InstanceSummary's
	// String and GoString methods.
	InstanceAlias *string `min:"1" type:"string" sensitive:"true"`

	// The state of the instance.
	InstanceStatus *string `type:"string" enum:"InstanceStatus"`

	// Whether outbound calls are enabled.
	OutboundCallsEnabled *bool `type:"boolean"`

	// The service role of the instance.
	ServiceRole *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *InstanceSummary) SetArn(v string) *InstanceSummary {
	s.Arn = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *InstanceSummary) SetCreatedTime(v time.Time) *InstanceSummary {
	s.CreatedTime = &v
	return s
}

// SetId sets the Id field's value.
func (s *InstanceSummary) SetId(v string) *InstanceSummary {
	s.Id = &v
	return s
}

// SetIdentityManagementType sets the IdentityManagementType field's value.
func (s *InstanceSummary) SetIdentityManagementType(v string) *InstanceSummary {
	s.IdentityManagementType = &v
	return s
}

// SetInboundCallsEnabled sets the InboundCallsEnabled field's value.
func (s *InstanceSummary) SetInboundCallsEnabled(v bool) *InstanceSummary {
	s.InboundCallsEnabled = &v
	return s
}

// SetInstanceAccessUrl sets the InstanceAccessUrl field's value.
func (s *InstanceSummary) SetInstanceAccessUrl(v string) *InstanceSummary {
	s.InstanceAccessUrl = &v
	return s
}

// SetInstanceAlias sets the InstanceAlias field's value.
func (s *InstanceSummary) SetInstanceAlias(v string) *InstanceSummary {
	s.InstanceAlias = &v
	return s
}

// SetInstanceStatus sets the InstanceStatus field's value.
func (s *InstanceSummary) SetInstanceStatus(v string) *InstanceSummary {
	s.InstanceStatus = &v
	return s
}

// SetOutboundCallsEnabled sets the OutboundCallsEnabled field's value.
func (s *InstanceSummary) SetOutboundCallsEnabled(v bool) *InstanceSummary {
	s.OutboundCallsEnabled = &v
	return s
}

// SetServiceRole sets the ServiceRole field's value.
func (s *InstanceSummary) SetServiceRole(v string) *InstanceSummary {
	s.ServiceRole = &v
	return s
}

// Contains summary information about the associated AppIntegrations.
type IntegrationAssociationSummary struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	InstanceId *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) for the AppIntegration.
	IntegrationArn *string `type:"string"`

	// The Amazon Resource Name (ARN) for the AppIntegration association.
	IntegrationAssociationArn *string `type:"string"`

	// The identifier for the AppIntegration association.
	IntegrationAssociationId *string `min:"1" type:"string"`

	// The integration type.
	IntegrationType *string `type:"string" enum:"IntegrationType"`

	// The user-provided, friendly name for the external application.
	SourceApplicationName *string `min:"1" type:"string"`

	// The URL for the external application.
	SourceApplicationUrl *string `min:"1" type:"string"`

	// The name of the source.
	SourceType *string `type:"string" enum:"SourceType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IntegrationAssociationSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IntegrationAssociationSummary) GoString() string {
	return s.String()
}

// SetInstanceId sets the InstanceId field's value.
func (s *IntegrationAssociationSummary) SetInstanceId(v string) *IntegrationAssociationSummary {
	s.InstanceId = &v
	return s
}

// SetIntegrationArn sets the IntegrationArn field's value.
func (s *IntegrationAssociationSummary) SetIntegrationArn(v string) *IntegrationAssociationSummary {
	s.IntegrationArn = &v
	return s
}

// SetIntegrationAssociationArn sets the IntegrationAssociationArn field's value.
func (s *IntegrationAssociationSummary) SetIntegrationAssociationArn(v string) *IntegrationAssociationSummary {
	s.IntegrationAssociationArn = &v
	return s
}

// SetIntegrationAssociationId sets the IntegrationAssociationId field's value.
func (s *IntegrationAssociationSummary) SetIntegrationAssociationId(v string) *IntegrationAssociationSummary {
	s.IntegrationAssociationId = &v
	return s
}

// SetIntegrationType sets the IntegrationType field's value.
func (s *IntegrationAssociationSummary) SetIntegrationType(v string) *IntegrationAssociationSummary {
	s.IntegrationType = &v
	return s
}

// SetSourceApplicationName sets the SourceApplicationName field's value.
func (s *IntegrationAssociationSummary) SetSourceApplicationName(v string) *IntegrationAssociationSummary {
	s.SourceApplicationName = &v
	return s
}

// SetSourceApplicationUrl sets the SourceApplicationUrl field's value.
func (s *IntegrationAssociationSummary) SetSourceApplicationUrl(v string) *IntegrationAssociationSummary {
	s.SourceApplicationUrl = &v
	return s
}

// SetSourceType sets the SourceType field's value.
func (s *IntegrationAssociationSummary) SetSourceType(v string) *IntegrationAssociationSummary {
	s.SourceType = &v
	return s
}

// Request processing failed because of an error or failure with the service.
type InternalServiceException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The message.
	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 InternalServiceException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InternalServiceException) GoString() string {
	return s.String()
}

func newErrorInternalServiceException(v protocol.ResponseMetadata) error {
	return &InternalServiceException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InternalServiceException) Code() string {
	return "InternalServiceException"
}

// Message returns the exception's message.
func (s *InternalServiceException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InternalServiceException) OrigErr() error {
	return nil
}

func (s *InternalServiceException) 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 *InternalServiceException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InternalServiceException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Information about the interval period to use for returning results.
type IntervalDetails struct {
	_ struct{} `type:"structure"`

	// IntervalPeriod: An aggregated grouping applied to request metrics. Valid
	// IntervalPeriod values are: FIFTEEN_MIN | THIRTY_MIN | HOUR | DAY | WEEK |
	// TOTAL.
	//
	// For example, if IntervalPeriod is selected THIRTY_MIN, StartTime and EndTime
	// differs by 1 day, then Amazon Connect returns 48 results in the response.
	// Each result is aggregated by the THIRTY_MIN period. By default Amazon Connect
	// aggregates results based on the TOTAL interval period.
	//
	// The following list describes restrictions on StartTime and EndTime based
	// on what IntervalPeriod is requested.
	//
	//    * FIFTEEN_MIN: The difference between StartTime and EndTime must be less
	//    than 3 days.
	//
	//    * THIRTY_MIN: The difference between StartTime and EndTime must be less
	//    than 3 days.
	//
	//    * HOUR: The difference between StartTime and EndTime must be less than
	//    3 days.
	//
	//    * DAY: The difference between StartTime and EndTime must be less than
	//    35 days.
	//
	//    * WEEK: The difference between StartTime and EndTime must be less than
	//    35 days.
	//
	//    * TOTAL: The difference between StartTime and EndTime must be less than
	//    35 days.
	IntervalPeriod *string `type:"string" enum:"IntervalPeriod"`

	// The timezone applied to requested metrics.
	TimeZone *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IntervalDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IntervalDetails) GoString() string {
	return s.String()
}

// SetIntervalPeriod sets the IntervalPeriod field's value.
func (s *IntervalDetails) SetIntervalPeriod(v string) *IntervalDetails {
	s.IntervalPeriod = &v
	return s
}

// SetTimeZone sets the TimeZone field's value.
func (s *IntervalDetails) SetTimeZone(v string) *IntervalDetails {
	s.TimeZone = &v
	return s
}

// The flow is not valid.
type InvalidContactFlowException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`

	// The problems with the flow. Please fix before trying again.
	Problems []*ProblemDetail `locationName:"problems" min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidContactFlowException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidContactFlowException) GoString() string {
	return s.String()
}

func newErrorInvalidContactFlowException(v protocol.ResponseMetadata) error {
	return &InvalidContactFlowException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InvalidContactFlowException) Code() string {
	return "InvalidContactFlowException"
}

// Message returns the exception's message.
func (s *InvalidContactFlowException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InvalidContactFlowException) OrigErr() error {
	return nil
}

func (s *InvalidContactFlowException) 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 *InvalidContactFlowException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InvalidContactFlowException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The problems with the module. Please fix before trying again.
type InvalidContactFlowModuleException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`

	Problems []*ProblemDetail `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidContactFlowModuleException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidContactFlowModuleException) GoString() string {
	return s.String()
}

func newErrorInvalidContactFlowModuleException(v protocol.ResponseMetadata) error {
	return &InvalidContactFlowModuleException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InvalidContactFlowModuleException) Code() string {
	return "InvalidContactFlowModuleException"
}

// Message returns the exception's message.
func (s *InvalidContactFlowModuleException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InvalidContactFlowModuleException) OrigErr() error {
	return nil
}

func (s *InvalidContactFlowModuleException) 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 *InvalidContactFlowModuleException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InvalidContactFlowModuleException) RequestID() string {
	return s.RespMetadata.RequestID
}

// One or more of the specified parameters are not valid.
type InvalidParameterException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The message about the parameters.
	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 InvalidParameterException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidParameterException) GoString() string {
	return s.String()
}

func newErrorInvalidParameterException(v protocol.ResponseMetadata) error {
	return &InvalidParameterException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InvalidParameterException) Code() string {
	return "InvalidParameterException"
}

// Message returns the exception's message.
func (s *InvalidParameterException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InvalidParameterException) OrigErr() error {
	return nil
}

func (s *InvalidParameterException) 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 *InvalidParameterException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InvalidParameterException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The request is not valid.
type InvalidRequestException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The message about the request.
	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 InvalidRequestException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidRequestException) GoString() string {
	return s.String()
}

func newErrorInvalidRequestException(v protocol.ResponseMetadata) error {
	return &InvalidRequestException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InvalidRequestException) Code() string {
	return "InvalidRequestException"
}

// Message returns the exception's message.
func (s *InvalidRequestException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InvalidRequestException) OrigErr() error {
	return nil
}

func (s *InvalidRequestException) 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 *InvalidRequestException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InvalidRequestException) RequestID() string {
	return s.RespMetadata.RequestID
}

// A field that is invisible to an agent.
type InvisibleFieldInfo struct {
	_ struct{} `type:"structure"`

	// Identifier of the invisible field.
	Id *TaskTemplateFieldIdentifier `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 InvisibleFieldInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvisibleFieldInfo) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *InvisibleFieldInfo) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "InvisibleFieldInfo"}
	if s.Id != nil {
		if err := s.Id.Validate(); err != nil {
			invalidParams.AddNested("Id", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetId sets the Id field's value.
func (s *InvisibleFieldInfo) SetId(v *TaskTemplateFieldIdentifier) *InvisibleFieldInfo {
	s.Id = v
	return s
}

// Configuration information of a Kinesis Data Firehose delivery stream.
type KinesisFirehoseConfig struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the delivery stream.
	//
	// FirehoseArn is a required field
	FirehoseArn *string `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 KinesisFirehoseConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s KinesisFirehoseConfig) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *KinesisFirehoseConfig) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "KinesisFirehoseConfig"}
	if s.FirehoseArn == nil {
		invalidParams.Add(request.NewErrParamRequired("FirehoseArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFirehoseArn sets the FirehoseArn field's value.
func (s *KinesisFirehoseConfig) SetFirehoseArn(v string) *KinesisFirehoseConfig {
	s.FirehoseArn = &v
	return s
}

// Configuration information of a Kinesis data stream.
type KinesisStreamConfig struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the data stream.
	//
	// StreamArn is a required field
	StreamArn *string `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 KinesisStreamConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s KinesisStreamConfig) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *KinesisStreamConfig) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "KinesisStreamConfig"}
	if s.StreamArn == nil {
		invalidParams.Add(request.NewErrParamRequired("StreamArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetStreamArn sets the StreamArn field's value.
func (s *KinesisStreamConfig) SetStreamArn(v string) *KinesisStreamConfig {
	s.StreamArn = &v
	return s
}

// Configuration information of a Kinesis video stream.
type KinesisVideoStreamConfig struct {
	_ struct{} `type:"structure"`

	// The encryption configuration.
	//
	// EncryptionConfig is a required field
	EncryptionConfig *EncryptionConfig `type:"structure" required:"true"`

	// The prefix of the video stream.
	//
	// Prefix is a required field
	Prefix *string `min:"1" type:"string" required:"true"`

	// The number of hours data is retained in the stream. Kinesis Video Streams
	// retains the data in a data store that is associated with the stream.
	//
	// The default value is 0, indicating that the stream does not persist data.
	//
	// RetentionPeriodHours is a required field
	RetentionPeriodHours *int64 `type:"integer" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s KinesisVideoStreamConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s KinesisVideoStreamConfig) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *KinesisVideoStreamConfig) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "KinesisVideoStreamConfig"}
	if s.EncryptionConfig == nil {
		invalidParams.Add(request.NewErrParamRequired("EncryptionConfig"))
	}
	if s.Prefix == nil {
		invalidParams.Add(request.NewErrParamRequired("Prefix"))
	}
	if s.Prefix != nil && len(*s.Prefix) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Prefix", 1))
	}
	if s.RetentionPeriodHours == nil {
		invalidParams.Add(request.NewErrParamRequired("RetentionPeriodHours"))
	}
	if s.EncryptionConfig != nil {
		if err := s.EncryptionConfig.Validate(); err != nil {
			invalidParams.AddNested("EncryptionConfig", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEncryptionConfig sets the EncryptionConfig field's value.
func (s *KinesisVideoStreamConfig) SetEncryptionConfig(v *EncryptionConfig) *KinesisVideoStreamConfig {
	s.EncryptionConfig = v
	return s
}

// SetPrefix sets the Prefix field's value.
func (s *KinesisVideoStreamConfig) SetPrefix(v string) *KinesisVideoStreamConfig {
	s.Prefix = &v
	return s
}

// SetRetentionPeriodHours sets the RetentionPeriodHours field's value.
func (s *KinesisVideoStreamConfig) SetRetentionPeriodHours(v int64) *KinesisVideoStreamConfig {
	s.RetentionPeriodHours = &v
	return s
}

// Configuration information of an Amazon Lex bot.
type LexBot struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services Region where the Amazon Lex bot was created.
	//
	// LexRegion is a required field
	LexRegion *string `type:"string" required:"true"`

	// The name of the Amazon Lex bot.
	//
	// Name is a required field
	Name *string `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 LexBot) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LexBot) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *LexBot) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "LexBot"}
	if s.LexRegion == nil {
		invalidParams.Add(request.NewErrParamRequired("LexRegion"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetLexRegion sets the LexRegion field's value.
func (s *LexBot) SetLexRegion(v string) *LexBot {
	s.LexRegion = &v
	return s
}

// SetName sets the Name field's value.
func (s *LexBot) SetName(v string) *LexBot {
	s.Name = &v
	return s
}

// Configuration information of an Amazon Lex or Amazon Lex V2 bot.
type LexBotConfig struct {
	_ struct{} `type:"structure"`

	// Configuration information of an Amazon Lex bot.
	LexBot *LexBot `type:"structure"`

	// Configuration information of an Amazon Lex V2 bot.
	LexV2Bot *LexV2Bot `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 LexBotConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LexBotConfig) GoString() string {
	return s.String()
}

// SetLexBot sets the LexBot field's value.
func (s *LexBotConfig) SetLexBot(v *LexBot) *LexBotConfig {
	s.LexBot = v
	return s
}

// SetLexV2Bot sets the LexV2Bot field's value.
func (s *LexBotConfig) SetLexV2Bot(v *LexV2Bot) *LexBotConfig {
	s.LexV2Bot = v
	return s
}

// Configuration information of an Amazon Lex V2 bot.
type LexV2Bot struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the Amazon Lex V2 bot.
	AliasArn *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LexV2Bot) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LexV2Bot) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *LexV2Bot) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "LexV2Bot"}
	if s.AliasArn != nil && len(*s.AliasArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AliasArn", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAliasArn sets the AliasArn field's value.
func (s *LexV2Bot) SetAliasArn(v string) *LexV2Bot {
	s.AliasArn = &v
	return s
}

// The allowed limit for the resource has been exceeded.
type LimitExceededException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The message about the limit.
	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 LimitExceededException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LimitExceededException) GoString() string {
	return s.String()
}

func newErrorLimitExceededException(v protocol.ResponseMetadata) error {
	return &LimitExceededException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *LimitExceededException) Code() string {
	return "LimitExceededException"
}

// Message returns the exception's message.
func (s *LimitExceededException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *LimitExceededException) OrigErr() error {
	return nil
}

func (s *LimitExceededException) 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 *LimitExceededException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *LimitExceededException) RequestID() string {
	return s.RespMetadata.RequestID
}

type ListAgentStatusesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// Available agent status types.
	AgentStatusTypes []*string `location:"querystring" locationName:"AgentStatusTypes" type:"list" enum:"AgentStatusType"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListAgentStatusesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListAgentStatusesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListAgentStatusesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListAgentStatusesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAgentStatusTypes sets the AgentStatusTypes field's value.
func (s *ListAgentStatusesInput) SetAgentStatusTypes(v []*string) *ListAgentStatusesInput {
	s.AgentStatusTypes = v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListAgentStatusesInput) SetInstanceId(v string) *ListAgentStatusesInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListAgentStatusesInput) SetMaxResults(v int64) *ListAgentStatusesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAgentStatusesInput) SetNextToken(v string) *ListAgentStatusesInput {
	s.NextToken = &v
	return s
}

type ListAgentStatusesOutput struct {
	_ struct{} `type:"structure"`

	// A summary of agent statuses.
	AgentStatusSummaryList []*AgentStatusSummary `type:"list"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListAgentStatusesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListAgentStatusesOutput) GoString() string {
	return s.String()
}

// SetAgentStatusSummaryList sets the AgentStatusSummaryList field's value.
func (s *ListAgentStatusesOutput) SetAgentStatusSummaryList(v []*AgentStatusSummary) *ListAgentStatusesOutput {
	s.AgentStatusSummaryList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAgentStatusesOutput) SetNextToken(v string) *ListAgentStatusesOutput {
	s.NextToken = &v
	return s
}

type ListAnalyticsDataAssociationsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the dataset to get the association status.
	DataSetId *string `location:"querystring" locationName:"DataSetId" min:"1" type:"string"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListAnalyticsDataAssociationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListAnalyticsDataAssociationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListAnalyticsDataAssociationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListAnalyticsDataAssociationsInput"}
	if s.DataSetId != nil && len(*s.DataSetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSetId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataSetId sets the DataSetId field's value.
func (s *ListAnalyticsDataAssociationsInput) SetDataSetId(v string) *ListAnalyticsDataAssociationsInput {
	s.DataSetId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListAnalyticsDataAssociationsInput) SetInstanceId(v string) *ListAnalyticsDataAssociationsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListAnalyticsDataAssociationsInput) SetMaxResults(v int64) *ListAnalyticsDataAssociationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAnalyticsDataAssociationsInput) SetNextToken(v string) *ListAnalyticsDataAssociationsInput {
	s.NextToken = &v
	return s
}

type ListAnalyticsDataAssociationsOutput struct {
	_ struct{} `type:"structure"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`

	// An array of successful results: DataSetId, TargetAccountId, ResourceShareId,
	// ResourceShareArn. This is a paginated API, so nextToken is given if there
	// are more results to be returned.
	Results []*AnalyticsDataAssociationResult `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 ListAnalyticsDataAssociationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListAnalyticsDataAssociationsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListAnalyticsDataAssociationsOutput) SetNextToken(v string) *ListAnalyticsDataAssociationsOutput {
	s.NextToken = &v
	return s
}

// SetResults sets the Results field's value.
func (s *ListAnalyticsDataAssociationsOutput) SetResults(v []*AnalyticsDataAssociationResult) *ListAnalyticsDataAssociationsOutput {
	s.Results = v
	return s
}

type ListApprovedOriginsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListApprovedOriginsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListApprovedOriginsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListApprovedOriginsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListApprovedOriginsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListApprovedOriginsInput) SetInstanceId(v string) *ListApprovedOriginsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListApprovedOriginsInput) SetMaxResults(v int64) *ListApprovedOriginsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListApprovedOriginsInput) SetNextToken(v string) *ListApprovedOriginsInput {
	s.NextToken = &v
	return s
}

type ListApprovedOriginsOutput struct {
	_ struct{} `type:"structure"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`

	// The approved origins.
	Origins []*string `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 ListApprovedOriginsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListApprovedOriginsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListApprovedOriginsOutput) SetNextToken(v string) *ListApprovedOriginsOutput {
	s.NextToken = &v
	return s
}

// SetOrigins sets the Origins field's value.
func (s *ListApprovedOriginsOutput) SetOrigins(v []*string) *ListApprovedOriginsOutput {
	s.Origins = v
	return s
}

type ListBotsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The version of Amazon Lex or Amazon Lex V2.
	//
	// LexVersion is a required field
	LexVersion *string `location:"querystring" locationName:"lexVersion" type:"string" required:"true" enum:"LexVersion"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListBotsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListBotsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListBotsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListBotsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.LexVersion == nil {
		invalidParams.Add(request.NewErrParamRequired("LexVersion"))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListBotsInput) SetInstanceId(v string) *ListBotsInput {
	s.InstanceId = &v
	return s
}

// SetLexVersion sets the LexVersion field's value.
func (s *ListBotsInput) SetLexVersion(v string) *ListBotsInput {
	s.LexVersion = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListBotsInput) SetMaxResults(v int64) *ListBotsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListBotsInput) SetNextToken(v string) *ListBotsInput {
	s.NextToken = &v
	return s
}

type ListBotsOutput struct {
	_ struct{} `type:"structure"`

	// The names and Amazon Web Services Regions of the Amazon Lex or Amazon Lex
	// V2 bots associated with the specified instance.
	LexBots []*LexBotConfig `type:"list"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListBotsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListBotsOutput) GoString() string {
	return s.String()
}

// SetLexBots sets the LexBots field's value.
func (s *ListBotsOutput) SetLexBots(v []*LexBotConfig) *ListBotsOutput {
	s.LexBots = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListBotsOutput) SetNextToken(v string) *ListBotsOutput {
	s.NextToken = &v
	return s
}

type ListContactEvaluationsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the contact in this instance of Amazon Connect.
	//
	// ContactId is a required field
	ContactId *string `location:"querystring" locationName:"contactId" min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	//
	// This is not expected to be set because the value returned in the previous
	// response is always null.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListContactEvaluationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListContactEvaluationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListContactEvaluationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListContactEvaluationsInput"}
	if s.ContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactId"))
	}
	if s.ContactId != nil && len(*s.ContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactId sets the ContactId field's value.
func (s *ListContactEvaluationsInput) SetContactId(v string) *ListContactEvaluationsInput {
	s.ContactId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListContactEvaluationsInput) SetInstanceId(v string) *ListContactEvaluationsInput {
	s.InstanceId = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListContactEvaluationsInput) SetNextToken(v string) *ListContactEvaluationsInput {
	s.NextToken = &v
	return s
}

type ListContactEvaluationsOutput struct {
	_ struct{} `type:"structure"`

	// Provides details about a list of contact evaluations belonging to an instance.
	//
	// EvaluationSummaryList is a required field
	EvaluationSummaryList []*EvaluationSummary `type:"list" required:"true"`

	// If there are additional results, this is the token for the next set of results.
	//
	// This is always returned as null in the response.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListContactEvaluationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListContactEvaluationsOutput) GoString() string {
	return s.String()
}

// SetEvaluationSummaryList sets the EvaluationSummaryList field's value.
func (s *ListContactEvaluationsOutput) SetEvaluationSummaryList(v []*EvaluationSummary) *ListContactEvaluationsOutput {
	s.EvaluationSummaryList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListContactEvaluationsOutput) SetNextToken(v string) *ListContactEvaluationsOutput {
	s.NextToken = &v
	return s
}

type ListContactFlowModulesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The state of the flow module.
	ContactFlowModuleState *string `location:"querystring" locationName:"state" type:"string" enum:"ContactFlowModuleState"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListContactFlowModulesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListContactFlowModulesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListContactFlowModulesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListContactFlowModulesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactFlowModuleState sets the ContactFlowModuleState field's value.
func (s *ListContactFlowModulesInput) SetContactFlowModuleState(v string) *ListContactFlowModulesInput {
	s.ContactFlowModuleState = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListContactFlowModulesInput) SetInstanceId(v string) *ListContactFlowModulesInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListContactFlowModulesInput) SetMaxResults(v int64) *ListContactFlowModulesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListContactFlowModulesInput) SetNextToken(v string) *ListContactFlowModulesInput {
	s.NextToken = &v
	return s
}

type ListContactFlowModulesOutput struct {
	_ struct{} `type:"structure"`

	// Information about the flow module.
	ContactFlowModulesSummaryList []*ContactFlowModuleSummary `type:"list"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListContactFlowModulesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListContactFlowModulesOutput) GoString() string {
	return s.String()
}

// SetContactFlowModulesSummaryList sets the ContactFlowModulesSummaryList field's value.
func (s *ListContactFlowModulesOutput) SetContactFlowModulesSummaryList(v []*ContactFlowModuleSummary) *ListContactFlowModulesOutput {
	s.ContactFlowModulesSummaryList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListContactFlowModulesOutput) SetNextToken(v string) *ListContactFlowModulesOutput {
	s.NextToken = &v
	return s
}

type ListContactFlowsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The type of flow.
	ContactFlowTypes []*string `location:"querystring" locationName:"contactFlowTypes" type:"list" enum:"ContactFlowType"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page. The default MaxResult size
	// is 100.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListContactFlowsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListContactFlowsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListContactFlowsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListContactFlowsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactFlowTypes sets the ContactFlowTypes field's value.
func (s *ListContactFlowsInput) SetContactFlowTypes(v []*string) *ListContactFlowsInput {
	s.ContactFlowTypes = v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListContactFlowsInput) SetInstanceId(v string) *ListContactFlowsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListContactFlowsInput) SetMaxResults(v int64) *ListContactFlowsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListContactFlowsInput) SetNextToken(v string) *ListContactFlowsInput {
	s.NextToken = &v
	return s
}

type ListContactFlowsOutput struct {
	_ struct{} `type:"structure"`

	// Information about the flows.
	ContactFlowSummaryList []*ContactFlowSummary `type:"list"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListContactFlowsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListContactFlowsOutput) GoString() string {
	return s.String()
}

// SetContactFlowSummaryList sets the ContactFlowSummaryList field's value.
func (s *ListContactFlowsOutput) SetContactFlowSummaryList(v []*ContactFlowSummary) *ListContactFlowsOutput {
	s.ContactFlowSummaryList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListContactFlowsOutput) SetNextToken(v string) *ListContactFlowsOutput {
	s.NextToken = &v
	return s
}

type ListContactReferencesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the initial contact.
	//
	// ContactId is a required field
	ContactId *string `location:"uri" locationName:"ContactId" min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	//
	// This is not expected to be set, because the value returned in the previous
	// response is always null.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`

	// The type of reference.
	//
	// ReferenceTypes is a required field
	ReferenceTypes []*string `location:"querystring" locationName:"referenceTypes" type:"list" required:"true" enum:"ReferenceType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListContactReferencesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListContactReferencesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListContactReferencesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListContactReferencesInput"}
	if s.ContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactId"))
	}
	if s.ContactId != nil && len(*s.ContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.ReferenceTypes == nil {
		invalidParams.Add(request.NewErrParamRequired("ReferenceTypes"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactId sets the ContactId field's value.
func (s *ListContactReferencesInput) SetContactId(v string) *ListContactReferencesInput {
	s.ContactId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListContactReferencesInput) SetInstanceId(v string) *ListContactReferencesInput {
	s.InstanceId = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListContactReferencesInput) SetNextToken(v string) *ListContactReferencesInput {
	s.NextToken = &v
	return s
}

// SetReferenceTypes sets the ReferenceTypes field's value.
func (s *ListContactReferencesInput) SetReferenceTypes(v []*string) *ListContactReferencesInput {
	s.ReferenceTypes = v
	return s
}

type ListContactReferencesOutput struct {
	_ struct{} `type:"structure"`

	// If there are additional results, this is the token for the next set of results.
	//
	// This is always returned as null in the response.
	NextToken *string `type:"string"`

	// Information about the flows.
	ReferenceSummaryList []*ReferenceSummary `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 ListContactReferencesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListContactReferencesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListContactReferencesOutput) SetNextToken(v string) *ListContactReferencesOutput {
	s.NextToken = &v
	return s
}

// SetReferenceSummaryList sets the ReferenceSummaryList field's value.
func (s *ListContactReferencesOutput) SetReferenceSummaryList(v []*ReferenceSummary) *ListContactReferencesOutput {
	s.ReferenceSummaryList = v
	return s
}

type ListDefaultVocabulariesInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The language code of the vocabulary entries. For a list of languages and
	// their corresponding language codes, see What is Amazon Transcribe? (https://docs.aws.amazon.com/transcribe/latest/dg/transcribe-whatis.html)
	LanguageCode *string `type:"string" enum:"VocabularyLanguageCode"`

	// The maximum number of results to return per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDefaultVocabulariesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDefaultVocabulariesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListDefaultVocabulariesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListDefaultVocabulariesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListDefaultVocabulariesInput) SetInstanceId(v string) *ListDefaultVocabulariesInput {
	s.InstanceId = &v
	return s
}

// SetLanguageCode sets the LanguageCode field's value.
func (s *ListDefaultVocabulariesInput) SetLanguageCode(v string) *ListDefaultVocabulariesInput {
	s.LanguageCode = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListDefaultVocabulariesInput) SetMaxResults(v int64) *ListDefaultVocabulariesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDefaultVocabulariesInput) SetNextToken(v string) *ListDefaultVocabulariesInput {
	s.NextToken = &v
	return s
}

type ListDefaultVocabulariesOutput struct {
	_ struct{} `type:"structure"`

	// A list of default vocabularies.
	//
	// DefaultVocabularyList is a required field
	DefaultVocabularyList []*DefaultVocabulary `type:"list" required:"true"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDefaultVocabulariesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDefaultVocabulariesOutput) GoString() string {
	return s.String()
}

// SetDefaultVocabularyList sets the DefaultVocabularyList field's value.
func (s *ListDefaultVocabulariesOutput) SetDefaultVocabularyList(v []*DefaultVocabulary) *ListDefaultVocabulariesOutput {
	s.DefaultVocabularyList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDefaultVocabulariesOutput) SetNextToken(v string) *ListDefaultVocabulariesOutput {
	s.NextToken = &v
	return s
}

type ListEvaluationFormVersionsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique identifier for the evaluation form.
	//
	// EvaluationFormId is a required field
	EvaluationFormId *string `location:"uri" locationName:"EvaluationFormId" min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEvaluationFormVersionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEvaluationFormVersionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListEvaluationFormVersionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListEvaluationFormVersionsInput"}
	if s.EvaluationFormId == nil {
		invalidParams.Add(request.NewErrParamRequired("EvaluationFormId"))
	}
	if s.EvaluationFormId != nil && len(*s.EvaluationFormId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EvaluationFormId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEvaluationFormId sets the EvaluationFormId field's value.
func (s *ListEvaluationFormVersionsInput) SetEvaluationFormId(v string) *ListEvaluationFormVersionsInput {
	s.EvaluationFormId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListEvaluationFormVersionsInput) SetInstanceId(v string) *ListEvaluationFormVersionsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListEvaluationFormVersionsInput) SetMaxResults(v int64) *ListEvaluationFormVersionsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListEvaluationFormVersionsInput) SetNextToken(v string) *ListEvaluationFormVersionsInput {
	s.NextToken = &v
	return s
}

type ListEvaluationFormVersionsOutput struct {
	_ struct{} `type:"structure"`

	// Provides details about a list of evaluation forms belonging to an instance.
	//
	// EvaluationFormVersionSummaryList is a required field
	EvaluationFormVersionSummaryList []*EvaluationFormVersionSummary `type:"list" required:"true"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEvaluationFormVersionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEvaluationFormVersionsOutput) GoString() string {
	return s.String()
}

// SetEvaluationFormVersionSummaryList sets the EvaluationFormVersionSummaryList field's value.
func (s *ListEvaluationFormVersionsOutput) SetEvaluationFormVersionSummaryList(v []*EvaluationFormVersionSummary) *ListEvaluationFormVersionsOutput {
	s.EvaluationFormVersionSummaryList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListEvaluationFormVersionsOutput) SetNextToken(v string) *ListEvaluationFormVersionsOutput {
	s.NextToken = &v
	return s
}

type ListEvaluationFormsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEvaluationFormsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEvaluationFormsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListEvaluationFormsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListEvaluationFormsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListEvaluationFormsInput) SetInstanceId(v string) *ListEvaluationFormsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListEvaluationFormsInput) SetMaxResults(v int64) *ListEvaluationFormsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListEvaluationFormsInput) SetNextToken(v string) *ListEvaluationFormsInput {
	s.NextToken = &v
	return s
}

type ListEvaluationFormsOutput struct {
	_ struct{} `type:"structure"`

	// Provides details about a list of evaluation forms belonging to an instance.
	//
	// EvaluationFormSummaryList is a required field
	EvaluationFormSummaryList []*EvaluationFormSummary `type:"list" required:"true"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEvaluationFormsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEvaluationFormsOutput) GoString() string {
	return s.String()
}

// SetEvaluationFormSummaryList sets the EvaluationFormSummaryList field's value.
func (s *ListEvaluationFormsOutput) SetEvaluationFormSummaryList(v []*EvaluationFormSummary) *ListEvaluationFormsOutput {
	s.EvaluationFormSummaryList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListEvaluationFormsOutput) SetNextToken(v string) *ListEvaluationFormsOutput {
	s.NextToken = &v
	return s
}

type ListFlowAssociationsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`

	// A valid resource type.
	ResourceType *string `location:"querystring" locationName:"ResourceType" type:"string" enum:"ListFlowAssociationResourceType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListFlowAssociationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListFlowAssociationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListFlowAssociationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListFlowAssociationsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListFlowAssociationsInput) SetInstanceId(v string) *ListFlowAssociationsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListFlowAssociationsInput) SetMaxResults(v int64) *ListFlowAssociationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListFlowAssociationsInput) SetNextToken(v string) *ListFlowAssociationsInput {
	s.NextToken = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *ListFlowAssociationsInput) SetResourceType(v string) *ListFlowAssociationsInput {
	s.ResourceType = &v
	return s
}

type ListFlowAssociationsOutput struct {
	_ struct{} `type:"structure"`

	// Summary of flow associations.
	FlowAssociationSummaryList []*FlowAssociationSummary `type:"list"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListFlowAssociationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListFlowAssociationsOutput) GoString() string {
	return s.String()
}

// SetFlowAssociationSummaryList sets the FlowAssociationSummaryList field's value.
func (s *ListFlowAssociationsOutput) SetFlowAssociationSummaryList(v []*FlowAssociationSummary) *ListFlowAssociationsOutput {
	s.FlowAssociationSummaryList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListFlowAssociationsOutput) SetNextToken(v string) *ListFlowAssociationsOutput {
	s.NextToken = &v
	return s
}

type ListHoursOfOperationsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page. The default MaxResult size
	// is 100.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListHoursOfOperationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListHoursOfOperationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListHoursOfOperationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListHoursOfOperationsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListHoursOfOperationsInput) SetInstanceId(v string) *ListHoursOfOperationsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListHoursOfOperationsInput) SetMaxResults(v int64) *ListHoursOfOperationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListHoursOfOperationsInput) SetNextToken(v string) *ListHoursOfOperationsInput {
	s.NextToken = &v
	return s
}

type ListHoursOfOperationsOutput struct {
	_ struct{} `type:"structure"`

	// Information about the hours of operation.
	HoursOfOperationSummaryList []*HoursOfOperationSummary `type:"list"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListHoursOfOperationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListHoursOfOperationsOutput) GoString() string {
	return s.String()
}

// SetHoursOfOperationSummaryList sets the HoursOfOperationSummaryList field's value.
func (s *ListHoursOfOperationsOutput) SetHoursOfOperationSummaryList(v []*HoursOfOperationSummary) *ListHoursOfOperationsOutput {
	s.HoursOfOperationSummaryList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListHoursOfOperationsOutput) SetNextToken(v string) *ListHoursOfOperationsOutput {
	s.NextToken = &v
	return s
}

type ListInstanceAttributesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListInstanceAttributesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListInstanceAttributesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListInstanceAttributesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListInstanceAttributesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListInstanceAttributesInput) SetInstanceId(v string) *ListInstanceAttributesInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListInstanceAttributesInput) SetMaxResults(v int64) *ListInstanceAttributesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListInstanceAttributesInput) SetNextToken(v string) *ListInstanceAttributesInput {
	s.NextToken = &v
	return s
}

type ListInstanceAttributesOutput struct {
	_ struct{} `type:"structure"`

	// The attribute types.
	Attributes []*Attribute `type:"list"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListInstanceAttributesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListInstanceAttributesOutput) GoString() string {
	return s.String()
}

// SetAttributes sets the Attributes field's value.
func (s *ListInstanceAttributesOutput) SetAttributes(v []*Attribute) *ListInstanceAttributesOutput {
	s.Attributes = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListInstanceAttributesOutput) SetNextToken(v string) *ListInstanceAttributesOutput {
	s.NextToken = &v
	return s
}

type ListInstanceStorageConfigsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`

	// A valid resource type.
	//
	// ResourceType is a required field
	ResourceType *string `location:"querystring" locationName:"resourceType" type:"string" required:"true" enum:"InstanceStorageResourceType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListInstanceStorageConfigsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListInstanceStorageConfigsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListInstanceStorageConfigsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListInstanceStorageConfigsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.ResourceType == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceType"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListInstanceStorageConfigsInput) SetInstanceId(v string) *ListInstanceStorageConfigsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListInstanceStorageConfigsInput) SetMaxResults(v int64) *ListInstanceStorageConfigsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListInstanceStorageConfigsInput) SetNextToken(v string) *ListInstanceStorageConfigsInput {
	s.NextToken = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *ListInstanceStorageConfigsInput) SetResourceType(v string) *ListInstanceStorageConfigsInput {
	s.ResourceType = &v
	return s
}

type ListInstanceStorageConfigsOutput struct {
	_ struct{} `type:"structure"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`

	// A valid storage type.
	StorageConfigs []*InstanceStorageConfig `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 ListInstanceStorageConfigsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListInstanceStorageConfigsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListInstanceStorageConfigsOutput) SetNextToken(v string) *ListInstanceStorageConfigsOutput {
	s.NextToken = &v
	return s
}

// SetStorageConfigs sets the StorageConfigs field's value.
func (s *ListInstanceStorageConfigsOutput) SetStorageConfigs(v []*InstanceStorageConfig) *ListInstanceStorageConfigsOutput {
	s.StorageConfigs = v
	return s
}

type ListInstancesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListInstancesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListInstancesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListInstancesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListInstancesInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListInstancesInput) SetMaxResults(v int64) *ListInstancesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListInstancesInput) SetNextToken(v string) *ListInstancesInput {
	s.NextToken = &v
	return s
}

type ListInstancesOutput struct {
	_ struct{} `type:"structure"`

	// Information about the instances.
	InstanceSummaryList []*InstanceSummary `type:"list"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListInstancesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListInstancesOutput) GoString() string {
	return s.String()
}

// SetInstanceSummaryList sets the InstanceSummaryList field's value.
func (s *ListInstancesOutput) SetInstanceSummaryList(v []*InstanceSummary) *ListInstancesOutput {
	s.InstanceSummaryList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListInstancesOutput) SetNextToken(v string) *ListInstancesOutput {
	s.NextToken = &v
	return s
}

type ListIntegrationAssociationsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of the integration.
	IntegrationArn *string `location:"querystring" locationName:"integrationArn" type:"string"`

	// The integration type.
	IntegrationType *string `location:"querystring" locationName:"integrationType" type:"string" enum:"IntegrationType"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListIntegrationAssociationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListIntegrationAssociationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListIntegrationAssociationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListIntegrationAssociationsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListIntegrationAssociationsInput) SetInstanceId(v string) *ListIntegrationAssociationsInput {
	s.InstanceId = &v
	return s
}

// SetIntegrationArn sets the IntegrationArn field's value.
func (s *ListIntegrationAssociationsInput) SetIntegrationArn(v string) *ListIntegrationAssociationsInput {
	s.IntegrationArn = &v
	return s
}

// SetIntegrationType sets the IntegrationType field's value.
func (s *ListIntegrationAssociationsInput) SetIntegrationType(v string) *ListIntegrationAssociationsInput {
	s.IntegrationType = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListIntegrationAssociationsInput) SetMaxResults(v int64) *ListIntegrationAssociationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListIntegrationAssociationsInput) SetNextToken(v string) *ListIntegrationAssociationsInput {
	s.NextToken = &v
	return s
}

type ListIntegrationAssociationsOutput struct {
	_ struct{} `type:"structure"`

	// The associations.
	IntegrationAssociationSummaryList []*IntegrationAssociationSummary `type:"list"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListIntegrationAssociationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListIntegrationAssociationsOutput) GoString() string {
	return s.String()
}

// SetIntegrationAssociationSummaryList sets the IntegrationAssociationSummaryList field's value.
func (s *ListIntegrationAssociationsOutput) SetIntegrationAssociationSummaryList(v []*IntegrationAssociationSummary) *ListIntegrationAssociationsOutput {
	s.IntegrationAssociationSummaryList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListIntegrationAssociationsOutput) SetNextToken(v string) *ListIntegrationAssociationsOutput {
	s.NextToken = &v
	return s
}

type ListLambdaFunctionsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListLambdaFunctionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListLambdaFunctionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListLambdaFunctionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListLambdaFunctionsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListLambdaFunctionsInput) SetInstanceId(v string) *ListLambdaFunctionsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListLambdaFunctionsInput) SetMaxResults(v int64) *ListLambdaFunctionsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListLambdaFunctionsInput) SetNextToken(v string) *ListLambdaFunctionsInput {
	s.NextToken = &v
	return s
}

type ListLambdaFunctionsOutput struct {
	_ struct{} `type:"structure"`

	// The Lambdafunction ARNs associated with the specified instance.
	LambdaFunctions []*string `type:"list"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListLambdaFunctionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListLambdaFunctionsOutput) GoString() string {
	return s.String()
}

// SetLambdaFunctions sets the LambdaFunctions field's value.
func (s *ListLambdaFunctionsOutput) SetLambdaFunctions(v []*string) *ListLambdaFunctionsOutput {
	s.LambdaFunctions = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListLambdaFunctionsOutput) SetNextToken(v string) *ListLambdaFunctionsOutput {
	s.NextToken = &v
	return s
}

type ListLexBotsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page. If no value is specified,
	// the default is 10.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListLexBotsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListLexBotsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListLexBotsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListLexBotsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListLexBotsInput) SetInstanceId(v string) *ListLexBotsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListLexBotsInput) SetMaxResults(v int64) *ListLexBotsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListLexBotsInput) SetNextToken(v string) *ListLexBotsInput {
	s.NextToken = &v
	return s
}

type ListLexBotsOutput struct {
	_ struct{} `type:"structure"`

	// The names and Amazon Web Services Regions of the Amazon Lex bots associated
	// with the specified instance.
	LexBots []*LexBot `type:"list"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListLexBotsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListLexBotsOutput) GoString() string {
	return s.String()
}

// SetLexBots sets the LexBots field's value.
func (s *ListLexBotsOutput) SetLexBots(v []*LexBot) *ListLexBotsOutput {
	s.LexBots = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListLexBotsOutput) SetNextToken(v string) *ListLexBotsOutput {
	s.NextToken = &v
	return s
}

type ListPhoneNumbersInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page. The default MaxResult size
	// is 100.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`

	// The ISO country code.
	PhoneNumberCountryCodes []*string `location:"querystring" locationName:"phoneNumberCountryCodes" type:"list" enum:"PhoneNumberCountryCode"`

	// The type of phone number.
	//
	// We recommend using ListPhoneNumbersV2 (https://docs.aws.amazon.com/connect/latest/APIReference/API_ListPhoneNumbersV2.html)
	// to return phone number types. While ListPhoneNumbers returns number types
	// UIFN, SHARED, THIRD_PARTY_TF, and THIRD_PARTY_DID, it incorrectly lists them
	// as TOLL_FREE or DID.
	PhoneNumberTypes []*string `location:"querystring" locationName:"phoneNumberTypes" type:"list" enum:"PhoneNumberType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListPhoneNumbersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListPhoneNumbersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListPhoneNumbersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListPhoneNumbersInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListPhoneNumbersInput) SetInstanceId(v string) *ListPhoneNumbersInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListPhoneNumbersInput) SetMaxResults(v int64) *ListPhoneNumbersInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListPhoneNumbersInput) SetNextToken(v string) *ListPhoneNumbersInput {
	s.NextToken = &v
	return s
}

// SetPhoneNumberCountryCodes sets the PhoneNumberCountryCodes field's value.
func (s *ListPhoneNumbersInput) SetPhoneNumberCountryCodes(v []*string) *ListPhoneNumbersInput {
	s.PhoneNumberCountryCodes = v
	return s
}

// SetPhoneNumberTypes sets the PhoneNumberTypes field's value.
func (s *ListPhoneNumbersInput) SetPhoneNumberTypes(v []*string) *ListPhoneNumbersInput {
	s.PhoneNumberTypes = v
	return s
}

type ListPhoneNumbersOutput struct {
	_ struct{} `type:"structure"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`

	// Information about the phone numbers.
	PhoneNumberSummaryList []*PhoneNumberSummary `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 ListPhoneNumbersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListPhoneNumbersOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListPhoneNumbersOutput) SetNextToken(v string) *ListPhoneNumbersOutput {
	s.NextToken = &v
	return s
}

// SetPhoneNumberSummaryList sets the PhoneNumberSummaryList field's value.
func (s *ListPhoneNumbersOutput) SetPhoneNumberSummaryList(v []*PhoneNumberSummary) *ListPhoneNumbersOutput {
	s.PhoneNumberSummaryList = v
	return s
}

// Information about phone numbers that have been claimed to your Amazon Connect
// instance or traffic distribution group.
type ListPhoneNumbersSummary struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance that phone numbers are claimed
	// to. You can find the instance ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	InstanceId *string `min:"1" type:"string"`

	// The phone number. Phone numbers are formatted [+] [country code] [subscriber
	// number including area code].
	PhoneNumber *string `type:"string"`

	// The Amazon Resource Name (ARN) of the phone number.
	PhoneNumberArn *string `type:"string"`

	// The ISO country code.
	PhoneNumberCountryCode *string `type:"string" enum:"PhoneNumberCountryCode"`

	// The description of the phone number.
	PhoneNumberDescription *string `type:"string"`

	// A unique identifier for the phone number.
	PhoneNumberId *string `type:"string"`

	// The type of phone number.
	PhoneNumberType *string `type:"string" enum:"PhoneNumberType"`

	// The claimed phone number ARN that was previously imported from the external
	// service, such as Amazon Pinpoint. If it is from Amazon Pinpoint, it looks
	// like the ARN of the phone number that was imported from Amazon Pinpoint.
	SourcePhoneNumberArn *string `type:"string"`

	// The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution
	// groups that phone number inbound traffic is routed through.
	TargetArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListPhoneNumbersSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListPhoneNumbersSummary) GoString() string {
	return s.String()
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListPhoneNumbersSummary) SetInstanceId(v string) *ListPhoneNumbersSummary {
	s.InstanceId = &v
	return s
}

// SetPhoneNumber sets the PhoneNumber field's value.
func (s *ListPhoneNumbersSummary) SetPhoneNumber(v string) *ListPhoneNumbersSummary {
	s.PhoneNumber = &v
	return s
}

// SetPhoneNumberArn sets the PhoneNumberArn field's value.
func (s *ListPhoneNumbersSummary) SetPhoneNumberArn(v string) *ListPhoneNumbersSummary {
	s.PhoneNumberArn = &v
	return s
}

// SetPhoneNumberCountryCode sets the PhoneNumberCountryCode field's value.
func (s *ListPhoneNumbersSummary) SetPhoneNumberCountryCode(v string) *ListPhoneNumbersSummary {
	s.PhoneNumberCountryCode = &v
	return s
}

// SetPhoneNumberDescription sets the PhoneNumberDescription field's value.
func (s *ListPhoneNumbersSummary) SetPhoneNumberDescription(v string) *ListPhoneNumbersSummary {
	s.PhoneNumberDescription = &v
	return s
}

// SetPhoneNumberId sets the PhoneNumberId field's value.
func (s *ListPhoneNumbersSummary) SetPhoneNumberId(v string) *ListPhoneNumbersSummary {
	s.PhoneNumberId = &v
	return s
}

// SetPhoneNumberType sets the PhoneNumberType field's value.
func (s *ListPhoneNumbersSummary) SetPhoneNumberType(v string) *ListPhoneNumbersSummary {
	s.PhoneNumberType = &v
	return s
}

// SetSourcePhoneNumberArn sets the SourcePhoneNumberArn field's value.
func (s *ListPhoneNumbersSummary) SetSourcePhoneNumberArn(v string) *ListPhoneNumbersSummary {
	s.SourcePhoneNumberArn = &v
	return s
}

// SetTargetArn sets the TargetArn field's value.
func (s *ListPhoneNumbersSummary) SetTargetArn(v string) *ListPhoneNumbersSummary {
	s.TargetArn = &v
	return s
}

type ListPhoneNumbersV2Input struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance that phone numbers are claimed
	// to. You can find the instance ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance. If both TargetArn and
	// InstanceId are not provided, this API lists numbers claimed to all the Amazon
	// Connect instances belonging to your account in the same AWS Region as the
	// request.
	InstanceId *string `min:"1" type:"string"`

	// The maximum number of results to return per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `min:"1" type:"string"`

	// The ISO country code.
	PhoneNumberCountryCodes []*string `type:"list" enum:"PhoneNumberCountryCode"`

	// The prefix of the phone number. If provided, it must contain + as part of
	// the country code.
	PhoneNumberPrefix *string `type:"string"`

	// The type of phone number.
	PhoneNumberTypes []*string `type:"list" enum:"PhoneNumberType"`

	// The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution
	// groups that phone number inbound traffic is routed through. If both TargetArn
	// and InstanceId input are not provided, this API lists numbers claimed to
	// all the Amazon Connect instances belonging to your account in the same Amazon
	// Web Services Region as the request.
	TargetArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListPhoneNumbersV2Input) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListPhoneNumbersV2Input) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListPhoneNumbersV2Input) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListPhoneNumbersV2Input"}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListPhoneNumbersV2Input) SetInstanceId(v string) *ListPhoneNumbersV2Input {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListPhoneNumbersV2Input) SetMaxResults(v int64) *ListPhoneNumbersV2Input {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListPhoneNumbersV2Input) SetNextToken(v string) *ListPhoneNumbersV2Input {
	s.NextToken = &v
	return s
}

// SetPhoneNumberCountryCodes sets the PhoneNumberCountryCodes field's value.
func (s *ListPhoneNumbersV2Input) SetPhoneNumberCountryCodes(v []*string) *ListPhoneNumbersV2Input {
	s.PhoneNumberCountryCodes = v
	return s
}

// SetPhoneNumberPrefix sets the PhoneNumberPrefix field's value.
func (s *ListPhoneNumbersV2Input) SetPhoneNumberPrefix(v string) *ListPhoneNumbersV2Input {
	s.PhoneNumberPrefix = &v
	return s
}

// SetPhoneNumberTypes sets the PhoneNumberTypes field's value.
func (s *ListPhoneNumbersV2Input) SetPhoneNumberTypes(v []*string) *ListPhoneNumbersV2Input {
	s.PhoneNumberTypes = v
	return s
}

// SetTargetArn sets the TargetArn field's value.
func (s *ListPhoneNumbersV2Input) SetTargetArn(v string) *ListPhoneNumbersV2Input {
	s.TargetArn = &v
	return s
}

type ListPhoneNumbersV2Output struct {
	_ struct{} `type:"structure"`

	// Information about phone numbers that have been claimed to your Amazon Connect
	// instances or traffic distribution groups.
	ListPhoneNumbersSummaryList []*ListPhoneNumbersSummary `type:"list"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListPhoneNumbersV2Output) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListPhoneNumbersV2Output) GoString() string {
	return s.String()
}

// SetListPhoneNumbersSummaryList sets the ListPhoneNumbersSummaryList field's value.
func (s *ListPhoneNumbersV2Output) SetListPhoneNumbersSummaryList(v []*ListPhoneNumbersSummary) *ListPhoneNumbersV2Output {
	s.ListPhoneNumbersSummaryList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListPhoneNumbersV2Output) SetNextToken(v string) *ListPhoneNumbersV2Output {
	s.NextToken = &v
	return s
}

type ListPredefinedAttributesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListPredefinedAttributesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListPredefinedAttributesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListPredefinedAttributesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListPredefinedAttributesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListPredefinedAttributesInput) SetInstanceId(v string) *ListPredefinedAttributesInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListPredefinedAttributesInput) SetMaxResults(v int64) *ListPredefinedAttributesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListPredefinedAttributesInput) SetNextToken(v string) *ListPredefinedAttributesInput {
	s.NextToken = &v
	return s
}

type ListPredefinedAttributesOutput struct {
	_ struct{} `type:"structure"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`

	// Summary of the predefined attributes.
	PredefinedAttributeSummaryList []*PredefinedAttributeSummary `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 ListPredefinedAttributesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListPredefinedAttributesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListPredefinedAttributesOutput) SetNextToken(v string) *ListPredefinedAttributesOutput {
	s.NextToken = &v
	return s
}

// SetPredefinedAttributeSummaryList sets the PredefinedAttributeSummaryList field's value.
func (s *ListPredefinedAttributesOutput) SetPredefinedAttributeSummaryList(v []*PredefinedAttributeSummary) *ListPredefinedAttributesOutput {
	s.PredefinedAttributeSummaryList = v
	return s
}

type ListPromptsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page. The default MaxResult size
	// is 100.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListPromptsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListPromptsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListPromptsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListPromptsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListPromptsInput) SetInstanceId(v string) *ListPromptsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListPromptsInput) SetMaxResults(v int64) *ListPromptsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListPromptsInput) SetNextToken(v string) *ListPromptsInput {
	s.NextToken = &v
	return s
}

type ListPromptsOutput struct {
	_ struct{} `type:"structure"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`

	// Information about the prompts.
	PromptSummaryList []*PromptSummary `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 ListPromptsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListPromptsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListPromptsOutput) SetNextToken(v string) *ListPromptsOutput {
	s.NextToken = &v
	return s
}

// SetPromptSummaryList sets the PromptSummaryList field's value.
func (s *ListPromptsOutput) SetPromptSummaryList(v []*PromptSummary) *ListPromptsOutput {
	s.PromptSummaryList = v
	return s
}

type ListQueueQuickConnectsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page. The default MaxResult size
	// is 100.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`

	// The identifier for the queue.
	//
	// QueueId is a required field
	QueueId *string `location:"uri" locationName:"QueueId" 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 ListQueueQuickConnectsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListQueueQuickConnectsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListQueueQuickConnectsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListQueueQuickConnectsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.QueueId == nil {
		invalidParams.Add(request.NewErrParamRequired("QueueId"))
	}
	if s.QueueId != nil && len(*s.QueueId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QueueId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListQueueQuickConnectsInput) SetInstanceId(v string) *ListQueueQuickConnectsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListQueueQuickConnectsInput) SetMaxResults(v int64) *ListQueueQuickConnectsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListQueueQuickConnectsInput) SetNextToken(v string) *ListQueueQuickConnectsInput {
	s.NextToken = &v
	return s
}

// SetQueueId sets the QueueId field's value.
func (s *ListQueueQuickConnectsInput) SetQueueId(v string) *ListQueueQuickConnectsInput {
	s.QueueId = &v
	return s
}

type ListQueueQuickConnectsOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services Region where this resource was last modified.
	LastModifiedRegion *string `type:"string"`

	// The timestamp when this resource was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`

	// Information about the quick connects.
	QuickConnectSummaryList []*QuickConnectSummary `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 ListQueueQuickConnectsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListQueueQuickConnectsOutput) GoString() string {
	return s.String()
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *ListQueueQuickConnectsOutput) SetLastModifiedRegion(v string) *ListQueueQuickConnectsOutput {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *ListQueueQuickConnectsOutput) SetLastModifiedTime(v time.Time) *ListQueueQuickConnectsOutput {
	s.LastModifiedTime = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListQueueQuickConnectsOutput) SetNextToken(v string) *ListQueueQuickConnectsOutput {
	s.NextToken = &v
	return s
}

// SetQuickConnectSummaryList sets the QuickConnectSummaryList field's value.
func (s *ListQueueQuickConnectsOutput) SetQuickConnectSummaryList(v []*QuickConnectSummary) *ListQueueQuickConnectsOutput {
	s.QuickConnectSummaryList = v
	return s
}

type ListQueuesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page. The default MaxResult size
	// is 100.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`

	// The type of queue.
	QueueTypes []*string `location:"querystring" locationName:"queueTypes" type:"list" enum:"QueueType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListQueuesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListQueuesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListQueuesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListQueuesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListQueuesInput) SetInstanceId(v string) *ListQueuesInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListQueuesInput) SetMaxResults(v int64) *ListQueuesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListQueuesInput) SetNextToken(v string) *ListQueuesInput {
	s.NextToken = &v
	return s
}

// SetQueueTypes sets the QueueTypes field's value.
func (s *ListQueuesInput) SetQueueTypes(v []*string) *ListQueuesInput {
	s.QueueTypes = v
	return s
}

type ListQueuesOutput struct {
	_ struct{} `type:"structure"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`

	// Information about the queues.
	QueueSummaryList []*QueueSummary `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 ListQueuesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListQueuesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListQueuesOutput) SetNextToken(v string) *ListQueuesOutput {
	s.NextToken = &v
	return s
}

// SetQueueSummaryList sets the QueueSummaryList field's value.
func (s *ListQueuesOutput) SetQueueSummaryList(v []*QueueSummary) *ListQueuesOutput {
	s.QueueSummaryList = v
	return s
}

type ListQuickConnectsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page. The default MaxResult size
	// is 100.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`

	// The type of quick connect. In the Amazon Connect admin website, when you
	// create a quick connect, you are prompted to assign one of the following types:
	// Agent (USER), External (PHONE_NUMBER), or Queue (QUEUE).
	QuickConnectTypes []*string `location:"querystring" locationName:"QuickConnectTypes" type:"list" enum:"QuickConnectType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListQuickConnectsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListQuickConnectsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListQuickConnectsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListQuickConnectsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListQuickConnectsInput) SetInstanceId(v string) *ListQuickConnectsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListQuickConnectsInput) SetMaxResults(v int64) *ListQuickConnectsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListQuickConnectsInput) SetNextToken(v string) *ListQuickConnectsInput {
	s.NextToken = &v
	return s
}

// SetQuickConnectTypes sets the QuickConnectTypes field's value.
func (s *ListQuickConnectsInput) SetQuickConnectTypes(v []*string) *ListQuickConnectsInput {
	s.QuickConnectTypes = v
	return s
}

type ListQuickConnectsOutput struct {
	_ struct{} `type:"structure"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`

	// Information about the quick connects.
	QuickConnectSummaryList []*QuickConnectSummary `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 ListQuickConnectsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListQuickConnectsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListQuickConnectsOutput) SetNextToken(v string) *ListQuickConnectsOutput {
	s.NextToken = &v
	return s
}

// SetQuickConnectSummaryList sets the QuickConnectSummaryList field's value.
func (s *ListQuickConnectsOutput) SetQuickConnectSummaryList(v []*QuickConnectSummary) *ListQuickConnectsOutput {
	s.QuickConnectSummaryList = v
	return s
}

type ListRealtimeContactAnalysisSegmentsV2Input struct {
	_ struct{} `type:"structure"`

	// The identifier of the contact in this instance of Amazon Connect.
	//
	// ContactId is a required field
	ContactId *string `location:"uri" locationName:"ContactId" min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `min:"1" type:"string"`

	// The Contact Lens output type to be returned.
	//
	// OutputType is a required field
	OutputType *string `type:"string" required:"true" enum:"RealTimeContactAnalysisOutputType"`

	// Enum with segment types . Each value corresponds to a segment type returned
	// in the segments list of the API. Each segment type has its own structure.
	// Different channels may have different sets of supported segment types.
	//
	// SegmentTypes is a required field
	SegmentTypes []*string `type:"list" required:"true" enum:"RealTimeContactAnalysisSegmentType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListRealtimeContactAnalysisSegmentsV2Input) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListRealtimeContactAnalysisSegmentsV2Input) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListRealtimeContactAnalysisSegmentsV2Input) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListRealtimeContactAnalysisSegmentsV2Input"}
	if s.ContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactId"))
	}
	if s.ContactId != nil && len(*s.ContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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 s.OutputType == nil {
		invalidParams.Add(request.NewErrParamRequired("OutputType"))
	}
	if s.SegmentTypes == nil {
		invalidParams.Add(request.NewErrParamRequired("SegmentTypes"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactId sets the ContactId field's value.
func (s *ListRealtimeContactAnalysisSegmentsV2Input) SetContactId(v string) *ListRealtimeContactAnalysisSegmentsV2Input {
	s.ContactId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListRealtimeContactAnalysisSegmentsV2Input) SetInstanceId(v string) *ListRealtimeContactAnalysisSegmentsV2Input {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListRealtimeContactAnalysisSegmentsV2Input) SetMaxResults(v int64) *ListRealtimeContactAnalysisSegmentsV2Input {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListRealtimeContactAnalysisSegmentsV2Input) SetNextToken(v string) *ListRealtimeContactAnalysisSegmentsV2Input {
	s.NextToken = &v
	return s
}

// SetOutputType sets the OutputType field's value.
func (s *ListRealtimeContactAnalysisSegmentsV2Input) SetOutputType(v string) *ListRealtimeContactAnalysisSegmentsV2Input {
	s.OutputType = &v
	return s
}

// SetSegmentTypes sets the SegmentTypes field's value.
func (s *ListRealtimeContactAnalysisSegmentsV2Input) SetSegmentTypes(v []*string) *ListRealtimeContactAnalysisSegmentsV2Input {
	s.SegmentTypes = v
	return s
}

type ListRealtimeContactAnalysisSegmentsV2Output struct {
	_ struct{} `type:"structure"`

	// The channel of the contact. Voice will not be returned.
	//
	// Channel is a required field
	Channel *string `type:"string" required:"true" enum:"RealTimeContactAnalysisSupportedChannel"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `min:"1" type:"string"`

	// An analyzed transcript or category.
	//
	// Segments is a required field
	Segments []*RealtimeContactAnalysisSegment `type:"list" required:"true"`

	// Status of real-time contact analysis.
	//
	// Status is a required field
	Status *string `type:"string" required:"true" enum:"RealTimeContactAnalysisStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListRealtimeContactAnalysisSegmentsV2Output) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListRealtimeContactAnalysisSegmentsV2Output) GoString() string {
	return s.String()
}

// SetChannel sets the Channel field's value.
func (s *ListRealtimeContactAnalysisSegmentsV2Output) SetChannel(v string) *ListRealtimeContactAnalysisSegmentsV2Output {
	s.Channel = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListRealtimeContactAnalysisSegmentsV2Output) SetNextToken(v string) *ListRealtimeContactAnalysisSegmentsV2Output {
	s.NextToken = &v
	return s
}

// SetSegments sets the Segments field's value.
func (s *ListRealtimeContactAnalysisSegmentsV2Output) SetSegments(v []*RealtimeContactAnalysisSegment) *ListRealtimeContactAnalysisSegmentsV2Output {
	s.Segments = v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListRealtimeContactAnalysisSegmentsV2Output) SetStatus(v string) *ListRealtimeContactAnalysisSegmentsV2Output {
	s.Status = &v
	return s
}

type ListRoutingProfileQueuesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page. The default MaxResult size
	// is 100.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`

	// The identifier of the routing profile.
	//
	// RoutingProfileId is a required field
	RoutingProfileId *string `location:"uri" locationName:"RoutingProfileId" 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 ListRoutingProfileQueuesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListRoutingProfileQueuesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListRoutingProfileQueuesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListRoutingProfileQueuesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.RoutingProfileId == nil {
		invalidParams.Add(request.NewErrParamRequired("RoutingProfileId"))
	}
	if s.RoutingProfileId != nil && len(*s.RoutingProfileId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RoutingProfileId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListRoutingProfileQueuesInput) SetInstanceId(v string) *ListRoutingProfileQueuesInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListRoutingProfileQueuesInput) SetMaxResults(v int64) *ListRoutingProfileQueuesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListRoutingProfileQueuesInput) SetNextToken(v string) *ListRoutingProfileQueuesInput {
	s.NextToken = &v
	return s
}

// SetRoutingProfileId sets the RoutingProfileId field's value.
func (s *ListRoutingProfileQueuesInput) SetRoutingProfileId(v string) *ListRoutingProfileQueuesInput {
	s.RoutingProfileId = &v
	return s
}

type ListRoutingProfileQueuesOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services Region where this resource was last modified.
	LastModifiedRegion *string `type:"string"`

	// The timestamp when this resource was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`

	// Information about the routing profiles.
	RoutingProfileQueueConfigSummaryList []*RoutingProfileQueueConfigSummary `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 ListRoutingProfileQueuesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListRoutingProfileQueuesOutput) GoString() string {
	return s.String()
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *ListRoutingProfileQueuesOutput) SetLastModifiedRegion(v string) *ListRoutingProfileQueuesOutput {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *ListRoutingProfileQueuesOutput) SetLastModifiedTime(v time.Time) *ListRoutingProfileQueuesOutput {
	s.LastModifiedTime = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListRoutingProfileQueuesOutput) SetNextToken(v string) *ListRoutingProfileQueuesOutput {
	s.NextToken = &v
	return s
}

// SetRoutingProfileQueueConfigSummaryList sets the RoutingProfileQueueConfigSummaryList field's value.
func (s *ListRoutingProfileQueuesOutput) SetRoutingProfileQueueConfigSummaryList(v []*RoutingProfileQueueConfigSummary) *ListRoutingProfileQueuesOutput {
	s.RoutingProfileQueueConfigSummaryList = v
	return s
}

type ListRoutingProfilesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page. The default MaxResult size
	// is 100.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListRoutingProfilesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListRoutingProfilesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListRoutingProfilesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListRoutingProfilesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListRoutingProfilesInput) SetInstanceId(v string) *ListRoutingProfilesInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListRoutingProfilesInput) SetMaxResults(v int64) *ListRoutingProfilesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListRoutingProfilesInput) SetNextToken(v string) *ListRoutingProfilesInput {
	s.NextToken = &v
	return s
}

type ListRoutingProfilesOutput struct {
	_ struct{} `type:"structure"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`

	// Information about the routing profiles.
	RoutingProfileSummaryList []*RoutingProfileSummary `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 ListRoutingProfilesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListRoutingProfilesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListRoutingProfilesOutput) SetNextToken(v string) *ListRoutingProfilesOutput {
	s.NextToken = &v
	return s
}

// SetRoutingProfileSummaryList sets the RoutingProfileSummaryList field's value.
func (s *ListRoutingProfilesOutput) SetRoutingProfileSummaryList(v []*RoutingProfileSummary) *ListRoutingProfilesOutput {
	s.RoutingProfileSummaryList = v
	return s
}

type ListRulesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The name of the event source.
	EventSourceName *string `location:"querystring" locationName:"eventSourceName" type:"string" enum:"EventSourceName"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`

	// The publish status of the rule.
	PublishStatus *string `location:"querystring" locationName:"publishStatus" type:"string" enum:"RulePublishStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListRulesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListRulesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListRulesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListRulesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEventSourceName sets the EventSourceName field's value.
func (s *ListRulesInput) SetEventSourceName(v string) *ListRulesInput {
	s.EventSourceName = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListRulesInput) SetInstanceId(v string) *ListRulesInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListRulesInput) SetMaxResults(v int64) *ListRulesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListRulesInput) SetNextToken(v string) *ListRulesInput {
	s.NextToken = &v
	return s
}

// SetPublishStatus sets the PublishStatus field's value.
func (s *ListRulesInput) SetPublishStatus(v string) *ListRulesInput {
	s.PublishStatus = &v
	return s
}

type ListRulesOutput struct {
	_ struct{} `type:"structure"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`

	// Summary information about a rule.
	//
	// RuleSummaryList is a required field
	RuleSummaryList []*RuleSummary `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 ListRulesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListRulesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListRulesOutput) SetNextToken(v string) *ListRulesOutput {
	s.NextToken = &v
	return s
}

// SetRuleSummaryList sets the RuleSummaryList field's value.
func (s *ListRulesOutput) SetRuleSummaryList(v []*RuleSummary) *ListRulesOutput {
	s.RuleSummaryList = v
	return s
}

type ListSecurityKeysInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSecurityKeysInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSecurityKeysInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListSecurityKeysInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListSecurityKeysInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListSecurityKeysInput) SetInstanceId(v string) *ListSecurityKeysInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListSecurityKeysInput) SetMaxResults(v int64) *ListSecurityKeysInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListSecurityKeysInput) SetNextToken(v string) *ListSecurityKeysInput {
	s.NextToken = &v
	return s
}

type ListSecurityKeysOutput struct {
	_ struct{} `type:"structure"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`

	// The security keys.
	SecurityKeys []*SecurityKey `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 ListSecurityKeysOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSecurityKeysOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListSecurityKeysOutput) SetNextToken(v string) *ListSecurityKeysOutput {
	s.NextToken = &v
	return s
}

// SetSecurityKeys sets the SecurityKeys field's value.
func (s *ListSecurityKeysOutput) SetSecurityKeys(v []*SecurityKey) *ListSecurityKeysOutput {
	s.SecurityKeys = v
	return s
}

type ListSecurityProfileApplicationsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`

	// The identifier for the security profle.
	//
	// SecurityProfileId is a required field
	SecurityProfileId *string `location:"uri" locationName:"SecurityProfileId" 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 ListSecurityProfileApplicationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSecurityProfileApplicationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListSecurityProfileApplicationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListSecurityProfileApplicationsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.SecurityProfileId == nil {
		invalidParams.Add(request.NewErrParamRequired("SecurityProfileId"))
	}
	if s.SecurityProfileId != nil && len(*s.SecurityProfileId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SecurityProfileId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListSecurityProfileApplicationsInput) SetInstanceId(v string) *ListSecurityProfileApplicationsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListSecurityProfileApplicationsInput) SetMaxResults(v int64) *ListSecurityProfileApplicationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListSecurityProfileApplicationsInput) SetNextToken(v string) *ListSecurityProfileApplicationsInput {
	s.NextToken = &v
	return s
}

// SetSecurityProfileId sets the SecurityProfileId field's value.
func (s *ListSecurityProfileApplicationsInput) SetSecurityProfileId(v string) *ListSecurityProfileApplicationsInput {
	s.SecurityProfileId = &v
	return s
}

type ListSecurityProfileApplicationsOutput struct {
	_ struct{} `type:"structure"`

	// This API is in preview release for Amazon Connect and is subject to change.
	//
	// A list of the third-party application's metadata.
	Applications []*Application `type:"list"`

	// The Amazon Web Services Region where this resource was last modified.
	LastModifiedRegion *string `type:"string"`

	// The timestamp when this resource was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSecurityProfileApplicationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSecurityProfileApplicationsOutput) GoString() string {
	return s.String()
}

// SetApplications sets the Applications field's value.
func (s *ListSecurityProfileApplicationsOutput) SetApplications(v []*Application) *ListSecurityProfileApplicationsOutput {
	s.Applications = v
	return s
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *ListSecurityProfileApplicationsOutput) SetLastModifiedRegion(v string) *ListSecurityProfileApplicationsOutput {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *ListSecurityProfileApplicationsOutput) SetLastModifiedTime(v time.Time) *ListSecurityProfileApplicationsOutput {
	s.LastModifiedTime = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListSecurityProfileApplicationsOutput) SetNextToken(v string) *ListSecurityProfileApplicationsOutput {
	s.NextToken = &v
	return s
}

type ListSecurityProfilePermissionsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`

	// The identifier for the security profle.
	//
	// SecurityProfileId is a required field
	SecurityProfileId *string `location:"uri" locationName:"SecurityProfileId" 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 ListSecurityProfilePermissionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSecurityProfilePermissionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListSecurityProfilePermissionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListSecurityProfilePermissionsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.SecurityProfileId == nil {
		invalidParams.Add(request.NewErrParamRequired("SecurityProfileId"))
	}
	if s.SecurityProfileId != nil && len(*s.SecurityProfileId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SecurityProfileId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListSecurityProfilePermissionsInput) SetInstanceId(v string) *ListSecurityProfilePermissionsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListSecurityProfilePermissionsInput) SetMaxResults(v int64) *ListSecurityProfilePermissionsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListSecurityProfilePermissionsInput) SetNextToken(v string) *ListSecurityProfilePermissionsInput {
	s.NextToken = &v
	return s
}

// SetSecurityProfileId sets the SecurityProfileId field's value.
func (s *ListSecurityProfilePermissionsInput) SetSecurityProfileId(v string) *ListSecurityProfilePermissionsInput {
	s.SecurityProfileId = &v
	return s
}

type ListSecurityProfilePermissionsOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services Region where this resource was last modified.
	LastModifiedRegion *string `type:"string"`

	// The timestamp when this resource was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`

	// The permissions granted to the security profile. For a complete list of valid
	// permissions, see List of security profile permissions (https://docs.aws.amazon.com/connect/latest/adminguide/security-profile-list.html).
	Permissions []*string `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 ListSecurityProfilePermissionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSecurityProfilePermissionsOutput) GoString() string {
	return s.String()
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *ListSecurityProfilePermissionsOutput) SetLastModifiedRegion(v string) *ListSecurityProfilePermissionsOutput {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *ListSecurityProfilePermissionsOutput) SetLastModifiedTime(v time.Time) *ListSecurityProfilePermissionsOutput {
	s.LastModifiedTime = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListSecurityProfilePermissionsOutput) SetNextToken(v string) *ListSecurityProfilePermissionsOutput {
	s.NextToken = &v
	return s
}

// SetPermissions sets the Permissions field's value.
func (s *ListSecurityProfilePermissionsOutput) SetPermissions(v []*string) *ListSecurityProfilePermissionsOutput {
	s.Permissions = v
	return s
}

type ListSecurityProfilesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page. The default MaxResult size
	// is 100.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSecurityProfilesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSecurityProfilesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListSecurityProfilesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListSecurityProfilesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListSecurityProfilesInput) SetInstanceId(v string) *ListSecurityProfilesInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListSecurityProfilesInput) SetMaxResults(v int64) *ListSecurityProfilesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListSecurityProfilesInput) SetNextToken(v string) *ListSecurityProfilesInput {
	s.NextToken = &v
	return s
}

type ListSecurityProfilesOutput struct {
	_ struct{} `type:"structure"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`

	// Information about the security profiles.
	SecurityProfileSummaryList []*SecurityProfileSummary `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 ListSecurityProfilesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSecurityProfilesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListSecurityProfilesOutput) SetNextToken(v string) *ListSecurityProfilesOutput {
	s.NextToken = &v
	return s
}

// SetSecurityProfileSummaryList sets the SecurityProfileSummaryList field's value.
func (s *ListSecurityProfilesOutput) SetSecurityProfileSummaryList(v []*SecurityProfileSummary) *ListSecurityProfilesOutput {
	s.SecurityProfileSummaryList = v
	return s
}

type ListTagsForResourceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the resource. All Amazon Connect resources
	// (instances, queues, flows, routing profiles, etc) have an ARN. To locate
	// the ARN for an instance, for example, see Find your Amazon Connect instance
	// ID/ARN (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html).
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTagsForResourceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTagsForResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListTagsForResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}
	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceArn sets the ResourceArn field's value.
func (s *ListTagsForResourceInput) SetResourceArn(v string) *ListTagsForResourceInput {
	s.ResourceArn = &v
	return s
}

type ListTagsForResourceOutput struct {
	_ struct{} `type:"structure"`

	// Information about the tags.
	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTagsForResourceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTagsForResourceOutput) GoString() string {
	return s.String()
}

// SetTags sets the Tags field's value.
func (s *ListTagsForResourceOutput) SetTags(v map[string]*string) *ListTagsForResourceOutput {
	s.Tags = v
	return s
}

type ListTaskTemplatesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	//
	// It is not expected that you set this.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The name of the task template.
	Name *string `location:"querystring" locationName:"name" min:"1" type:"string"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	//
	// It is not expected that you set this because the value returned in the previous
	// response is always null.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`

	// Marks a template as ACTIVE or INACTIVE for a task to refer to it. Tasks can
	// only be created from ACTIVE templates. If a template is marked as INACTIVE,
	// then a task that refers to this template cannot be created.
	Status *string `location:"querystring" locationName:"status" type:"string" enum:"TaskTemplateStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTaskTemplatesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTaskTemplatesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListTaskTemplatesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListTaskTemplatesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListTaskTemplatesInput) SetInstanceId(v string) *ListTaskTemplatesInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListTaskTemplatesInput) SetMaxResults(v int64) *ListTaskTemplatesInput {
	s.MaxResults = &v
	return s
}

// SetName sets the Name field's value.
func (s *ListTaskTemplatesInput) SetName(v string) *ListTaskTemplatesInput {
	s.Name = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListTaskTemplatesInput) SetNextToken(v string) *ListTaskTemplatesInput {
	s.NextToken = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListTaskTemplatesInput) SetStatus(v string) *ListTaskTemplatesInput {
	s.Status = &v
	return s
}

type ListTaskTemplatesOutput struct {
	_ struct{} `type:"structure"`

	// If there are additional results, this is the token for the next set of results.
	//
	// This is always returned as a null in the response.
	NextToken *string `type:"string"`

	// Provides details about a list of task templates belonging to an instance.
	TaskTemplates []*TaskTemplateMetadata `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 ListTaskTemplatesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTaskTemplatesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListTaskTemplatesOutput) SetNextToken(v string) *ListTaskTemplatesOutput {
	s.NextToken = &v
	return s
}

// SetTaskTemplates sets the TaskTemplates field's value.
func (s *ListTaskTemplatesOutput) SetTaskTemplates(v []*TaskTemplateMetadata) *ListTaskTemplatesOutput {
	s.TaskTemplates = v
	return s
}

type ListTrafficDistributionGroupUsersInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`

	// The identifier of the traffic distribution group. This can be the ID or the
	// ARN if the API is being called in the Region where the traffic distribution
	// group was created. The ARN must be provided if the call is from the replicated
	// Region.
	//
	// TrafficDistributionGroupId is a required field
	TrafficDistributionGroupId *string `location:"uri" locationName:"TrafficDistributionGroupId" 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 ListTrafficDistributionGroupUsersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTrafficDistributionGroupUsersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListTrafficDistributionGroupUsersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListTrafficDistributionGroupUsersInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.TrafficDistributionGroupId == nil {
		invalidParams.Add(request.NewErrParamRequired("TrafficDistributionGroupId"))
	}
	if s.TrafficDistributionGroupId != nil && len(*s.TrafficDistributionGroupId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TrafficDistributionGroupId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListTrafficDistributionGroupUsersInput) SetMaxResults(v int64) *ListTrafficDistributionGroupUsersInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListTrafficDistributionGroupUsersInput) SetNextToken(v string) *ListTrafficDistributionGroupUsersInput {
	s.NextToken = &v
	return s
}

// SetTrafficDistributionGroupId sets the TrafficDistributionGroupId field's value.
func (s *ListTrafficDistributionGroupUsersInput) SetTrafficDistributionGroupId(v string) *ListTrafficDistributionGroupUsersInput {
	s.TrafficDistributionGroupId = &v
	return s
}

type ListTrafficDistributionGroupUsersOutput struct {
	_ struct{} `type:"structure"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`

	// A list of traffic distribution group users.
	TrafficDistributionGroupUserSummaryList []*TrafficDistributionGroupUserSummary `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 ListTrafficDistributionGroupUsersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTrafficDistributionGroupUsersOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListTrafficDistributionGroupUsersOutput) SetNextToken(v string) *ListTrafficDistributionGroupUsersOutput {
	s.NextToken = &v
	return s
}

// SetTrafficDistributionGroupUserSummaryList sets the TrafficDistributionGroupUserSummaryList field's value.
func (s *ListTrafficDistributionGroupUsersOutput) SetTrafficDistributionGroupUserSummaryList(v []*TrafficDistributionGroupUserSummary) *ListTrafficDistributionGroupUsersOutput {
	s.TrafficDistributionGroupUserSummaryList = v
	return s
}

type ListTrafficDistributionGroupsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	InstanceId *string `location:"querystring" locationName:"instanceId" min:"1" type:"string"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTrafficDistributionGroupsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTrafficDistributionGroupsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListTrafficDistributionGroupsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListTrafficDistributionGroupsInput"}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListTrafficDistributionGroupsInput) SetInstanceId(v string) *ListTrafficDistributionGroupsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListTrafficDistributionGroupsInput) SetMaxResults(v int64) *ListTrafficDistributionGroupsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListTrafficDistributionGroupsInput) SetNextToken(v string) *ListTrafficDistributionGroupsInput {
	s.NextToken = &v
	return s
}

type ListTrafficDistributionGroupsOutput struct {
	_ struct{} `type:"structure"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`

	// A list of traffic distribution groups.
	TrafficDistributionGroupSummaryList []*TrafficDistributionGroupSummary `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 ListTrafficDistributionGroupsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTrafficDistributionGroupsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListTrafficDistributionGroupsOutput) SetNextToken(v string) *ListTrafficDistributionGroupsOutput {
	s.NextToken = &v
	return s
}

// SetTrafficDistributionGroupSummaryList sets the TrafficDistributionGroupSummaryList field's value.
func (s *ListTrafficDistributionGroupsOutput) SetTrafficDistributionGroupSummaryList(v []*TrafficDistributionGroupSummary) *ListTrafficDistributionGroupsOutput {
	s.TrafficDistributionGroupSummaryList = v
	return s
}

// Provides summary information about the use cases for the specified integration
// association.
type ListUseCasesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier for the integration association.
	//
	// IntegrationAssociationId is a required field
	IntegrationAssociationId *string `location:"uri" locationName:"IntegrationAssociationId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListUseCasesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListUseCasesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListUseCasesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListUseCasesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.IntegrationAssociationId == nil {
		invalidParams.Add(request.NewErrParamRequired("IntegrationAssociationId"))
	}
	if s.IntegrationAssociationId != nil && len(*s.IntegrationAssociationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("IntegrationAssociationId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListUseCasesInput) SetInstanceId(v string) *ListUseCasesInput {
	s.InstanceId = &v
	return s
}

// SetIntegrationAssociationId sets the IntegrationAssociationId field's value.
func (s *ListUseCasesInput) SetIntegrationAssociationId(v string) *ListUseCasesInput {
	s.IntegrationAssociationId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListUseCasesInput) SetMaxResults(v int64) *ListUseCasesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListUseCasesInput) SetNextToken(v string) *ListUseCasesInput {
	s.NextToken = &v
	return s
}

type ListUseCasesOutput struct {
	_ struct{} `type:"structure"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`

	// The use cases.
	UseCaseSummaryList []*UseCase `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 ListUseCasesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListUseCasesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListUseCasesOutput) SetNextToken(v string) *ListUseCasesOutput {
	s.NextToken = &v
	return s
}

// SetUseCaseSummaryList sets the UseCaseSummaryList field's value.
func (s *ListUseCasesOutput) SetUseCaseSummaryList(v []*UseCase) *ListUseCasesOutput {
	s.UseCaseSummaryList = v
	return s
}

type ListUserHierarchyGroupsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page. The default MaxResult size
	// is 100.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListUserHierarchyGroupsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListUserHierarchyGroupsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListUserHierarchyGroupsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListUserHierarchyGroupsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListUserHierarchyGroupsInput) SetInstanceId(v string) *ListUserHierarchyGroupsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListUserHierarchyGroupsInput) SetMaxResults(v int64) *ListUserHierarchyGroupsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListUserHierarchyGroupsInput) SetNextToken(v string) *ListUserHierarchyGroupsInput {
	s.NextToken = &v
	return s
}

type ListUserHierarchyGroupsOutput struct {
	_ struct{} `type:"structure"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`

	// Information about the hierarchy groups.
	UserHierarchyGroupSummaryList []*HierarchyGroupSummary `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 ListUserHierarchyGroupsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListUserHierarchyGroupsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListUserHierarchyGroupsOutput) SetNextToken(v string) *ListUserHierarchyGroupsOutput {
	s.NextToken = &v
	return s
}

// SetUserHierarchyGroupSummaryList sets the UserHierarchyGroupSummaryList field's value.
func (s *ListUserHierarchyGroupsOutput) SetUserHierarchyGroupSummaryList(v []*HierarchyGroupSummary) *ListUserHierarchyGroupsOutput {
	s.UserHierarchyGroupSummaryList = v
	return s
}

type ListUserProficienciesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`

	// The identifier of the user account.
	//
	// UserId is a required field
	UserId *string `location:"uri" locationName:"UserId" 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 ListUserProficienciesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListUserProficienciesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListUserProficienciesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListUserProficienciesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.UserId == nil {
		invalidParams.Add(request.NewErrParamRequired("UserId"))
	}
	if s.UserId != nil && len(*s.UserId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListUserProficienciesInput) SetInstanceId(v string) *ListUserProficienciesInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListUserProficienciesInput) SetMaxResults(v int64) *ListUserProficienciesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListUserProficienciesInput) SetNextToken(v string) *ListUserProficienciesInput {
	s.NextToken = &v
	return s
}

// SetUserId sets the UserId field's value.
func (s *ListUserProficienciesInput) SetUserId(v string) *ListUserProficienciesInput {
	s.UserId = &v
	return s
}

type ListUserProficienciesOutput struct {
	_ struct{} `type:"structure"`

	// The region in which a user's proficiencies were last modified.
	LastModifiedRegion *string `type:"string"`

	// The last time that the user's proficiencies are were modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`

	// Information about the user proficiencies.
	UserProficiencyList []*UserProficiency `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 ListUserProficienciesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListUserProficienciesOutput) GoString() string {
	return s.String()
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *ListUserProficienciesOutput) SetLastModifiedRegion(v string) *ListUserProficienciesOutput {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *ListUserProficienciesOutput) SetLastModifiedTime(v time.Time) *ListUserProficienciesOutput {
	s.LastModifiedTime = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListUserProficienciesOutput) SetNextToken(v string) *ListUserProficienciesOutput {
	s.NextToken = &v
	return s
}

// SetUserProficiencyList sets the UserProficiencyList field's value.
func (s *ListUserProficienciesOutput) SetUserProficiencyList(v []*UserProficiency) *ListUserProficienciesOutput {
	s.UserProficiencyList = v
	return s
}

type ListUsersInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page. The default MaxResult size
	// is 100.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListUsersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListUsersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListUsersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListUsersInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListUsersInput) SetInstanceId(v string) *ListUsersInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListUsersInput) SetMaxResults(v int64) *ListUsersInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListUsersInput) SetNextToken(v string) *ListUsersInput {
	s.NextToken = &v
	return s
}

type ListUsersOutput struct {
	_ struct{} `type:"structure"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `type:"string"`

	// Information about the users.
	UserSummaryList []*UserSummary `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 ListUsersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListUsersOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListUsersOutput) SetNextToken(v string) *ListUsersOutput {
	s.NextToken = &v
	return s
}

// SetUserSummaryList sets the UserSummaryList field's value.
func (s *ListUsersOutput) SetUserSummaryList(v []*UserSummary) *ListUsersOutput {
	s.UserSummaryList = v
	return s
}

type ListViewVersionsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instanceId
	// in the ARN of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page. The default MaxResult size
	// is 100.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`

	// The identifier of the view. Both ViewArn and ViewId can be used.
	//
	// ViewId is a required field
	ViewId *string `location:"uri" locationName:"ViewId" 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 ListViewVersionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListViewVersionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListViewVersionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListViewVersionsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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 s.ViewId == nil {
		invalidParams.Add(request.NewErrParamRequired("ViewId"))
	}
	if s.ViewId != nil && len(*s.ViewId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ViewId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListViewVersionsInput) SetInstanceId(v string) *ListViewVersionsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListViewVersionsInput) SetMaxResults(v int64) *ListViewVersionsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListViewVersionsInput) SetNextToken(v string) *ListViewVersionsInput {
	s.NextToken = &v
	return s
}

// SetViewId sets the ViewId field's value.
func (s *ListViewVersionsInput) SetViewId(v string) *ListViewVersionsInput {
	s.ViewId = &v
	return s
}

type ListViewVersionsOutput struct {
	_ struct{} `type:"structure"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `min:"1" type:"string"`

	// A list of view version summaries.
	ViewVersionSummaryList []*ViewVersionSummary `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 ListViewVersionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListViewVersionsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListViewVersionsOutput) SetNextToken(v string) *ListViewVersionsOutput {
	s.NextToken = &v
	return s
}

// SetViewVersionSummaryList sets the ViewVersionSummaryList field's value.
func (s *ListViewVersionsOutput) SetViewVersionSummaryList(v []*ViewVersionSummary) *ListViewVersionsOutput {
	s.ViewVersionSummaryList = v
	return s
}

type ListViewsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Connect instance. You can find the instanceId
	// in the ARN of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page. The default MaxResult size
	// is 100.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`

	// The type of the view.
	Type *string `location:"querystring" locationName:"type" type:"string" enum:"ViewType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListViewsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListViewsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListViewsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListViewsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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
}

// SetInstanceId sets the InstanceId field's value.
func (s *ListViewsInput) SetInstanceId(v string) *ListViewsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListViewsInput) SetMaxResults(v int64) *ListViewsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListViewsInput) SetNextToken(v string) *ListViewsInput {
	s.NextToken = &v
	return s
}

// SetType sets the Type field's value.
func (s *ListViewsInput) SetType(v string) *ListViewsInput {
	s.Type = &v
	return s
}

type ListViewsOutput struct {
	_ struct{} `type:"structure"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `min:"1" type:"string"`

	// A list of view summaries.
	ViewsSummaryList []*ViewSummary `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 ListViewsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListViewsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListViewsOutput) SetNextToken(v string) *ListViewsOutput {
	s.NextToken = &v
	return s
}

// SetViewsSummaryList sets the ViewsSummaryList field's value.
func (s *ListViewsOutput) SetViewsSummaryList(v []*ViewSummary) *ListViewsOutput {
	s.ViewsSummaryList = v
	return s
}

// Maximum number (1000) of tags have been returned with current request. Consider
// changing request parameters to get more tags.
type MaximumResultReturnedException 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 MaximumResultReturnedException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MaximumResultReturnedException) GoString() string {
	return s.String()
}

func newErrorMaximumResultReturnedException(v protocol.ResponseMetadata) error {
	return &MaximumResultReturnedException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *MaximumResultReturnedException) Code() string {
	return "MaximumResultReturnedException"
}

// Message returns the exception's message.
func (s *MaximumResultReturnedException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *MaximumResultReturnedException) OrigErr() error {
	return nil
}

func (s *MaximumResultReturnedException) 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 *MaximumResultReturnedException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *MaximumResultReturnedException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Contains information about which channels are supported, and how many contacts
// an agent can have on a channel simultaneously.
type MediaConcurrency struct {
	_ struct{} `type:"structure"`

	// The channels that agents can handle in the Contact Control Panel (CCP).
	//
	// Channel is a required field
	Channel *string `type:"string" required:"true" enum:"Channel"`

	// The number of contacts an agent can have on a channel simultaneously.
	//
	// Valid Range for VOICE: Minimum value of 1. Maximum value of 1.
	//
	// Valid Range for CHAT: Minimum value of 1. Maximum value of 10.
	//
	// Valid Range for TASK: Minimum value of 1. Maximum value of 10.
	//
	// Concurrency is a required field
	Concurrency *int64 `min:"1" type:"integer" required:"true"`

	// Defines the cross-channel routing behavior for each channel that is enabled
	// for this Routing Profile. For example, this allows you to offer an agent
	// a different contact from another channel when they are currently working
	// with a contact from a Voice channel.
	CrossChannelBehavior *CrossChannelBehavior `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 MediaConcurrency) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MediaConcurrency) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *MediaConcurrency) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "MediaConcurrency"}
	if s.Channel == nil {
		invalidParams.Add(request.NewErrParamRequired("Channel"))
	}
	if s.Concurrency == nil {
		invalidParams.Add(request.NewErrParamRequired("Concurrency"))
	}
	if s.Concurrency != nil && *s.Concurrency < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Concurrency", 1))
	}
	if s.CrossChannelBehavior != nil {
		if err := s.CrossChannelBehavior.Validate(); err != nil {
			invalidParams.AddNested("CrossChannelBehavior", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetChannel sets the Channel field's value.
func (s *MediaConcurrency) SetChannel(v string) *MediaConcurrency {
	s.Channel = &v
	return s
}

// SetConcurrency sets the Concurrency field's value.
func (s *MediaConcurrency) SetConcurrency(v int64) *MediaConcurrency {
	s.Concurrency = &v
	return s
}

// SetCrossChannelBehavior sets the CrossChannelBehavior field's value.
func (s *MediaConcurrency) SetCrossChannelBehavior(v *CrossChannelBehavior) *MediaConcurrency {
	s.CrossChannelBehavior = v
	return s
}

// A set of endpoints used by clients to connect to the media service group
// for an Amazon Chime SDK meeting.
type MediaPlacement struct {
	_ struct{} `type:"structure"`

	// The audio fallback URL.
	AudioFallbackUrl *string `min:"1" type:"string"`

	// The audio host URL.
	AudioHostUrl *string `min:"1" type:"string"`

	// The event ingestion URL to which you send client meeting events.
	EventIngestionUrl *string `min:"1" type:"string"`

	// The signaling URL.
	SignalingUrl *string `min:"1" type:"string"`

	// The turn control URL.
	TurnControlUrl *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MediaPlacement) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MediaPlacement) GoString() string {
	return s.String()
}

// SetAudioFallbackUrl sets the AudioFallbackUrl field's value.
func (s *MediaPlacement) SetAudioFallbackUrl(v string) *MediaPlacement {
	s.AudioFallbackUrl = &v
	return s
}

// SetAudioHostUrl sets the AudioHostUrl field's value.
func (s *MediaPlacement) SetAudioHostUrl(v string) *MediaPlacement {
	s.AudioHostUrl = &v
	return s
}

// SetEventIngestionUrl sets the EventIngestionUrl field's value.
func (s *MediaPlacement) SetEventIngestionUrl(v string) *MediaPlacement {
	s.EventIngestionUrl = &v
	return s
}

// SetSignalingUrl sets the SignalingUrl field's value.
func (s *MediaPlacement) SetSignalingUrl(v string) *MediaPlacement {
	s.SignalingUrl = &v
	return s
}

// SetTurnControlUrl sets the TurnControlUrl field's value.
func (s *MediaPlacement) SetTurnControlUrl(v string) *MediaPlacement {
	s.TurnControlUrl = &v
	return s
}

// A meeting created using the Amazon Chime SDK.
type Meeting struct {
	_ struct{} `type:"structure"`

	// The media placement for the meeting.
	MediaPlacement *MediaPlacement `type:"structure"`

	// The Amazon Web Services Region in which you create the meeting.
	MediaRegion *string `type:"string"`

	// The configuration settings of the features available to a meeting.
	MeetingFeatures *MeetingFeaturesConfiguration `type:"structure"`

	// The Amazon Chime SDK meeting ID.
	MeetingId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Meeting) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Meeting) GoString() string {
	return s.String()
}

// SetMediaPlacement sets the MediaPlacement field's value.
func (s *Meeting) SetMediaPlacement(v *MediaPlacement) *Meeting {
	s.MediaPlacement = v
	return s
}

// SetMediaRegion sets the MediaRegion field's value.
func (s *Meeting) SetMediaRegion(v string) *Meeting {
	s.MediaRegion = &v
	return s
}

// SetMeetingFeatures sets the MeetingFeatures field's value.
func (s *Meeting) SetMeetingFeatures(v *MeetingFeaturesConfiguration) *Meeting {
	s.MeetingFeatures = v
	return s
}

// SetMeetingId sets the MeetingId field's value.
func (s *Meeting) SetMeetingId(v string) *Meeting {
	s.MeetingId = &v
	return s
}

// The configuration settings of the features available to a meeting.
type MeetingFeaturesConfiguration struct {
	_ struct{} `type:"structure"`

	// The configuration settings for the audio features available to a meeting.
	Audio *AudioFeatures `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 MeetingFeaturesConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MeetingFeaturesConfiguration) GoString() string {
	return s.String()
}

// SetAudio sets the Audio field's value.
func (s *MeetingFeaturesConfiguration) SetAudio(v *AudioFeatures) *MeetingFeaturesConfiguration {
	s.Audio = v
	return s
}

// Contains the name, thresholds, and metric filters.
type MetricDataV2 struct {
	_ struct{} `type:"structure"`

	// The metric name, thresholds, and metric filters of the returned metric.
	Metric *MetricV2 `type:"structure"`

	// The corresponding value of the metric returned in the response.
	Value *float64 `type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MetricDataV2) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MetricDataV2) GoString() string {
	return s.String()
}

// SetMetric sets the Metric field's value.
func (s *MetricDataV2) SetMetric(v *MetricV2) *MetricDataV2 {
	s.Metric = v
	return s
}

// SetValue sets the Value field's value.
func (s *MetricDataV2) SetValue(v float64) *MetricDataV2 {
	s.Value = &v
	return s
}

// Contains information about the filter used when retrieving metrics. MetricFiltersV2
// can be used on the following metrics: AVG_AGENT_CONNECTING_TIME, CONTACTS_CREATED,
// CONTACTS_HANDLED, SUM_CONTACTS_DISCONNECTED.
type MetricFilterV2 struct {
	_ struct{} `type:"structure"`

	// The key to use for filtering data.
	//
	// Valid metric filter keys: INITIATION_METHOD, DISCONNECT_REASON. These are
	// the same values as the InitiationMethod and DisconnectReason in the contact
	// record. For more information, see ContactTraceRecord (https://docs.aws.amazon.com/connect/latest/adminguide/ctr-data-model.html#ctr-ContactTraceRecord)
	// in the Amazon Connect Administrator's Guide.
	MetricFilterKey *string `type:"string"`

	// The values to use for filtering data.
	//
	// Valid metric filter values for INITIATION_METHOD: INBOUND | OUTBOUND | TRANSFER
	// | QUEUE_TRANSFER | CALLBACK | API
	//
	// Valid metric filter values for DISCONNECT_REASON: CUSTOMER_DISCONNECT | AGENT_DISCONNECT
	// | THIRD_PARTY_DISCONNECT | TELECOM_PROBLEM | BARGED | CONTACT_FLOW_DISCONNECT
	// | OTHER | EXPIRED | API
	MetricFilterValues []*string `min:"1" type:"list"`

	// The flag to use to filter on requested metric filter values or to not filter
	// on requested metric filter values. By default the negate is false, which
	// indicates to filter on the requested metric filter.
	Negate *bool `type:"boolean"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MetricFilterV2) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MetricFilterV2) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *MetricFilterV2) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "MetricFilterV2"}
	if s.MetricFilterValues != nil && len(s.MetricFilterValues) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("MetricFilterValues", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMetricFilterKey sets the MetricFilterKey field's value.
func (s *MetricFilterV2) SetMetricFilterKey(v string) *MetricFilterV2 {
	s.MetricFilterKey = &v
	return s
}

// SetMetricFilterValues sets the MetricFilterValues field's value.
func (s *MetricFilterV2) SetMetricFilterValues(v []*string) *MetricFilterV2 {
	s.MetricFilterValues = v
	return s
}

// SetNegate sets the Negate field's value.
func (s *MetricFilterV2) SetNegate(v bool) *MetricFilterV2 {
	s.Negate = &v
	return s
}

// The interval period with the start and end time for the metrics.
type MetricInterval struct {
	_ struct{} `type:"structure"`

	// The timestamp, in UNIX Epoch time format. End time is based on the interval
	// period selected. For example, If IntervalPeriod is selected THIRTY_MIN, StartTime
	// and EndTime in the API request differs by 1 day, then 48 results are returned
	// in the response. Each result is aggregated by the 30 minutes period, with
	// each StartTime and EndTime differing by 30 minutes.
	EndTime *time.Time `type:"timestamp"`

	// The interval period provided in the API request.
	Interval *string `type:"string" enum:"IntervalPeriod"`

	// The timestamp, in UNIX Epoch time format. Start time is based on the interval
	// period selected.
	StartTime *time.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 MetricInterval) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MetricInterval) GoString() string {
	return s.String()
}

// SetEndTime sets the EndTime field's value.
func (s *MetricInterval) SetEndTime(v time.Time) *MetricInterval {
	s.EndTime = &v
	return s
}

// SetInterval sets the Interval field's value.
func (s *MetricInterval) SetInterval(v string) *MetricInterval {
	s.Interval = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *MetricInterval) SetStartTime(v time.Time) *MetricInterval {
	s.StartTime = &v
	return s
}

// Contains information about the metric results.
type MetricResultV2 struct {
	_ struct{} `type:"structure"`

	// The set of metrics.
	Collections []*MetricDataV2 `type:"list"`

	// The dimension for the metrics.
	Dimensions map[string]*string `type:"map"`

	// The interval period with the start and end time for the metrics.
	MetricInterval *MetricInterval `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 MetricResultV2) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MetricResultV2) GoString() string {
	return s.String()
}

// SetCollections sets the Collections field's value.
func (s *MetricResultV2) SetCollections(v []*MetricDataV2) *MetricResultV2 {
	s.Collections = v
	return s
}

// SetDimensions sets the Dimensions field's value.
func (s *MetricResultV2) SetDimensions(v map[string]*string) *MetricResultV2 {
	s.Dimensions = v
	return s
}

// SetMetricInterval sets the MetricInterval field's value.
func (s *MetricResultV2) SetMetricInterval(v *MetricInterval) *MetricResultV2 {
	s.MetricInterval = v
	return s
}

// Contains information about the metric.
type MetricV2 struct {
	_ struct{} `type:"structure"`

	// Contains the filters to be used when returning data.
	MetricFilters []*MetricFilterV2 `type:"list"`

	// The name of the metric.
	//
	// This parameter is required. The following Required = No is incorrect.
	Name *string `type:"string"`

	// Contains information about the threshold for service level metrics.
	Threshold []*ThresholdV2 `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 MetricV2) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MetricV2) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *MetricV2) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "MetricV2"}
	if s.MetricFilters != nil {
		for i, v := range s.MetricFilters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "MetricFilters", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Threshold != nil {
		for i, v := range s.Threshold {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Threshold", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMetricFilters sets the MetricFilters field's value.
func (s *MetricV2) SetMetricFilters(v []*MetricFilterV2) *MetricV2 {
	s.MetricFilters = v
	return s
}

// SetName sets the Name field's value.
func (s *MetricV2) SetName(v string) *MetricV2 {
	s.Name = &v
	return s
}

// SetThreshold sets the Threshold field's value.
func (s *MetricV2) SetThreshold(v []*ThresholdV2) *MetricV2 {
	s.Threshold = v
	return s
}

type MonitorContactInput struct {
	_ struct{} `type:"structure"`

	// Specify which monitoring actions the user is allowed to take. For example,
	// whether the user is allowed to escalate from silent monitoring to barge.
	// AllowedMonitorCapabilities is required if barge is enabled.
	AllowedMonitorCapabilities []*string `type:"list" enum:"MonitorCapability"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// The identifier of the contact.
	//
	// ContactId is a required field
	ContactId *string `min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instanceId
	// in the ARN of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// The identifier of the user account.
	//
	// UserId is a required field
	UserId *string `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 MonitorContactInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MonitorContactInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *MonitorContactInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "MonitorContactInput"}
	if s.ContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactId"))
	}
	if s.ContactId != nil && len(*s.ContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.UserId == nil {
		invalidParams.Add(request.NewErrParamRequired("UserId"))
	}
	if s.UserId != nil && len(*s.UserId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAllowedMonitorCapabilities sets the AllowedMonitorCapabilities field's value.
func (s *MonitorContactInput) SetAllowedMonitorCapabilities(v []*string) *MonitorContactInput {
	s.AllowedMonitorCapabilities = v
	return s
}

// SetClientToken sets the ClientToken field's value.
func (s *MonitorContactInput) SetClientToken(v string) *MonitorContactInput {
	s.ClientToken = &v
	return s
}

// SetContactId sets the ContactId field's value.
func (s *MonitorContactInput) SetContactId(v string) *MonitorContactInput {
	s.ContactId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *MonitorContactInput) SetInstanceId(v string) *MonitorContactInput {
	s.InstanceId = &v
	return s
}

// SetUserId sets the UserId field's value.
func (s *MonitorContactInput) SetUserId(v string) *MonitorContactInput {
	s.UserId = &v
	return s
}

type MonitorContactOutput struct {
	_ struct{} `type:"structure"`

	// The ARN of the contact.
	ContactArn *string `type:"string"`

	// The identifier of the contact.
	ContactId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MonitorContactOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MonitorContactOutput) GoString() string {
	return s.String()
}

// SetContactArn sets the ContactArn field's value.
func (s *MonitorContactOutput) SetContactArn(v string) *MonitorContactOutput {
	s.ContactArn = &v
	return s
}

// SetContactId sets the ContactId field's value.
func (s *MonitorContactOutput) SetContactId(v string) *MonitorContactOutput {
	s.ContactId = &v
	return s
}

// Payload of chat properties to apply when starting a new contact.
type NewSessionDetails struct {
	_ struct{} `type:"structure"`

	// A custom key-value pair using an attribute map. The attributes are standard
	// Amazon Connect attributes. They can be accessed in flows just like any other
	// contact attributes.
	//
	// There can be up to 32,768 UTF-8 bytes across all key-value pairs per contact.
	// Attribute keys can include only alphanumeric, dash, and underscore characters.
	Attributes map[string]*string `type:"map"`

	// The customer's details.
	ParticipantDetails *ParticipantDetails `type:"structure"`

	// The streaming configuration, such as the Amazon SNS streaming endpoint.
	StreamingConfiguration *ChatStreamingConfiguration `type:"structure"`

	// The supported chat message content types. Supported types are text/plain,
	// text/markdown, application/json, application/vnd.amazonaws.connect.message.interactive,
	// and application/vnd.amazonaws.connect.message.interactive.response.
	//
	// Content types must always contain text/plain. You can then put any other
	// supported type in the list. For example, all the following lists are valid
	// because they contain text/plain: [text/plain, text/markdown, application/json],
	// [text/markdown, text/plain], [text/plain, application/json, application/vnd.amazonaws.connect.message.interactive.response].
	SupportedMessagingContentTypes []*string `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 NewSessionDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NewSessionDetails) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *NewSessionDetails) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "NewSessionDetails"}
	if s.ParticipantDetails != nil {
		if err := s.ParticipantDetails.Validate(); err != nil {
			invalidParams.AddNested("ParticipantDetails", err.(request.ErrInvalidParams))
		}
	}
	if s.StreamingConfiguration != nil {
		if err := s.StreamingConfiguration.Validate(); err != nil {
			invalidParams.AddNested("StreamingConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAttributes sets the Attributes field's value.
func (s *NewSessionDetails) SetAttributes(v map[string]*string) *NewSessionDetails {
	s.Attributes = v
	return s
}

// SetParticipantDetails sets the ParticipantDetails field's value.
func (s *NewSessionDetails) SetParticipantDetails(v *ParticipantDetails) *NewSessionDetails {
	s.ParticipantDetails = v
	return s
}

// SetStreamingConfiguration sets the StreamingConfiguration field's value.
func (s *NewSessionDetails) SetStreamingConfiguration(v *ChatStreamingConfiguration) *NewSessionDetails {
	s.StreamingConfiguration = v
	return s
}

// SetSupportedMessagingContentTypes sets the SupportedMessagingContentTypes field's value.
func (s *NewSessionDetails) SetSupportedMessagingContentTypes(v []*string) *NewSessionDetails {
	s.SupportedMessagingContentTypes = v
	return s
}

// The type of notification recipient.
type NotificationRecipientType struct {
	_ struct{} `type:"structure"`

	// A list of user IDs.
	UserIds []*string `type:"list"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }. Amazon Connect users
	// with the specified tags will be notified.
	UserTags map[string]*string `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 NotificationRecipientType) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NotificationRecipientType) GoString() string {
	return s.String()
}

// SetUserIds sets the UserIds field's value.
func (s *NotificationRecipientType) SetUserIds(v []*string) *NotificationRecipientType {
	s.UserIds = v
	return s
}

// SetUserTags sets the UserTags field's value.
func (s *NotificationRecipientType) SetUserTags(v map[string]*string) *NotificationRecipientType {
	s.UserTags = v
	return s
}

// Information about a reference when the referenceType is NUMBER. Otherwise,
// null.
type NumberReference struct {
	_ struct{} `type:"structure"`

	// Identifier of the number reference.
	Name *string `min:"1" type:"string"`

	// A valid number.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NumberReference) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NumberReference) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *NumberReference) SetName(v string) *NumberReference {
	s.Name = &v
	return s
}

// SetValue sets the Value field's value.
func (s *NumberReference) SetValue(v string) *NumberReference {
	s.Value = &v
	return s
}

// Information about the property value used in automation of a numeric questions.
// Label values are associated with minimum and maximum values for the numeric
// question.
//
//   - Sentiment scores have a minimum value of -5 and maximum value of 5.
//
//   - Duration labels, such as NON_TALK_TIME, CONTACT_DURATION, AGENT_INTERACTION_DURATION,
//     CUSTOMER_HOLD_TIME have a minimum value of 0 and maximum value of 28800.
//
//   - Percentages have a minimum value of 0 and maximum value of 100.
//
//   - NUMBER_OF_INTERRUPTIONS has a minimum value of 0 and maximum value of
//     1000.
type NumericQuestionPropertyValueAutomation struct {
	_ struct{} `type:"structure"`

	// The property label of the automation.
	//
	// Label is a required field
	Label *string `type:"string" required:"true" enum:"NumericQuestionPropertyAutomationLabel"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NumericQuestionPropertyValueAutomation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NumericQuestionPropertyValueAutomation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *NumericQuestionPropertyValueAutomation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "NumericQuestionPropertyValueAutomation"}
	if s.Label == nil {
		invalidParams.Add(request.NewErrParamRequired("Label"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetLabel sets the Label field's value.
func (s *NumericQuestionPropertyValueAutomation) SetLabel(v string) *NumericQuestionPropertyValueAutomation {
	s.Label = &v
	return s
}

// The outbound caller ID name, number, and outbound whisper flow.
type OutboundCallerConfig struct {
	_ struct{} `type:"structure"`

	// The caller ID name.
	OutboundCallerIdName *string `min:"1" type:"string"`

	// The caller ID number.
	OutboundCallerIdNumberId *string `type:"string"`

	// The outbound whisper flow to be used during an outbound call.
	OutboundFlowId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OutboundCallerConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OutboundCallerConfig) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *OutboundCallerConfig) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "OutboundCallerConfig"}
	if s.OutboundCallerIdName != nil && len(*s.OutboundCallerIdName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("OutboundCallerIdName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetOutboundCallerIdName sets the OutboundCallerIdName field's value.
func (s *OutboundCallerConfig) SetOutboundCallerIdName(v string) *OutboundCallerConfig {
	s.OutboundCallerIdName = &v
	return s
}

// SetOutboundCallerIdNumberId sets the OutboundCallerIdNumberId field's value.
func (s *OutboundCallerConfig) SetOutboundCallerIdNumberId(v string) *OutboundCallerConfig {
	s.OutboundCallerIdNumberId = &v
	return s
}

// SetOutboundFlowId sets the OutboundFlowId field's value.
func (s *OutboundCallerConfig) SetOutboundFlowId(v string) *OutboundCallerConfig {
	s.OutboundFlowId = &v
	return s
}

// The contact is not permitted.
type OutboundContactNotPermittedException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The message about the contact.
	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 OutboundContactNotPermittedException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OutboundContactNotPermittedException) GoString() string {
	return s.String()
}

func newErrorOutboundContactNotPermittedException(v protocol.ResponseMetadata) error {
	return &OutboundContactNotPermittedException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *OutboundContactNotPermittedException) Code() string {
	return "OutboundContactNotPermittedException"
}

// Message returns the exception's message.
func (s *OutboundContactNotPermittedException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *OutboundContactNotPermittedException) OrigErr() error {
	return nil
}

func (s *OutboundContactNotPermittedException) 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 *OutboundContactNotPermittedException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *OutboundContactNotPermittedException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Thrown for analyzed content when requested OutputType was not enabled for
// a given contact. For example, if an OutputType.Raw was requested for a contact
// that had `RedactedOnly` Redaction policy set in Contact flow.
type OutputTypeNotFoundException 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 OutputTypeNotFoundException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OutputTypeNotFoundException) GoString() string {
	return s.String()
}

func newErrorOutputTypeNotFoundException(v protocol.ResponseMetadata) error {
	return &OutputTypeNotFoundException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *OutputTypeNotFoundException) Code() string {
	return "OutputTypeNotFoundException"
}

// Message returns the exception's message.
func (s *OutputTypeNotFoundException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *OutputTypeNotFoundException) OrigErr() error {
	return nil
}

func (s *OutputTypeNotFoundException) 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 *OutputTypeNotFoundException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *OutputTypeNotFoundException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The configuration for the allowed capabilities for participants present over
// the call.
type ParticipantCapabilities struct {
	_ struct{} `type:"structure"`

	// The configuration having the video sharing capabilities for participants
	// over the call.
	Video *string `type:"string" enum:"VideoCapability"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ParticipantCapabilities) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ParticipantCapabilities) GoString() string {
	return s.String()
}

// SetVideo sets the Video field's value.
func (s *ParticipantCapabilities) SetVideo(v string) *ParticipantCapabilities {
	s.Video = &v
	return s
}

// The customer's details.
type ParticipantDetails struct {
	_ struct{} `type:"structure"`

	// Display name of the participant.
	//
	// DisplayName is a required field
	DisplayName *string `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 ParticipantDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ParticipantDetails) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ParticipantDetails) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ParticipantDetails"}
	if s.DisplayName == nil {
		invalidParams.Add(request.NewErrParamRequired("DisplayName"))
	}
	if s.DisplayName != nil && len(*s.DisplayName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DisplayName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDisplayName sets the DisplayName field's value.
func (s *ParticipantDetails) SetDisplayName(v string) *ParticipantDetails {
	s.DisplayName = &v
	return s
}

// The details to add for the participant.
type ParticipantDetailsToAdd struct {
	_ struct{} `type:"structure"`

	// The display name of the participant.
	DisplayName *string `min:"1" type:"string"`

	// The role of the participant being added.
	ParticipantRole *string `type:"string" enum:"ParticipantRole"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ParticipantDetailsToAdd) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ParticipantDetailsToAdd) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ParticipantDetailsToAdd) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ParticipantDetailsToAdd"}
	if s.DisplayName != nil && len(*s.DisplayName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DisplayName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDisplayName sets the DisplayName field's value.
func (s *ParticipantDetailsToAdd) SetDisplayName(v string) *ParticipantDetailsToAdd {
	s.DisplayName = &v
	return s
}

// SetParticipantRole sets the ParticipantRole field's value.
func (s *ParticipantDetailsToAdd) SetParticipantRole(v string) *ParticipantDetailsToAdd {
	s.ParticipantRole = &v
	return s
}

// Configuration information for the timer. After the timer configuration is
// set, it persists for the duration of the chat. It persists across new contacts
// in the chain, for example, transfer contacts.
//
// For more information about how chat timeouts work, see Set up chat timeouts
// for human participants (https://docs.aws.amazon.com/connect/latest/adminguide/setup-chat-timeouts.html).
type ParticipantTimerConfiguration struct {
	_ struct{} `type:"structure"`

	// The role of the participant in the chat conversation.
	//
	// ParticipantRole is a required field
	ParticipantRole *string `type:"string" required:"true" enum:"TimerEligibleParticipantRoles"`

	// The type of timer. IDLE indicates the timer applies for considering a human
	// chat participant as idle. DISCONNECT_NONCUSTOMER indicates the timer applies
	// to automatically disconnecting a chat participant due to idleness.
	//
	// TimerType is a required field
	TimerType *string `type:"string" required:"true" enum:"ParticipantTimerType"`

	// The value of the timer. Either the timer action (Unset to delete the timer),
	// or the duration of the timer in minutes. Only one value can be set.
	//
	// TimerValue is a required field
	TimerValue *ParticipantTimerValue `type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ParticipantTimerConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ParticipantTimerConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ParticipantTimerConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ParticipantTimerConfiguration"}
	if s.ParticipantRole == nil {
		invalidParams.Add(request.NewErrParamRequired("ParticipantRole"))
	}
	if s.TimerType == nil {
		invalidParams.Add(request.NewErrParamRequired("TimerType"))
	}
	if s.TimerValue == nil {
		invalidParams.Add(request.NewErrParamRequired("TimerValue"))
	}
	if s.TimerValue != nil {
		if err := s.TimerValue.Validate(); err != nil {
			invalidParams.AddNested("TimerValue", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetParticipantRole sets the ParticipantRole field's value.
func (s *ParticipantTimerConfiguration) SetParticipantRole(v string) *ParticipantTimerConfiguration {
	s.ParticipantRole = &v
	return s
}

// SetTimerType sets the TimerType field's value.
func (s *ParticipantTimerConfiguration) SetTimerType(v string) *ParticipantTimerConfiguration {
	s.TimerType = &v
	return s
}

// SetTimerValue sets the TimerValue field's value.
func (s *ParticipantTimerConfiguration) SetTimerValue(v *ParticipantTimerValue) *ParticipantTimerConfiguration {
	s.TimerValue = v
	return s
}

// The value of the timer. Either the timer action (Unset to delete the timer),
// or the duration of the timer in minutes. Only one value can be set.
//
// For more information about how chat timeouts work, see Set up chat timeouts
// for human participants (https://docs.aws.amazon.com/connect/latest/adminguide/setup-chat-timeouts.html).
type ParticipantTimerValue struct {
	_ struct{} `type:"structure"`

	// The timer action. Currently only one value is allowed: Unset. It deletes
	// a timer.
	ParticipantTimerAction *string `type:"string" enum:"ParticipantTimerAction"`

	// The duration of a timer, in minutes.
	ParticipantTimerDurationInMinutes *int64 `min:"2" 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 ParticipantTimerValue) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ParticipantTimerValue) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ParticipantTimerValue) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ParticipantTimerValue"}
	if s.ParticipantTimerDurationInMinutes != nil && *s.ParticipantTimerDurationInMinutes < 2 {
		invalidParams.Add(request.NewErrParamMinValue("ParticipantTimerDurationInMinutes", 2))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetParticipantTimerAction sets the ParticipantTimerAction field's value.
func (s *ParticipantTimerValue) SetParticipantTimerAction(v string) *ParticipantTimerValue {
	s.ParticipantTimerAction = &v
	return s
}

// SetParticipantTimerDurationInMinutes sets the ParticipantTimerDurationInMinutes field's value.
func (s *ParticipantTimerValue) SetParticipantTimerDurationInMinutes(v int64) *ParticipantTimerValue {
	s.ParticipantTimerDurationInMinutes = &v
	return s
}

// The credentials used by the participant.
type ParticipantTokenCredentials struct {
	_ struct{} `type:"structure"`

	// The expiration of the token. It's specified in ISO 8601 format: yyyy-MM-ddThh:mm:ss.SSSZ.
	// For example, 2019-11-08T02:41:28.172Z.
	Expiry *string `type:"string"`

	// The token used by the chat participant to call CreateParticipantConnection
	// (https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html).
	// The participant token is valid for the lifetime of a chat participant.
	ParticipantToken *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ParticipantTokenCredentials) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ParticipantTokenCredentials) GoString() string {
	return s.String()
}

// SetExpiry sets the Expiry field's value.
func (s *ParticipantTokenCredentials) SetExpiry(v string) *ParticipantTokenCredentials {
	s.Expiry = &v
	return s
}

// SetParticipantToken sets the ParticipantToken field's value.
func (s *ParticipantTokenCredentials) SetParticipantToken(v string) *ParticipantTokenCredentials {
	s.ParticipantToken = &v
	return s
}

type PauseContactInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the flow.
	ContactFlowId *string `type:"string"`

	// The identifier of the contact.
	//
	// ContactId is a required field
	ContactId *string `min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instanceId
	// in the ARN of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `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 PauseContactInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PauseContactInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PauseContactInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PauseContactInput"}
	if s.ContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactId"))
	}
	if s.ContactId != nil && len(*s.ContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactFlowId sets the ContactFlowId field's value.
func (s *PauseContactInput) SetContactFlowId(v string) *PauseContactInput {
	s.ContactFlowId = &v
	return s
}

// SetContactId sets the ContactId field's value.
func (s *PauseContactInput) SetContactId(v string) *PauseContactInput {
	s.ContactId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *PauseContactInput) SetInstanceId(v string) *PauseContactInput {
	s.InstanceId = &v
	return s
}

type PauseContactOutput 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 PauseContactOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PauseContactOutput) GoString() string {
	return s.String()
}

// Enable persistent chats. For more information about enabling persistent chat,
// and for example use cases and how to configure for them, see Enable persistent
// chat (https://docs.aws.amazon.com/connect/latest/adminguide/chat-persistence.html).
type PersistentChat struct {
	_ struct{} `type:"structure"`

	// The contactId that is used for rehydration depends on the rehydration type.
	// RehydrationType is required for persistent chat.
	//
	//    * ENTIRE_PAST_SESSION: Rehydrates a chat from the most recently terminated
	//    past chat contact of the specified past ended chat session. To use this
	//    type, provide the initialContactId of the past ended chat session in the
	//    sourceContactId field. In this type, Amazon Connect determines the most
	//    recent chat contact on the specified chat session that has ended, and
	//    uses it to start a persistent chat.
	//
	//    * FROM_SEGMENT: Rehydrates a chat from the past chat contact that is specified
	//    in the sourceContactId field.
	//
	// The actual contactId used for rehydration is provided in the response of
	// this API.
	RehydrationType *string `type:"string" enum:"RehydrationType"`

	// The contactId from which a persistent chat session must be started.
	SourceContactId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PersistentChat) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PersistentChat) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PersistentChat) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PersistentChat"}
	if s.SourceContactId != nil && len(*s.SourceContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SourceContactId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRehydrationType sets the RehydrationType field's value.
func (s *PersistentChat) SetRehydrationType(v string) *PersistentChat {
	s.RehydrationType = &v
	return s
}

// SetSourceContactId sets the SourceContactId field's value.
func (s *PersistentChat) SetSourceContactId(v string) *PersistentChat {
	s.SourceContactId = &v
	return s
}

// Contains information about a phone number for a quick connect.
type PhoneNumberQuickConnectConfig struct {
	_ struct{} `type:"structure"`

	// The phone number in E.164 format.
	//
	// PhoneNumber is a required field
	PhoneNumber *string `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 PhoneNumberQuickConnectConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PhoneNumberQuickConnectConfig) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PhoneNumberQuickConnectConfig) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PhoneNumberQuickConnectConfig"}
	if s.PhoneNumber == nil {
		invalidParams.Add(request.NewErrParamRequired("PhoneNumber"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPhoneNumber sets the PhoneNumber field's value.
func (s *PhoneNumberQuickConnectConfig) SetPhoneNumber(v string) *PhoneNumberQuickConnectConfig {
	s.PhoneNumber = &v
	return s
}

// The status of the phone number.
//
//   - CLAIMED means the previous ClaimPhoneNumber (https://docs.aws.amazon.com/connect/latest/APIReference/API_ClaimPhoneNumber.html)
//     or UpdatePhoneNumber (https://docs.aws.amazon.com/connect/latest/APIReference/API_UpdatePhoneNumber.html)
//     operation succeeded.
//
//   - IN_PROGRESS means a ClaimPhoneNumber (https://docs.aws.amazon.com/connect/latest/APIReference/API_ClaimPhoneNumber.html),
//     UpdatePhoneNumber (https://docs.aws.amazon.com/connect/latest/APIReference/API_UpdatePhoneNumber.html),
//     or UpdatePhoneNumberMetadata (https://docs.aws.amazon.com/connect/latest/APIReference/API_UpdatePhoneNumberMetadata.html)
//     operation is still in progress and has not yet completed. You can call
//     DescribePhoneNumber (https://docs.aws.amazon.com/connect/latest/APIReference/API_DescribePhoneNumber.html)
//     at a later time to verify if the previous operation has completed.
//
//   - FAILED indicates that the previous ClaimPhoneNumber (https://docs.aws.amazon.com/connect/latest/APIReference/API_ClaimPhoneNumber.html)
//     or UpdatePhoneNumber (https://docs.aws.amazon.com/connect/latest/APIReference/API_UpdatePhoneNumber.html)
//     operation has failed. It will include a message indicating the failure
//     reason. A common reason for a failure may be that the TargetArn value
//     you are claiming or updating a phone number to has reached its limit of
//     total claimed numbers. If you received a FAILED status from a ClaimPhoneNumber
//     API call, you have one day to retry claiming the phone number before the
//     number is released back to the inventory for other customers to claim.
type PhoneNumberStatus struct {
	_ struct{} `type:"structure"`

	// The status message.
	Message *string `type:"string"`

	// The status.
	Status *string `type:"string" enum:"PhoneNumberWorkflowStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PhoneNumberStatus) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PhoneNumberStatus) GoString() string {
	return s.String()
}

// SetMessage sets the Message field's value.
func (s *PhoneNumberStatus) SetMessage(v string) *PhoneNumberStatus {
	s.Message = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *PhoneNumberStatus) SetStatus(v string) *PhoneNumberStatus {
	s.Status = &v
	return s
}

// Contains summary information about a phone number for a contact center.
type PhoneNumberSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the phone number.
	Arn *string `type:"string"`

	// The identifier of the phone number.
	Id *string `type:"string"`

	// The phone number.
	PhoneNumber *string `type:"string"`

	// The ISO country code.
	PhoneNumberCountryCode *string `type:"string" enum:"PhoneNumberCountryCode"`

	// The type of phone number.
	PhoneNumberType *string `type:"string" enum:"PhoneNumberType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PhoneNumberSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PhoneNumberSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *PhoneNumberSummary) SetArn(v string) *PhoneNumberSummary {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *PhoneNumberSummary) SetId(v string) *PhoneNumberSummary {
	s.Id = &v
	return s
}

// SetPhoneNumber sets the PhoneNumber field's value.
func (s *PhoneNumberSummary) SetPhoneNumber(v string) *PhoneNumberSummary {
	s.PhoneNumber = &v
	return s
}

// SetPhoneNumberCountryCode sets the PhoneNumberCountryCode field's value.
func (s *PhoneNumberSummary) SetPhoneNumberCountryCode(v string) *PhoneNumberSummary {
	s.PhoneNumberCountryCode = &v
	return s
}

// SetPhoneNumberType sets the PhoneNumberType field's value.
func (s *PhoneNumberSummary) SetPhoneNumberType(v string) *PhoneNumberSummary {
	s.PhoneNumberType = &v
	return s
}

// Information about a predefined attribute.
type PredefinedAttribute struct {
	_ struct{} `type:"structure"`

	// Last modified region.
	LastModifiedRegion *string `type:"string"`

	// Last modified time.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The name of the predefined attribute.
	Name *string `min:"1" type:"string"`

	// The values of the predefined attribute.
	Values *PredefinedAttributeValues `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 PredefinedAttribute) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PredefinedAttribute) GoString() string {
	return s.String()
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *PredefinedAttribute) SetLastModifiedRegion(v string) *PredefinedAttribute {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *PredefinedAttribute) SetLastModifiedTime(v time.Time) *PredefinedAttribute {
	s.LastModifiedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *PredefinedAttribute) SetName(v string) *PredefinedAttribute {
	s.Name = &v
	return s
}

// SetValues sets the Values field's value.
func (s *PredefinedAttribute) SetValues(v *PredefinedAttributeValues) *PredefinedAttribute {
	s.Values = v
	return s
}

// The search criteria to be used to return predefined attributes.
type PredefinedAttributeSearchCriteria struct {
	_ struct{} `type:"structure"`

	// A list of conditions which would be applied together with an AND condition.
	AndConditions []*PredefinedAttributeSearchCriteria `type:"list"`

	// A list of conditions which would be applied together with an OR condition.
	OrConditions []*PredefinedAttributeSearchCriteria `type:"list"`

	// A leaf node condition which can be used to specify a string condition.
	//
	// The currently supported values for FieldName are name and description.
	StringCondition *StringCondition `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 PredefinedAttributeSearchCriteria) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PredefinedAttributeSearchCriteria) GoString() string {
	return s.String()
}

// SetAndConditions sets the AndConditions field's value.
func (s *PredefinedAttributeSearchCriteria) SetAndConditions(v []*PredefinedAttributeSearchCriteria) *PredefinedAttributeSearchCriteria {
	s.AndConditions = v
	return s
}

// SetOrConditions sets the OrConditions field's value.
func (s *PredefinedAttributeSearchCriteria) SetOrConditions(v []*PredefinedAttributeSearchCriteria) *PredefinedAttributeSearchCriteria {
	s.OrConditions = v
	return s
}

// SetStringCondition sets the StringCondition field's value.
func (s *PredefinedAttributeSearchCriteria) SetStringCondition(v *StringCondition) *PredefinedAttributeSearchCriteria {
	s.StringCondition = v
	return s
}

// Summary of a predefined attribute.
type PredefinedAttributeSummary struct {
	_ struct{} `type:"structure"`

	// Last modified region.
	LastModifiedRegion *string `type:"string"`

	// Last modified time.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The name of the predefined attribute.
	Name *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PredefinedAttributeSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PredefinedAttributeSummary) GoString() string {
	return s.String()
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *PredefinedAttributeSummary) SetLastModifiedRegion(v string) *PredefinedAttributeSummary {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *PredefinedAttributeSummary) SetLastModifiedTime(v time.Time) *PredefinedAttributeSummary {
	s.LastModifiedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *PredefinedAttributeSummary) SetName(v string) *PredefinedAttributeSummary {
	s.Name = &v
	return s
}

// Information about values of a predefined attribute.
type PredefinedAttributeValues struct {
	_ struct{} `type:"structure"`

	// Predefined attribute values of type string list.
	StringList []*string `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PredefinedAttributeValues) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PredefinedAttributeValues) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PredefinedAttributeValues) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PredefinedAttributeValues"}
	if s.StringList != nil && len(s.StringList) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("StringList", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetStringList sets the StringList field's value.
func (s *PredefinedAttributeValues) SetStringList(v []*string) *PredefinedAttributeValues {
	s.StringList = v
	return s
}

// Information about a problem detail.
type ProblemDetail struct {
	_ struct{} `type:"structure"`

	// The problem detail's message.
	Message *string `locationName:"message" 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 ProblemDetail) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ProblemDetail) GoString() string {
	return s.String()
}

// SetMessage sets the Message field's value.
func (s *ProblemDetail) SetMessage(v string) *ProblemDetail {
	s.Message = &v
	return s
}

// Information about a prompt.
type Prompt struct {
	_ struct{} `type:"structure"`

	// The description of the prompt.
	Description *string `min:"1" type:"string"`

	// The Amazon Web Services Region where this resource was last modified.
	LastModifiedRegion *string `type:"string"`

	// The timestamp when this resource was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The name of the prompt.
	Name *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the prompt.
	PromptARN *string `type:"string"`

	// A unique identifier for the prompt.
	PromptId *string `min:"1" type:"string"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Prompt) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Prompt) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *Prompt) SetDescription(v string) *Prompt {
	s.Description = &v
	return s
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *Prompt) SetLastModifiedRegion(v string) *Prompt {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *Prompt) SetLastModifiedTime(v time.Time) *Prompt {
	s.LastModifiedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *Prompt) SetName(v string) *Prompt {
	s.Name = &v
	return s
}

// SetPromptARN sets the PromptARN field's value.
func (s *Prompt) SetPromptARN(v string) *Prompt {
	s.PromptARN = &v
	return s
}

// SetPromptId sets the PromptId field's value.
func (s *Prompt) SetPromptId(v string) *Prompt {
	s.PromptId = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *Prompt) SetTags(v map[string]*string) *Prompt {
	s.Tags = v
	return s
}

// The search criteria to be used to return prompts.
type PromptSearchCriteria struct {
	_ struct{} `type:"structure"`

	// A list of conditions which would be applied together with an AND condition.
	AndConditions []*PromptSearchCriteria `type:"list"`

	// A list of conditions which would be applied together with an OR condition.
	OrConditions []*PromptSearchCriteria `type:"list"`

	// A leaf node condition which can be used to specify a string condition.
	//
	// The currently supported values for FieldName are name, description, and resourceID.
	StringCondition *StringCondition `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 PromptSearchCriteria) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PromptSearchCriteria) GoString() string {
	return s.String()
}

// SetAndConditions sets the AndConditions field's value.
func (s *PromptSearchCriteria) SetAndConditions(v []*PromptSearchCriteria) *PromptSearchCriteria {
	s.AndConditions = v
	return s
}

// SetOrConditions sets the OrConditions field's value.
func (s *PromptSearchCriteria) SetOrConditions(v []*PromptSearchCriteria) *PromptSearchCriteria {
	s.OrConditions = v
	return s
}

// SetStringCondition sets the StringCondition field's value.
func (s *PromptSearchCriteria) SetStringCondition(v *StringCondition) *PromptSearchCriteria {
	s.StringCondition = v
	return s
}

// Filters to be applied to search results.
type PromptSearchFilter struct {
	_ struct{} `type:"structure"`

	// An object that can be used to specify Tag conditions inside the SearchFilter.
	// This accepts an OR of AND (List of List) input where:
	//
	//    * Top level list specifies conditions that need to be applied with OR
	//    operator
	//
	//    * Inner list specifies conditions that need to be applied with AND operator.
	TagFilter *ControlPlaneTagFilter `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 PromptSearchFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PromptSearchFilter) GoString() string {
	return s.String()
}

// SetTagFilter sets the TagFilter field's value.
func (s *PromptSearchFilter) SetTagFilter(v *ControlPlaneTagFilter) *PromptSearchFilter {
	s.TagFilter = v
	return s
}

// Contains information about the prompt.
type PromptSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the prompt.
	Arn *string `type:"string"`

	// The identifier of the prompt.
	Id *string `min:"1" type:"string"`

	// The Amazon Web Services Region where this resource was last modified.
	LastModifiedRegion *string `type:"string"`

	// The timestamp when this resource was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The name of the prompt.
	Name *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PromptSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PromptSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *PromptSummary) SetArn(v string) *PromptSummary {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *PromptSummary) SetId(v string) *PromptSummary {
	s.Id = &v
	return s
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *PromptSummary) SetLastModifiedRegion(v string) *PromptSummary {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *PromptSummary) SetLastModifiedTime(v time.Time) *PromptSummary {
	s.LastModifiedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *PromptSummary) SetName(v string) *PromptSummary {
	s.Name = &v
	return s
}

// The property is not valid.
type PropertyValidationException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`

	PropertyList []*PropertyValidationExceptionProperty `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 PropertyValidationException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PropertyValidationException) GoString() string {
	return s.String()
}

func newErrorPropertyValidationException(v protocol.ResponseMetadata) error {
	return &PropertyValidationException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *PropertyValidationException) Code() string {
	return "PropertyValidationException"
}

// Message returns the exception's message.
func (s *PropertyValidationException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *PropertyValidationException) OrigErr() error {
	return nil
}

func (s *PropertyValidationException) 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 *PropertyValidationException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *PropertyValidationException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Contains information about why a property is not valid.
type PropertyValidationExceptionProperty struct {
	_ struct{} `type:"structure"`

	// A message describing why the property is not valid.
	//
	// Message is a required field
	Message *string `type:"string" required:"true"`

	// The full property path.
	//
	// PropertyPath is a required field
	PropertyPath *string `type:"string" required:"true"`

	// Why the property is not valid.
	//
	// Reason is a required field
	Reason *string `type:"string" required:"true" enum:"PropertyValidationExceptionReason"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PropertyValidationExceptionProperty) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PropertyValidationExceptionProperty) GoString() string {
	return s.String()
}

// SetMessage sets the Message field's value.
func (s *PropertyValidationExceptionProperty) SetMessage(v string) *PropertyValidationExceptionProperty {
	s.Message = &v
	return s
}

// SetPropertyPath sets the PropertyPath field's value.
func (s *PropertyValidationExceptionProperty) SetPropertyPath(v string) *PropertyValidationExceptionProperty {
	s.PropertyPath = &v
	return s
}

// SetReason sets the Reason field's value.
func (s *PropertyValidationExceptionProperty) SetReason(v string) *PropertyValidationExceptionProperty {
	s.Reason = &v
	return s
}

type PutUserStatusInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the agent status.
	//
	// AgentStatusId is a required field
	AgentStatusId *string `type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the user.
	//
	// UserId is a required field
	UserId *string `location:"uri" locationName:"UserId" 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 PutUserStatusInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutUserStatusInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PutUserStatusInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PutUserStatusInput"}
	if s.AgentStatusId == nil {
		invalidParams.Add(request.NewErrParamRequired("AgentStatusId"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.UserId == nil {
		invalidParams.Add(request.NewErrParamRequired("UserId"))
	}
	if s.UserId != nil && len(*s.UserId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAgentStatusId sets the AgentStatusId field's value.
func (s *PutUserStatusInput) SetAgentStatusId(v string) *PutUserStatusInput {
	s.AgentStatusId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *PutUserStatusInput) SetInstanceId(v string) *PutUserStatusInput {
	s.InstanceId = &v
	return s
}

// SetUserId sets the UserId field's value.
func (s *PutUserStatusInput) SetUserId(v string) *PutUserStatusInput {
	s.UserId = &v
	return s
}

type PutUserStatusOutput 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 PutUserStatusOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutUserStatusOutput) GoString() string {
	return s.String()
}

// Contains information about a queue.
type Queue struct {
	_ struct{} `type:"structure"`

	// The description of the queue.
	Description *string `min:"1" type:"string"`

	// The identifier for the hours of operation.
	HoursOfOperationId *string `type:"string"`

	// The Amazon Web Services Region where this resource was last modified.
	LastModifiedRegion *string `type:"string"`

	// The timestamp when this resource was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The maximum number of contacts that can be in the queue before it is considered
	// full.
	MaxContacts *int64 `type:"integer"`

	// The name of the queue.
	Name *string `min:"1" type:"string"`

	// The outbound caller ID name, number, and outbound whisper flow.
	OutboundCallerConfig *OutboundCallerConfig `type:"structure"`

	// The Amazon Resource Name (ARN) for the queue.
	QueueArn *string `type:"string"`

	// The identifier for the queue.
	QueueId *string `type:"string"`

	// The status of the queue.
	Status *string `type:"string" enum:"QueueStatus"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Queue) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Queue) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *Queue) SetDescription(v string) *Queue {
	s.Description = &v
	return s
}

// SetHoursOfOperationId sets the HoursOfOperationId field's value.
func (s *Queue) SetHoursOfOperationId(v string) *Queue {
	s.HoursOfOperationId = &v
	return s
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *Queue) SetLastModifiedRegion(v string) *Queue {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *Queue) SetLastModifiedTime(v time.Time) *Queue {
	s.LastModifiedTime = &v
	return s
}

// SetMaxContacts sets the MaxContacts field's value.
func (s *Queue) SetMaxContacts(v int64) *Queue {
	s.MaxContacts = &v
	return s
}

// SetName sets the Name field's value.
func (s *Queue) SetName(v string) *Queue {
	s.Name = &v
	return s
}

// SetOutboundCallerConfig sets the OutboundCallerConfig field's value.
func (s *Queue) SetOutboundCallerConfig(v *OutboundCallerConfig) *Queue {
	s.OutboundCallerConfig = v
	return s
}

// SetQueueArn sets the QueueArn field's value.
func (s *Queue) SetQueueArn(v string) *Queue {
	s.QueueArn = &v
	return s
}

// SetQueueId sets the QueueId field's value.
func (s *Queue) SetQueueId(v string) *Queue {
	s.QueueId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *Queue) SetStatus(v string) *Queue {
	s.Status = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *Queue) SetTags(v map[string]*string) *Queue {
	s.Tags = v
	return s
}

// If this contact was queued, this contains information about the queue.
type QueueInfo struct {
	_ struct{} `type:"structure"`

	// The timestamp when the contact was added to the queue.
	EnqueueTimestamp *time.Time `type:"timestamp"`

	// The unique identifier for the queue.
	Id *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s QueueInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s QueueInfo) GoString() string {
	return s.String()
}

// SetEnqueueTimestamp sets the EnqueueTimestamp field's value.
func (s *QueueInfo) SetEnqueueTimestamp(v time.Time) *QueueInfo {
	s.EnqueueTimestamp = &v
	return s
}

// SetId sets the Id field's value.
func (s *QueueInfo) SetId(v string) *QueueInfo {
	s.Id = &v
	return s
}

// Contains information about a queue for a quick connect. The flow must be
// of type Transfer to Queue.
type QueueQuickConnectConfig struct {
	_ struct{} `type:"structure"`

	// The identifier of the flow.
	//
	// ContactFlowId is a required field
	ContactFlowId *string `type:"string" required:"true"`

	// The identifier for the queue.
	//
	// QueueId is a required field
	QueueId *string `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 QueueQuickConnectConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s QueueQuickConnectConfig) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *QueueQuickConnectConfig) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "QueueQuickConnectConfig"}
	if s.ContactFlowId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactFlowId"))
	}
	if s.QueueId == nil {
		invalidParams.Add(request.NewErrParamRequired("QueueId"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactFlowId sets the ContactFlowId field's value.
func (s *QueueQuickConnectConfig) SetContactFlowId(v string) *QueueQuickConnectConfig {
	s.ContactFlowId = &v
	return s
}

// SetQueueId sets the QueueId field's value.
func (s *QueueQuickConnectConfig) SetQueueId(v string) *QueueQuickConnectConfig {
	s.QueueId = &v
	return s
}

// Contains information about a queue resource for which metrics are returned.
type QueueReference struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the queue.
	Arn *string `type:"string"`

	// The identifier of the queue.
	Id *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s QueueReference) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s QueueReference) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *QueueReference) SetArn(v string) *QueueReference {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *QueueReference) SetId(v string) *QueueReference {
	s.Id = &v
	return s
}

// The search criteria to be used to return queues.
//
// The name and description fields support "contains" queries with a minimum
// of 2 characters and a maximum of 25 characters. Any queries with character
// lengths outside of this range will throw invalid results.
type QueueSearchCriteria struct {
	_ struct{} `type:"structure"`

	// A list of conditions which would be applied together with an AND condition.
	AndConditions []*QueueSearchCriteria `type:"list"`

	// A list of conditions which would be applied together with an OR condition.
	OrConditions []*QueueSearchCriteria `type:"list"`

	// The type of queue.
	QueueTypeCondition *string `type:"string" enum:"SearchableQueueType"`

	// A leaf node condition which can be used to specify a string condition.
	//
	// The currently supported values for FieldName are name, description, and resourceID.
	StringCondition *StringCondition `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 QueueSearchCriteria) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s QueueSearchCriteria) GoString() string {
	return s.String()
}

// SetAndConditions sets the AndConditions field's value.
func (s *QueueSearchCriteria) SetAndConditions(v []*QueueSearchCriteria) *QueueSearchCriteria {
	s.AndConditions = v
	return s
}

// SetOrConditions sets the OrConditions field's value.
func (s *QueueSearchCriteria) SetOrConditions(v []*QueueSearchCriteria) *QueueSearchCriteria {
	s.OrConditions = v
	return s
}

// SetQueueTypeCondition sets the QueueTypeCondition field's value.
func (s *QueueSearchCriteria) SetQueueTypeCondition(v string) *QueueSearchCriteria {
	s.QueueTypeCondition = &v
	return s
}

// SetStringCondition sets the StringCondition field's value.
func (s *QueueSearchCriteria) SetStringCondition(v *StringCondition) *QueueSearchCriteria {
	s.StringCondition = v
	return s
}

// Filters to be applied to search results.
type QueueSearchFilter struct {
	_ struct{} `type:"structure"`

	// An object that can be used to specify Tag conditions inside the SearchFilter.
	// This accepts an OR of AND (List of List) input where:
	//
	//    * Top level list specifies conditions that need to be applied with OR
	//    operator
	//
	//    * Inner list specifies conditions that need to be applied with AND operator.
	TagFilter *ControlPlaneTagFilter `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 QueueSearchFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s QueueSearchFilter) GoString() string {
	return s.String()
}

// SetTagFilter sets the TagFilter field's value.
func (s *QueueSearchFilter) SetTagFilter(v *ControlPlaneTagFilter) *QueueSearchFilter {
	s.TagFilter = v
	return s
}

// Contains summary information about a queue.
type QueueSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the queue.
	Arn *string `type:"string"`

	// The identifier of the queue.
	Id *string `type:"string"`

	// The Amazon Web Services Region where this resource was last modified.
	LastModifiedRegion *string `type:"string"`

	// The timestamp when this resource was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The name of the queue.
	Name *string `min:"1" type:"string"`

	// The type of queue.
	QueueType *string `type:"string" enum:"QueueType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s QueueSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s QueueSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *QueueSummary) SetArn(v string) *QueueSummary {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *QueueSummary) SetId(v string) *QueueSummary {
	s.Id = &v
	return s
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *QueueSummary) SetLastModifiedRegion(v string) *QueueSummary {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *QueueSummary) SetLastModifiedTime(v time.Time) *QueueSummary {
	s.LastModifiedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *QueueSummary) SetName(v string) *QueueSummary {
	s.Name = &v
	return s
}

// SetQueueType sets the QueueType field's value.
func (s *QueueSummary) SetQueueType(v string) *QueueSummary {
	s.QueueType = &v
	return s
}

// Contains information about a quick connect.
type QuickConnect struct {
	_ struct{} `type:"structure"`

	// The description.
	Description *string `min:"1" type:"string"`

	// The Amazon Web Services Region where this resource was last modified.
	LastModifiedRegion *string `type:"string"`

	// The timestamp when this resource was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The name of the quick connect.
	Name *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the quick connect.
	QuickConnectARN *string `type:"string"`

	// Contains information about the quick connect.
	QuickConnectConfig *QuickConnectConfig `type:"structure"`

	// The identifier for the quick connect.
	QuickConnectId *string `type:"string"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s QuickConnect) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s QuickConnect) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *QuickConnect) SetDescription(v string) *QuickConnect {
	s.Description = &v
	return s
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *QuickConnect) SetLastModifiedRegion(v string) *QuickConnect {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *QuickConnect) SetLastModifiedTime(v time.Time) *QuickConnect {
	s.LastModifiedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *QuickConnect) SetName(v string) *QuickConnect {
	s.Name = &v
	return s
}

// SetQuickConnectARN sets the QuickConnectARN field's value.
func (s *QuickConnect) SetQuickConnectARN(v string) *QuickConnect {
	s.QuickConnectARN = &v
	return s
}

// SetQuickConnectConfig sets the QuickConnectConfig field's value.
func (s *QuickConnect) SetQuickConnectConfig(v *QuickConnectConfig) *QuickConnect {
	s.QuickConnectConfig = v
	return s
}

// SetQuickConnectId sets the QuickConnectId field's value.
func (s *QuickConnect) SetQuickConnectId(v string) *QuickConnect {
	s.QuickConnectId = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *QuickConnect) SetTags(v map[string]*string) *QuickConnect {
	s.Tags = v
	return s
}

// Contains configuration settings for a quick connect.
type QuickConnectConfig struct {
	_ struct{} `type:"structure"`

	// The phone configuration. This is required only if QuickConnectType is PHONE_NUMBER.
	PhoneConfig *PhoneNumberQuickConnectConfig `type:"structure"`

	// The queue configuration. This is required only if QuickConnectType is QUEUE.
	QueueConfig *QueueQuickConnectConfig `type:"structure"`

	// The type of quick connect. In the Amazon Connect admin website, when you
	// create a quick connect, you are prompted to assign one of the following types:
	// Agent (USER), External (PHONE_NUMBER), or Queue (QUEUE).
	//
	// QuickConnectType is a required field
	QuickConnectType *string `type:"string" required:"true" enum:"QuickConnectType"`

	// The user configuration. This is required only if QuickConnectType is USER.
	UserConfig *UserQuickConnectConfig `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 QuickConnectConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s QuickConnectConfig) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *QuickConnectConfig) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "QuickConnectConfig"}
	if s.QuickConnectType == nil {
		invalidParams.Add(request.NewErrParamRequired("QuickConnectType"))
	}
	if s.PhoneConfig != nil {
		if err := s.PhoneConfig.Validate(); err != nil {
			invalidParams.AddNested("PhoneConfig", err.(request.ErrInvalidParams))
		}
	}
	if s.QueueConfig != nil {
		if err := s.QueueConfig.Validate(); err != nil {
			invalidParams.AddNested("QueueConfig", err.(request.ErrInvalidParams))
		}
	}
	if s.UserConfig != nil {
		if err := s.UserConfig.Validate(); err != nil {
			invalidParams.AddNested("UserConfig", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPhoneConfig sets the PhoneConfig field's value.
func (s *QuickConnectConfig) SetPhoneConfig(v *PhoneNumberQuickConnectConfig) *QuickConnectConfig {
	s.PhoneConfig = v
	return s
}

// SetQueueConfig sets the QueueConfig field's value.
func (s *QuickConnectConfig) SetQueueConfig(v *QueueQuickConnectConfig) *QuickConnectConfig {
	s.QueueConfig = v
	return s
}

// SetQuickConnectType sets the QuickConnectType field's value.
func (s *QuickConnectConfig) SetQuickConnectType(v string) *QuickConnectConfig {
	s.QuickConnectType = &v
	return s
}

// SetUserConfig sets the UserConfig field's value.
func (s *QuickConnectConfig) SetUserConfig(v *UserQuickConnectConfig) *QuickConnectConfig {
	s.UserConfig = v
	return s
}

// The search criteria to be used to return quick connects.
type QuickConnectSearchCriteria struct {
	_ struct{} `type:"structure"`

	// A list of conditions which would be applied together with an AND condition.
	AndConditions []*QuickConnectSearchCriteria `type:"list"`

	// A list of conditions which would be applied together with an OR condition.
	OrConditions []*QuickConnectSearchCriteria `type:"list"`

	// A leaf node condition which can be used to specify a string condition.
	//
	// The currently supported values for FieldName are name, description, and resourceID.
	StringCondition *StringCondition `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 QuickConnectSearchCriteria) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s QuickConnectSearchCriteria) GoString() string {
	return s.String()
}

// SetAndConditions sets the AndConditions field's value.
func (s *QuickConnectSearchCriteria) SetAndConditions(v []*QuickConnectSearchCriteria) *QuickConnectSearchCriteria {
	s.AndConditions = v
	return s
}

// SetOrConditions sets the OrConditions field's value.
func (s *QuickConnectSearchCriteria) SetOrConditions(v []*QuickConnectSearchCriteria) *QuickConnectSearchCriteria {
	s.OrConditions = v
	return s
}

// SetStringCondition sets the StringCondition field's value.
func (s *QuickConnectSearchCriteria) SetStringCondition(v *StringCondition) *QuickConnectSearchCriteria {
	s.StringCondition = v
	return s
}

// Filters to be applied to search results.
type QuickConnectSearchFilter struct {
	_ struct{} `type:"structure"`

	// An object that can be used to specify Tag conditions inside the SearchFilter.
	// This accepts an OR of AND (List of List) input where:
	//
	//    * Top level list specifies conditions that need to be applied with OR
	//    operator
	//
	//    * Inner list specifies conditions that need to be applied with AND operator.
	TagFilter *ControlPlaneTagFilter `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 QuickConnectSearchFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s QuickConnectSearchFilter) GoString() string {
	return s.String()
}

// SetTagFilter sets the TagFilter field's value.
func (s *QuickConnectSearchFilter) SetTagFilter(v *ControlPlaneTagFilter) *QuickConnectSearchFilter {
	s.TagFilter = v
	return s
}

// Contains summary information about a quick connect.
type QuickConnectSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the quick connect.
	Arn *string `type:"string"`

	// The identifier for the quick connect.
	Id *string `type:"string"`

	// The Amazon Web Services Region where this resource was last modified.
	LastModifiedRegion *string `type:"string"`

	// The timestamp when this resource was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The name of the quick connect.
	Name *string `min:"1" type:"string"`

	// The type of quick connect. In the Amazon Connect admin website, when you
	// create a quick connect, you are prompted to assign one of the following types:
	// Agent (USER), External (PHONE_NUMBER), or Queue (QUEUE).
	QuickConnectType *string `type:"string" enum:"QuickConnectType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s QuickConnectSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s QuickConnectSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *QuickConnectSummary) SetArn(v string) *QuickConnectSummary {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *QuickConnectSummary) SetId(v string) *QuickConnectSummary {
	s.Id = &v
	return s
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *QuickConnectSummary) SetLastModifiedRegion(v string) *QuickConnectSummary {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *QuickConnectSummary) SetLastModifiedTime(v time.Time) *QuickConnectSummary {
	s.LastModifiedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *QuickConnectSummary) SetName(v string) *QuickConnectSummary {
	s.Name = &v
	return s
}

// SetQuickConnectType sets the QuickConnectType field's value.
func (s *QuickConnectSummary) SetQuickConnectType(v string) *QuickConnectSummary {
	s.QuickConnectType = &v
	return s
}

// Indicates a field that is read-only to an agent.
type ReadOnlyFieldInfo struct {
	_ struct{} `type:"structure"`

	// Identifier of the read-only field.
	Id *TaskTemplateFieldIdentifier `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 ReadOnlyFieldInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ReadOnlyFieldInfo) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ReadOnlyFieldInfo) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ReadOnlyFieldInfo"}
	if s.Id != nil {
		if err := s.Id.Validate(); err != nil {
			invalidParams.AddNested("Id", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetId sets the Id field's value.
func (s *ReadOnlyFieldInfo) SetId(v *TaskTemplateFieldIdentifier) *ReadOnlyFieldInfo {
	s.Id = v
	return s
}

// Object that describes attached file.
type RealTimeContactAnalysisAttachment struct {
	_ struct{} `type:"structure"`

	// A unique identifier for the attachment.
	//
	// AttachmentId is a required field
	AttachmentId *string `min:"1" type:"string" required:"true"`

	// A case-sensitive name of the attachment being uploaded. Can be redacted.
	//
	// AttachmentName is a required field
	AttachmentName *string `min:"1" type:"string" required:"true"`

	// Describes the MIME file type of the attachment. For a list of supported file
	// types, see Feature specifications (https://docs.aws.amazon.com/connect/latest/adminguide/feature-limits.html)
	// in the Amazon Connect Administrator Guide.
	ContentType *string `min:"1" type:"string"`

	// Status of the attachment.
	Status *string `type:"string" enum:"ArtifactStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RealTimeContactAnalysisAttachment) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RealTimeContactAnalysisAttachment) GoString() string {
	return s.String()
}

// SetAttachmentId sets the AttachmentId field's value.
func (s *RealTimeContactAnalysisAttachment) SetAttachmentId(v string) *RealTimeContactAnalysisAttachment {
	s.AttachmentId = &v
	return s
}

// SetAttachmentName sets the AttachmentName field's value.
func (s *RealTimeContactAnalysisAttachment) SetAttachmentName(v string) *RealTimeContactAnalysisAttachment {
	s.AttachmentName = &v
	return s
}

// SetContentType sets the ContentType field's value.
func (s *RealTimeContactAnalysisAttachment) SetContentType(v string) *RealTimeContactAnalysisAttachment {
	s.ContentType = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *RealTimeContactAnalysisAttachment) SetStatus(v string) *RealTimeContactAnalysisAttachment {
	s.Status = &v
	return s
}

// Provides information about the category rule that was matched.
type RealTimeContactAnalysisCategoryDetails struct {
	_ struct{} `type:"structure"`

	// List of PointOfInterest - objects describing a single match of a rule.
	//
	// PointsOfInterest is a required field
	PointsOfInterest []*RealTimeContactAnalysisPointOfInterest `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 RealTimeContactAnalysisCategoryDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RealTimeContactAnalysisCategoryDetails) GoString() string {
	return s.String()
}

// SetPointsOfInterest sets the PointsOfInterest field's value.
func (s *RealTimeContactAnalysisCategoryDetails) SetPointsOfInterest(v []*RealTimeContactAnalysisPointOfInterest) *RealTimeContactAnalysisCategoryDetails {
	s.PointsOfInterest = v
	return s
}

// Begin and end offsets for a part of text.
type RealTimeContactAnalysisCharacterInterval struct {
	_ struct{} `type:"structure"`

	// The beginning of the character interval.
	//
	// BeginOffsetChar is a required field
	BeginOffsetChar *int64 `type:"integer" required:"true"`

	// The end of the character interval.
	//
	// EndOffsetChar is a required field
	EndOffsetChar *int64 `type:"integer" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RealTimeContactAnalysisCharacterInterval) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RealTimeContactAnalysisCharacterInterval) GoString() string {
	return s.String()
}

// SetBeginOffsetChar sets the BeginOffsetChar field's value.
func (s *RealTimeContactAnalysisCharacterInterval) SetBeginOffsetChar(v int64) *RealTimeContactAnalysisCharacterInterval {
	s.BeginOffsetChar = &v
	return s
}

// SetEndOffsetChar sets the EndOffsetChar field's value.
func (s *RealTimeContactAnalysisCharacterInterval) SetEndOffsetChar(v int64) *RealTimeContactAnalysisCharacterInterval {
	s.EndOffsetChar = &v
	return s
}

// Potential issues that are detected based on an artificial intelligence analysis
// of each turn in the conversation.
type RealTimeContactAnalysisIssueDetected struct {
	_ struct{} `type:"structure"`

	// List of the transcript items (segments) that are associated with a given
	// issue.
	//
	// TranscriptItems is a required field
	TranscriptItems []*RealTimeContactAnalysisTranscriptItemWithContent `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 RealTimeContactAnalysisIssueDetected) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RealTimeContactAnalysisIssueDetected) GoString() string {
	return s.String()
}

// SetTranscriptItems sets the TranscriptItems field's value.
func (s *RealTimeContactAnalysisIssueDetected) SetTranscriptItems(v []*RealTimeContactAnalysisTranscriptItemWithContent) *RealTimeContactAnalysisIssueDetected {
	s.TranscriptItems = v
	return s
}

// The section of the contact transcript segment that category rule was detected.
type RealTimeContactAnalysisPointOfInterest struct {
	_ struct{} `type:"structure"`

	// List of the transcript items (segments) that are associated with a given
	// point of interest.
	TranscriptItems []*RealTimeContactAnalysisTranscriptItemWithCharacterOffsets `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 RealTimeContactAnalysisPointOfInterest) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RealTimeContactAnalysisPointOfInterest) GoString() string {
	return s.String()
}

// SetTranscriptItems sets the TranscriptItems field's value.
func (s *RealTimeContactAnalysisPointOfInterest) SetTranscriptItems(v []*RealTimeContactAnalysisTranscriptItemWithCharacterOffsets) *RealTimeContactAnalysisPointOfInterest {
	s.TranscriptItems = v
	return s
}

// Segment containing list of attachments.
type RealTimeContactAnalysisSegmentAttachments struct {
	_ struct{} `type:"structure"`

	// List of objects describing an individual attachment.
	//
	// Attachments is a required field
	Attachments []*RealTimeContactAnalysisAttachment `type:"list" required:"true"`

	// The display name of the participant. Can be redacted.
	DisplayName *string `min:"1" type:"string"`

	// The identifier of the segment.
	//
	// Id is a required field
	Id *string `min:"1" type:"string" required:"true"`

	// The identifier of the participant.
	//
	// ParticipantId is a required field
	ParticipantId *string `min:"1" type:"string" required:"true"`

	// The role of the participant. For example, is it a customer, agent, or system.
	//
	// ParticipantRole is a required field
	ParticipantRole *string `type:"string" required:"true" enum:"ParticipantRole"`

	// Field describing the time of the event. It can have different representations
	// of time.
	//
	// Time is a required field
	Time *RealTimeContactAnalysisTimeData `type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RealTimeContactAnalysisSegmentAttachments) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RealTimeContactAnalysisSegmentAttachments) GoString() string {
	return s.String()
}

// SetAttachments sets the Attachments field's value.
func (s *RealTimeContactAnalysisSegmentAttachments) SetAttachments(v []*RealTimeContactAnalysisAttachment) *RealTimeContactAnalysisSegmentAttachments {
	s.Attachments = v
	return s
}

// SetDisplayName sets the DisplayName field's value.
func (s *RealTimeContactAnalysisSegmentAttachments) SetDisplayName(v string) *RealTimeContactAnalysisSegmentAttachments {
	s.DisplayName = &v
	return s
}

// SetId sets the Id field's value.
func (s *RealTimeContactAnalysisSegmentAttachments) SetId(v string) *RealTimeContactAnalysisSegmentAttachments {
	s.Id = &v
	return s
}

// SetParticipantId sets the ParticipantId field's value.
func (s *RealTimeContactAnalysisSegmentAttachments) SetParticipantId(v string) *RealTimeContactAnalysisSegmentAttachments {
	s.ParticipantId = &v
	return s
}

// SetParticipantRole sets the ParticipantRole field's value.
func (s *RealTimeContactAnalysisSegmentAttachments) SetParticipantRole(v string) *RealTimeContactAnalysisSegmentAttachments {
	s.ParticipantRole = &v
	return s
}

// SetTime sets the Time field's value.
func (s *RealTimeContactAnalysisSegmentAttachments) SetTime(v *RealTimeContactAnalysisTimeData) *RealTimeContactAnalysisSegmentAttachments {
	s.Time = v
	return s
}

// The matched category rules.
type RealTimeContactAnalysisSegmentCategories struct {
	_ struct{} `type:"structure"`

	// Map between the name of the matched rule and RealTimeContactAnalysisCategoryDetails.
	//
	// MatchedDetails is a required field
	MatchedDetails map[string]*RealTimeContactAnalysisCategoryDetails `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 RealTimeContactAnalysisSegmentCategories) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RealTimeContactAnalysisSegmentCategories) GoString() string {
	return s.String()
}

// SetMatchedDetails sets the MatchedDetails field's value.
func (s *RealTimeContactAnalysisSegmentCategories) SetMatchedDetails(v map[string]*RealTimeContactAnalysisCategoryDetails) *RealTimeContactAnalysisSegmentCategories {
	s.MatchedDetails = v
	return s
}

// Segment type describing a contact event.
type RealTimeContactAnalysisSegmentEvent struct {
	_ struct{} `type:"structure"`

	// The display name of the participant. Can be redacted.
	DisplayName *string `min:"1" type:"string"`

	// Type of the event. For example, application/vnd.amazonaws.connect.event.participant.left.
	//
	// EventType is a required field
	EventType *string `min:"1" type:"string" required:"true"`

	// The identifier of the contact event.
	//
	// Id is a required field
	Id *string `min:"1" type:"string" required:"true"`

	// The identifier of the participant.
	ParticipantId *string `min:"1" type:"string"`

	// The role of the participant. For example, is it a customer, agent, or system.
	ParticipantRole *string `type:"string" enum:"ParticipantRole"`

	// Field describing the time of the event. It can have different representations
	// of time.
	//
	// Time is a required field
	Time *RealTimeContactAnalysisTimeData `type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RealTimeContactAnalysisSegmentEvent) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RealTimeContactAnalysisSegmentEvent) GoString() string {
	return s.String()
}

// SetDisplayName sets the DisplayName field's value.
func (s *RealTimeContactAnalysisSegmentEvent) SetDisplayName(v string) *RealTimeContactAnalysisSegmentEvent {
	s.DisplayName = &v
	return s
}

// SetEventType sets the EventType field's value.
func (s *RealTimeContactAnalysisSegmentEvent) SetEventType(v string) *RealTimeContactAnalysisSegmentEvent {
	s.EventType = &v
	return s
}

// SetId sets the Id field's value.
func (s *RealTimeContactAnalysisSegmentEvent) SetId(v string) *RealTimeContactAnalysisSegmentEvent {
	s.Id = &v
	return s
}

// SetParticipantId sets the ParticipantId field's value.
func (s *RealTimeContactAnalysisSegmentEvent) SetParticipantId(v string) *RealTimeContactAnalysisSegmentEvent {
	s.ParticipantId = &v
	return s
}

// SetParticipantRole sets the ParticipantRole field's value.
func (s *RealTimeContactAnalysisSegmentEvent) SetParticipantRole(v string) *RealTimeContactAnalysisSegmentEvent {
	s.ParticipantRole = &v
	return s
}

// SetTime sets the Time field's value.
func (s *RealTimeContactAnalysisSegmentEvent) SetTime(v *RealTimeContactAnalysisTimeData) *RealTimeContactAnalysisSegmentEvent {
	s.Time = v
	return s
}

// Segment type containing a list of detected issues.
type RealTimeContactAnalysisSegmentIssues struct {
	_ struct{} `type:"structure"`

	// List of the issues detected.
	//
	// IssuesDetected is a required field
	IssuesDetected []*RealTimeContactAnalysisIssueDetected `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 RealTimeContactAnalysisSegmentIssues) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RealTimeContactAnalysisSegmentIssues) GoString() string {
	return s.String()
}

// SetIssuesDetected sets the IssuesDetected field's value.
func (s *RealTimeContactAnalysisSegmentIssues) SetIssuesDetected(v []*RealTimeContactAnalysisIssueDetected) *RealTimeContactAnalysisSegmentIssues {
	s.IssuesDetected = v
	return s
}

// The analyzed transcript segment.
type RealTimeContactAnalysisSegmentTranscript struct {
	_ struct{} `type:"structure"`

	// The content of the transcript. Can be redacted.
	//
	// Content is a required field
	Content *string `min:"1" type:"string" required:"true"`

	// The type of content of the item. For example, text/plain.
	ContentType *string `min:"1" type:"string"`

	// The display name of the participant.
	DisplayName *string `min:"1" type:"string"`

	// The identifier of the transcript.
	//
	// Id is a required field
	Id *string `min:"1" type:"string" required:"true"`

	// The identifier of the participant.
	//
	// ParticipantId is a required field
	ParticipantId *string `min:"1" type:"string" required:"true"`

	// The role of the participant. For example, is it a customer, agent, or system.
	//
	// ParticipantRole is a required field
	ParticipantRole *string `type:"string" required:"true" enum:"ParticipantRole"`

	// Object describing redaction that was applied to the transcript. If transcript
	// has the field it means part of the transcript was redacted.
	Redaction *RealTimeContactAnalysisTranscriptItemRedaction `type:"structure"`

	// The sentiment detected for this piece of transcript.
	Sentiment *string `type:"string" enum:"RealTimeContactAnalysisSentimentLabel"`

	// Field describing the time of the event. It can have different representations
	// of time.
	//
	// Time is a required field
	Time *RealTimeContactAnalysisTimeData `type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RealTimeContactAnalysisSegmentTranscript) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RealTimeContactAnalysisSegmentTranscript) GoString() string {
	return s.String()
}

// SetContent sets the Content field's value.
func (s *RealTimeContactAnalysisSegmentTranscript) SetContent(v string) *RealTimeContactAnalysisSegmentTranscript {
	s.Content = &v
	return s
}

// SetContentType sets the ContentType field's value.
func (s *RealTimeContactAnalysisSegmentTranscript) SetContentType(v string) *RealTimeContactAnalysisSegmentTranscript {
	s.ContentType = &v
	return s
}

// SetDisplayName sets the DisplayName field's value.
func (s *RealTimeContactAnalysisSegmentTranscript) SetDisplayName(v string) *RealTimeContactAnalysisSegmentTranscript {
	s.DisplayName = &v
	return s
}

// SetId sets the Id field's value.
func (s *RealTimeContactAnalysisSegmentTranscript) SetId(v string) *RealTimeContactAnalysisSegmentTranscript {
	s.Id = &v
	return s
}

// SetParticipantId sets the ParticipantId field's value.
func (s *RealTimeContactAnalysisSegmentTranscript) SetParticipantId(v string) *RealTimeContactAnalysisSegmentTranscript {
	s.ParticipantId = &v
	return s
}

// SetParticipantRole sets the ParticipantRole field's value.
func (s *RealTimeContactAnalysisSegmentTranscript) SetParticipantRole(v string) *RealTimeContactAnalysisSegmentTranscript {
	s.ParticipantRole = &v
	return s
}

// SetRedaction sets the Redaction field's value.
func (s *RealTimeContactAnalysisSegmentTranscript) SetRedaction(v *RealTimeContactAnalysisTranscriptItemRedaction) *RealTimeContactAnalysisSegmentTranscript {
	s.Redaction = v
	return s
}

// SetSentiment sets the Sentiment field's value.
func (s *RealTimeContactAnalysisSegmentTranscript) SetSentiment(v string) *RealTimeContactAnalysisSegmentTranscript {
	s.Sentiment = &v
	return s
}

// SetTime sets the Time field's value.
func (s *RealTimeContactAnalysisSegmentTranscript) SetTime(v *RealTimeContactAnalysisTimeData) *RealTimeContactAnalysisSegmentTranscript {
	s.Time = v
	return s
}

// Object describing time with which the segment is associated. It can have
// different representations of time. Currently supported: absoluteTime
type RealTimeContactAnalysisTimeData struct {
	_ struct{} `type:"structure"`

	// Time represented in ISO 8601 format: yyyy-MM-ddThh:mm:ss.SSSZ. For example,
	// 2019-11-08T02:41:28.172Z.
	AbsoluteTime *time.Time `type:"timestamp" timestampFormat:"iso8601"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RealTimeContactAnalysisTimeData) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RealTimeContactAnalysisTimeData) GoString() string {
	return s.String()
}

// SetAbsoluteTime sets the AbsoluteTime field's value.
func (s *RealTimeContactAnalysisTimeData) SetAbsoluteTime(v time.Time) *RealTimeContactAnalysisTimeData {
	s.AbsoluteTime = &v
	return s
}

// Object describing redaction applied to the segment.
type RealTimeContactAnalysisTranscriptItemRedaction struct {
	_ struct{} `type:"structure"`

	// List of character intervals each describing a part of the text that was redacted.
	// For OutputType.Raw, part of the original text that contains data that can
	// be redacted. For OutputType.Redacted, part of the string with redaction tag.
	CharacterOffsets []*RealTimeContactAnalysisCharacterInterval `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 RealTimeContactAnalysisTranscriptItemRedaction) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RealTimeContactAnalysisTranscriptItemRedaction) GoString() string {
	return s.String()
}

// SetCharacterOffsets sets the CharacterOffsets field's value.
func (s *RealTimeContactAnalysisTranscriptItemRedaction) SetCharacterOffsets(v []*RealTimeContactAnalysisCharacterInterval) *RealTimeContactAnalysisTranscriptItemRedaction {
	s.CharacterOffsets = v
	return s
}

// Transcript representation containing Id and list of character intervals that
// are associated with analysis data. For example, this object within a RealTimeContactAnalysisPointOfInterest
// in Category.MatchedDetails would have character interval describing part
// of the text that matched category.
type RealTimeContactAnalysisTranscriptItemWithCharacterOffsets struct {
	_ struct{} `type:"structure"`

	// List of character intervals within transcript content/text.
	CharacterOffsets *RealTimeContactAnalysisCharacterInterval `type:"structure"`

	// Transcript identifier. Matches the identifier from one of the TranscriptSegments.
	//
	// Id is a required field
	Id *string `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 RealTimeContactAnalysisTranscriptItemWithCharacterOffsets) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RealTimeContactAnalysisTranscriptItemWithCharacterOffsets) GoString() string {
	return s.String()
}

// SetCharacterOffsets sets the CharacterOffsets field's value.
func (s *RealTimeContactAnalysisTranscriptItemWithCharacterOffsets) SetCharacterOffsets(v *RealTimeContactAnalysisCharacterInterval) *RealTimeContactAnalysisTranscriptItemWithCharacterOffsets {
	s.CharacterOffsets = v
	return s
}

// SetId sets the Id field's value.
func (s *RealTimeContactAnalysisTranscriptItemWithCharacterOffsets) SetId(v string) *RealTimeContactAnalysisTranscriptItemWithCharacterOffsets {
	s.Id = &v
	return s
}

// Transcript representation containing Id, Content and list of character intervals
// that are associated with analysis data. For example, this object within an
// issue detected would describe both content that contains identified issue
// and intervals where that content is taken from.
type RealTimeContactAnalysisTranscriptItemWithContent struct {
	_ struct{} `type:"structure"`

	// Begin and end offsets for a part of text.
	CharacterOffsets *RealTimeContactAnalysisCharacterInterval `type:"structure"`

	// Part of the transcript content that contains identified issue. Can be redacted
	Content *string `min:"1" type:"string"`

	// Transcript identifier. Matches the identifier from one of the TranscriptSegments.
	//
	// Id is a required field
	Id *string `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 RealTimeContactAnalysisTranscriptItemWithContent) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RealTimeContactAnalysisTranscriptItemWithContent) GoString() string {
	return s.String()
}

// SetCharacterOffsets sets the CharacterOffsets field's value.
func (s *RealTimeContactAnalysisTranscriptItemWithContent) SetCharacterOffsets(v *RealTimeContactAnalysisCharacterInterval) *RealTimeContactAnalysisTranscriptItemWithContent {
	s.CharacterOffsets = v
	return s
}

// SetContent sets the Content field's value.
func (s *RealTimeContactAnalysisTranscriptItemWithContent) SetContent(v string) *RealTimeContactAnalysisTranscriptItemWithContent {
	s.Content = &v
	return s
}

// SetId sets the Id field's value.
func (s *RealTimeContactAnalysisTranscriptItemWithContent) SetId(v string) *RealTimeContactAnalysisTranscriptItemWithContent {
	s.Id = &v
	return s
}

// An analyzed segment for a real-time analysis session.
type RealtimeContactAnalysisSegment struct {
	_ struct{} `type:"structure"`

	// The analyzed attachments.
	Attachments *RealTimeContactAnalysisSegmentAttachments `type:"structure"`

	// The matched category rules.
	Categories *RealTimeContactAnalysisSegmentCategories `type:"structure"`

	// Segment type describing a contact event.
	Event *RealTimeContactAnalysisSegmentEvent `type:"structure"`

	// Segment type containing a list of detected issues.
	Issues *RealTimeContactAnalysisSegmentIssues `type:"structure"`

	// The analyzed transcript segment.
	Transcript *RealTimeContactAnalysisSegmentTranscript `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 RealtimeContactAnalysisSegment) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RealtimeContactAnalysisSegment) GoString() string {
	return s.String()
}

// SetAttachments sets the Attachments field's value.
func (s *RealtimeContactAnalysisSegment) SetAttachments(v *RealTimeContactAnalysisSegmentAttachments) *RealtimeContactAnalysisSegment {
	s.Attachments = v
	return s
}

// SetCategories sets the Categories field's value.
func (s *RealtimeContactAnalysisSegment) SetCategories(v *RealTimeContactAnalysisSegmentCategories) *RealtimeContactAnalysisSegment {
	s.Categories = v
	return s
}

// SetEvent sets the Event field's value.
func (s *RealtimeContactAnalysisSegment) SetEvent(v *RealTimeContactAnalysisSegmentEvent) *RealtimeContactAnalysisSegment {
	s.Event = v
	return s
}

// SetIssues sets the Issues field's value.
func (s *RealtimeContactAnalysisSegment) SetIssues(v *RealTimeContactAnalysisSegmentIssues) *RealtimeContactAnalysisSegment {
	s.Issues = v
	return s
}

// SetTranscript sets the Transcript field's value.
func (s *RealtimeContactAnalysisSegment) SetTranscript(v *RealTimeContactAnalysisSegmentTranscript) *RealtimeContactAnalysisSegment {
	s.Transcript = v
	return s
}

// Well-formed data on a contact, used by agents to complete a contact request.
// You can have up to 4,096 UTF-8 bytes across all references for a contact.
type Reference struct {
	_ struct{} `type:"structure"`

	// The type of the reference. DATE must be of type Epoch timestamp.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"ReferenceType"`

	// A valid value for the reference. For example, for a URL reference, a formatted
	// URL that is displayed to an agent in the Contact Control Panel (CCP).
	//
	// Value is a required field
	Value *string `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 Reference) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Reference) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Reference) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Reference"}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}
	if s.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetType sets the Type field's value.
func (s *Reference) SetType(v string) *Reference {
	s.Type = &v
	return s
}

// SetValue sets the Value field's value.
func (s *Reference) SetValue(v string) *Reference {
	s.Value = &v
	return s
}

// Contains summary information about a reference. ReferenceSummary contains
// only one non null field between the URL and attachment based on the reference
// type.
type ReferenceSummary struct {
	_ struct{} `type:"structure"`

	// Information about the reference when the referenceType is ATTACHMENT. Otherwise,
	// null.
	Attachment *AttachmentReference `type:"structure"`

	// Information about a reference when the referenceType is DATE. Otherwise,
	// null.
	Date *DateReference `type:"structure"`

	// Information about a reference when the referenceType is EMAIL. Otherwise,
	// null.
	Email *EmailReference `type:"structure"`

	// Information about a reference when the referenceType is NUMBER. Otherwise,
	// null.
	Number *NumberReference `type:"structure"`

	// Information about a reference when the referenceType is STRING. Otherwise,
	// null.
	String_ *StringReference `locationName:"String" type:"structure"`

	// Information about the reference when the referenceType is URL. Otherwise,
	// null.
	Url *UrlReference `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 ReferenceSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ReferenceSummary) GoString() string {
	return s.String()
}

// SetAttachment sets the Attachment field's value.
func (s *ReferenceSummary) SetAttachment(v *AttachmentReference) *ReferenceSummary {
	s.Attachment = v
	return s
}

// SetDate sets the Date field's value.
func (s *ReferenceSummary) SetDate(v *DateReference) *ReferenceSummary {
	s.Date = v
	return s
}

// SetEmail sets the Email field's value.
func (s *ReferenceSummary) SetEmail(v *EmailReference) *ReferenceSummary {
	s.Email = v
	return s
}

// SetNumber sets the Number field's value.
func (s *ReferenceSummary) SetNumber(v *NumberReference) *ReferenceSummary {
	s.Number = v
	return s
}

// SetString_ sets the String_ field's value.
func (s *ReferenceSummary) SetString_(v *StringReference) *ReferenceSummary {
	s.String_ = v
	return s
}

// SetUrl sets the Url field's value.
func (s *ReferenceSummary) SetUrl(v *UrlReference) *ReferenceSummary {
	s.Url = v
	return s
}

type ReleasePhoneNumberInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `location:"querystring" locationName:"clientToken" type:"string" idempotencyToken:"true"`

	// A unique identifier for the phone number.
	//
	// PhoneNumberId is a required field
	PhoneNumberId *string `location:"uri" locationName:"PhoneNumberId" 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 ReleasePhoneNumberInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ReleasePhoneNumberInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ReleasePhoneNumberInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ReleasePhoneNumberInput"}
	if s.PhoneNumberId == nil {
		invalidParams.Add(request.NewErrParamRequired("PhoneNumberId"))
	}
	if s.PhoneNumberId != nil && len(*s.PhoneNumberId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PhoneNumberId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *ReleasePhoneNumberInput) SetClientToken(v string) *ReleasePhoneNumberInput {
	s.ClientToken = &v
	return s
}

// SetPhoneNumberId sets the PhoneNumberId field's value.
func (s *ReleasePhoneNumberInput) SetPhoneNumberId(v string) *ReleasePhoneNumberInput {
	s.PhoneNumberId = &v
	return s
}

type ReleasePhoneNumberOutput 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 ReleasePhoneNumberOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ReleasePhoneNumberOutput) GoString() string {
	return s.String()
}

type ReplicateInstanceInput struct {
	_ struct{} `type:"structure"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance. You can provide the InstanceId,
	// or the entire ARN.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The alias for the replicated instance. The ReplicaAlias must be unique.
	//
	// ReplicaAlias is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ReplicateInstanceInput's
	// String and GoString methods.
	//
	// ReplicaAlias is a required field
	ReplicaAlias *string `min:"1" type:"string" required:"true" sensitive:"true"`

	// The Amazon Web Services Region where to replicate the Amazon Connect instance.
	//
	// ReplicaRegion is a required field
	ReplicaRegion *string `min:"8" 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 ReplicateInstanceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ReplicateInstanceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ReplicateInstanceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ReplicateInstanceInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.ReplicaAlias == nil {
		invalidParams.Add(request.NewErrParamRequired("ReplicaAlias"))
	}
	if s.ReplicaAlias != nil && len(*s.ReplicaAlias) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ReplicaAlias", 1))
	}
	if s.ReplicaRegion == nil {
		invalidParams.Add(request.NewErrParamRequired("ReplicaRegion"))
	}
	if s.ReplicaRegion != nil && len(*s.ReplicaRegion) < 8 {
		invalidParams.Add(request.NewErrParamMinLen("ReplicaRegion", 8))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *ReplicateInstanceInput) SetClientToken(v string) *ReplicateInstanceInput {
	s.ClientToken = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *ReplicateInstanceInput) SetInstanceId(v string) *ReplicateInstanceInput {
	s.InstanceId = &v
	return s
}

// SetReplicaAlias sets the ReplicaAlias field's value.
func (s *ReplicateInstanceInput) SetReplicaAlias(v string) *ReplicateInstanceInput {
	s.ReplicaAlias = &v
	return s
}

// SetReplicaRegion sets the ReplicaRegion field's value.
func (s *ReplicateInstanceInput) SetReplicaRegion(v string) *ReplicateInstanceInput {
	s.ReplicaRegion = &v
	return s
}

type ReplicateInstanceOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the replicated instance.
	Arn *string `type:"string"`

	// The identifier of the replicated instance. You can find the instanceId in
	// the ARN of the instance. The replicated instance has the same identifier
	// as the instance it was replicated from.
	Id *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ReplicateInstanceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ReplicateInstanceOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *ReplicateInstanceOutput) SetArn(v string) *ReplicateInstanceOutput {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *ReplicateInstanceOutput) SetId(v string) *ReplicateInstanceOutput {
	s.Id = &v
	return s
}

// Information about a required field.
type RequiredFieldInfo struct {
	_ struct{} `type:"structure"`

	// The unique identifier for the field.
	Id *TaskTemplateFieldIdentifier `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 RequiredFieldInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RequiredFieldInfo) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RequiredFieldInfo) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RequiredFieldInfo"}
	if s.Id != nil {
		if err := s.Id.Validate(); err != nil {
			invalidParams.AddNested("Id", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetId sets the Id field's value.
func (s *RequiredFieldInfo) SetId(v *TaskTemplateFieldIdentifier) *RequiredFieldInfo {
	s.Id = v
	return s
}

// A resource already has that name.
type ResourceConflictException 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 ResourceConflictException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceConflictException) GoString() string {
	return s.String()
}

func newErrorResourceConflictException(v protocol.ResponseMetadata) error {
	return &ResourceConflictException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ResourceConflictException) Code() string {
	return "ResourceConflictException"
}

// Message returns the exception's message.
func (s *ResourceConflictException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ResourceConflictException) OrigErr() error {
	return nil
}

func (s *ResourceConflictException) 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 *ResourceConflictException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ResourceConflictException) RequestID() string {
	return s.RespMetadata.RequestID
}

// That resource is already in use. Please try another.
type ResourceInUseException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`

	// The identifier for the resource.
	ResourceId *string `type:"string"`

	// The type of resource.
	ResourceType *string `type:"string" enum:"ResourceType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceInUseException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceInUseException) GoString() string {
	return s.String()
}

func newErrorResourceInUseException(v protocol.ResponseMetadata) error {
	return &ResourceInUseException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ResourceInUseException) Code() string {
	return "ResourceInUseException"
}

// Message returns the exception's message.
func (s *ResourceInUseException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ResourceInUseException) OrigErr() error {
	return nil
}

func (s *ResourceInUseException) 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 *ResourceInUseException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ResourceInUseException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The specified resource was not found.
type ResourceNotFoundException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The message about the resource.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceNotFoundException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceNotFoundException) GoString() string {
	return s.String()
}

func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {
	return &ResourceNotFoundException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ResourceNotFoundException) Code() string {
	return "ResourceNotFoundException"
}

// Message returns the exception's message.
func (s *ResourceNotFoundException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ResourceNotFoundException) OrigErr() error {
	return nil
}

func (s *ResourceNotFoundException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ResourceNotFoundException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ResourceNotFoundException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The resource is not ready.
type ResourceNotReadyException 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 ResourceNotReadyException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceNotReadyException) GoString() string {
	return s.String()
}

func newErrorResourceNotReadyException(v protocol.ResponseMetadata) error {
	return &ResourceNotReadyException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ResourceNotReadyException) Code() string {
	return "ResourceNotReadyException"
}

// Message returns the exception's message.
func (s *ResourceNotReadyException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ResourceNotReadyException) OrigErr() error {
	return nil
}

func (s *ResourceNotReadyException) 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 *ResourceNotReadyException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ResourceNotReadyException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The search criteria to be used to search tags.
type ResourceTagsSearchCriteria struct {
	_ struct{} `type:"structure"`

	// The search criteria to be used to return tags.
	TagSearchCondition *TagSearchCondition `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 ResourceTagsSearchCriteria) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceTagsSearchCriteria) GoString() string {
	return s.String()
}

// SetTagSearchCondition sets the TagSearchCondition field's value.
func (s *ResourceTagsSearchCriteria) SetTagSearchCondition(v *TagSearchCondition) *ResourceTagsSearchCriteria {
	s.TagSearchCondition = v
	return s
}

type ResumeContactInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the flow.
	ContactFlowId *string `type:"string"`

	// The identifier of the contact.
	//
	// ContactId is a required field
	ContactId *string `min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instanceId
	// in the ARN of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `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 ResumeContactInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResumeContactInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ResumeContactInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ResumeContactInput"}
	if s.ContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactId"))
	}
	if s.ContactId != nil && len(*s.ContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactFlowId sets the ContactFlowId field's value.
func (s *ResumeContactInput) SetContactFlowId(v string) *ResumeContactInput {
	s.ContactFlowId = &v
	return s
}

// SetContactId sets the ContactId field's value.
func (s *ResumeContactInput) SetContactId(v string) *ResumeContactInput {
	s.ContactId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *ResumeContactInput) SetInstanceId(v string) *ResumeContactInput {
	s.InstanceId = &v
	return s
}

type ResumeContactOutput 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 ResumeContactOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResumeContactOutput) GoString() string {
	return s.String()
}

type ResumeContactRecordingInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the contact.
	//
	// ContactId is a required field
	ContactId *string `min:"1" type:"string" required:"true"`

	// The identifier of the contact. This is the identifier of the contact associated
	// with the first interaction with the contact center.
	//
	// InitialContactId is a required field
	InitialContactId *string `min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `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 ResumeContactRecordingInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResumeContactRecordingInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ResumeContactRecordingInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ResumeContactRecordingInput"}
	if s.ContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactId"))
	}
	if s.ContactId != nil && len(*s.ContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactId", 1))
	}
	if s.InitialContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("InitialContactId"))
	}
	if s.InitialContactId != nil && len(*s.InitialContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InitialContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactId sets the ContactId field's value.
func (s *ResumeContactRecordingInput) SetContactId(v string) *ResumeContactRecordingInput {
	s.ContactId = &v
	return s
}

// SetInitialContactId sets the InitialContactId field's value.
func (s *ResumeContactRecordingInput) SetInitialContactId(v string) *ResumeContactRecordingInput {
	s.InitialContactId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *ResumeContactRecordingInput) SetInstanceId(v string) *ResumeContactRecordingInput {
	s.InstanceId = &v
	return s
}

type ResumeContactRecordingOutput 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 ResumeContactRecordingOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResumeContactRecordingOutput) GoString() string {
	return s.String()
}

// Contains information about a routing profile.
type RoutingProfile struct {
	_ struct{} `type:"structure"`

	// Whether agents with this routing profile will have their routing order calculated
	// based on time since their last inbound contact or longest idle time.
	AgentAvailabilityTimer *string `type:"string" enum:"AgentAvailabilityTimer"`

	// The identifier of the default outbound queue for this routing profile.
	DefaultOutboundQueueId *string `type:"string"`

	// The description of the routing profile.
	Description *string `min:"1" type:"string"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	InstanceId *string `min:"1" type:"string"`

	// Whether this a default routing profile.
	IsDefault *bool `type:"boolean"`

	// The Amazon Web Services Region where this resource was last modified.
	LastModifiedRegion *string `type:"string"`

	// The timestamp when this resource was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The channels agents can handle in the Contact Control Panel (CCP) for this
	// routing profile.
	MediaConcurrencies []*MediaConcurrency `type:"list"`

	// The name of the routing profile.
	Name *string `min:"1" type:"string"`

	// The number of associated queues in routing profile.
	NumberOfAssociatedQueues *int64 `type:"long"`

	// The number of associated users in routing profile.
	NumberOfAssociatedUsers *int64 `type:"long"`

	// The Amazon Resource Name (ARN) of the routing profile.
	RoutingProfileArn *string `type:"string"`

	// The identifier of the routing profile.
	RoutingProfileId *string `type:"string"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RoutingProfile) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RoutingProfile) GoString() string {
	return s.String()
}

// SetAgentAvailabilityTimer sets the AgentAvailabilityTimer field's value.
func (s *RoutingProfile) SetAgentAvailabilityTimer(v string) *RoutingProfile {
	s.AgentAvailabilityTimer = &v
	return s
}

// SetDefaultOutboundQueueId sets the DefaultOutboundQueueId field's value.
func (s *RoutingProfile) SetDefaultOutboundQueueId(v string) *RoutingProfile {
	s.DefaultOutboundQueueId = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *RoutingProfile) SetDescription(v string) *RoutingProfile {
	s.Description = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *RoutingProfile) SetInstanceId(v string) *RoutingProfile {
	s.InstanceId = &v
	return s
}

// SetIsDefault sets the IsDefault field's value.
func (s *RoutingProfile) SetIsDefault(v bool) *RoutingProfile {
	s.IsDefault = &v
	return s
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *RoutingProfile) SetLastModifiedRegion(v string) *RoutingProfile {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *RoutingProfile) SetLastModifiedTime(v time.Time) *RoutingProfile {
	s.LastModifiedTime = &v
	return s
}

// SetMediaConcurrencies sets the MediaConcurrencies field's value.
func (s *RoutingProfile) SetMediaConcurrencies(v []*MediaConcurrency) *RoutingProfile {
	s.MediaConcurrencies = v
	return s
}

// SetName sets the Name field's value.
func (s *RoutingProfile) SetName(v string) *RoutingProfile {
	s.Name = &v
	return s
}

// SetNumberOfAssociatedQueues sets the NumberOfAssociatedQueues field's value.
func (s *RoutingProfile) SetNumberOfAssociatedQueues(v int64) *RoutingProfile {
	s.NumberOfAssociatedQueues = &v
	return s
}

// SetNumberOfAssociatedUsers sets the NumberOfAssociatedUsers field's value.
func (s *RoutingProfile) SetNumberOfAssociatedUsers(v int64) *RoutingProfile {
	s.NumberOfAssociatedUsers = &v
	return s
}

// SetRoutingProfileArn sets the RoutingProfileArn field's value.
func (s *RoutingProfile) SetRoutingProfileArn(v string) *RoutingProfile {
	s.RoutingProfileArn = &v
	return s
}

// SetRoutingProfileId sets the RoutingProfileId field's value.
func (s *RoutingProfile) SetRoutingProfileId(v string) *RoutingProfile {
	s.RoutingProfileId = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *RoutingProfile) SetTags(v map[string]*string) *RoutingProfile {
	s.Tags = v
	return s
}

// Contains information about the queue and channel for which priority and delay
// can be set.
type RoutingProfileQueueConfig struct {
	_ struct{} `type:"structure"`

	// The delay, in seconds, a contact should be in the queue before they are routed
	// to an available agent. For more information, see Queues: priority and delay
	// (https://docs.aws.amazon.com/connect/latest/adminguide/concepts-routing-profiles-priority.html)
	// in the Amazon Connect Administrator Guide.
	//
	// Delay is a required field
	Delay *int64 `type:"integer" required:"true"`

	// The order in which contacts are to be handled for the queue. For more information,
	// see Queues: priority and delay (https://docs.aws.amazon.com/connect/latest/adminguide/concepts-routing-profiles-priority.html).
	//
	// Priority is a required field
	Priority *int64 `min:"1" type:"integer" required:"true"`

	// Contains information about a queue resource.
	//
	// QueueReference is a required field
	QueueReference *RoutingProfileQueueReference `type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RoutingProfileQueueConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RoutingProfileQueueConfig) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RoutingProfileQueueConfig) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RoutingProfileQueueConfig"}
	if s.Delay == nil {
		invalidParams.Add(request.NewErrParamRequired("Delay"))
	}
	if s.Priority == nil {
		invalidParams.Add(request.NewErrParamRequired("Priority"))
	}
	if s.Priority != nil && *s.Priority < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Priority", 1))
	}
	if s.QueueReference == nil {
		invalidParams.Add(request.NewErrParamRequired("QueueReference"))
	}
	if s.QueueReference != nil {
		if err := s.QueueReference.Validate(); err != nil {
			invalidParams.AddNested("QueueReference", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDelay sets the Delay field's value.
func (s *RoutingProfileQueueConfig) SetDelay(v int64) *RoutingProfileQueueConfig {
	s.Delay = &v
	return s
}

// SetPriority sets the Priority field's value.
func (s *RoutingProfileQueueConfig) SetPriority(v int64) *RoutingProfileQueueConfig {
	s.Priority = &v
	return s
}

// SetQueueReference sets the QueueReference field's value.
func (s *RoutingProfileQueueConfig) SetQueueReference(v *RoutingProfileQueueReference) *RoutingProfileQueueConfig {
	s.QueueReference = v
	return s
}

// Contains summary information about a routing profile queue.
type RoutingProfileQueueConfigSummary struct {
	_ struct{} `type:"structure"`

	// The channels this queue supports.
	//
	// Channel is a required field
	Channel *string `type:"string" required:"true" enum:"Channel"`

	// The delay, in seconds, that a contact should be in the queue before they
	// are routed to an available agent. For more information, see Queues: priority
	// and delay (https://docs.aws.amazon.com/connect/latest/adminguide/concepts-routing-profiles-priority.html)
	// in the Amazon Connect Administrator Guide.
	//
	// Delay is a required field
	Delay *int64 `type:"integer" required:"true"`

	// The order in which contacts are to be handled for the queue. For more information,
	// see Queues: priority and delay (https://docs.aws.amazon.com/connect/latest/adminguide/concepts-routing-profiles-priority.html).
	//
	// Priority is a required field
	Priority *int64 `min:"1" type:"integer" required:"true"`

	// The Amazon Resource Name (ARN) of the queue.
	//
	// QueueArn is a required field
	QueueArn *string `type:"string" required:"true"`

	// The identifier for the queue.
	//
	// QueueId is a required field
	QueueId *string `type:"string" required:"true"`

	// The name of the queue.
	//
	// QueueName is a required field
	QueueName *string `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 RoutingProfileQueueConfigSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RoutingProfileQueueConfigSummary) GoString() string {
	return s.String()
}

// SetChannel sets the Channel field's value.
func (s *RoutingProfileQueueConfigSummary) SetChannel(v string) *RoutingProfileQueueConfigSummary {
	s.Channel = &v
	return s
}

// SetDelay sets the Delay field's value.
func (s *RoutingProfileQueueConfigSummary) SetDelay(v int64) *RoutingProfileQueueConfigSummary {
	s.Delay = &v
	return s
}

// SetPriority sets the Priority field's value.
func (s *RoutingProfileQueueConfigSummary) SetPriority(v int64) *RoutingProfileQueueConfigSummary {
	s.Priority = &v
	return s
}

// SetQueueArn sets the QueueArn field's value.
func (s *RoutingProfileQueueConfigSummary) SetQueueArn(v string) *RoutingProfileQueueConfigSummary {
	s.QueueArn = &v
	return s
}

// SetQueueId sets the QueueId field's value.
func (s *RoutingProfileQueueConfigSummary) SetQueueId(v string) *RoutingProfileQueueConfigSummary {
	s.QueueId = &v
	return s
}

// SetQueueName sets the QueueName field's value.
func (s *RoutingProfileQueueConfigSummary) SetQueueName(v string) *RoutingProfileQueueConfigSummary {
	s.QueueName = &v
	return s
}

// Contains the channel and queue identifier for a routing profile.
type RoutingProfileQueueReference struct {
	_ struct{} `type:"structure"`

	// The channels agents can handle in the Contact Control Panel (CCP) for this
	// routing profile.
	//
	// Channel is a required field
	Channel *string `type:"string" required:"true" enum:"Channel"`

	// The identifier for the queue.
	//
	// QueueId is a required field
	QueueId *string `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 RoutingProfileQueueReference) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RoutingProfileQueueReference) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RoutingProfileQueueReference) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RoutingProfileQueueReference"}
	if s.Channel == nil {
		invalidParams.Add(request.NewErrParamRequired("Channel"))
	}
	if s.QueueId == nil {
		invalidParams.Add(request.NewErrParamRequired("QueueId"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetChannel sets the Channel field's value.
func (s *RoutingProfileQueueReference) SetChannel(v string) *RoutingProfileQueueReference {
	s.Channel = &v
	return s
}

// SetQueueId sets the QueueId field's value.
func (s *RoutingProfileQueueReference) SetQueueId(v string) *RoutingProfileQueueReference {
	s.QueueId = &v
	return s
}

// Information about the routing profile assigned to the user.
type RoutingProfileReference struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the routing profile.
	Arn *string `type:"string"`

	// The identifier of the routing profile.
	Id *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RoutingProfileReference) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RoutingProfileReference) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *RoutingProfileReference) SetArn(v string) *RoutingProfileReference {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *RoutingProfileReference) SetId(v string) *RoutingProfileReference {
	s.Id = &v
	return s
}

// The search criteria to be used to return routing profiles.
//
// The name and description fields support "contains" queries with a minimum
// of 2 characters and a maximum of 25 characters. Any queries with character
// lengths outside of this range will throw invalid results.
type RoutingProfileSearchCriteria struct {
	_ struct{} `type:"structure"`

	// A list of conditions which would be applied together with an AND condition.
	AndConditions []*RoutingProfileSearchCriteria `type:"list"`

	// A list of conditions which would be applied together with an OR condition.
	OrConditions []*RoutingProfileSearchCriteria `type:"list"`

	// A leaf node condition which can be used to specify a string condition.
	//
	// The currently supported values for FieldName are name, description, and resourceID.
	StringCondition *StringCondition `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 RoutingProfileSearchCriteria) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RoutingProfileSearchCriteria) GoString() string {
	return s.String()
}

// SetAndConditions sets the AndConditions field's value.
func (s *RoutingProfileSearchCriteria) SetAndConditions(v []*RoutingProfileSearchCriteria) *RoutingProfileSearchCriteria {
	s.AndConditions = v
	return s
}

// SetOrConditions sets the OrConditions field's value.
func (s *RoutingProfileSearchCriteria) SetOrConditions(v []*RoutingProfileSearchCriteria) *RoutingProfileSearchCriteria {
	s.OrConditions = v
	return s
}

// SetStringCondition sets the StringCondition field's value.
func (s *RoutingProfileSearchCriteria) SetStringCondition(v *StringCondition) *RoutingProfileSearchCriteria {
	s.StringCondition = v
	return s
}

// Filters to be applied to search results.
type RoutingProfileSearchFilter struct {
	_ struct{} `type:"structure"`

	// An object that can be used to specify Tag conditions inside the SearchFilter.
	// This accepts an OR of AND (List of List) input where:
	//
	//    * Top level list specifies conditions that need to be applied with OR
	//    operator
	//
	//    * Inner list specifies conditions that need to be applied with AND operator.
	TagFilter *ControlPlaneTagFilter `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 RoutingProfileSearchFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RoutingProfileSearchFilter) GoString() string {
	return s.String()
}

// SetTagFilter sets the TagFilter field's value.
func (s *RoutingProfileSearchFilter) SetTagFilter(v *ControlPlaneTagFilter) *RoutingProfileSearchFilter {
	s.TagFilter = v
	return s
}

// Contains summary information about a routing profile.
type RoutingProfileSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the routing profile.
	Arn *string `type:"string"`

	// The identifier of the routing profile.
	Id *string `type:"string"`

	// The Amazon Web Services Region where this resource was last modified.
	LastModifiedRegion *string `type:"string"`

	// The timestamp when this resource was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The name of the routing profile.
	Name *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RoutingProfileSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RoutingProfileSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *RoutingProfileSummary) SetArn(v string) *RoutingProfileSummary {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *RoutingProfileSummary) SetId(v string) *RoutingProfileSummary {
	s.Id = &v
	return s
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *RoutingProfileSummary) SetLastModifiedRegion(v string) *RoutingProfileSummary {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *RoutingProfileSummary) SetLastModifiedTime(v time.Time) *RoutingProfileSummary {
	s.LastModifiedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *RoutingProfileSummary) SetName(v string) *RoutingProfileSummary {
	s.Name = &v
	return s
}

// Information about a rule.
type Rule struct {
	_ struct{} `type:"structure"`

	// A list of actions to be run when the rule is triggered.
	//
	// Actions is a required field
	Actions []*RuleAction `type:"list" required:"true"`

	// The timestamp for when the rule was created.
	//
	// CreatedTime is a required field
	CreatedTime *time.Time `type:"timestamp" required:"true"`

	// The conditions of the rule.
	//
	// Function is a required field
	Function *string `type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of the user who last updated the rule.
	//
	// LastUpdatedBy is a required field
	LastUpdatedBy *string `type:"string" required:"true"`

	// The timestamp for the when the rule was last updated.
	//
	// LastUpdatedTime is a required field
	LastUpdatedTime *time.Time `type:"timestamp" required:"true"`

	// The name of the rule.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The publish status of the rule.
	//
	// PublishStatus is a required field
	PublishStatus *string `type:"string" required:"true" enum:"RulePublishStatus"`

	// The Amazon Resource Name (ARN) of the rule.
	//
	// RuleArn is a required field
	RuleArn *string `type:"string" required:"true"`

	// A unique identifier for the rule.
	//
	// RuleId is a required field
	RuleId *string `min:"1" type:"string" required:"true"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`

	// The event source to trigger the rule.
	//
	// TriggerEventSource is a required field
	TriggerEventSource *RuleTriggerEventSource `type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Rule) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Rule) GoString() string {
	return s.String()
}

// SetActions sets the Actions field's value.
func (s *Rule) SetActions(v []*RuleAction) *Rule {
	s.Actions = v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *Rule) SetCreatedTime(v time.Time) *Rule {
	s.CreatedTime = &v
	return s
}

// SetFunction sets the Function field's value.
func (s *Rule) SetFunction(v string) *Rule {
	s.Function = &v
	return s
}

// SetLastUpdatedBy sets the LastUpdatedBy field's value.
func (s *Rule) SetLastUpdatedBy(v string) *Rule {
	s.LastUpdatedBy = &v
	return s
}

// SetLastUpdatedTime sets the LastUpdatedTime field's value.
func (s *Rule) SetLastUpdatedTime(v time.Time) *Rule {
	s.LastUpdatedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *Rule) SetName(v string) *Rule {
	s.Name = &v
	return s
}

// SetPublishStatus sets the PublishStatus field's value.
func (s *Rule) SetPublishStatus(v string) *Rule {
	s.PublishStatus = &v
	return s
}

// SetRuleArn sets the RuleArn field's value.
func (s *Rule) SetRuleArn(v string) *Rule {
	s.RuleArn = &v
	return s
}

// SetRuleId sets the RuleId field's value.
func (s *Rule) SetRuleId(v string) *Rule {
	s.RuleId = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *Rule) SetTags(v map[string]*string) *Rule {
	s.Tags = v
	return s
}

// SetTriggerEventSource sets the TriggerEventSource field's value.
func (s *Rule) SetTriggerEventSource(v *RuleTriggerEventSource) *Rule {
	s.TriggerEventSource = v
	return s
}

// Information about the action to be performed when a rule is triggered.
type RuleAction struct {
	_ struct{} `type:"structure"`

	// The type of action that creates a rule.
	//
	// ActionType is a required field
	ActionType *string `type:"string" required:"true" enum:"ActionType"`

	// Information about the contact category action.
	//
	// Supported only for TriggerEventSource values: OnPostCallAnalysisAvailable
	// | OnRealTimeCallAnalysisAvailable | OnRealTimeChatAnalysisAvailable | OnPostChatAnalysisAvailable
	// | OnZendeskTicketCreate | OnZendeskTicketStatusUpdate | OnSalesforceCaseCreate
	AssignContactCategoryAction *AssignContactCategoryActionDefinition `type:"structure"`

	// Information about the create case action.
	//
	// Supported only for TriggerEventSource values: OnPostCallAnalysisAvailable
	// | OnPostChatAnalysisAvailable.
	CreateCaseAction *CreateCaseActionDefinition `type:"structure"`

	// Information about the end associated tasks action.
	//
	// Supported only for TriggerEventSource values: OnCaseUpdate.
	EndAssociatedTasksAction *EndAssociatedTasksActionDefinition `type:"structure"`

	// Information about the EventBridge action.
	//
	// Supported only for TriggerEventSource values: OnPostCallAnalysisAvailable
	// | OnRealTimeCallAnalysisAvailable | OnRealTimeChatAnalysisAvailable | OnPostChatAnalysisAvailable
	// | OnContactEvaluationSubmit | OnMetricDataUpdate
	EventBridgeAction *EventBridgeActionDefinition `type:"structure"`

	// Information about the send notification action.
	//
	// Supported only for TriggerEventSource values: OnPostCallAnalysisAvailable
	// | OnRealTimeCallAnalysisAvailable | OnRealTimeChatAnalysisAvailable | OnPostChatAnalysisAvailable
	// | OnContactEvaluationSubmit | OnMetricDataUpdate
	SendNotificationAction *SendNotificationActionDefinition `type:"structure"`

	// Information about the task action. This field is required if TriggerEventSource
	// is one of the following values: OnZendeskTicketCreate | OnZendeskTicketStatusUpdate
	// | OnSalesforceCaseCreate
	TaskAction *TaskActionDefinition `type:"structure"`

	// Information about the update case action.
	//
	// Supported only for TriggerEventSource values: OnCaseCreate | OnCaseUpdate.
	UpdateCaseAction *UpdateCaseActionDefinition `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 RuleAction) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleAction) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RuleAction) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RuleAction"}
	if s.ActionType == nil {
		invalidParams.Add(request.NewErrParamRequired("ActionType"))
	}
	if s.CreateCaseAction != nil {
		if err := s.CreateCaseAction.Validate(); err != nil {
			invalidParams.AddNested("CreateCaseAction", err.(request.ErrInvalidParams))
		}
	}
	if s.EventBridgeAction != nil {
		if err := s.EventBridgeAction.Validate(); err != nil {
			invalidParams.AddNested("EventBridgeAction", err.(request.ErrInvalidParams))
		}
	}
	if s.SendNotificationAction != nil {
		if err := s.SendNotificationAction.Validate(); err != nil {
			invalidParams.AddNested("SendNotificationAction", err.(request.ErrInvalidParams))
		}
	}
	if s.TaskAction != nil {
		if err := s.TaskAction.Validate(); err != nil {
			invalidParams.AddNested("TaskAction", err.(request.ErrInvalidParams))
		}
	}
	if s.UpdateCaseAction != nil {
		if err := s.UpdateCaseAction.Validate(); err != nil {
			invalidParams.AddNested("UpdateCaseAction", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActionType sets the ActionType field's value.
func (s *RuleAction) SetActionType(v string) *RuleAction {
	s.ActionType = &v
	return s
}

// SetAssignContactCategoryAction sets the AssignContactCategoryAction field's value.
func (s *RuleAction) SetAssignContactCategoryAction(v *AssignContactCategoryActionDefinition) *RuleAction {
	s.AssignContactCategoryAction = v
	return s
}

// SetCreateCaseAction sets the CreateCaseAction field's value.
func (s *RuleAction) SetCreateCaseAction(v *CreateCaseActionDefinition) *RuleAction {
	s.CreateCaseAction = v
	return s
}

// SetEndAssociatedTasksAction sets the EndAssociatedTasksAction field's value.
func (s *RuleAction) SetEndAssociatedTasksAction(v *EndAssociatedTasksActionDefinition) *RuleAction {
	s.EndAssociatedTasksAction = v
	return s
}

// SetEventBridgeAction sets the EventBridgeAction field's value.
func (s *RuleAction) SetEventBridgeAction(v *EventBridgeActionDefinition) *RuleAction {
	s.EventBridgeAction = v
	return s
}

// SetSendNotificationAction sets the SendNotificationAction field's value.
func (s *RuleAction) SetSendNotificationAction(v *SendNotificationActionDefinition) *RuleAction {
	s.SendNotificationAction = v
	return s
}

// SetTaskAction sets the TaskAction field's value.
func (s *RuleAction) SetTaskAction(v *TaskActionDefinition) *RuleAction {
	s.TaskAction = v
	return s
}

// SetUpdateCaseAction sets the UpdateCaseAction field's value.
func (s *RuleAction) SetUpdateCaseAction(v *UpdateCaseActionDefinition) *RuleAction {
	s.UpdateCaseAction = v
	return s
}

// A list of ActionTypes associated with a rule.
type RuleSummary struct {
	_ struct{} `type:"structure"`

	// A list of ActionTypes associated with a rule.
	//
	// ActionSummaries is a required field
	ActionSummaries []*ActionSummary `type:"list" required:"true"`

	// The timestamp for when the rule was created.
	//
	// CreatedTime is a required field
	CreatedTime *time.Time `type:"timestamp" required:"true"`

	// The name of the event source.
	//
	// EventSourceName is a required field
	EventSourceName *string `type:"string" required:"true" enum:"EventSourceName"`

	// The timestamp for when the rule was last updated.
	//
	// LastUpdatedTime is a required field
	LastUpdatedTime *time.Time `type:"timestamp" required:"true"`

	// The name of the rule.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The publish status of the rule.
	//
	// PublishStatus is a required field
	PublishStatus *string `type:"string" required:"true" enum:"RulePublishStatus"`

	// The Amazon Resource Name (ARN) of the rule.
	//
	// RuleArn is a required field
	RuleArn *string `type:"string" required:"true"`

	// A unique identifier for the rule.
	//
	// RuleId is a required field
	RuleId *string `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 RuleSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleSummary) GoString() string {
	return s.String()
}

// SetActionSummaries sets the ActionSummaries field's value.
func (s *RuleSummary) SetActionSummaries(v []*ActionSummary) *RuleSummary {
	s.ActionSummaries = v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *RuleSummary) SetCreatedTime(v time.Time) *RuleSummary {
	s.CreatedTime = &v
	return s
}

// SetEventSourceName sets the EventSourceName field's value.
func (s *RuleSummary) SetEventSourceName(v string) *RuleSummary {
	s.EventSourceName = &v
	return s
}

// SetLastUpdatedTime sets the LastUpdatedTime field's value.
func (s *RuleSummary) SetLastUpdatedTime(v time.Time) *RuleSummary {
	s.LastUpdatedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *RuleSummary) SetName(v string) *RuleSummary {
	s.Name = &v
	return s
}

// SetPublishStatus sets the PublishStatus field's value.
func (s *RuleSummary) SetPublishStatus(v string) *RuleSummary {
	s.PublishStatus = &v
	return s
}

// SetRuleArn sets the RuleArn field's value.
func (s *RuleSummary) SetRuleArn(v string) *RuleSummary {
	s.RuleArn = &v
	return s
}

// SetRuleId sets the RuleId field's value.
func (s *RuleSummary) SetRuleId(v string) *RuleSummary {
	s.RuleId = &v
	return s
}

// The name of the event source. This field is required if TriggerEventSource
// is one of the following values: OnZendeskTicketCreate | OnZendeskTicketStatusUpdate
// | OnSalesforceCaseCreate | OnContactEvaluationSubmit | OnMetricDataUpdate.
type RuleTriggerEventSource struct {
	_ struct{} `type:"structure"`

	// The name of the event source.
	//
	// EventSourceName is a required field
	EventSourceName *string `type:"string" required:"true" enum:"EventSourceName"`

	// The identifier for the integration association.
	IntegrationAssociationId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleTriggerEventSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RuleTriggerEventSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RuleTriggerEventSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RuleTriggerEventSource"}
	if s.EventSourceName == nil {
		invalidParams.Add(request.NewErrParamRequired("EventSourceName"))
	}
	if s.IntegrationAssociationId != nil && len(*s.IntegrationAssociationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("IntegrationAssociationId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEventSourceName sets the EventSourceName field's value.
func (s *RuleTriggerEventSource) SetEventSourceName(v string) *RuleTriggerEventSource {
	s.EventSourceName = &v
	return s
}

// SetIntegrationAssociationId sets the IntegrationAssociationId field's value.
func (s *RuleTriggerEventSource) SetIntegrationAssociationId(v string) *RuleTriggerEventSource {
	s.IntegrationAssociationId = &v
	return s
}

// Information about the Amazon Simple Storage Service (Amazon S3) storage type.
type S3Config struct {
	_ struct{} `type:"structure"`

	// The S3 bucket name.
	//
	// BucketName is a required field
	BucketName *string `min:"1" type:"string" required:"true"`

	// The S3 bucket prefix.
	//
	// BucketPrefix is a required field
	BucketPrefix *string `min:"1" type:"string" required:"true"`

	// The Amazon S3 encryption configuration.
	EncryptionConfig *EncryptionConfig `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 S3Config) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3Config) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3Config) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3Config"}
	if s.BucketName == nil {
		invalidParams.Add(request.NewErrParamRequired("BucketName"))
	}
	if s.BucketName != nil && len(*s.BucketName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("BucketName", 1))
	}
	if s.BucketPrefix == nil {
		invalidParams.Add(request.NewErrParamRequired("BucketPrefix"))
	}
	if s.BucketPrefix != nil && len(*s.BucketPrefix) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("BucketPrefix", 1))
	}
	if s.EncryptionConfig != nil {
		if err := s.EncryptionConfig.Validate(); err != nil {
			invalidParams.AddNested("EncryptionConfig", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBucketName sets the BucketName field's value.
func (s *S3Config) SetBucketName(v string) *S3Config {
	s.BucketName = &v
	return s
}

// SetBucketPrefix sets the BucketPrefix field's value.
func (s *S3Config) SetBucketPrefix(v string) *S3Config {
	s.BucketPrefix = &v
	return s
}

// SetEncryptionConfig sets the EncryptionConfig field's value.
func (s *S3Config) SetEncryptionConfig(v *EncryptionConfig) *S3Config {
	s.EncryptionConfig = v
	return s
}

type SearchAvailablePhoneNumbersInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance that phone numbers are claimed
	// to. You can find the instance ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance. You must enter InstanceId
	// or TargetArn.
	InstanceId *string `min:"1" type:"string"`

	// The maximum number of results to return per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `min:"1" type:"string"`

	// The ISO country code.
	//
	// PhoneNumberCountryCode is a required field
	PhoneNumberCountryCode *string `type:"string" required:"true" enum:"PhoneNumberCountryCode"`

	// The prefix of the phone number. If provided, it must contain + as part of
	// the country code.
	PhoneNumberPrefix *string `type:"string"`

	// The type of phone number.
	//
	// PhoneNumberType is a required field
	PhoneNumberType *string `type:"string" required:"true" enum:"PhoneNumberType"`

	// The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution
	// groups that phone number inbound traffic is routed through. You must enter
	// InstanceId or TargetArn.
	TargetArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchAvailablePhoneNumbersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchAvailablePhoneNumbersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchAvailablePhoneNumbersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchAvailablePhoneNumbersInput"}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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 s.PhoneNumberCountryCode == nil {
		invalidParams.Add(request.NewErrParamRequired("PhoneNumberCountryCode"))
	}
	if s.PhoneNumberType == nil {
		invalidParams.Add(request.NewErrParamRequired("PhoneNumberType"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *SearchAvailablePhoneNumbersInput) SetInstanceId(v string) *SearchAvailablePhoneNumbersInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchAvailablePhoneNumbersInput) SetMaxResults(v int64) *SearchAvailablePhoneNumbersInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchAvailablePhoneNumbersInput) SetNextToken(v string) *SearchAvailablePhoneNumbersInput {
	s.NextToken = &v
	return s
}

// SetPhoneNumberCountryCode sets the PhoneNumberCountryCode field's value.
func (s *SearchAvailablePhoneNumbersInput) SetPhoneNumberCountryCode(v string) *SearchAvailablePhoneNumbersInput {
	s.PhoneNumberCountryCode = &v
	return s
}

// SetPhoneNumberPrefix sets the PhoneNumberPrefix field's value.
func (s *SearchAvailablePhoneNumbersInput) SetPhoneNumberPrefix(v string) *SearchAvailablePhoneNumbersInput {
	s.PhoneNumberPrefix = &v
	return s
}

// SetPhoneNumberType sets the PhoneNumberType field's value.
func (s *SearchAvailablePhoneNumbersInput) SetPhoneNumberType(v string) *SearchAvailablePhoneNumbersInput {
	s.PhoneNumberType = &v
	return s
}

// SetTargetArn sets the TargetArn field's value.
func (s *SearchAvailablePhoneNumbersInput) SetTargetArn(v string) *SearchAvailablePhoneNumbersInput {
	s.TargetArn = &v
	return s
}

type SearchAvailablePhoneNumbersOutput struct {
	_ struct{} `type:"structure"`

	// A list of available phone numbers that you can claim to your Amazon Connect
	// instance or traffic distribution group.
	AvailableNumbersList []*AvailableNumberSummary `type:"list"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchAvailablePhoneNumbersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchAvailablePhoneNumbersOutput) GoString() string {
	return s.String()
}

// SetAvailableNumbersList sets the AvailableNumbersList field's value.
func (s *SearchAvailablePhoneNumbersOutput) SetAvailableNumbersList(v []*AvailableNumberSummary) *SearchAvailablePhoneNumbersOutput {
	s.AvailableNumbersList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchAvailablePhoneNumbersOutput) SetNextToken(v string) *SearchAvailablePhoneNumbersOutput {
	s.NextToken = &v
	return s
}

type SearchContactsInput struct {
	_ struct{} `type:"structure"`

	// The identifier of Amazon Connect instance. You can find the instance ID in
	// the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `min:"1" type:"string"`

	// The search criteria to be used to return contacts.
	SearchCriteria *SearchCriteria `type:"structure"`

	// Specifies a field to sort by and a sort order.
	Sort *Sort `type:"structure"`

	// Time range that you want to search results.
	//
	// TimeRange is a required field
	TimeRange *SearchContactsTimeRange `type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchContactsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchContactsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchContactsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchContactsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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 s.TimeRange == nil {
		invalidParams.Add(request.NewErrParamRequired("TimeRange"))
	}
	if s.SearchCriteria != nil {
		if err := s.SearchCriteria.Validate(); err != nil {
			invalidParams.AddNested("SearchCriteria", err.(request.ErrInvalidParams))
		}
	}
	if s.Sort != nil {
		if err := s.Sort.Validate(); err != nil {
			invalidParams.AddNested("Sort", err.(request.ErrInvalidParams))
		}
	}
	if s.TimeRange != nil {
		if err := s.TimeRange.Validate(); err != nil {
			invalidParams.AddNested("TimeRange", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *SearchContactsInput) SetInstanceId(v string) *SearchContactsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchContactsInput) SetMaxResults(v int64) *SearchContactsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchContactsInput) SetNextToken(v string) *SearchContactsInput {
	s.NextToken = &v
	return s
}

// SetSearchCriteria sets the SearchCriteria field's value.
func (s *SearchContactsInput) SetSearchCriteria(v *SearchCriteria) *SearchContactsInput {
	s.SearchCriteria = v
	return s
}

// SetSort sets the Sort field's value.
func (s *SearchContactsInput) SetSort(v *Sort) *SearchContactsInput {
	s.Sort = v
	return s
}

// SetTimeRange sets the TimeRange field's value.
func (s *SearchContactsInput) SetTimeRange(v *SearchContactsTimeRange) *SearchContactsInput {
	s.TimeRange = v
	return s
}

type SearchContactsOutput struct {
	_ struct{} `type:"structure"`

	// Information about the contacts.
	//
	// Contacts is a required field
	Contacts []*ContactSearchSummary `type:"list" required:"true"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `min:"1" type:"string"`

	// The total number of contacts which matched your search query.
	TotalCount *int64 `type:"long"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchContactsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchContactsOutput) GoString() string {
	return s.String()
}

// SetContacts sets the Contacts field's value.
func (s *SearchContactsOutput) SetContacts(v []*ContactSearchSummary) *SearchContactsOutput {
	s.Contacts = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchContactsOutput) SetNextToken(v string) *SearchContactsOutput {
	s.NextToken = &v
	return s
}

// SetTotalCount sets the TotalCount field's value.
func (s *SearchContactsOutput) SetTotalCount(v int64) *SearchContactsOutput {
	s.TotalCount = &v
	return s
}

// A structure of time range that you want to search results.
type SearchContactsTimeRange struct {
	_ struct{} `type:"structure"`

	// The end time of the time range.
	//
	// EndTime is a required field
	EndTime *time.Time `type:"timestamp" required:"true"`

	// The start time of the time range.
	//
	// StartTime is a required field
	StartTime *time.Time `type:"timestamp" required:"true"`

	// The type of timestamp to search.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"SearchContactsTimeRangeType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchContactsTimeRange) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchContactsTimeRange) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchContactsTimeRange) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchContactsTimeRange"}
	if s.EndTime == nil {
		invalidParams.Add(request.NewErrParamRequired("EndTime"))
	}
	if s.StartTime == nil {
		invalidParams.Add(request.NewErrParamRequired("StartTime"))
	}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEndTime sets the EndTime field's value.
func (s *SearchContactsTimeRange) SetEndTime(v time.Time) *SearchContactsTimeRange {
	s.EndTime = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *SearchContactsTimeRange) SetStartTime(v time.Time) *SearchContactsTimeRange {
	s.StartTime = &v
	return s
}

// SetType sets the Type field's value.
func (s *SearchContactsTimeRange) SetType(v string) *SearchContactsTimeRange {
	s.Type = &v
	return s
}

// A structure of search criteria to be used to return contacts.
type SearchCriteria struct {
	_ struct{} `type:"structure"`

	// The agent hierarchy groups of the agent at the time of handling the contact.
	AgentHierarchyGroups *AgentHierarchyGroups `type:"structure"`

	// The identifiers of agents who handled the contacts.
	AgentIds []*string `type:"list"`

	// The list of channels associated with contacts.
	Channels []*string `type:"list" enum:"Channel"`

	// Search criteria based on analysis outputs from Amazon Connect Contact Lens.
	ContactAnalysis *ContactAnalysis `type:"structure"`

	// The list of initiation methods associated with contacts.
	InitiationMethods []*string `type:"list" enum:"ContactInitiationMethod"`

	// The list of queue IDs associated with contacts.
	QueueIds []*string `type:"list"`

	// The search criteria based on user-defined contact attributes that have been
	// configured for contact search. For more information, see Search by customer
	// contact attributes (https://docs.aws.amazon.com/connect/latest/adminguide/search-custom-attributes.html)
	// in the Amazon Connect Administrator Guide.
	//
	// To use SearchableContactAttributes in a search request, the GetContactAttributes
	// action is required to perform an API request. For more information, see https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonconnect.html#amazonconnect-actions-as-permissions
	// (https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonconnect.html#amazonconnect-actions-as-permissions)Actions
	// defined by Amazon Connect.
	SearchableContactAttributes *SearchableContactAttributes `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 SearchCriteria) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchCriteria) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchCriteria) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchCriteria"}
	if s.ContactAnalysis != nil {
		if err := s.ContactAnalysis.Validate(); err != nil {
			invalidParams.AddNested("ContactAnalysis", err.(request.ErrInvalidParams))
		}
	}
	if s.SearchableContactAttributes != nil {
		if err := s.SearchableContactAttributes.Validate(); err != nil {
			invalidParams.AddNested("SearchableContactAttributes", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAgentHierarchyGroups sets the AgentHierarchyGroups field's value.
func (s *SearchCriteria) SetAgentHierarchyGroups(v *AgentHierarchyGroups) *SearchCriteria {
	s.AgentHierarchyGroups = v
	return s
}

// SetAgentIds sets the AgentIds field's value.
func (s *SearchCriteria) SetAgentIds(v []*string) *SearchCriteria {
	s.AgentIds = v
	return s
}

// SetChannels sets the Channels field's value.
func (s *SearchCriteria) SetChannels(v []*string) *SearchCriteria {
	s.Channels = v
	return s
}

// SetContactAnalysis sets the ContactAnalysis field's value.
func (s *SearchCriteria) SetContactAnalysis(v *ContactAnalysis) *SearchCriteria {
	s.ContactAnalysis = v
	return s
}

// SetInitiationMethods sets the InitiationMethods field's value.
func (s *SearchCriteria) SetInitiationMethods(v []*string) *SearchCriteria {
	s.InitiationMethods = v
	return s
}

// SetQueueIds sets the QueueIds field's value.
func (s *SearchCriteria) SetQueueIds(v []*string) *SearchCriteria {
	s.QueueIds = v
	return s
}

// SetSearchableContactAttributes sets the SearchableContactAttributes field's value.
func (s *SearchCriteria) SetSearchableContactAttributes(v *SearchableContactAttributes) *SearchCriteria {
	s.SearchableContactAttributes = v
	return s
}

type SearchHoursOfOperationsInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `min:"1" type:"string"`

	// The search criteria to be used to return hours of operations.
	SearchCriteria *HoursOfOperationSearchCriteria `type:"structure"`

	// Filters to be applied to search results.
	SearchFilter *HoursOfOperationSearchFilter `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 SearchHoursOfOperationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchHoursOfOperationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchHoursOfOperationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchHoursOfOperationsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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
}

// SetInstanceId sets the InstanceId field's value.
func (s *SearchHoursOfOperationsInput) SetInstanceId(v string) *SearchHoursOfOperationsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchHoursOfOperationsInput) SetMaxResults(v int64) *SearchHoursOfOperationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchHoursOfOperationsInput) SetNextToken(v string) *SearchHoursOfOperationsInput {
	s.NextToken = &v
	return s
}

// SetSearchCriteria sets the SearchCriteria field's value.
func (s *SearchHoursOfOperationsInput) SetSearchCriteria(v *HoursOfOperationSearchCriteria) *SearchHoursOfOperationsInput {
	s.SearchCriteria = v
	return s
}

// SetSearchFilter sets the SearchFilter field's value.
func (s *SearchHoursOfOperationsInput) SetSearchFilter(v *HoursOfOperationSearchFilter) *SearchHoursOfOperationsInput {
	s.SearchFilter = v
	return s
}

type SearchHoursOfOperationsOutput struct {
	_ struct{} `type:"structure"`

	// The total number of hours of operations which matched your search query.
	ApproximateTotalCount *int64 `type:"long"`

	// Information about the hours of operations.
	HoursOfOperations []*HoursOfOperation `type:"list"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchHoursOfOperationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchHoursOfOperationsOutput) GoString() string {
	return s.String()
}

// SetApproximateTotalCount sets the ApproximateTotalCount field's value.
func (s *SearchHoursOfOperationsOutput) SetApproximateTotalCount(v int64) *SearchHoursOfOperationsOutput {
	s.ApproximateTotalCount = &v
	return s
}

// SetHoursOfOperations sets the HoursOfOperations field's value.
func (s *SearchHoursOfOperationsOutput) SetHoursOfOperations(v []*HoursOfOperation) *SearchHoursOfOperationsOutput {
	s.HoursOfOperations = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchHoursOfOperationsOutput) SetNextToken(v string) *SearchHoursOfOperationsOutput {
	s.NextToken = &v
	return s
}

type SearchPredefinedAttributesInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `min:"1" type:"string"`

	// The search criteria to be used to return predefined attributes.
	SearchCriteria *PredefinedAttributeSearchCriteria `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 SearchPredefinedAttributesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchPredefinedAttributesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchPredefinedAttributesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchPredefinedAttributesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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
}

// SetInstanceId sets the InstanceId field's value.
func (s *SearchPredefinedAttributesInput) SetInstanceId(v string) *SearchPredefinedAttributesInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchPredefinedAttributesInput) SetMaxResults(v int64) *SearchPredefinedAttributesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchPredefinedAttributesInput) SetNextToken(v string) *SearchPredefinedAttributesInput {
	s.NextToken = &v
	return s
}

// SetSearchCriteria sets the SearchCriteria field's value.
func (s *SearchPredefinedAttributesInput) SetSearchCriteria(v *PredefinedAttributeSearchCriteria) *SearchPredefinedAttributesInput {
	s.SearchCriteria = v
	return s
}

type SearchPredefinedAttributesOutput struct {
	_ struct{} `type:"structure"`

	// The approximate number of predefined attributes which matched your search
	// query.
	ApproximateTotalCount *int64 `type:"long"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `min:"1" type:"string"`

	// Predefined attributes matched by the search criteria.
	PredefinedAttributes []*PredefinedAttribute `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 SearchPredefinedAttributesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchPredefinedAttributesOutput) GoString() string {
	return s.String()
}

// SetApproximateTotalCount sets the ApproximateTotalCount field's value.
func (s *SearchPredefinedAttributesOutput) SetApproximateTotalCount(v int64) *SearchPredefinedAttributesOutput {
	s.ApproximateTotalCount = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchPredefinedAttributesOutput) SetNextToken(v string) *SearchPredefinedAttributesOutput {
	s.NextToken = &v
	return s
}

// SetPredefinedAttributes sets the PredefinedAttributes field's value.
func (s *SearchPredefinedAttributesOutput) SetPredefinedAttributes(v []*PredefinedAttribute) *SearchPredefinedAttributesOutput {
	s.PredefinedAttributes = v
	return s
}

type SearchPromptsInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `min:"1" type:"string"`

	// The search criteria to be used to return prompts.
	SearchCriteria *PromptSearchCriteria `type:"structure"`

	// Filters to be applied to search results.
	SearchFilter *PromptSearchFilter `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 SearchPromptsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchPromptsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchPromptsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchPromptsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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
}

// SetInstanceId sets the InstanceId field's value.
func (s *SearchPromptsInput) SetInstanceId(v string) *SearchPromptsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchPromptsInput) SetMaxResults(v int64) *SearchPromptsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchPromptsInput) SetNextToken(v string) *SearchPromptsInput {
	s.NextToken = &v
	return s
}

// SetSearchCriteria sets the SearchCriteria field's value.
func (s *SearchPromptsInput) SetSearchCriteria(v *PromptSearchCriteria) *SearchPromptsInput {
	s.SearchCriteria = v
	return s
}

// SetSearchFilter sets the SearchFilter field's value.
func (s *SearchPromptsInput) SetSearchFilter(v *PromptSearchFilter) *SearchPromptsInput {
	s.SearchFilter = v
	return s
}

type SearchPromptsOutput struct {
	_ struct{} `type:"structure"`

	// The total number of quick connects which matched your search query.
	ApproximateTotalCount *int64 `type:"long"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `min:"1" type:"string"`

	// Information about the prompts.
	Prompts []*Prompt `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 SearchPromptsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchPromptsOutput) GoString() string {
	return s.String()
}

// SetApproximateTotalCount sets the ApproximateTotalCount field's value.
func (s *SearchPromptsOutput) SetApproximateTotalCount(v int64) *SearchPromptsOutput {
	s.ApproximateTotalCount = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchPromptsOutput) SetNextToken(v string) *SearchPromptsOutput {
	s.NextToken = &v
	return s
}

// SetPrompts sets the Prompts field's value.
func (s *SearchPromptsOutput) SetPrompts(v []*Prompt) *SearchPromptsOutput {
	s.Prompts = v
	return s
}

type SearchQueuesInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `min:"1" type:"string"`

	// The search criteria to be used to return queues.
	//
	// The name and description fields support "contains" queries with a minimum
	// of 2 characters and a maximum of 25 characters. Any queries with character
	// lengths outside of this range will throw invalid results.
	SearchCriteria *QueueSearchCriteria `type:"structure"`

	// Filters to be applied to search results.
	SearchFilter *QueueSearchFilter `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 SearchQueuesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchQueuesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchQueuesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchQueuesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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
}

// SetInstanceId sets the InstanceId field's value.
func (s *SearchQueuesInput) SetInstanceId(v string) *SearchQueuesInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchQueuesInput) SetMaxResults(v int64) *SearchQueuesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchQueuesInput) SetNextToken(v string) *SearchQueuesInput {
	s.NextToken = &v
	return s
}

// SetSearchCriteria sets the SearchCriteria field's value.
func (s *SearchQueuesInput) SetSearchCriteria(v *QueueSearchCriteria) *SearchQueuesInput {
	s.SearchCriteria = v
	return s
}

// SetSearchFilter sets the SearchFilter field's value.
func (s *SearchQueuesInput) SetSearchFilter(v *QueueSearchFilter) *SearchQueuesInput {
	s.SearchFilter = v
	return s
}

type SearchQueuesOutput struct {
	_ struct{} `type:"structure"`

	// The total number of queues which matched your search query.
	ApproximateTotalCount *int64 `type:"long"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `min:"1" type:"string"`

	// Information about the queues.
	Queues []*Queue `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 SearchQueuesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchQueuesOutput) GoString() string {
	return s.String()
}

// SetApproximateTotalCount sets the ApproximateTotalCount field's value.
func (s *SearchQueuesOutput) SetApproximateTotalCount(v int64) *SearchQueuesOutput {
	s.ApproximateTotalCount = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchQueuesOutput) SetNextToken(v string) *SearchQueuesOutput {
	s.NextToken = &v
	return s
}

// SetQueues sets the Queues field's value.
func (s *SearchQueuesOutput) SetQueues(v []*Queue) *SearchQueuesOutput {
	s.Queues = v
	return s
}

type SearchQuickConnectsInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `min:"1" type:"string"`

	// The search criteria to be used to return quick connects.
	SearchCriteria *QuickConnectSearchCriteria `type:"structure"`

	// Filters to be applied to search results.
	SearchFilter *QuickConnectSearchFilter `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 SearchQuickConnectsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchQuickConnectsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchQuickConnectsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchQuickConnectsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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
}

// SetInstanceId sets the InstanceId field's value.
func (s *SearchQuickConnectsInput) SetInstanceId(v string) *SearchQuickConnectsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchQuickConnectsInput) SetMaxResults(v int64) *SearchQuickConnectsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchQuickConnectsInput) SetNextToken(v string) *SearchQuickConnectsInput {
	s.NextToken = &v
	return s
}

// SetSearchCriteria sets the SearchCriteria field's value.
func (s *SearchQuickConnectsInput) SetSearchCriteria(v *QuickConnectSearchCriteria) *SearchQuickConnectsInput {
	s.SearchCriteria = v
	return s
}

// SetSearchFilter sets the SearchFilter field's value.
func (s *SearchQuickConnectsInput) SetSearchFilter(v *QuickConnectSearchFilter) *SearchQuickConnectsInput {
	s.SearchFilter = v
	return s
}

type SearchQuickConnectsOutput struct {
	_ struct{} `type:"structure"`

	// The total number of quick connects which matched your search query.
	ApproximateTotalCount *int64 `type:"long"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `min:"1" type:"string"`

	// Information about the quick connects.
	QuickConnects []*QuickConnect `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 SearchQuickConnectsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchQuickConnectsOutput) GoString() string {
	return s.String()
}

// SetApproximateTotalCount sets the ApproximateTotalCount field's value.
func (s *SearchQuickConnectsOutput) SetApproximateTotalCount(v int64) *SearchQuickConnectsOutput {
	s.ApproximateTotalCount = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchQuickConnectsOutput) SetNextToken(v string) *SearchQuickConnectsOutput {
	s.NextToken = &v
	return s
}

// SetQuickConnects sets the QuickConnects field's value.
func (s *SearchQuickConnectsOutput) SetQuickConnects(v []*QuickConnect) *SearchQuickConnectsOutput {
	s.QuickConnects = v
	return s
}

type SearchResourceTagsInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instanceId
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `min:"1" type:"string"`

	// The list of resource types to be used to search tags from. If not provided
	// or if any empty list is provided, this API will search from all supported
	// resource types.
	ResourceTypes []*string `type:"list"`

	// The search criteria to be used to return tags.
	SearchCriteria *ResourceTagsSearchCriteria `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 SearchResourceTagsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchResourceTagsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchResourceTagsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchResourceTagsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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
}

// SetInstanceId sets the InstanceId field's value.
func (s *SearchResourceTagsInput) SetInstanceId(v string) *SearchResourceTagsInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchResourceTagsInput) SetMaxResults(v int64) *SearchResourceTagsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchResourceTagsInput) SetNextToken(v string) *SearchResourceTagsInput {
	s.NextToken = &v
	return s
}

// SetResourceTypes sets the ResourceTypes field's value.
func (s *SearchResourceTagsInput) SetResourceTypes(v []*string) *SearchResourceTagsInput {
	s.ResourceTypes = v
	return s
}

// SetSearchCriteria sets the SearchCriteria field's value.
func (s *SearchResourceTagsInput) SetSearchCriteria(v *ResourceTagsSearchCriteria) *SearchResourceTagsInput {
	s.SearchCriteria = v
	return s
}

type SearchResourceTagsOutput struct {
	_ struct{} `type:"structure"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `min:"1" type:"string"`

	// A list of tags used in the Amazon Connect instance.
	Tags []*TagSet `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 SearchResourceTagsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchResourceTagsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *SearchResourceTagsOutput) SetNextToken(v string) *SearchResourceTagsOutput {
	s.NextToken = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *SearchResourceTagsOutput) SetTags(v []*TagSet) *SearchResourceTagsOutput {
	s.Tags = v
	return s
}

type SearchRoutingProfilesInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `min:"1" type:"string"`

	// The search criteria to be used to return routing profiles.
	//
	// The name and description fields support "contains" queries with a minimum
	// of 2 characters and a maximum of 25 characters. Any queries with character
	// lengths outside of this range will throw invalid results.
	SearchCriteria *RoutingProfileSearchCriteria `type:"structure"`

	// Filters to be applied to search results.
	SearchFilter *RoutingProfileSearchFilter `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 SearchRoutingProfilesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchRoutingProfilesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchRoutingProfilesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchRoutingProfilesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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
}

// SetInstanceId sets the InstanceId field's value.
func (s *SearchRoutingProfilesInput) SetInstanceId(v string) *SearchRoutingProfilesInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchRoutingProfilesInput) SetMaxResults(v int64) *SearchRoutingProfilesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchRoutingProfilesInput) SetNextToken(v string) *SearchRoutingProfilesInput {
	s.NextToken = &v
	return s
}

// SetSearchCriteria sets the SearchCriteria field's value.
func (s *SearchRoutingProfilesInput) SetSearchCriteria(v *RoutingProfileSearchCriteria) *SearchRoutingProfilesInput {
	s.SearchCriteria = v
	return s
}

// SetSearchFilter sets the SearchFilter field's value.
func (s *SearchRoutingProfilesInput) SetSearchFilter(v *RoutingProfileSearchFilter) *SearchRoutingProfilesInput {
	s.SearchFilter = v
	return s
}

type SearchRoutingProfilesOutput struct {
	_ struct{} `type:"structure"`

	// The total number of routing profiles which matched your search query.
	ApproximateTotalCount *int64 `type:"long"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `min:"1" type:"string"`

	// Information about the routing profiles.
	RoutingProfiles []*RoutingProfile `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 SearchRoutingProfilesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchRoutingProfilesOutput) GoString() string {
	return s.String()
}

// SetApproximateTotalCount sets the ApproximateTotalCount field's value.
func (s *SearchRoutingProfilesOutput) SetApproximateTotalCount(v int64) *SearchRoutingProfilesOutput {
	s.ApproximateTotalCount = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchRoutingProfilesOutput) SetNextToken(v string) *SearchRoutingProfilesOutput {
	s.NextToken = &v
	return s
}

// SetRoutingProfiles sets the RoutingProfiles field's value.
func (s *SearchRoutingProfilesOutput) SetRoutingProfiles(v []*RoutingProfile) *SearchRoutingProfilesOutput {
	s.RoutingProfiles = v
	return s
}

type SearchSecurityProfilesInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `min:"1" type:"string"`

	// The search criteria to be used to return security profiles.
	//
	// The name field support "contains" queries with a minimum of 2 characters
	// and maximum of 25 characters. Any queries with character lengths outside
	// of this range will throw invalid results.
	//
	// The currently supported value for FieldName: name
	SearchCriteria *SecurityProfileSearchCriteria `type:"structure"`

	// Filters to be applied to search results.
	SearchFilter *SecurityProfilesSearchFilter `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 SearchSecurityProfilesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchSecurityProfilesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchSecurityProfilesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchSecurityProfilesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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
}

// SetInstanceId sets the InstanceId field's value.
func (s *SearchSecurityProfilesInput) SetInstanceId(v string) *SearchSecurityProfilesInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchSecurityProfilesInput) SetMaxResults(v int64) *SearchSecurityProfilesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchSecurityProfilesInput) SetNextToken(v string) *SearchSecurityProfilesInput {
	s.NextToken = &v
	return s
}

// SetSearchCriteria sets the SearchCriteria field's value.
func (s *SearchSecurityProfilesInput) SetSearchCriteria(v *SecurityProfileSearchCriteria) *SearchSecurityProfilesInput {
	s.SearchCriteria = v
	return s
}

// SetSearchFilter sets the SearchFilter field's value.
func (s *SearchSecurityProfilesInput) SetSearchFilter(v *SecurityProfilesSearchFilter) *SearchSecurityProfilesInput {
	s.SearchFilter = v
	return s
}

type SearchSecurityProfilesOutput struct {
	_ struct{} `type:"structure"`

	// The total number of security profiles which matched your search query.
	ApproximateTotalCount *int64 `type:"long"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `min:"1" type:"string"`

	// Information about the security profiles.
	SecurityProfiles []*SecurityProfileSearchSummary `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 SearchSecurityProfilesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchSecurityProfilesOutput) GoString() string {
	return s.String()
}

// SetApproximateTotalCount sets the ApproximateTotalCount field's value.
func (s *SearchSecurityProfilesOutput) SetApproximateTotalCount(v int64) *SearchSecurityProfilesOutput {
	s.ApproximateTotalCount = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchSecurityProfilesOutput) SetNextToken(v string) *SearchSecurityProfilesOutput {
	s.NextToken = &v
	return s
}

// SetSecurityProfiles sets the SecurityProfiles field's value.
func (s *SearchSecurityProfilesOutput) SetSecurityProfiles(v []*SecurityProfileSearchSummary) *SearchSecurityProfilesOutput {
	s.SecurityProfiles = v
	return s
}

type SearchUsersInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceID is a required field. The "Required: No" below is incorrect.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// The maximum number of results to return per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `min:"1" type:"string"`

	// The search criteria to be used to return users.
	//
	// The name and description fields support "contains" queries with a minimum
	// of 2 characters and a maximum of 25 characters. Any queries with character
	// lengths outside of this range will throw invalid results.
	SearchCriteria *UserSearchCriteria `type:"structure"`

	// Filters to be applied to search results.
	SearchFilter *UserSearchFilter `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 SearchUsersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchUsersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchUsersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchUsersInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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
}

// SetInstanceId sets the InstanceId field's value.
func (s *SearchUsersInput) SetInstanceId(v string) *SearchUsersInput {
	s.InstanceId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchUsersInput) SetMaxResults(v int64) *SearchUsersInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchUsersInput) SetNextToken(v string) *SearchUsersInput {
	s.NextToken = &v
	return s
}

// SetSearchCriteria sets the SearchCriteria field's value.
func (s *SearchUsersInput) SetSearchCriteria(v *UserSearchCriteria) *SearchUsersInput {
	s.SearchCriteria = v
	return s
}

// SetSearchFilter sets the SearchFilter field's value.
func (s *SearchUsersInput) SetSearchFilter(v *UserSearchFilter) *SearchUsersInput {
	s.SearchFilter = v
	return s
}

type SearchUsersOutput struct {
	_ struct{} `type:"structure"`

	// The total number of users who matched your search query.
	ApproximateTotalCount *int64 `type:"long"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `min:"1" type:"string"`

	// Information about the users.
	Users []*UserSearchSummary `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 SearchUsersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchUsersOutput) GoString() string {
	return s.String()
}

// SetApproximateTotalCount sets the ApproximateTotalCount field's value.
func (s *SearchUsersOutput) SetApproximateTotalCount(v int64) *SearchUsersOutput {
	s.ApproximateTotalCount = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchUsersOutput) SetNextToken(v string) *SearchUsersOutput {
	s.NextToken = &v
	return s
}

// SetUsers sets the Users field's value.
func (s *SearchUsersOutput) SetUsers(v []*UserSearchSummary) *SearchUsersOutput {
	s.Users = v
	return s
}

type SearchVocabulariesInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The language code of the vocabulary entries. For a list of languages and
	// their corresponding language codes, see What is Amazon Transcribe? (https://docs.aws.amazon.com/transcribe/latest/dg/transcribe-whatis.html)
	LanguageCode *string `type:"string" enum:"VocabularyLanguageCode"`

	// The maximum number of results to return per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// The starting pattern of the name of the vocabulary.
	NameStartsWith *string `min:"1" type:"string"`

	// The token for the next set of results. Use the value returned in the previous
	// response in the next request to retrieve the next set of results.
	NextToken *string `min:"1" type:"string"`

	// The current state of the custom vocabulary.
	State *string `type:"string" enum:"VocabularyState"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchVocabulariesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchVocabulariesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchVocabulariesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchVocabulariesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.NameStartsWith != nil && len(*s.NameStartsWith) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NameStartsWith", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *SearchVocabulariesInput) SetInstanceId(v string) *SearchVocabulariesInput {
	s.InstanceId = &v
	return s
}

// SetLanguageCode sets the LanguageCode field's value.
func (s *SearchVocabulariesInput) SetLanguageCode(v string) *SearchVocabulariesInput {
	s.LanguageCode = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchVocabulariesInput) SetMaxResults(v int64) *SearchVocabulariesInput {
	s.MaxResults = &v
	return s
}

// SetNameStartsWith sets the NameStartsWith field's value.
func (s *SearchVocabulariesInput) SetNameStartsWith(v string) *SearchVocabulariesInput {
	s.NameStartsWith = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchVocabulariesInput) SetNextToken(v string) *SearchVocabulariesInput {
	s.NextToken = &v
	return s
}

// SetState sets the State field's value.
func (s *SearchVocabulariesInput) SetState(v string) *SearchVocabulariesInput {
	s.State = &v
	return s
}

type SearchVocabulariesOutput struct {
	_ struct{} `type:"structure"`

	// If there are additional results, this is the token for the next set of results.
	NextToken *string `min:"1" type:"string"`

	// The list of the available custom vocabularies.
	VocabularySummaryList []*VocabularySummary `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 SearchVocabulariesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchVocabulariesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *SearchVocabulariesOutput) SetNextToken(v string) *SearchVocabulariesOutput {
	s.NextToken = &v
	return s
}

// SetVocabularySummaryList sets the VocabularySummaryList field's value.
func (s *SearchVocabulariesOutput) SetVocabularySummaryList(v []*VocabularySummary) *SearchVocabulariesOutput {
	s.VocabularySummaryList = v
	return s
}

// A structure that defines search criteria based on user-defined contact attributes
// that are configured for contact search.
type SearchableContactAttributes struct {
	_ struct{} `type:"structure"`

	// The list of criteria based on user-defined contact attributes that are configured
	// for contact search.
	//
	// Criteria is a required field
	Criteria []*SearchableContactAttributesCriteria `type:"list" required:"true"`

	// The match type combining search criteria using multiple searchable contact
	// attributes.
	MatchType *string `type:"string" enum:"SearchContactsMatchType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchableContactAttributes) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchableContactAttributes) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchableContactAttributes) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchableContactAttributes"}
	if s.Criteria == nil {
		invalidParams.Add(request.NewErrParamRequired("Criteria"))
	}
	if s.Criteria != nil {
		for i, v := range s.Criteria {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Criteria", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCriteria sets the Criteria field's value.
func (s *SearchableContactAttributes) SetCriteria(v []*SearchableContactAttributesCriteria) *SearchableContactAttributes {
	s.Criteria = v
	return s
}

// SetMatchType sets the MatchType field's value.
func (s *SearchableContactAttributes) SetMatchType(v string) *SearchableContactAttributes {
	s.MatchType = &v
	return s
}

// The search criteria based on user-defned contact attribute key and values
// to search on.
type SearchableContactAttributesCriteria struct {
	_ struct{} `type:"structure"`

	// The key containing a searchable user-defined contact attribute.
	//
	// Key is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by SearchableContactAttributesCriteria's
	// String and GoString methods.
	//
	// Key is a required field
	Key *string `type:"string" required:"true" sensitive:"true"`

	// The list of values to search for within a user-defined contact attribute.
	//
	// Values is a required field
	Values []*string `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 SearchableContactAttributesCriteria) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchableContactAttributesCriteria) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchableContactAttributesCriteria) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchableContactAttributesCriteria"}
	if s.Key == nil {
		invalidParams.Add(request.NewErrParamRequired("Key"))
	}
	if s.Values == nil {
		invalidParams.Add(request.NewErrParamRequired("Values"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetKey sets the Key field's value.
func (s *SearchableContactAttributesCriteria) SetKey(v string) *SearchableContactAttributesCriteria {
	s.Key = &v
	return s
}

// SetValues sets the Values field's value.
func (s *SearchableContactAttributesCriteria) SetValues(v []*string) *SearchableContactAttributesCriteria {
	s.Values = v
	return s
}

// Configuration information of the security key.
type SecurityKey struct {
	_ struct{} `type:"structure"`

	// The existing association identifier that uniquely identifies the resource
	// type and storage config for the given instance ID.
	AssociationId *string `min:"1" type:"string"`

	// When the security key was created.
	CreationTime *time.Time `type:"timestamp"`

	// The key of the security key.
	Key *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SecurityKey) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SecurityKey) GoString() string {
	return s.String()
}

// SetAssociationId sets the AssociationId field's value.
func (s *SecurityKey) SetAssociationId(v string) *SecurityKey {
	s.AssociationId = &v
	return s
}

// SetCreationTime sets the CreationTime field's value.
func (s *SecurityKey) SetCreationTime(v time.Time) *SecurityKey {
	s.CreationTime = &v
	return s
}

// SetKey sets the Key field's value.
func (s *SecurityKey) SetKey(v string) *SecurityKey {
	s.Key = &v
	return s
}

// Contains information about a security profile.
type SecurityProfile struct {
	_ struct{} `type:"structure"`

	// The list of tags that a security profile uses to restrict access to resources
	// in Amazon Connect.
	AllowedAccessControlTags map[string]*string `type:"map"`

	// The Amazon Resource Name (ARN) for the secruity profile.
	Arn *string `type:"string"`

	// The description of the security profile.
	Description *string `type:"string"`

	// The identifier for the security profile.
	Id *string `type:"string"`

	// The Amazon Web Services Region where this resource was last modified.
	LastModifiedRegion *string `type:"string"`

	// The timestamp when this resource was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The organization resource identifier for the security profile.
	OrganizationResourceId *string `min:"1" type:"string"`

	// The name for the security profile.
	SecurityProfileName *string `type:"string"`

	// The list of resources that a security profile applies tag restrictions to
	// in Amazon Connect.
	TagRestrictedResources []*string `type:"list"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SecurityProfile) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SecurityProfile) GoString() string {
	return s.String()
}

// SetAllowedAccessControlTags sets the AllowedAccessControlTags field's value.
func (s *SecurityProfile) SetAllowedAccessControlTags(v map[string]*string) *SecurityProfile {
	s.AllowedAccessControlTags = v
	return s
}

// SetArn sets the Arn field's value.
func (s *SecurityProfile) SetArn(v string) *SecurityProfile {
	s.Arn = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *SecurityProfile) SetDescription(v string) *SecurityProfile {
	s.Description = &v
	return s
}

// SetId sets the Id field's value.
func (s *SecurityProfile) SetId(v string) *SecurityProfile {
	s.Id = &v
	return s
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *SecurityProfile) SetLastModifiedRegion(v string) *SecurityProfile {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *SecurityProfile) SetLastModifiedTime(v time.Time) *SecurityProfile {
	s.LastModifiedTime = &v
	return s
}

// SetOrganizationResourceId sets the OrganizationResourceId field's value.
func (s *SecurityProfile) SetOrganizationResourceId(v string) *SecurityProfile {
	s.OrganizationResourceId = &v
	return s
}

// SetSecurityProfileName sets the SecurityProfileName field's value.
func (s *SecurityProfile) SetSecurityProfileName(v string) *SecurityProfile {
	s.SecurityProfileName = &v
	return s
}

// SetTagRestrictedResources sets the TagRestrictedResources field's value.
func (s *SecurityProfile) SetTagRestrictedResources(v []*string) *SecurityProfile {
	s.TagRestrictedResources = v
	return s
}

// SetTags sets the Tags field's value.
func (s *SecurityProfile) SetTags(v map[string]*string) *SecurityProfile {
	s.Tags = v
	return s
}

// The search criteria to be used to return security profiles.
//
// The name field support "contains" queries with a minimum of 2 characters
// and maximum of 25 characters. Any queries with character lengths outside
// of this range will throw invalid results.
type SecurityProfileSearchCriteria struct {
	_ struct{} `type:"structure"`

	// A list of conditions which would be applied together with an AND condition.
	AndConditions []*SecurityProfileSearchCriteria `type:"list"`

	// A list of conditions which would be applied together with an OR condition.
	OrConditions []*SecurityProfileSearchCriteria `type:"list"`

	// A leaf node condition which can be used to specify a string condition.
	//
	// The currently supported values for FieldName are name and description.
	StringCondition *StringCondition `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 SecurityProfileSearchCriteria) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SecurityProfileSearchCriteria) GoString() string {
	return s.String()
}

// SetAndConditions sets the AndConditions field's value.
func (s *SecurityProfileSearchCriteria) SetAndConditions(v []*SecurityProfileSearchCriteria) *SecurityProfileSearchCriteria {
	s.AndConditions = v
	return s
}

// SetOrConditions sets the OrConditions field's value.
func (s *SecurityProfileSearchCriteria) SetOrConditions(v []*SecurityProfileSearchCriteria) *SecurityProfileSearchCriteria {
	s.OrConditions = v
	return s
}

// SetStringCondition sets the StringCondition field's value.
func (s *SecurityProfileSearchCriteria) SetStringCondition(v *StringCondition) *SecurityProfileSearchCriteria {
	s.StringCondition = v
	return s
}

// Information about the returned security profiles.
type SecurityProfileSearchSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the security profile.
	Arn *string `type:"string"`

	// The description of the security profile.
	Description *string `type:"string"`

	// The identifier of the security profile.
	Id *string `type:"string"`

	// The organization resource identifier.
	OrganizationResourceId *string `min:"1" type:"string"`

	// The name of the security profile.
	SecurityProfileName *string `type:"string"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SecurityProfileSearchSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SecurityProfileSearchSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *SecurityProfileSearchSummary) SetArn(v string) *SecurityProfileSearchSummary {
	s.Arn = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *SecurityProfileSearchSummary) SetDescription(v string) *SecurityProfileSearchSummary {
	s.Description = &v
	return s
}

// SetId sets the Id field's value.
func (s *SecurityProfileSearchSummary) SetId(v string) *SecurityProfileSearchSummary {
	s.Id = &v
	return s
}

// SetOrganizationResourceId sets the OrganizationResourceId field's value.
func (s *SecurityProfileSearchSummary) SetOrganizationResourceId(v string) *SecurityProfileSearchSummary {
	s.OrganizationResourceId = &v
	return s
}

// SetSecurityProfileName sets the SecurityProfileName field's value.
func (s *SecurityProfileSearchSummary) SetSecurityProfileName(v string) *SecurityProfileSearchSummary {
	s.SecurityProfileName = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *SecurityProfileSearchSummary) SetTags(v map[string]*string) *SecurityProfileSearchSummary {
	s.Tags = v
	return s
}

// Contains information about a security profile.
type SecurityProfileSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the security profile.
	Arn *string `type:"string"`

	// The identifier of the security profile.
	Id *string `type:"string"`

	// The Amazon Web Services Region where this resource was last modified.
	LastModifiedRegion *string `type:"string"`

	// The timestamp when this resource was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The name of the security profile.
	Name *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SecurityProfileSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SecurityProfileSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *SecurityProfileSummary) SetArn(v string) *SecurityProfileSummary {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *SecurityProfileSummary) SetId(v string) *SecurityProfileSummary {
	s.Id = &v
	return s
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *SecurityProfileSummary) SetLastModifiedRegion(v string) *SecurityProfileSummary {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *SecurityProfileSummary) SetLastModifiedTime(v time.Time) *SecurityProfileSummary {
	s.LastModifiedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *SecurityProfileSummary) SetName(v string) *SecurityProfileSummary {
	s.Name = &v
	return s
}

// Filters to be applied to search results.
type SecurityProfilesSearchFilter struct {
	_ struct{} `type:"structure"`

	// An object that can be used to specify Tag conditions inside the SearchFilter.
	// This accepts an OR of AND (List of List) input where:
	//
	//    * Top level list specifies conditions that need to be applied with OR
	//    operator
	//
	//    * Inner list specifies conditions that need to be applied with AND operator.
	TagFilter *ControlPlaneTagFilter `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 SecurityProfilesSearchFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SecurityProfilesSearchFilter) GoString() string {
	return s.String()
}

// SetTagFilter sets the TagFilter field's value.
func (s *SecurityProfilesSearchFilter) SetTagFilter(v *ControlPlaneTagFilter) *SecurityProfilesSearchFilter {
	s.TagFilter = v
	return s
}

// A value for a segment attribute. This is structured as a map where the key
// is valueString and the value is a string.
type SegmentAttributeValue struct {
	_ struct{} `type:"structure"`

	// The value of a segment attribute.
	ValueString *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SegmentAttributeValue) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SegmentAttributeValue) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SegmentAttributeValue) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SegmentAttributeValue"}
	if s.ValueString != nil && len(*s.ValueString) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ValueString", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetValueString sets the ValueString field's value.
func (s *SegmentAttributeValue) SetValueString(v string) *SegmentAttributeValue {
	s.ValueString = &v
	return s
}

type SendChatIntegrationEventInput struct {
	_ struct{} `type:"structure"`

	// Chat system identifier, used in part to uniquely identify chat. This is associated
	// with the Amazon Connect instance and flow to be used to start chats. For
	// SMS, this is the phone number destination of inbound SMS messages represented
	// by an Amazon Pinpoint phone number ARN.
	//
	// DestinationId is a required field
	DestinationId *string `min:"1" type:"string" required:"true"`

	// Chat integration event payload
	//
	// Event is a required field
	Event *ChatEvent `type:"structure" required:"true"`

	// Contact properties to apply when starting a new chat. If the integration
	// event is handled with an existing chat, this is ignored.
	NewSessionDetails *NewSessionDetails `type:"structure"`

	// External identifier of chat customer participant, used in part to uniquely
	// identify a chat. For SMS, this is the E164 phone number of the chat customer
	// participant.
	//
	// SourceId is a required field
	SourceId *string `min:"1" type:"string" required:"true"`

	// Classification of a channel. This is used in part to uniquely identify chat.
	//
	// Valid value: ["connect:sms"]
	Subtype *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SendChatIntegrationEventInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SendChatIntegrationEventInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SendChatIntegrationEventInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SendChatIntegrationEventInput"}
	if s.DestinationId == nil {
		invalidParams.Add(request.NewErrParamRequired("DestinationId"))
	}
	if s.DestinationId != nil && len(*s.DestinationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DestinationId", 1))
	}
	if s.Event == nil {
		invalidParams.Add(request.NewErrParamRequired("Event"))
	}
	if s.SourceId == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceId"))
	}
	if s.SourceId != nil && len(*s.SourceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SourceId", 1))
	}
	if s.Subtype != nil && len(*s.Subtype) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Subtype", 1))
	}
	if s.Event != nil {
		if err := s.Event.Validate(); err != nil {
			invalidParams.AddNested("Event", err.(request.ErrInvalidParams))
		}
	}
	if s.NewSessionDetails != nil {
		if err := s.NewSessionDetails.Validate(); err != nil {
			invalidParams.AddNested("NewSessionDetails", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDestinationId sets the DestinationId field's value.
func (s *SendChatIntegrationEventInput) SetDestinationId(v string) *SendChatIntegrationEventInput {
	s.DestinationId = &v
	return s
}

// SetEvent sets the Event field's value.
func (s *SendChatIntegrationEventInput) SetEvent(v *ChatEvent) *SendChatIntegrationEventInput {
	s.Event = v
	return s
}

// SetNewSessionDetails sets the NewSessionDetails field's value.
func (s *SendChatIntegrationEventInput) SetNewSessionDetails(v *NewSessionDetails) *SendChatIntegrationEventInput {
	s.NewSessionDetails = v
	return s
}

// SetSourceId sets the SourceId field's value.
func (s *SendChatIntegrationEventInput) SetSourceId(v string) *SendChatIntegrationEventInput {
	s.SourceId = &v
	return s
}

// SetSubtype sets the Subtype field's value.
func (s *SendChatIntegrationEventInput) SetSubtype(v string) *SendChatIntegrationEventInput {
	s.Subtype = &v
	return s
}

type SendChatIntegrationEventOutput struct {
	_ struct{} `type:"structure"`

	// Identifier of chat contact used to handle integration event. This may be
	// null if the integration event is not valid without an already existing chat
	// contact.
	InitialContactId *string `min:"1" type:"string"`

	// Whether handling the integration event resulted in creating a new chat or
	// acting on existing chat.
	NewChatCreated *bool `type:"boolean"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SendChatIntegrationEventOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SendChatIntegrationEventOutput) GoString() string {
	return s.String()
}

// SetInitialContactId sets the InitialContactId field's value.
func (s *SendChatIntegrationEventOutput) SetInitialContactId(v string) *SendChatIntegrationEventOutput {
	s.InitialContactId = &v
	return s
}

// SetNewChatCreated sets the NewChatCreated field's value.
func (s *SendChatIntegrationEventOutput) SetNewChatCreated(v bool) *SendChatIntegrationEventOutput {
	s.NewChatCreated = &v
	return s
}

// Information about the send notification action.
type SendNotificationActionDefinition struct {
	_ struct{} `type:"structure"`

	// Notification content. Supports variable injection. For more information,
	// see JSONPath reference (https://docs.aws.amazon.com/connect/latest/adminguide/contact-lens-variable-injection.html)
	// in the Amazon Connect Administrators Guide.
	//
	// Content is a required field
	Content *string `min:"1" type:"string" required:"true"`

	// Content type format.
	//
	// ContentType is a required field
	ContentType *string `type:"string" required:"true" enum:"NotificationContentType"`

	// Notification delivery method.
	//
	// DeliveryMethod is a required field
	DeliveryMethod *string `type:"string" required:"true" enum:"NotificationDeliveryType"`

	// Notification recipient.
	//
	// Recipient is a required field
	Recipient *NotificationRecipientType `type:"structure" required:"true"`

	// The subject of the email if the delivery method is EMAIL. Supports variable
	// injection. For more information, see JSONPath reference (https://docs.aws.amazon.com/connect/latest/adminguide/contact-lens-variable-injection.html)
	// in the Amazon Connect Administrators Guide.
	Subject *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SendNotificationActionDefinition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SendNotificationActionDefinition) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SendNotificationActionDefinition) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SendNotificationActionDefinition"}
	if s.Content == nil {
		invalidParams.Add(request.NewErrParamRequired("Content"))
	}
	if s.Content != nil && len(*s.Content) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Content", 1))
	}
	if s.ContentType == nil {
		invalidParams.Add(request.NewErrParamRequired("ContentType"))
	}
	if s.DeliveryMethod == nil {
		invalidParams.Add(request.NewErrParamRequired("DeliveryMethod"))
	}
	if s.Recipient == nil {
		invalidParams.Add(request.NewErrParamRequired("Recipient"))
	}
	if s.Subject != nil && len(*s.Subject) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Subject", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContent sets the Content field's value.
func (s *SendNotificationActionDefinition) SetContent(v string) *SendNotificationActionDefinition {
	s.Content = &v
	return s
}

// SetContentType sets the ContentType field's value.
func (s *SendNotificationActionDefinition) SetContentType(v string) *SendNotificationActionDefinition {
	s.ContentType = &v
	return s
}

// SetDeliveryMethod sets the DeliveryMethod field's value.
func (s *SendNotificationActionDefinition) SetDeliveryMethod(v string) *SendNotificationActionDefinition {
	s.DeliveryMethod = &v
	return s
}

// SetRecipient sets the Recipient field's value.
func (s *SendNotificationActionDefinition) SetRecipient(v *NotificationRecipientType) *SendNotificationActionDefinition {
	s.Recipient = v
	return s
}

// SetSubject sets the Subject field's value.
func (s *SendNotificationActionDefinition) SetSubject(v string) *SendNotificationActionDefinition {
	s.Subject = &v
	return s
}

// The service quota has been exceeded.
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 distribution that determines which Amazon Web Services Regions should
// be used to sign in agents in to both the instance and its replica(s).
type SignInConfig struct {
	_ struct{} `type:"structure"`

	// Information about traffic distributions.
	//
	// Distributions is a required field
	Distributions []*SignInDistribution `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 SignInConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SignInConfig) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SignInConfig) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SignInConfig"}
	if s.Distributions == nil {
		invalidParams.Add(request.NewErrParamRequired("Distributions"))
	}
	if s.Distributions != nil {
		for i, v := range s.Distributions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Distributions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDistributions sets the Distributions field's value.
func (s *SignInConfig) SetDistributions(v []*SignInDistribution) *SignInConfig {
	s.Distributions = v
	return s
}

// The distribution of sign in traffic between the instance and its replica(s).
type SignInDistribution struct {
	_ struct{} `type:"structure"`

	// Whether sign in distribution is enabled.
	//
	// Enabled is a required field
	Enabled *bool `type:"boolean" required:"true"`

	// The Amazon Web Services Region of the sign in distribution.
	//
	// Region is a required field
	Region *string `min:"8" 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 SignInDistribution) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SignInDistribution) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SignInDistribution) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SignInDistribution"}
	if s.Enabled == nil {
		invalidParams.Add(request.NewErrParamRequired("Enabled"))
	}
	if s.Region == nil {
		invalidParams.Add(request.NewErrParamRequired("Region"))
	}
	if s.Region != nil && len(*s.Region) < 8 {
		invalidParams.Add(request.NewErrParamMinLen("Region", 8))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEnabled sets the Enabled field's value.
func (s *SignInDistribution) SetEnabled(v bool) *SignInDistribution {
	s.Enabled = &v
	return s
}

// SetRegion sets the Region field's value.
func (s *SignInDistribution) SetRegion(v string) *SignInDistribution {
	s.Region = &v
	return s
}

// Information about the automation option based on a rule category for a single
// select question.
type SingleSelectQuestionRuleCategoryAutomation struct {
	_ struct{} `type:"structure"`

	// The category name, as defined in Rules.
	//
	// Category is a required field
	Category *string `min:"1" type:"string" required:"true"`

	// The condition to apply for the automation option. If the condition is PRESENT,
	// then the option is applied when the contact data includes the category. Similarly,
	// if the condition is NOT_PRESENT, then the option is applied when the contact
	// data does not include the category.
	//
	// Condition is a required field
	Condition *string `type:"string" required:"true" enum:"SingleSelectQuestionRuleCategoryAutomationCondition"`

	// The identifier of the answer option.
	//
	// OptionRefId is a required field
	OptionRefId *string `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 SingleSelectQuestionRuleCategoryAutomation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SingleSelectQuestionRuleCategoryAutomation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SingleSelectQuestionRuleCategoryAutomation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SingleSelectQuestionRuleCategoryAutomation"}
	if s.Category == nil {
		invalidParams.Add(request.NewErrParamRequired("Category"))
	}
	if s.Category != nil && len(*s.Category) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Category", 1))
	}
	if s.Condition == nil {
		invalidParams.Add(request.NewErrParamRequired("Condition"))
	}
	if s.OptionRefId == nil {
		invalidParams.Add(request.NewErrParamRequired("OptionRefId"))
	}
	if s.OptionRefId != nil && len(*s.OptionRefId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("OptionRefId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategory sets the Category field's value.
func (s *SingleSelectQuestionRuleCategoryAutomation) SetCategory(v string) *SingleSelectQuestionRuleCategoryAutomation {
	s.Category = &v
	return s
}

// SetCondition sets the Condition field's value.
func (s *SingleSelectQuestionRuleCategoryAutomation) SetCondition(v string) *SingleSelectQuestionRuleCategoryAutomation {
	s.Condition = &v
	return s
}

// SetOptionRefId sets the OptionRefId field's value.
func (s *SingleSelectQuestionRuleCategoryAutomation) SetOptionRefId(v string) *SingleSelectQuestionRuleCategoryAutomation {
	s.OptionRefId = &v
	return s
}

// A structure that defineds the field name to sort by and a sort order.
type Sort struct {
	_ struct{} `type:"structure"`

	// The name of the field on which to sort.
	//
	// FieldName is a required field
	FieldName *string `type:"string" required:"true" enum:"SortableFieldName"`

	// An ascending or descending sort.
	//
	// Order is a required field
	Order *string `type:"string" required:"true" enum:"SortOrder"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Sort) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Sort) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Sort) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Sort"}
	if s.FieldName == nil {
		invalidParams.Add(request.NewErrParamRequired("FieldName"))
	}
	if s.Order == nil {
		invalidParams.Add(request.NewErrParamRequired("Order"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFieldName sets the FieldName field's value.
func (s *Sort) SetFieldName(v string) *Sort {
	s.FieldName = &v
	return s
}

// SetOrder sets the Order field's value.
func (s *Sort) SetOrder(v string) *Sort {
	s.Order = &v
	return s
}

type StartChatContactInput struct {
	_ struct{} `type:"structure"`

	// A custom key-value pair using an attribute map. The attributes are standard
	// Amazon Connect attributes. They can be accessed in flows just like any other
	// contact attributes.
	//
	// There can be up to 32,768 UTF-8 bytes across all key-value pairs per contact.
	// Attribute keys can include only alphanumeric, dash, and underscore characters.
	Attributes map[string]*string `type:"map"`

	// The total duration of the newly started chat session. If not specified, the
	// chat session duration defaults to 25 hour. The minimum configurable time
	// is 60 minutes. The maximum configurable time is 10,080 minutes (7 days).
	ChatDurationInMinutes *int64 `min:"60" type:"integer"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// The identifier of the flow for initiating the chat. To see the ContactFlowId
	// in the Amazon Connect admin website, on the navigation menu go to Routing,
	// Contact Flows. Choose the flow. On the flow page, under the name of the flow,
	// choose Show additional flow information. The ContactFlowId is the last part
	// of the ARN, shown here in bold:
	//
	// arn:aws:connect:us-west-2:xxxxxxxxxxxx:instance/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/contact-flow/846ec553-a005-41c0-8341-xxxxxxxxxxxx
	//
	// ContactFlowId is a required field
	ContactFlowId *string `type:"string" required:"true"`

	// The initial message to be sent to the newly created chat.
	InitialMessage *ChatMessage `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// Information identifying the participant.
	//
	// ParticipantDetails is a required field
	ParticipantDetails *ParticipantDetails `type:"structure" required:"true"`

	// Enable persistent chats. For more information about enabling persistent chat,
	// and for example use cases and how to configure for them, see Enable persistent
	// chat (https://docs.aws.amazon.com/connect/latest/adminguide/chat-persistence.html).
	PersistentChat *PersistentChat `type:"structure"`

	// The unique identifier for an Amazon Connect contact. This identifier is related
	// to the chat starting.
	//
	// You cannot provide data for both RelatedContactId and PersistentChat.
	RelatedContactId *string `min:"1" type:"string"`

	// A set of system defined key-value pairs stored on individual contact segments
	// using an attribute map. The attributes are standard Amazon Connect attributes.
	// They can be accessed in flows.
	//
	// Attribute keys can include only alphanumeric, -, and _.
	//
	// This field can be used to show channel subtype, such as connect:Guide.
	//
	// The types application/vnd.amazonaws.connect.message.interactive and application/vnd.amazonaws.connect.message.interactive.response
	// must be present in the SupportedMessagingContentTypes field of this API in
	// order to set SegmentAttributes as {"connect:Subtype": {"valueString" : "connect:Guide"
	// }}.
	SegmentAttributes map[string]*SegmentAttributeValue `type:"map"`

	// The supported chat message content types. Supported types are text/plain,
	// text/markdown, application/json, application/vnd.amazonaws.connect.message.interactive,
	// and application/vnd.amazonaws.connect.message.interactive.response.
	//
	// Content types must always contain text/plain. You can then put any other
	// supported type in the list. For example, all the following lists are valid
	// because they contain text/plain: [text/plain, text/markdown, application/json],
	// [text/markdown, text/plain], [text/plain, application/json, application/vnd.amazonaws.connect.message.interactive.response].
	//
	// The type application/vnd.amazonaws.connect.message.interactive is required
	// to use the Show view (https://docs.aws.amazon.com/connect/latest/adminguide/show-view-block.html)
	// flow block.
	SupportedMessagingContentTypes []*string `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 StartChatContactInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartChatContactInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartChatContactInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartChatContactInput"}
	if s.ChatDurationInMinutes != nil && *s.ChatDurationInMinutes < 60 {
		invalidParams.Add(request.NewErrParamMinValue("ChatDurationInMinutes", 60))
	}
	if s.ContactFlowId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactFlowId"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.ParticipantDetails == nil {
		invalidParams.Add(request.NewErrParamRequired("ParticipantDetails"))
	}
	if s.RelatedContactId != nil && len(*s.RelatedContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RelatedContactId", 1))
	}
	if s.InitialMessage != nil {
		if err := s.InitialMessage.Validate(); err != nil {
			invalidParams.AddNested("InitialMessage", err.(request.ErrInvalidParams))
		}
	}
	if s.ParticipantDetails != nil {
		if err := s.ParticipantDetails.Validate(); err != nil {
			invalidParams.AddNested("ParticipantDetails", err.(request.ErrInvalidParams))
		}
	}
	if s.PersistentChat != nil {
		if err := s.PersistentChat.Validate(); err != nil {
			invalidParams.AddNested("PersistentChat", err.(request.ErrInvalidParams))
		}
	}
	if s.SegmentAttributes != nil {
		for i, v := range s.SegmentAttributes {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SegmentAttributes", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAttributes sets the Attributes field's value.
func (s *StartChatContactInput) SetAttributes(v map[string]*string) *StartChatContactInput {
	s.Attributes = v
	return s
}

// SetChatDurationInMinutes sets the ChatDurationInMinutes field's value.
func (s *StartChatContactInput) SetChatDurationInMinutes(v int64) *StartChatContactInput {
	s.ChatDurationInMinutes = &v
	return s
}

// SetClientToken sets the ClientToken field's value.
func (s *StartChatContactInput) SetClientToken(v string) *StartChatContactInput {
	s.ClientToken = &v
	return s
}

// SetContactFlowId sets the ContactFlowId field's value.
func (s *StartChatContactInput) SetContactFlowId(v string) *StartChatContactInput {
	s.ContactFlowId = &v
	return s
}

// SetInitialMessage sets the InitialMessage field's value.
func (s *StartChatContactInput) SetInitialMessage(v *ChatMessage) *StartChatContactInput {
	s.InitialMessage = v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *StartChatContactInput) SetInstanceId(v string) *StartChatContactInput {
	s.InstanceId = &v
	return s
}

// SetParticipantDetails sets the ParticipantDetails field's value.
func (s *StartChatContactInput) SetParticipantDetails(v *ParticipantDetails) *StartChatContactInput {
	s.ParticipantDetails = v
	return s
}

// SetPersistentChat sets the PersistentChat field's value.
func (s *StartChatContactInput) SetPersistentChat(v *PersistentChat) *StartChatContactInput {
	s.PersistentChat = v
	return s
}

// SetRelatedContactId sets the RelatedContactId field's value.
func (s *StartChatContactInput) SetRelatedContactId(v string) *StartChatContactInput {
	s.RelatedContactId = &v
	return s
}

// SetSegmentAttributes sets the SegmentAttributes field's value.
func (s *StartChatContactInput) SetSegmentAttributes(v map[string]*SegmentAttributeValue) *StartChatContactInput {
	s.SegmentAttributes = v
	return s
}

// SetSupportedMessagingContentTypes sets the SupportedMessagingContentTypes field's value.
func (s *StartChatContactInput) SetSupportedMessagingContentTypes(v []*string) *StartChatContactInput {
	s.SupportedMessagingContentTypes = v
	return s
}

type StartChatContactOutput struct {
	_ struct{} `type:"structure"`

	// The identifier of this contact within the Amazon Connect instance.
	ContactId *string `min:"1" type:"string"`

	// The contactId from which a persistent chat session is started. This field
	// is populated only for persistent chats.
	ContinuedFromContactId *string `min:"1" type:"string"`

	// The identifier for a chat participant. The participantId for a chat participant
	// is the same throughout the chat lifecycle.
	ParticipantId *string `min:"1" type:"string"`

	// The token used by the chat participant to call CreateParticipantConnection
	// (https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html).
	// The participant token is valid for the lifetime of a chat participant.
	ParticipantToken *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartChatContactOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartChatContactOutput) GoString() string {
	return s.String()
}

// SetContactId sets the ContactId field's value.
func (s *StartChatContactOutput) SetContactId(v string) *StartChatContactOutput {
	s.ContactId = &v
	return s
}

// SetContinuedFromContactId sets the ContinuedFromContactId field's value.
func (s *StartChatContactOutput) SetContinuedFromContactId(v string) *StartChatContactOutput {
	s.ContinuedFromContactId = &v
	return s
}

// SetParticipantId sets the ParticipantId field's value.
func (s *StartChatContactOutput) SetParticipantId(v string) *StartChatContactOutput {
	s.ParticipantId = &v
	return s
}

// SetParticipantToken sets the ParticipantToken field's value.
func (s *StartChatContactOutput) SetParticipantToken(v string) *StartChatContactOutput {
	s.ParticipantToken = &v
	return s
}

type StartContactEvaluationInput struct {
	_ struct{} `type:"structure"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// The identifier of the contact in this instance of Amazon Connect.
	//
	// ContactId is a required field
	ContactId *string `min:"1" type:"string" required:"true"`

	// The unique identifier for the evaluation form.
	//
	// EvaluationFormId is a required field
	EvaluationFormId *string `min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 StartContactEvaluationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartContactEvaluationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartContactEvaluationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartContactEvaluationInput"}
	if s.ContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactId"))
	}
	if s.ContactId != nil && len(*s.ContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactId", 1))
	}
	if s.EvaluationFormId == nil {
		invalidParams.Add(request.NewErrParamRequired("EvaluationFormId"))
	}
	if s.EvaluationFormId != nil && len(*s.EvaluationFormId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EvaluationFormId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *StartContactEvaluationInput) SetClientToken(v string) *StartContactEvaluationInput {
	s.ClientToken = &v
	return s
}

// SetContactId sets the ContactId field's value.
func (s *StartContactEvaluationInput) SetContactId(v string) *StartContactEvaluationInput {
	s.ContactId = &v
	return s
}

// SetEvaluationFormId sets the EvaluationFormId field's value.
func (s *StartContactEvaluationInput) SetEvaluationFormId(v string) *StartContactEvaluationInput {
	s.EvaluationFormId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *StartContactEvaluationInput) SetInstanceId(v string) *StartContactEvaluationInput {
	s.InstanceId = &v
	return s
}

type StartContactEvaluationOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the contact evaluation resource.
	//
	// EvaluationArn is a required field
	EvaluationArn *string `type:"string" required:"true"`

	// A unique identifier for the contact evaluation.
	//
	// EvaluationId is a required field
	EvaluationId *string `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 StartContactEvaluationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartContactEvaluationOutput) GoString() string {
	return s.String()
}

// SetEvaluationArn sets the EvaluationArn field's value.
func (s *StartContactEvaluationOutput) SetEvaluationArn(v string) *StartContactEvaluationOutput {
	s.EvaluationArn = &v
	return s
}

// SetEvaluationId sets the EvaluationId field's value.
func (s *StartContactEvaluationOutput) SetEvaluationId(v string) *StartContactEvaluationOutput {
	s.EvaluationId = &v
	return s
}

type StartContactRecordingInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the contact.
	//
	// ContactId is a required field
	ContactId *string `min:"1" type:"string" required:"true"`

	// The identifier of the contact. This is the identifier of the contact associated
	// with the first interaction with the contact center.
	//
	// InitialContactId is a required field
	InitialContactId *string `min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// The person being recorded.
	//
	// VoiceRecordingConfiguration is a required field
	VoiceRecordingConfiguration *VoiceRecordingConfiguration `type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartContactRecordingInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartContactRecordingInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartContactRecordingInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartContactRecordingInput"}
	if s.ContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactId"))
	}
	if s.ContactId != nil && len(*s.ContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactId", 1))
	}
	if s.InitialContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("InitialContactId"))
	}
	if s.InitialContactId != nil && len(*s.InitialContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InitialContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.VoiceRecordingConfiguration == nil {
		invalidParams.Add(request.NewErrParamRequired("VoiceRecordingConfiguration"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactId sets the ContactId field's value.
func (s *StartContactRecordingInput) SetContactId(v string) *StartContactRecordingInput {
	s.ContactId = &v
	return s
}

// SetInitialContactId sets the InitialContactId field's value.
func (s *StartContactRecordingInput) SetInitialContactId(v string) *StartContactRecordingInput {
	s.InitialContactId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *StartContactRecordingInput) SetInstanceId(v string) *StartContactRecordingInput {
	s.InstanceId = &v
	return s
}

// SetVoiceRecordingConfiguration sets the VoiceRecordingConfiguration field's value.
func (s *StartContactRecordingInput) SetVoiceRecordingConfiguration(v *VoiceRecordingConfiguration) *StartContactRecordingInput {
	s.VoiceRecordingConfiguration = v
	return s
}

type StartContactRecordingOutput 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 StartContactRecordingOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartContactRecordingOutput) GoString() string {
	return s.String()
}

type StartContactStreamingInput struct {
	_ struct{} `type:"structure"`

	// The streaming configuration, such as the Amazon SNS streaming endpoint.
	//
	// ChatStreamingConfiguration is a required field
	ChatStreamingConfiguration *ChatStreamingConfiguration `type:"structure" required:"true"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// The identifier of the contact. This is the identifier of the contact associated
	// with the first interaction with the contact center.
	//
	// ContactId is a required field
	ContactId *string `min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `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 StartContactStreamingInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartContactStreamingInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartContactStreamingInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartContactStreamingInput"}
	if s.ChatStreamingConfiguration == nil {
		invalidParams.Add(request.NewErrParamRequired("ChatStreamingConfiguration"))
	}
	if s.ContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactId"))
	}
	if s.ContactId != nil && len(*s.ContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.ChatStreamingConfiguration != nil {
		if err := s.ChatStreamingConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ChatStreamingConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetChatStreamingConfiguration sets the ChatStreamingConfiguration field's value.
func (s *StartContactStreamingInput) SetChatStreamingConfiguration(v *ChatStreamingConfiguration) *StartContactStreamingInput {
	s.ChatStreamingConfiguration = v
	return s
}

// SetClientToken sets the ClientToken field's value.
func (s *StartContactStreamingInput) SetClientToken(v string) *StartContactStreamingInput {
	s.ClientToken = &v
	return s
}

// SetContactId sets the ContactId field's value.
func (s *StartContactStreamingInput) SetContactId(v string) *StartContactStreamingInput {
	s.ContactId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *StartContactStreamingInput) SetInstanceId(v string) *StartContactStreamingInput {
	s.InstanceId = &v
	return s
}

type StartContactStreamingOutput struct {
	_ struct{} `type:"structure"`

	// The identifier of the streaming configuration enabled.
	//
	// StreamingId is a required field
	StreamingId *string `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 StartContactStreamingOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartContactStreamingOutput) GoString() string {
	return s.String()
}

// SetStreamingId sets the StreamingId field's value.
func (s *StartContactStreamingOutput) SetStreamingId(v string) *StartContactStreamingOutput {
	s.StreamingId = &v
	return s
}

type StartOutboundVoiceContactInput struct {
	_ struct{} `type:"structure"`

	// Configuration of the answering machine detection for this outbound call.
	AnswerMachineDetectionConfig *AnswerMachineDetectionConfig `type:"structure"`

	// A custom key-value pair using an attribute map. The attributes are standard
	// Amazon Connect attributes, and can be accessed in flows just like any other
	// contact attributes.
	//
	// There can be up to 32,768 UTF-8 bytes across all key-value pairs per contact.
	// Attribute keys can include only alphanumeric, dash, and underscore characters.
	Attributes map[string]*string `type:"map"`

	// The campaign identifier of the outbound communication.
	CampaignId *string `min:"1" type:"string"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	// The token is valid for 7 days after creation. If a contact is already started,
	// the contact ID is returned.
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// The identifier of the flow for the outbound call. To see the ContactFlowId
	// in the Amazon Connect admin website, on the navigation menu go to Routing,
	// Contact Flows. Choose the flow. On the flow page, under the name of the flow,
	// choose Show additional flow information. The ContactFlowId is the last part
	// of the ARN, shown here in bold:
	//
	// arn:aws:connect:us-west-2:xxxxxxxxxxxx:instance/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/contact-flow/846ec553-a005-41c0-8341-xxxxxxxxxxxx
	//
	// ContactFlowId is a required field
	ContactFlowId *string `type:"string" required:"true"`

	// A description of the voice contact that is shown to an agent in the Contact
	// Control Panel (CCP).
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by StartOutboundVoiceContactInput's
	// String and GoString methods.
	Description *string `type:"string" sensitive:"true"`

	// The phone number of the customer, in E.164 format.
	//
	// DestinationPhoneNumber is a required field
	DestinationPhoneNumber *string `type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// The name of a voice contact that is shown to an agent in the Contact Control
	// Panel (CCP).
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by StartOutboundVoiceContactInput's
	// String and GoString methods.
	Name *string `type:"string" sensitive:"true"`

	// The queue for the call. If you specify a queue, the phone displayed for caller
	// ID is the phone number specified in the queue. If you do not specify a queue,
	// the queue defined in the flow is used. If you do not specify a queue, you
	// must specify a source phone number.
	QueueId *string `type:"string"`

	// A formatted URL that is shown to an agent in the Contact Control Panel (CCP).
	// Contacts can have the following reference types at the time of creation:
	// URL | NUMBER | STRING | DATE | EMAIL. ATTACHMENT is not a supported reference
	// type during voice contact creation.
	References map[string]*Reference `type:"map"`

	// The contactId that is related to this contact. Linking voice, task, or chat
	// by using RelatedContactID copies over contact attributes from the related
	// contact to the new contact. All updates to user-defined attributes in the
	// new contact are limited to the individual contact ID. There are no limits
	// to the number of contacts that can be linked by using RelatedContactId.
	RelatedContactId *string `min:"1" type:"string"`

	// The phone number associated with the Amazon Connect instance, in E.164 format.
	// If you do not specify a source phone number, you must specify a queue.
	SourcePhoneNumber *string `type:"string"`

	// Denotes the class of traffic. Calls with different traffic types are handled
	// differently by Amazon Connect. The default value is GENERAL. Use CAMPAIGN
	// if EnableAnswerMachineDetection is set to true. For all other cases, use
	// GENERAL.
	TrafficType *string `type:"string" enum:"TrafficType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartOutboundVoiceContactInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartOutboundVoiceContactInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartOutboundVoiceContactInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartOutboundVoiceContactInput"}
	if s.CampaignId != nil && len(*s.CampaignId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CampaignId", 1))
	}
	if s.ContactFlowId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactFlowId"))
	}
	if s.DestinationPhoneNumber == nil {
		invalidParams.Add(request.NewErrParamRequired("DestinationPhoneNumber"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.RelatedContactId != nil && len(*s.RelatedContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RelatedContactId", 1))
	}
	if s.References != nil {
		for i, v := range s.References {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "References", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAnswerMachineDetectionConfig sets the AnswerMachineDetectionConfig field's value.
func (s *StartOutboundVoiceContactInput) SetAnswerMachineDetectionConfig(v *AnswerMachineDetectionConfig) *StartOutboundVoiceContactInput {
	s.AnswerMachineDetectionConfig = v
	return s
}

// SetAttributes sets the Attributes field's value.
func (s *StartOutboundVoiceContactInput) SetAttributes(v map[string]*string) *StartOutboundVoiceContactInput {
	s.Attributes = v
	return s
}

// SetCampaignId sets the CampaignId field's value.
func (s *StartOutboundVoiceContactInput) SetCampaignId(v string) *StartOutboundVoiceContactInput {
	s.CampaignId = &v
	return s
}

// SetClientToken sets the ClientToken field's value.
func (s *StartOutboundVoiceContactInput) SetClientToken(v string) *StartOutboundVoiceContactInput {
	s.ClientToken = &v
	return s
}

// SetContactFlowId sets the ContactFlowId field's value.
func (s *StartOutboundVoiceContactInput) SetContactFlowId(v string) *StartOutboundVoiceContactInput {
	s.ContactFlowId = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *StartOutboundVoiceContactInput) SetDescription(v string) *StartOutboundVoiceContactInput {
	s.Description = &v
	return s
}

// SetDestinationPhoneNumber sets the DestinationPhoneNumber field's value.
func (s *StartOutboundVoiceContactInput) SetDestinationPhoneNumber(v string) *StartOutboundVoiceContactInput {
	s.DestinationPhoneNumber = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *StartOutboundVoiceContactInput) SetInstanceId(v string) *StartOutboundVoiceContactInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *StartOutboundVoiceContactInput) SetName(v string) *StartOutboundVoiceContactInput {
	s.Name = &v
	return s
}

// SetQueueId sets the QueueId field's value.
func (s *StartOutboundVoiceContactInput) SetQueueId(v string) *StartOutboundVoiceContactInput {
	s.QueueId = &v
	return s
}

// SetReferences sets the References field's value.
func (s *StartOutboundVoiceContactInput) SetReferences(v map[string]*Reference) *StartOutboundVoiceContactInput {
	s.References = v
	return s
}

// SetRelatedContactId sets the RelatedContactId field's value.
func (s *StartOutboundVoiceContactInput) SetRelatedContactId(v string) *StartOutboundVoiceContactInput {
	s.RelatedContactId = &v
	return s
}

// SetSourcePhoneNumber sets the SourcePhoneNumber field's value.
func (s *StartOutboundVoiceContactInput) SetSourcePhoneNumber(v string) *StartOutboundVoiceContactInput {
	s.SourcePhoneNumber = &v
	return s
}

// SetTrafficType sets the TrafficType field's value.
func (s *StartOutboundVoiceContactInput) SetTrafficType(v string) *StartOutboundVoiceContactInput {
	s.TrafficType = &v
	return s
}

type StartOutboundVoiceContactOutput struct {
	_ struct{} `type:"structure"`

	// The identifier of this contact within the Amazon Connect instance.
	ContactId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartOutboundVoiceContactOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartOutboundVoiceContactOutput) GoString() string {
	return s.String()
}

// SetContactId sets the ContactId field's value.
func (s *StartOutboundVoiceContactOutput) SetContactId(v string) *StartOutboundVoiceContactOutput {
	s.ContactId = &v
	return s
}

type StartTaskContactInput struct {
	_ struct{} `type:"structure"`

	// A custom key-value pair using an attribute map. The attributes are standard
	// Amazon Connect attributes, and can be accessed in flows just like any other
	// contact attributes.
	//
	// There can be up to 32,768 UTF-8 bytes across all key-value pairs per contact.
	// Attribute keys can include only alphanumeric, dash, and underscore characters.
	Attributes map[string]*string `type:"map"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// The identifier of the flow for initiating the tasks. To see the ContactFlowId
	// in the Amazon Connect admin website, on the navigation menu go to Routing,
	// Contact Flows. Choose the flow. On the flow page, under the name of the flow,
	// choose Show additional flow information. The ContactFlowId is the last part
	// of the ARN, shown here in bold:
	//
	// arn:aws:connect:us-west-2:xxxxxxxxxxxx:instance/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/contact-flow/846ec553-a005-41c0-8341-xxxxxxxxxxxx
	ContactFlowId *string `type:"string"`

	// A description of the task that is shown to an agent in the Contact Control
	// Panel (CCP).
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by StartTaskContactInput's
	// String and GoString methods.
	Description *string `type:"string" sensitive:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// The name of a task that is shown to an agent in the Contact Control Panel
	// (CCP).
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by StartTaskContactInput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `type:"string" required:"true" sensitive:"true"`

	// The identifier of the previous chat, voice, or task contact. Any updates
	// to user-defined attributes to task contacts linked using the same PreviousContactID
	// will affect every contact in the chain. There can be a maximum of 12 linked
	// task contacts in a chain.
	PreviousContactId *string `min:"1" type:"string"`

	// The identifier for the quick connect. Tasks that are created by using QuickConnectId
	// will use the flow that is defined on agent or queue quick connect. For more
	// information about quick connects, see Create quick connects (https://docs.aws.amazon.com/connect/latest/adminguide/quick-connects.html).
	QuickConnectId *string `type:"string"`

	// A formatted URL that is shown to an agent in the Contact Control Panel (CCP).
	// Tasks can have the following reference types at the time of creation: URL
	// | NUMBER | STRING | DATE | EMAIL. ATTACHMENT is not a supported reference
	// type during task creation.
	References map[string]*Reference `type:"map"`

	// The contactId that is related (https://docs.aws.amazon.com/connect/latest/adminguide/tasks.html#linked-tasks)
	// to this contact. Linking tasks together by using RelatedContactID copies
	// over contact attributes from the related task contact to the new task contact.
	// All updates to user-defined attributes in the new task contact are limited
	// to the individual contact ID, unlike what happens when tasks are linked by
	// using PreviousContactID. There are no limits to the number of contacts that
	// can be linked by using RelatedContactId.
	RelatedContactId *string `min:"1" type:"string"`

	// The timestamp, in Unix Epoch seconds format, at which to start running the
	// inbound flow. The scheduled time cannot be in the past. It must be within
	// up to 6 days in future.
	ScheduledTime *time.Time `type:"timestamp"`

	// A unique identifier for the task template. For more information about task
	// templates, see Create task templates (https://docs.aws.amazon.com/connect/latest/adminguide/task-templates.html)
	// in the Amazon Connect Administrator Guide.
	TaskTemplateId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartTaskContactInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartTaskContactInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartTaskContactInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartTaskContactInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.PreviousContactId != nil && len(*s.PreviousContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PreviousContactId", 1))
	}
	if s.RelatedContactId != nil && len(*s.RelatedContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RelatedContactId", 1))
	}
	if s.TaskTemplateId != nil && len(*s.TaskTemplateId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TaskTemplateId", 1))
	}
	if s.References != nil {
		for i, v := range s.References {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "References", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAttributes sets the Attributes field's value.
func (s *StartTaskContactInput) SetAttributes(v map[string]*string) *StartTaskContactInput {
	s.Attributes = v
	return s
}

// SetClientToken sets the ClientToken field's value.
func (s *StartTaskContactInput) SetClientToken(v string) *StartTaskContactInput {
	s.ClientToken = &v
	return s
}

// SetContactFlowId sets the ContactFlowId field's value.
func (s *StartTaskContactInput) SetContactFlowId(v string) *StartTaskContactInput {
	s.ContactFlowId = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *StartTaskContactInput) SetDescription(v string) *StartTaskContactInput {
	s.Description = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *StartTaskContactInput) SetInstanceId(v string) *StartTaskContactInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *StartTaskContactInput) SetName(v string) *StartTaskContactInput {
	s.Name = &v
	return s
}

// SetPreviousContactId sets the PreviousContactId field's value.
func (s *StartTaskContactInput) SetPreviousContactId(v string) *StartTaskContactInput {
	s.PreviousContactId = &v
	return s
}

// SetQuickConnectId sets the QuickConnectId field's value.
func (s *StartTaskContactInput) SetQuickConnectId(v string) *StartTaskContactInput {
	s.QuickConnectId = &v
	return s
}

// SetReferences sets the References field's value.
func (s *StartTaskContactInput) SetReferences(v map[string]*Reference) *StartTaskContactInput {
	s.References = v
	return s
}

// SetRelatedContactId sets the RelatedContactId field's value.
func (s *StartTaskContactInput) SetRelatedContactId(v string) *StartTaskContactInput {
	s.RelatedContactId = &v
	return s
}

// SetScheduledTime sets the ScheduledTime field's value.
func (s *StartTaskContactInput) SetScheduledTime(v time.Time) *StartTaskContactInput {
	s.ScheduledTime = &v
	return s
}

// SetTaskTemplateId sets the TaskTemplateId field's value.
func (s *StartTaskContactInput) SetTaskTemplateId(v string) *StartTaskContactInput {
	s.TaskTemplateId = &v
	return s
}

type StartTaskContactOutput struct {
	_ struct{} `type:"structure"`

	// The identifier of this contact within the Amazon Connect instance.
	ContactId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartTaskContactOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartTaskContactOutput) GoString() string {
	return s.String()
}

// SetContactId sets the ContactId field's value.
func (s *StartTaskContactOutput) SetContactId(v string) *StartTaskContactOutput {
	s.ContactId = &v
	return s
}

type StartWebRTCContactInput struct {
	_ struct{} `type:"structure"`

	// Information about the video sharing capabilities of the participants (customer,
	// agent).
	AllowedCapabilities *AllowedCapabilities `type:"structure"`

	// A custom key-value pair using an attribute map. The attributes are standard
	// Amazon Connect attributes, and can be accessed in flows just like any other
	// contact attributes.
	//
	// There can be up to 32,768 UTF-8 bytes across all key-value pairs per contact.
	// Attribute keys can include only alphanumeric, -, and _ characters.
	Attributes map[string]*string `type:"map"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	//
	// The token is valid for 7 days after creation. If a contact is already started,
	// the contact ID is returned.
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// The identifier of the flow for the call. To see the ContactFlowId in the
	// Amazon Connect admin website, on the navigation menu go to Routing, Contact
	// Flows. Choose the flow. On the flow page, under the name of the flow, choose
	// Show additional flow information. The ContactFlowId is the last part of the
	// ARN, shown here in bold:
	//
	// arn:aws:connect:us-west-2:xxxxxxxxxxxx:instance/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/contact-flow/846ec553-a005-41c0-8341-xxxxxxxxxxxx
	//
	// ContactFlowId is a required field
	ContactFlowId *string `type:"string" required:"true"`

	// A description of the task that is shown to an agent in the Contact Control
	// Panel (CCP).
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by StartWebRTCContactInput's
	// String and GoString methods.
	Description *string `type:"string" sensitive:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// The customer's details.
	//
	// ParticipantDetails is a required field
	ParticipantDetails *ParticipantDetails `type:"structure" required:"true"`

	// A formatted URL that is shown to an agent in the Contact Control Panel (CCP).
	// Tasks can have the following reference types at the time of creation: URL
	// | NUMBER | STRING | DATE | EMAIL. ATTACHMENT is not a supported reference
	// type during task creation.
	References map[string]*Reference `type:"map"`

	// The unique identifier for an Amazon Connect contact. This identifier is related
	// to the contact starting.
	RelatedContactId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartWebRTCContactInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartWebRTCContactInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartWebRTCContactInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartWebRTCContactInput"}
	if s.ContactFlowId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactFlowId"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.ParticipantDetails == nil {
		invalidParams.Add(request.NewErrParamRequired("ParticipantDetails"))
	}
	if s.RelatedContactId != nil && len(*s.RelatedContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RelatedContactId", 1))
	}
	if s.ParticipantDetails != nil {
		if err := s.ParticipantDetails.Validate(); err != nil {
			invalidParams.AddNested("ParticipantDetails", err.(request.ErrInvalidParams))
		}
	}
	if s.References != nil {
		for i, v := range s.References {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "References", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAllowedCapabilities sets the AllowedCapabilities field's value.
func (s *StartWebRTCContactInput) SetAllowedCapabilities(v *AllowedCapabilities) *StartWebRTCContactInput {
	s.AllowedCapabilities = v
	return s
}

// SetAttributes sets the Attributes field's value.
func (s *StartWebRTCContactInput) SetAttributes(v map[string]*string) *StartWebRTCContactInput {
	s.Attributes = v
	return s
}

// SetClientToken sets the ClientToken field's value.
func (s *StartWebRTCContactInput) SetClientToken(v string) *StartWebRTCContactInput {
	s.ClientToken = &v
	return s
}

// SetContactFlowId sets the ContactFlowId field's value.
func (s *StartWebRTCContactInput) SetContactFlowId(v string) *StartWebRTCContactInput {
	s.ContactFlowId = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *StartWebRTCContactInput) SetDescription(v string) *StartWebRTCContactInput {
	s.Description = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *StartWebRTCContactInput) SetInstanceId(v string) *StartWebRTCContactInput {
	s.InstanceId = &v
	return s
}

// SetParticipantDetails sets the ParticipantDetails field's value.
func (s *StartWebRTCContactInput) SetParticipantDetails(v *ParticipantDetails) *StartWebRTCContactInput {
	s.ParticipantDetails = v
	return s
}

// SetReferences sets the References field's value.
func (s *StartWebRTCContactInput) SetReferences(v map[string]*Reference) *StartWebRTCContactInput {
	s.References = v
	return s
}

// SetRelatedContactId sets the RelatedContactId field's value.
func (s *StartWebRTCContactInput) SetRelatedContactId(v string) *StartWebRTCContactInput {
	s.RelatedContactId = &v
	return s
}

type StartWebRTCContactOutput struct {
	_ struct{} `type:"structure"`

	// Information required for the client application (mobile application or website)
	// to connect to the call.
	ConnectionData *ConnectionData `type:"structure"`

	// The identifier of the contact in this instance of Amazon Connect.
	ContactId *string `min:"1" type:"string"`

	// The identifier for a contact participant. The ParticipantId for a contact
	// participant is the same throughout the contact lifecycle.
	ParticipantId *string `min:"1" type:"string"`

	// The token used by the contact participant to call the CreateParticipantConnection
	// (https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html)
	// API. The participant token is valid for the lifetime of a contact participant.
	ParticipantToken *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartWebRTCContactOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartWebRTCContactOutput) GoString() string {
	return s.String()
}

// SetConnectionData sets the ConnectionData field's value.
func (s *StartWebRTCContactOutput) SetConnectionData(v *ConnectionData) *StartWebRTCContactOutput {
	s.ConnectionData = v
	return s
}

// SetContactId sets the ContactId field's value.
func (s *StartWebRTCContactOutput) SetContactId(v string) *StartWebRTCContactOutput {
	s.ContactId = &v
	return s
}

// SetParticipantId sets the ParticipantId field's value.
func (s *StartWebRTCContactOutput) SetParticipantId(v string) *StartWebRTCContactOutput {
	s.ParticipantId = &v
	return s
}

// SetParticipantToken sets the ParticipantToken field's value.
func (s *StartWebRTCContactOutput) SetParticipantToken(v string) *StartWebRTCContactOutput {
	s.ParticipantToken = &v
	return s
}

type StopContactInput struct {
	_ struct{} `type:"structure"`

	// The ID of the contact.
	//
	// ContactId is a required field
	ContactId *string `min:"1" type:"string" required:"true"`

	// The reason a contact can be disconnected. Only Amazon Connect outbound campaigns
	// can provide this field.
	DisconnectReason *DisconnectReason `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `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 StopContactInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopContactInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StopContactInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StopContactInput"}
	if s.ContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactId"))
	}
	if s.ContactId != nil && len(*s.ContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactId sets the ContactId field's value.
func (s *StopContactInput) SetContactId(v string) *StopContactInput {
	s.ContactId = &v
	return s
}

// SetDisconnectReason sets the DisconnectReason field's value.
func (s *StopContactInput) SetDisconnectReason(v *DisconnectReason) *StopContactInput {
	s.DisconnectReason = v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *StopContactInput) SetInstanceId(v string) *StopContactInput {
	s.InstanceId = &v
	return s
}

type StopContactOutput 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 StopContactOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopContactOutput) GoString() string {
	return s.String()
}

type StopContactRecordingInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the contact.
	//
	// ContactId is a required field
	ContactId *string `min:"1" type:"string" required:"true"`

	// The identifier of the contact. This is the identifier of the contact associated
	// with the first interaction with the contact center.
	//
	// InitialContactId is a required field
	InitialContactId *string `min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `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 StopContactRecordingInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopContactRecordingInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StopContactRecordingInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StopContactRecordingInput"}
	if s.ContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactId"))
	}
	if s.ContactId != nil && len(*s.ContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactId", 1))
	}
	if s.InitialContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("InitialContactId"))
	}
	if s.InitialContactId != nil && len(*s.InitialContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InitialContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactId sets the ContactId field's value.
func (s *StopContactRecordingInput) SetContactId(v string) *StopContactRecordingInput {
	s.ContactId = &v
	return s
}

// SetInitialContactId sets the InitialContactId field's value.
func (s *StopContactRecordingInput) SetInitialContactId(v string) *StopContactRecordingInput {
	s.InitialContactId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *StopContactRecordingInput) SetInstanceId(v string) *StopContactRecordingInput {
	s.InstanceId = &v
	return s
}

type StopContactRecordingOutput 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 StopContactRecordingOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopContactRecordingOutput) GoString() string {
	return s.String()
}

type StopContactStreamingInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the contact. This is the identifier of the contact that
	// is associated with the first interaction with the contact center.
	//
	// ContactId is a required field
	ContactId *string `min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// The identifier of the streaming configuration enabled.
	//
	// StreamingId is a required field
	StreamingId *string `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 StopContactStreamingInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopContactStreamingInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StopContactStreamingInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StopContactStreamingInput"}
	if s.ContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactId"))
	}
	if s.ContactId != nil && len(*s.ContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.StreamingId == nil {
		invalidParams.Add(request.NewErrParamRequired("StreamingId"))
	}
	if s.StreamingId != nil && len(*s.StreamingId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("StreamingId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactId sets the ContactId field's value.
func (s *StopContactStreamingInput) SetContactId(v string) *StopContactStreamingInput {
	s.ContactId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *StopContactStreamingInput) SetInstanceId(v string) *StopContactStreamingInput {
	s.InstanceId = &v
	return s
}

// SetStreamingId sets the StreamingId field's value.
func (s *StopContactStreamingInput) SetStreamingId(v string) *StopContactStreamingInput {
	s.StreamingId = &v
	return s
}

type StopContactStreamingOutput 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 StopContactStreamingOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopContactStreamingOutput) GoString() string {
	return s.String()
}

// A leaf node condition which can be used to specify a string condition.
//
// The currently supported values for FieldName are name and description.
type StringCondition struct {
	_ struct{} `type:"structure"`

	// The type of comparison to be made when evaluating the string condition.
	ComparisonType *string `type:"string" enum:"StringComparisonType"`

	// The name of the field in the string condition.
	FieldName *string `type:"string"`

	// The value of the string.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StringCondition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StringCondition) GoString() string {
	return s.String()
}

// SetComparisonType sets the ComparisonType field's value.
func (s *StringCondition) SetComparisonType(v string) *StringCondition {
	s.ComparisonType = &v
	return s
}

// SetFieldName sets the FieldName field's value.
func (s *StringCondition) SetFieldName(v string) *StringCondition {
	s.FieldName = &v
	return s
}

// SetValue sets the Value field's value.
func (s *StringCondition) SetValue(v string) *StringCondition {
	s.Value = &v
	return s
}

// Information about a reference when the referenceType is STRING. Otherwise,
// null.
type StringReference struct {
	_ struct{} `type:"structure"`

	// Identifier of the string reference.
	Name *string `min:"1" type:"string"`

	// A valid string.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StringReference) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StringReference) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *StringReference) SetName(v string) *StringReference {
	s.Name = &v
	return s
}

// SetValue sets the Value field's value.
func (s *StringReference) SetValue(v string) *StringReference {
	s.Value = &v
	return s
}

type SubmitContactEvaluationInput struct {
	_ struct{} `type:"structure"`

	// A map of question identifiers to answer value.
	Answers map[string]*EvaluationAnswerInput_ `type:"map"`

	// A unique identifier for the contact evaluation.
	//
	// EvaluationId is a required field
	EvaluationId *string `location:"uri" locationName:"EvaluationId" min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// A map of question identifiers to note value.
	Notes map[string]*EvaluationNote `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 SubmitContactEvaluationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubmitContactEvaluationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SubmitContactEvaluationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SubmitContactEvaluationInput"}
	if s.EvaluationId == nil {
		invalidParams.Add(request.NewErrParamRequired("EvaluationId"))
	}
	if s.EvaluationId != nil && len(*s.EvaluationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EvaluationId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAnswers sets the Answers field's value.
func (s *SubmitContactEvaluationInput) SetAnswers(v map[string]*EvaluationAnswerInput_) *SubmitContactEvaluationInput {
	s.Answers = v
	return s
}

// SetEvaluationId sets the EvaluationId field's value.
func (s *SubmitContactEvaluationInput) SetEvaluationId(v string) *SubmitContactEvaluationInput {
	s.EvaluationId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *SubmitContactEvaluationInput) SetInstanceId(v string) *SubmitContactEvaluationInput {
	s.InstanceId = &v
	return s
}

// SetNotes sets the Notes field's value.
func (s *SubmitContactEvaluationInput) SetNotes(v map[string]*EvaluationNote) *SubmitContactEvaluationInput {
	s.Notes = v
	return s
}

type SubmitContactEvaluationOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the contact evaluation resource.
	//
	// EvaluationArn is a required field
	EvaluationArn *string `type:"string" required:"true"`

	// A unique identifier for the contact evaluation.
	//
	// EvaluationId is a required field
	EvaluationId *string `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 SubmitContactEvaluationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubmitContactEvaluationOutput) GoString() string {
	return s.String()
}

// SetEvaluationArn sets the EvaluationArn field's value.
func (s *SubmitContactEvaluationOutput) SetEvaluationArn(v string) *SubmitContactEvaluationOutput {
	s.EvaluationArn = &v
	return s
}

// SetEvaluationId sets the EvaluationId field's value.
func (s *SubmitContactEvaluationOutput) SetEvaluationId(v string) *SubmitContactEvaluationOutput {
	s.EvaluationId = &v
	return s
}

// Request for which contact was successfully created.
type SuccessfulRequest struct {
	_ struct{} `type:"structure"`

	// The contactId of the contact that was created successfully.
	ContactId *string `min:"1" type:"string"`

	// Request identifier provided in the API call in the ContactDataRequest to
	// create a contact.
	RequestIdentifier *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SuccessfulRequest) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SuccessfulRequest) GoString() string {
	return s.String()
}

// SetContactId sets the ContactId field's value.
func (s *SuccessfulRequest) SetContactId(v string) *SuccessfulRequest {
	s.ContactId = &v
	return s
}

// SetRequestIdentifier sets the RequestIdentifier field's value.
func (s *SuccessfulRequest) SetRequestIdentifier(v string) *SuccessfulRequest {
	s.RequestIdentifier = &v
	return s
}

type SuspendContactRecordingInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the contact.
	//
	// ContactId is a required field
	ContactId *string `min:"1" type:"string" required:"true"`

	// The identifier of the contact. This is the identifier of the contact associated
	// with the first interaction with the contact center.
	//
	// InitialContactId is a required field
	InitialContactId *string `min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `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 SuspendContactRecordingInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SuspendContactRecordingInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SuspendContactRecordingInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SuspendContactRecordingInput"}
	if s.ContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactId"))
	}
	if s.ContactId != nil && len(*s.ContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactId", 1))
	}
	if s.InitialContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("InitialContactId"))
	}
	if s.InitialContactId != nil && len(*s.InitialContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InitialContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactId sets the ContactId field's value.
func (s *SuspendContactRecordingInput) SetContactId(v string) *SuspendContactRecordingInput {
	s.ContactId = &v
	return s
}

// SetInitialContactId sets the InitialContactId field's value.
func (s *SuspendContactRecordingInput) SetInitialContactId(v string) *SuspendContactRecordingInput {
	s.InitialContactId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *SuspendContactRecordingInput) SetInstanceId(v string) *SuspendContactRecordingInput {
	s.InstanceId = &v
	return s
}

type SuspendContactRecordingOutput 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 SuspendContactRecordingOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SuspendContactRecordingOutput) GoString() string {
	return s.String()
}

// A leaf node condition which can be used to specify a tag condition, for example,
// HAVE BPO = 123.
type TagCondition struct {
	_ struct{} `type:"structure"`

	// The tag key in the tag condition.
	TagKey *string `type:"string"`

	// The tag value in the tag condition.
	TagValue *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagCondition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagCondition) GoString() string {
	return s.String()
}

// SetTagKey sets the TagKey field's value.
func (s *TagCondition) SetTagKey(v string) *TagCondition {
	s.TagKey = &v
	return s
}

// SetTagValue sets the TagValue field's value.
func (s *TagCondition) SetTagValue(v string) *TagCondition {
	s.TagValue = &v
	return s
}

type TagContactInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the contact in this instance of Amazon Connect.
	//
	// ContactId is a required field
	ContactId *string `min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// The tags to be assigned to the contact resource. For example, { "Tags": {"key1":"value1",
	// "key2":"value2"} }.
	//
	// Authorization is not supported by this tag.
	//
	// Tags is a required field
	Tags map[string]*string `min:"1" type:"map" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagContactInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagContactInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TagContactInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TagContactInput"}
	if s.ContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactId"))
	}
	if s.ContactId != nil && len(*s.ContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Tags == nil {
		invalidParams.Add(request.NewErrParamRequired("Tags"))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactId sets the ContactId field's value.
func (s *TagContactInput) SetContactId(v string) *TagContactInput {
	s.ContactId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *TagContactInput) SetInstanceId(v string) *TagContactInput {
	s.InstanceId = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *TagContactInput) SetTags(v map[string]*string) *TagContactInput {
	s.Tags = v
	return s
}

type TagContactOutput 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 TagContactOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagContactOutput) GoString() string {
	return s.String()
}

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" type:"string" required:"true"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	//
	// Tags is a required field
	Tags map[string]*string `locationName:"tags" min:"1" type:"map" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagResourceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TagResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TagResourceInput"}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}
	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
	}
	if s.Tags == nil {
		invalidParams.Add(request.NewErrParamRequired("Tags"))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceArn sets the ResourceArn field's value.
func (s *TagResourceInput) SetResourceArn(v string) *TagResourceInput {
	s.ResourceArn = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *TagResourceInput) SetTags(v map[string]*string) *TagResourceInput {
	s.Tags = v
	return s
}

type TagResourceOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagResourceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagResourceOutput) GoString() string {
	return s.String()
}

// The search criteria to be used to return tags.
type TagSearchCondition struct {
	_ struct{} `type:"structure"`

	// The tag key used in the tag search condition.
	TagKey *string `locationName:"tagKey" type:"string"`

	// The type of comparison to be made when evaluating the tag key in tag search
	// condition.
	TagKeyComparisonType *string `locationName:"tagKeyComparisonType" type:"string" enum:"StringComparisonType"`

	// The tag value used in the tag search condition.
	TagValue *string `locationName:"tagValue" type:"string"`

	// The type of comparison to be made when evaluating the tag value in tag search
	// condition.
	TagValueComparisonType *string `locationName:"tagValueComparisonType" type:"string" enum:"StringComparisonType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagSearchCondition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagSearchCondition) GoString() string {
	return s.String()
}

// SetTagKey sets the TagKey field's value.
func (s *TagSearchCondition) SetTagKey(v string) *TagSearchCondition {
	s.TagKey = &v
	return s
}

// SetTagKeyComparisonType sets the TagKeyComparisonType field's value.
func (s *TagSearchCondition) SetTagKeyComparisonType(v string) *TagSearchCondition {
	s.TagKeyComparisonType = &v
	return s
}

// SetTagValue sets the TagValue field's value.
func (s *TagSearchCondition) SetTagValue(v string) *TagSearchCondition {
	s.TagValue = &v
	return s
}

// SetTagValueComparisonType sets the TagValueComparisonType field's value.
func (s *TagSearchCondition) SetTagValueComparisonType(v string) *TagSearchCondition {
	s.TagValueComparisonType = &v
	return s
}

// A tag set contains tag key and tag value.
type TagSet struct {
	_ struct{} `type:"structure"`

	// The tag key in the tagSet.
	Key *string `locationName:"key" min:"1" type:"string"`

	// The tag value in the tagSet.
	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 TagSet) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagSet) GoString() string {
	return s.String()
}

// SetKey sets the Key field's value.
func (s *TagSet) SetKey(v string) *TagSet {
	s.Key = &v
	return s
}

// SetValue sets the Value field's value.
func (s *TagSet) SetValue(v string) *TagSet {
	s.Value = &v
	return s
}

// Information about the task action.
type TaskActionDefinition struct {
	_ struct{} `type:"structure"`

	// The identifier of the flow.
	//
	// ContactFlowId is a required field
	ContactFlowId *string `type:"string" required:"true"`

	// The description. Supports variable injection. For more information, see JSONPath
	// reference (https://docs.aws.amazon.com/connect/latest/adminguide/contact-lens-variable-injection.html)
	// in the Amazon Connect Administrators Guide.
	Description *string `type:"string"`

	// The name. Supports variable injection. For more information, see JSONPath
	// reference (https://docs.aws.amazon.com/connect/latest/adminguide/contact-lens-variable-injection.html)
	// in the Amazon Connect Administrators Guide.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// Information about the reference when the referenceType is URL. Otherwise,
	// null. (Supports variable injection in the Value field.)
	References map[string]*Reference `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 TaskActionDefinition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TaskActionDefinition) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TaskActionDefinition) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TaskActionDefinition"}
	if s.ContactFlowId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactFlowId"))
	}
	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.References != nil {
		for i, v := range s.References {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "References", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactFlowId sets the ContactFlowId field's value.
func (s *TaskActionDefinition) SetContactFlowId(v string) *TaskActionDefinition {
	s.ContactFlowId = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *TaskActionDefinition) SetDescription(v string) *TaskActionDefinition {
	s.Description = &v
	return s
}

// SetName sets the Name field's value.
func (s *TaskActionDefinition) SetName(v string) *TaskActionDefinition {
	s.Name = &v
	return s
}

// SetReferences sets the References field's value.
func (s *TaskActionDefinition) SetReferences(v map[string]*Reference) *TaskActionDefinition {
	s.References = v
	return s
}

// Describes constraints that apply to the template fields.
type TaskTemplateConstraints struct {
	_ struct{} `type:"structure"`

	// Lists the fields that are invisible to agents.
	InvisibleFields []*InvisibleFieldInfo `type:"list"`

	// Lists the fields that are read-only to agents, and cannot be edited.
	ReadOnlyFields []*ReadOnlyFieldInfo `type:"list"`

	// Lists the fields that are required to be filled by agents.
	RequiredFields []*RequiredFieldInfo `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 TaskTemplateConstraints) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TaskTemplateConstraints) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TaskTemplateConstraints) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TaskTemplateConstraints"}
	if s.InvisibleFields != nil {
		for i, v := range s.InvisibleFields {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InvisibleFields", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ReadOnlyFields != nil {
		for i, v := range s.ReadOnlyFields {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReadOnlyFields", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.RequiredFields != nil {
		for i, v := range s.RequiredFields {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RequiredFields", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInvisibleFields sets the InvisibleFields field's value.
func (s *TaskTemplateConstraints) SetInvisibleFields(v []*InvisibleFieldInfo) *TaskTemplateConstraints {
	s.InvisibleFields = v
	return s
}

// SetReadOnlyFields sets the ReadOnlyFields field's value.
func (s *TaskTemplateConstraints) SetReadOnlyFields(v []*ReadOnlyFieldInfo) *TaskTemplateConstraints {
	s.ReadOnlyFields = v
	return s
}

// SetRequiredFields sets the RequiredFields field's value.
func (s *TaskTemplateConstraints) SetRequiredFields(v []*RequiredFieldInfo) *TaskTemplateConstraints {
	s.RequiredFields = v
	return s
}

// Describes a default field and its corresponding value.
type TaskTemplateDefaultFieldValue struct {
	_ struct{} `type:"structure"`

	// Default value for the field.
	DefaultValue *string `type:"string"`

	// Identifier of a field.
	Id *TaskTemplateFieldIdentifier `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 TaskTemplateDefaultFieldValue) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TaskTemplateDefaultFieldValue) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TaskTemplateDefaultFieldValue) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TaskTemplateDefaultFieldValue"}
	if s.Id != nil {
		if err := s.Id.Validate(); err != nil {
			invalidParams.AddNested("Id", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDefaultValue sets the DefaultValue field's value.
func (s *TaskTemplateDefaultFieldValue) SetDefaultValue(v string) *TaskTemplateDefaultFieldValue {
	s.DefaultValue = &v
	return s
}

// SetId sets the Id field's value.
func (s *TaskTemplateDefaultFieldValue) SetId(v *TaskTemplateFieldIdentifier) *TaskTemplateDefaultFieldValue {
	s.Id = v
	return s
}

// Describes default values for fields on a template.
type TaskTemplateDefaults struct {
	_ struct{} `type:"structure"`

	// Default value for the field.
	DefaultFieldValues []*TaskTemplateDefaultFieldValue `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 TaskTemplateDefaults) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TaskTemplateDefaults) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TaskTemplateDefaults) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TaskTemplateDefaults"}
	if s.DefaultFieldValues != nil {
		for i, v := range s.DefaultFieldValues {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DefaultFieldValues", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDefaultFieldValues sets the DefaultFieldValues field's value.
func (s *TaskTemplateDefaults) SetDefaultFieldValues(v []*TaskTemplateDefaultFieldValue) *TaskTemplateDefaults {
	s.DefaultFieldValues = v
	return s
}

// Describes a single task template field.
type TaskTemplateField struct {
	_ struct{} `type:"structure"`

	// The description of the field.
	Description *string `min:"1" type:"string"`

	// The unique identifier for the field.
	//
	// Id is a required field
	Id *TaskTemplateFieldIdentifier `type:"structure" required:"true"`

	// A list of options for a single select field.
	SingleSelectOptions []*string `type:"list"`

	// Indicates the type of field.
	Type *string `type:"string" enum:"TaskTemplateFieldType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TaskTemplateField) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TaskTemplateField) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TaskTemplateField) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TaskTemplateField"}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.Id == nil {
		invalidParams.Add(request.NewErrParamRequired("Id"))
	}
	if s.Id != nil {
		if err := s.Id.Validate(); err != nil {
			invalidParams.AddNested("Id", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *TaskTemplateField) SetDescription(v string) *TaskTemplateField {
	s.Description = &v
	return s
}

// SetId sets the Id field's value.
func (s *TaskTemplateField) SetId(v *TaskTemplateFieldIdentifier) *TaskTemplateField {
	s.Id = v
	return s
}

// SetSingleSelectOptions sets the SingleSelectOptions field's value.
func (s *TaskTemplateField) SetSingleSelectOptions(v []*string) *TaskTemplateField {
	s.SingleSelectOptions = v
	return s
}

// SetType sets the Type field's value.
func (s *TaskTemplateField) SetType(v string) *TaskTemplateField {
	s.Type = &v
	return s
}

// The identifier of the task template field.
type TaskTemplateFieldIdentifier struct {
	_ struct{} `type:"structure"`

	// The name of the task template field.
	Name *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TaskTemplateFieldIdentifier) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TaskTemplateFieldIdentifier) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TaskTemplateFieldIdentifier) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TaskTemplateFieldIdentifier"}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *TaskTemplateFieldIdentifier) SetName(v string) *TaskTemplateFieldIdentifier {
	s.Name = &v
	return s
}

// Contains summary information about the task template.
type TaskTemplateMetadata struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the task template.
	Arn *string `min:"1" type:"string"`

	// The timestamp when the task template was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The description of the task template.
	Description *string `min:"1" type:"string"`

	// A unique identifier for the task template.
	Id *string `min:"1" type:"string"`

	// The timestamp when the task template was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The name of the task template.
	Name *string `min:"1" type:"string"`

	// Marks a template as ACTIVE or INACTIVE for a task to refer to it. Tasks can
	// only be created from ACTIVE templates. If a template is marked as INACTIVE,
	// then a task that refers to this template cannot be created.
	Status *string `type:"string" enum:"TaskTemplateStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TaskTemplateMetadata) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TaskTemplateMetadata) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *TaskTemplateMetadata) SetArn(v string) *TaskTemplateMetadata {
	s.Arn = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *TaskTemplateMetadata) SetCreatedTime(v time.Time) *TaskTemplateMetadata {
	s.CreatedTime = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *TaskTemplateMetadata) SetDescription(v string) *TaskTemplateMetadata {
	s.Description = &v
	return s
}

// SetId sets the Id field's value.
func (s *TaskTemplateMetadata) SetId(v string) *TaskTemplateMetadata {
	s.Id = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *TaskTemplateMetadata) SetLastModifiedTime(v time.Time) *TaskTemplateMetadata {
	s.LastModifiedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *TaskTemplateMetadata) SetName(v string) *TaskTemplateMetadata {
	s.Name = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *TaskTemplateMetadata) SetStatus(v string) *TaskTemplateMetadata {
	s.Status = &v
	return s
}

// The distribution of traffic between the instance and its replicas.
type TelephonyConfig struct {
	_ struct{} `type:"structure"`

	// Information about traffic distributions.
	//
	// Distributions is a required field
	Distributions []*Distribution `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 TelephonyConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TelephonyConfig) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TelephonyConfig) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TelephonyConfig"}
	if s.Distributions == nil {
		invalidParams.Add(request.NewErrParamRequired("Distributions"))
	}
	if s.Distributions != nil {
		for i, v := range s.Distributions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Distributions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDistributions sets the Distributions field's value.
func (s *TelephonyConfig) SetDistributions(v []*Distribution) *TelephonyConfig {
	s.Distributions = v
	return s
}

// Contains information about the threshold for service level metrics.
type Threshold struct {
	_ struct{} `type:"structure"`

	// The type of comparison. Only "less than" (LT) comparisons are supported.
	Comparison *string `type:"string" enum:"Comparison"`

	// The threshold value to compare.
	ThresholdValue *float64 `type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Threshold) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Threshold) GoString() string {
	return s.String()
}

// SetComparison sets the Comparison field's value.
func (s *Threshold) SetComparison(v string) *Threshold {
	s.Comparison = &v
	return s
}

// SetThresholdValue sets the ThresholdValue field's value.
func (s *Threshold) SetThresholdValue(v float64) *Threshold {
	s.ThresholdValue = &v
	return s
}

// Contains information about the threshold for service level metrics.
type ThresholdV2 struct {
	_ struct{} `type:"structure"`

	// The type of comparison. Only "less than" (LT) comparisons are supported.
	Comparison *string `min:"1" type:"string"`

	// The threshold value to compare.
	ThresholdValue *float64 `type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ThresholdV2) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ThresholdV2) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ThresholdV2) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ThresholdV2"}
	if s.Comparison != nil && len(*s.Comparison) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Comparison", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetComparison sets the Comparison field's value.
func (s *ThresholdV2) SetComparison(v string) *ThresholdV2 {
	s.Comparison = &v
	return s
}

// SetThresholdValue sets the ThresholdValue field's value.
func (s *ThresholdV2) SetThresholdValue(v float64) *ThresholdV2 {
	s.ThresholdValue = &v
	return s
}

// The throttling limit has been exceeded.
type ThrottlingException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ThrottlingException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ThrottlingException) GoString() string {
	return s.String()
}

func newErrorThrottlingException(v protocol.ResponseMetadata) error {
	return &ThrottlingException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ThrottlingException) Code() string {
	return "ThrottlingException"
}

// Message returns the exception's message.
func (s *ThrottlingException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ThrottlingException) OrigErr() error {
	return nil
}

func (s *ThrottlingException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ThrottlingException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ThrottlingException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Displayed when rate-related API limits are exceeded.
type TooManyRequestsException 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 TooManyRequestsException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TooManyRequestsException) GoString() string {
	return s.String()
}

func newErrorTooManyRequestsException(v protocol.ResponseMetadata) error {
	return &TooManyRequestsException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *TooManyRequestsException) Code() string {
	return "TooManyRequestsException"
}

// Message returns the exception's message.
func (s *TooManyRequestsException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *TooManyRequestsException) OrigErr() error {
	return nil
}

func (s *TooManyRequestsException) 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 *TooManyRequestsException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *TooManyRequestsException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Information about a traffic distribution group.
type TrafficDistributionGroup struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the traffic distribution group.
	Arn *string `type:"string"`

	// The description of the traffic distribution group.
	Description *string `min:"1" type:"string"`

	// The identifier of the traffic distribution group. This can be the ID or the
	// ARN if the API is being called in the Region where the traffic distribution
	// group was created. The ARN must be provided if the call is from the replicated
	// Region.
	Id *string `type:"string"`

	// The Amazon Resource Name (ARN).
	InstanceArn *string `type:"string"`

	// Whether this is the default traffic distribution group created during instance
	// replication. The default traffic distribution group cannot be deleted by
	// the DeleteTrafficDistributionGroup API. The default traffic distribution
	// group is deleted as part of the process for deleting a replica.
	//
	// The SignInConfig distribution is available only on a default TrafficDistributionGroup
	// (see the IsDefault parameter in the TrafficDistributionGroup (https://docs.aws.amazon.com/connect/latest/APIReference/API_TrafficDistributionGroup.html)
	// data type). If you call UpdateTrafficDistribution with a modified SignInConfig
	// and a non-default TrafficDistributionGroup, an InvalidRequestException is
	// returned.
	IsDefault *bool `type:"boolean"`

	// The name of the traffic distribution group.
	Name *string `min:"1" type:"string"`

	// The status of the traffic distribution group.
	//
	//    * CREATION_IN_PROGRESS means the previous CreateTrafficDistributionGroup
	//    (https://docs.aws.amazon.com/connect/latest/APIReference/API_CreateTrafficDistributionGroup.html)
	//    operation is still in progress and has not yet completed.
	//
	//    * ACTIVE means the previous CreateTrafficDistributionGroup (https://docs.aws.amazon.com/connect/latest/APIReference/API_CreateTrafficDistributionGroup.html)
	//    operation has succeeded.
	//
	//    * CREATION_FAILED indicates that the previous CreateTrafficDistributionGroup
	//    (https://docs.aws.amazon.com/connect/latest/APIReference/API_CreateTrafficDistributionGroup.html)
	//    operation has failed.
	//
	//    * PENDING_DELETION means the previous DeleteTrafficDistributionGroup (https://docs.aws.amazon.com/connect/latest/APIReference/API_DeleteTrafficDistributionGroup.html)
	//    operation is still in progress and has not yet completed.
	//
	//    * DELETION_FAILED means the previous DeleteTrafficDistributionGroup (https://docs.aws.amazon.com/connect/latest/APIReference/API_DeleteTrafficDistributionGroup.html)
	//    operation has failed.
	//
	//    * UPDATE_IN_PROGRESS means the previous UpdateTrafficDistribution (https://docs.aws.amazon.com/connect/latest/APIReference/API_UpdateTrafficDistribution.html)
	//    operation is still in progress and has not yet completed.
	Status *string `type:"string" enum:"TrafficDistributionGroupStatus"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TrafficDistributionGroup) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TrafficDistributionGroup) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *TrafficDistributionGroup) SetArn(v string) *TrafficDistributionGroup {
	s.Arn = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *TrafficDistributionGroup) SetDescription(v string) *TrafficDistributionGroup {
	s.Description = &v
	return s
}

// SetId sets the Id field's value.
func (s *TrafficDistributionGroup) SetId(v string) *TrafficDistributionGroup {
	s.Id = &v
	return s
}

// SetInstanceArn sets the InstanceArn field's value.
func (s *TrafficDistributionGroup) SetInstanceArn(v string) *TrafficDistributionGroup {
	s.InstanceArn = &v
	return s
}

// SetIsDefault sets the IsDefault field's value.
func (s *TrafficDistributionGroup) SetIsDefault(v bool) *TrafficDistributionGroup {
	s.IsDefault = &v
	return s
}

// SetName sets the Name field's value.
func (s *TrafficDistributionGroup) SetName(v string) *TrafficDistributionGroup {
	s.Name = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *TrafficDistributionGroup) SetStatus(v string) *TrafficDistributionGroup {
	s.Status = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *TrafficDistributionGroup) SetTags(v map[string]*string) *TrafficDistributionGroup {
	s.Tags = v
	return s
}

// Information about traffic distribution groups.
type TrafficDistributionGroupSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the traffic distribution group.
	Arn *string `type:"string"`

	// The identifier of the traffic distribution group. This can be the ID or the
	// ARN if the API is being called in the Region where the traffic distribution
	// group was created. The ARN must be provided if the call is from the replicated
	// Region.
	Id *string `type:"string"`

	// The Amazon Resource Name (ARN) of the traffic distribution group.
	InstanceArn *string `type:"string"`

	// Whether this is the default traffic distribution group created during instance
	// replication. The default traffic distribution group cannot be deleted by
	// the DeleteTrafficDistributionGroup API. The default traffic distribution
	// group is deleted as part of the process for deleting a replica.
	IsDefault *bool `type:"boolean"`

	// The name of the traffic distribution group.
	Name *string `min:"1" type:"string"`

	// The status of the traffic distribution group.
	//
	//    * CREATION_IN_PROGRESS means the previous CreateTrafficDistributionGroup
	//    (https://docs.aws.amazon.com/connect/latest/APIReference/API_CreateTrafficDistributionGroup.html)
	//    operation is still in progress and has not yet completed.
	//
	//    * ACTIVE means the previous CreateTrafficDistributionGroup (https://docs.aws.amazon.com/connect/latest/APIReference/API_CreateTrafficDistributionGroup.html)
	//    operation has succeeded.
	//
	//    * CREATION_FAILED indicates that the previous CreateTrafficDistributionGroup
	//    (https://docs.aws.amazon.com/connect/latest/APIReference/API_CreateTrafficDistributionGroup.html)
	//    operation has failed.
	//
	//    * PENDING_DELETION means the previous DeleteTrafficDistributionGroup (https://docs.aws.amazon.com/connect/latest/APIReference/API_DeleteTrafficDistributionGroup.html)
	//    operation is still in progress and has not yet completed.
	//
	//    * DELETION_FAILED means the previous DeleteTrafficDistributionGroup (https://docs.aws.amazon.com/connect/latest/APIReference/API_DeleteTrafficDistributionGroup.html)
	//    operation has failed.
	//
	//    * UPDATE_IN_PROGRESS means the previous UpdateTrafficDistributionGroup
	//    (https://docs.aws.amazon.com/connect/latest/APIReference/API_UpdateTrafficDistributionGroup.html)
	//    operation is still in progress and has not yet completed.
	Status *string `type:"string" enum:"TrafficDistributionGroupStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TrafficDistributionGroupSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TrafficDistributionGroupSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *TrafficDistributionGroupSummary) SetArn(v string) *TrafficDistributionGroupSummary {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *TrafficDistributionGroupSummary) SetId(v string) *TrafficDistributionGroupSummary {
	s.Id = &v
	return s
}

// SetInstanceArn sets the InstanceArn field's value.
func (s *TrafficDistributionGroupSummary) SetInstanceArn(v string) *TrafficDistributionGroupSummary {
	s.InstanceArn = &v
	return s
}

// SetIsDefault sets the IsDefault field's value.
func (s *TrafficDistributionGroupSummary) SetIsDefault(v bool) *TrafficDistributionGroupSummary {
	s.IsDefault = &v
	return s
}

// SetName sets the Name field's value.
func (s *TrafficDistributionGroupSummary) SetName(v string) *TrafficDistributionGroupSummary {
	s.Name = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *TrafficDistributionGroupSummary) SetStatus(v string) *TrafficDistributionGroupSummary {
	s.Status = &v
	return s
}

// Summary information about a traffic distribution group user.
type TrafficDistributionGroupUserSummary struct {
	_ struct{} `type:"structure"`

	// The identifier for the user. This can be the ID or the ARN of the user.
	UserId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TrafficDistributionGroupUserSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TrafficDistributionGroupUserSummary) GoString() string {
	return s.String()
}

// SetUserId sets the UserId field's value.
func (s *TrafficDistributionGroupUserSummary) SetUserId(v string) *TrafficDistributionGroupUserSummary {
	s.UserId = &v
	return s
}

// A structure that defines search criteria and matching logic to search for
// contacts by matching text with transcripts analyzed by Amazon Connect Contact
// Lens.
type Transcript struct {
	_ struct{} `type:"structure"`

	// The list of search criteria based on Contact Lens conversational analytics
	// transcript.
	//
	// Criteria is a required field
	Criteria []*TranscriptCriteria `type:"list" required:"true"`

	// The match type combining search criteria using multiple transcript criteria.
	MatchType *string `type:"string" enum:"SearchContactsMatchType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Transcript) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Transcript) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Transcript) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Transcript"}
	if s.Criteria == nil {
		invalidParams.Add(request.NewErrParamRequired("Criteria"))
	}
	if s.Criteria != nil {
		for i, v := range s.Criteria {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Criteria", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCriteria sets the Criteria field's value.
func (s *Transcript) SetCriteria(v []*TranscriptCriteria) *Transcript {
	s.Criteria = v
	return s
}

// SetMatchType sets the MatchType field's value.
func (s *Transcript) SetMatchType(v string) *Transcript {
	s.MatchType = &v
	return s
}

// A structure that defines search criteria base on words or phrases, participants
// in the Contact Lens conversational analytics transcript.
type TranscriptCriteria struct {
	_ struct{} `type:"structure"`

	// The match type combining search criteria using multiple search texts in a
	// transcript criteria.
	//
	// MatchType is a required field
	MatchType *string `type:"string" required:"true" enum:"SearchContactsMatchType"`

	// The participant role in a transcript
	//
	// ParticipantRole is a required field
	ParticipantRole *string `type:"string" required:"true" enum:"ParticipantRole"`

	// The words or phrases used to search within a transcript.
	//
	// SearchText is a required field
	SearchText []*string `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 TranscriptCriteria) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TranscriptCriteria) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TranscriptCriteria) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TranscriptCriteria"}
	if s.MatchType == nil {
		invalidParams.Add(request.NewErrParamRequired("MatchType"))
	}
	if s.ParticipantRole == nil {
		invalidParams.Add(request.NewErrParamRequired("ParticipantRole"))
	}
	if s.SearchText == nil {
		invalidParams.Add(request.NewErrParamRequired("SearchText"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMatchType sets the MatchType field's value.
func (s *TranscriptCriteria) SetMatchType(v string) *TranscriptCriteria {
	s.MatchType = &v
	return s
}

// SetParticipantRole sets the ParticipantRole field's value.
func (s *TranscriptCriteria) SetParticipantRole(v string) *TranscriptCriteria {
	s.ParticipantRole = &v
	return s
}

// SetSearchText sets the SearchText field's value.
func (s *TranscriptCriteria) SetSearchText(v []*string) *TranscriptCriteria {
	s.SearchText = v
	return s
}

type TransferContactInput struct {
	_ struct{} `type:"structure"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// The identifier of the flow.
	//
	// ContactFlowId is a required field
	ContactFlowId *string `type:"string" required:"true"`

	// The identifier of the contact in this instance of Amazon Connect.
	//
	// ContactId is a required field
	ContactId *string `min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// The identifier for the queue.
	QueueId *string `type:"string"`

	// The identifier for the user. This can be the ID or the ARN of the user.
	UserId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TransferContactInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TransferContactInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TransferContactInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TransferContactInput"}
	if s.ContactFlowId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactFlowId"))
	}
	if s.ContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactId"))
	}
	if s.ContactId != nil && len(*s.ContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.UserId != nil && len(*s.UserId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *TransferContactInput) SetClientToken(v string) *TransferContactInput {
	s.ClientToken = &v
	return s
}

// SetContactFlowId sets the ContactFlowId field's value.
func (s *TransferContactInput) SetContactFlowId(v string) *TransferContactInput {
	s.ContactFlowId = &v
	return s
}

// SetContactId sets the ContactId field's value.
func (s *TransferContactInput) SetContactId(v string) *TransferContactInput {
	s.ContactId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *TransferContactInput) SetInstanceId(v string) *TransferContactInput {
	s.InstanceId = &v
	return s
}

// SetQueueId sets the QueueId field's value.
func (s *TransferContactInput) SetQueueId(v string) *TransferContactInput {
	s.QueueId = &v
	return s
}

// SetUserId sets the UserId field's value.
func (s *TransferContactInput) SetUserId(v string) *TransferContactInput {
	s.UserId = &v
	return s
}

type TransferContactOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the contact.
	ContactArn *string `type:"string"`

	// The identifier of the contact in this instance of Amazon Connect.
	ContactId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TransferContactOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TransferContactOutput) GoString() string {
	return s.String()
}

// SetContactArn sets the ContactArn field's value.
func (s *TransferContactOutput) SetContactArn(v string) *TransferContactOutput {
	s.ContactArn = &v
	return s
}

// SetContactId sets the ContactId field's value.
func (s *TransferContactOutput) SetContactId(v string) *TransferContactOutput {
	s.ContactId = &v
	return s
}

type UntagContactInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the contact in this instance of Amazon Connect.
	//
	// ContactId is a required field
	ContactId *string `location:"uri" locationName:"ContactId" min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// A list of tag keys. Existing tags on the contact whose keys are members of
	// this list will be removed.
	//
	// 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 UntagContactInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagContactInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UntagContactInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UntagContactInput"}
	if s.ContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactId"))
	}
	if s.ContactId != nil && len(*s.ContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.TagKeys == nil {
		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
	}
	if s.TagKeys != nil && len(s.TagKeys) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TagKeys", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactId sets the ContactId field's value.
func (s *UntagContactInput) SetContactId(v string) *UntagContactInput {
	s.ContactId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UntagContactInput) SetInstanceId(v string) *UntagContactInput {
	s.InstanceId = &v
	return s
}

// SetTagKeys sets the TagKeys field's value.
func (s *UntagContactInput) SetTagKeys(v []*string) *UntagContactInput {
	s.TagKeys = v
	return s
}

type UntagContactOutput 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 UntagContactOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagContactOutput) GoString() string {
	return s.String()
}

type UntagResourceInput 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" type:"string" required:"true"`

	// The tag keys.
	//
	// TagKeys is a required field
	TagKeys []*string `location:"querystring" locationName:"tagKeys" min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UntagResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}
	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
	}
	if s.TagKeys == nil {
		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
	}
	if s.TagKeys != nil && len(s.TagKeys) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TagKeys", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceArn sets the ResourceArn field's value.
func (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput {
	s.ResourceArn = &v
	return s
}

// SetTagKeys sets the TagKeys field's value.
func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput {
	s.TagKeys = v
	return s
}

type UntagResourceOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceOutput) GoString() string {
	return s.String()
}

type UpdateAgentStatusInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the agent status.
	//
	// AgentStatusId is a required field
	AgentStatusId *string `location:"uri" locationName:"AgentStatusId" type:"string" required:"true"`

	// The description of the agent status.
	Description *string `type:"string"`

	// The display order of the agent status.
	DisplayOrder *int64 `min:"1" type:"integer"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the agent status.
	Name *string `min:"1" type:"string"`

	// A number indicating the reset order of the agent status.
	ResetOrderNumber *bool `type:"boolean"`

	// The state of the agent status.
	State *string `type:"string" enum:"AgentStatusState"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAgentStatusInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAgentStatusInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateAgentStatusInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateAgentStatusInput"}
	if s.AgentStatusId == nil {
		invalidParams.Add(request.NewErrParamRequired("AgentStatusId"))
	}
	if s.AgentStatusId != nil && len(*s.AgentStatusId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AgentStatusId", 1))
	}
	if s.DisplayOrder != nil && *s.DisplayOrder < 1 {
		invalidParams.Add(request.NewErrParamMinValue("DisplayOrder", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAgentStatusId sets the AgentStatusId field's value.
func (s *UpdateAgentStatusInput) SetAgentStatusId(v string) *UpdateAgentStatusInput {
	s.AgentStatusId = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateAgentStatusInput) SetDescription(v string) *UpdateAgentStatusInput {
	s.Description = &v
	return s
}

// SetDisplayOrder sets the DisplayOrder field's value.
func (s *UpdateAgentStatusInput) SetDisplayOrder(v int64) *UpdateAgentStatusInput {
	s.DisplayOrder = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateAgentStatusInput) SetInstanceId(v string) *UpdateAgentStatusInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateAgentStatusInput) SetName(v string) *UpdateAgentStatusInput {
	s.Name = &v
	return s
}

// SetResetOrderNumber sets the ResetOrderNumber field's value.
func (s *UpdateAgentStatusInput) SetResetOrderNumber(v bool) *UpdateAgentStatusInput {
	s.ResetOrderNumber = &v
	return s
}

// SetState sets the State field's value.
func (s *UpdateAgentStatusInput) SetState(v string) *UpdateAgentStatusInput {
	s.State = &v
	return s
}

type UpdateAgentStatusOutput 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 UpdateAgentStatusOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAgentStatusOutput) GoString() string {
	return s.String()
}

// The UpdateCase action definition.
type UpdateCaseActionDefinition struct {
	_ struct{} `type:"structure"`

	// An array of objects with Field ID and Value data.
	//
	// Fields is a required field
	Fields []*FieldValue `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 UpdateCaseActionDefinition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateCaseActionDefinition) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateCaseActionDefinition) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateCaseActionDefinition"}
	if s.Fields == nil {
		invalidParams.Add(request.NewErrParamRequired("Fields"))
	}
	if s.Fields != nil {
		for i, v := range s.Fields {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Fields", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFields sets the Fields field's value.
func (s *UpdateCaseActionDefinition) SetFields(v []*FieldValue) *UpdateCaseActionDefinition {
	s.Fields = v
	return s
}

type UpdateContactAttributesInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Connect attributes. These attributes can be accessed in flows
	// just like any other contact attributes.
	//
	// You can have up to 32,768 UTF-8 bytes across all attributes for a contact.
	// Attribute keys can include only alphanumeric, dash, and underscore characters.
	//
	// Attributes is a required field
	Attributes map[string]*string `type:"map" required:"true"`

	// The identifier of the contact. This is the identifier of the contact associated
	// with the first interaction with the contact center.
	//
	// InitialContactId is a required field
	InitialContactId *string `min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `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 UpdateContactAttributesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContactAttributesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateContactAttributesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateContactAttributesInput"}
	if s.Attributes == nil {
		invalidParams.Add(request.NewErrParamRequired("Attributes"))
	}
	if s.InitialContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("InitialContactId"))
	}
	if s.InitialContactId != nil && len(*s.InitialContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InitialContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAttributes sets the Attributes field's value.
func (s *UpdateContactAttributesInput) SetAttributes(v map[string]*string) *UpdateContactAttributesInput {
	s.Attributes = v
	return s
}

// SetInitialContactId sets the InitialContactId field's value.
func (s *UpdateContactAttributesInput) SetInitialContactId(v string) *UpdateContactAttributesInput {
	s.InitialContactId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateContactAttributesInput) SetInstanceId(v string) *UpdateContactAttributesInput {
	s.InstanceId = &v
	return s
}

type UpdateContactAttributesOutput 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 UpdateContactAttributesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContactAttributesOutput) GoString() string {
	return s.String()
}

type UpdateContactEvaluationInput struct {
	_ struct{} `type:"structure"`

	// A map of question identifiers to answer value.
	Answers map[string]*EvaluationAnswerInput_ `type:"map"`

	// A unique identifier for the contact evaluation.
	//
	// EvaluationId is a required field
	EvaluationId *string `location:"uri" locationName:"EvaluationId" min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// A map of question identifiers to note value.
	Notes map[string]*EvaluationNote `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 UpdateContactEvaluationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContactEvaluationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateContactEvaluationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateContactEvaluationInput"}
	if s.EvaluationId == nil {
		invalidParams.Add(request.NewErrParamRequired("EvaluationId"))
	}
	if s.EvaluationId != nil && len(*s.EvaluationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EvaluationId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAnswers sets the Answers field's value.
func (s *UpdateContactEvaluationInput) SetAnswers(v map[string]*EvaluationAnswerInput_) *UpdateContactEvaluationInput {
	s.Answers = v
	return s
}

// SetEvaluationId sets the EvaluationId field's value.
func (s *UpdateContactEvaluationInput) SetEvaluationId(v string) *UpdateContactEvaluationInput {
	s.EvaluationId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateContactEvaluationInput) SetInstanceId(v string) *UpdateContactEvaluationInput {
	s.InstanceId = &v
	return s
}

// SetNotes sets the Notes field's value.
func (s *UpdateContactEvaluationInput) SetNotes(v map[string]*EvaluationNote) *UpdateContactEvaluationInput {
	s.Notes = v
	return s
}

type UpdateContactEvaluationOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the contact evaluation resource.
	//
	// EvaluationArn is a required field
	EvaluationArn *string `type:"string" required:"true"`

	// A unique identifier for the contact evaluation.
	//
	// EvaluationId is a required field
	EvaluationId *string `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 UpdateContactEvaluationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContactEvaluationOutput) GoString() string {
	return s.String()
}

// SetEvaluationArn sets the EvaluationArn field's value.
func (s *UpdateContactEvaluationOutput) SetEvaluationArn(v string) *UpdateContactEvaluationOutput {
	s.EvaluationArn = &v
	return s
}

// SetEvaluationId sets the EvaluationId field's value.
func (s *UpdateContactEvaluationOutput) SetEvaluationId(v string) *UpdateContactEvaluationOutput {
	s.EvaluationId = &v
	return s
}

type UpdateContactFlowContentInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the flow.
	//
	// ContactFlowId is a required field
	ContactFlowId *string `location:"uri" locationName:"ContactFlowId" type:"string" required:"true"`

	// The JSON string that represents the content of the flow. For an example,
	// see Example flow in Amazon Connect Flow language (https://docs.aws.amazon.com/connect/latest/APIReference/flow-language-example.html).
	//
	// Length Constraints: Minimum length of 1. Maximum length of 256000.
	//
	// Content is a required field
	Content *string `type:"string" required:"true"`

	// The identifier of the Amazon Connect instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 UpdateContactFlowContentInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContactFlowContentInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateContactFlowContentInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateContactFlowContentInput"}
	if s.ContactFlowId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactFlowId"))
	}
	if s.ContactFlowId != nil && len(*s.ContactFlowId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactFlowId", 1))
	}
	if s.Content == nil {
		invalidParams.Add(request.NewErrParamRequired("Content"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactFlowId sets the ContactFlowId field's value.
func (s *UpdateContactFlowContentInput) SetContactFlowId(v string) *UpdateContactFlowContentInput {
	s.ContactFlowId = &v
	return s
}

// SetContent sets the Content field's value.
func (s *UpdateContactFlowContentInput) SetContent(v string) *UpdateContactFlowContentInput {
	s.Content = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateContactFlowContentInput) SetInstanceId(v string) *UpdateContactFlowContentInput {
	s.InstanceId = &v
	return s
}

type UpdateContactFlowContentOutput 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 UpdateContactFlowContentOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContactFlowContentOutput) GoString() string {
	return s.String()
}

type UpdateContactFlowMetadataInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the flow.
	//
	// ContactFlowId is a required field
	ContactFlowId *string `location:"uri" locationName:"ContactFlowId" type:"string" required:"true"`

	// The state of flow.
	ContactFlowState *string `type:"string" enum:"ContactFlowState"`

	// The description of the flow.
	Description *string `type:"string"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the flow.
	Name *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContactFlowMetadataInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContactFlowMetadataInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateContactFlowMetadataInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateContactFlowMetadataInput"}
	if s.ContactFlowId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactFlowId"))
	}
	if s.ContactFlowId != nil && len(*s.ContactFlowId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactFlowId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactFlowId sets the ContactFlowId field's value.
func (s *UpdateContactFlowMetadataInput) SetContactFlowId(v string) *UpdateContactFlowMetadataInput {
	s.ContactFlowId = &v
	return s
}

// SetContactFlowState sets the ContactFlowState field's value.
func (s *UpdateContactFlowMetadataInput) SetContactFlowState(v string) *UpdateContactFlowMetadataInput {
	s.ContactFlowState = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateContactFlowMetadataInput) SetDescription(v string) *UpdateContactFlowMetadataInput {
	s.Description = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateContactFlowMetadataInput) SetInstanceId(v string) *UpdateContactFlowMetadataInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateContactFlowMetadataInput) SetName(v string) *UpdateContactFlowMetadataInput {
	s.Name = &v
	return s
}

type UpdateContactFlowMetadataOutput 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 UpdateContactFlowMetadataOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContactFlowMetadataOutput) GoString() string {
	return s.String()
}

type UpdateContactFlowModuleContentInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the flow module.
	//
	// ContactFlowModuleId is a required field
	ContactFlowModuleId *string `location:"uri" locationName:"ContactFlowModuleId" min:"1" type:"string" required:"true"`

	// The JSON string that represents the content of the flow. For an example,
	// see Example flow in Amazon Connect Flow language (https://docs.aws.amazon.com/connect/latest/APIReference/flow-language-example.html).
	//
	// Content is a required field
	Content *string `min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 UpdateContactFlowModuleContentInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContactFlowModuleContentInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateContactFlowModuleContentInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateContactFlowModuleContentInput"}
	if s.ContactFlowModuleId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactFlowModuleId"))
	}
	if s.ContactFlowModuleId != nil && len(*s.ContactFlowModuleId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactFlowModuleId", 1))
	}
	if s.Content == nil {
		invalidParams.Add(request.NewErrParamRequired("Content"))
	}
	if s.Content != nil && len(*s.Content) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Content", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactFlowModuleId sets the ContactFlowModuleId field's value.
func (s *UpdateContactFlowModuleContentInput) SetContactFlowModuleId(v string) *UpdateContactFlowModuleContentInput {
	s.ContactFlowModuleId = &v
	return s
}

// SetContent sets the Content field's value.
func (s *UpdateContactFlowModuleContentInput) SetContent(v string) *UpdateContactFlowModuleContentInput {
	s.Content = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateContactFlowModuleContentInput) SetInstanceId(v string) *UpdateContactFlowModuleContentInput {
	s.InstanceId = &v
	return s
}

type UpdateContactFlowModuleContentOutput 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 UpdateContactFlowModuleContentOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContactFlowModuleContentOutput) GoString() string {
	return s.String()
}

type UpdateContactFlowModuleMetadataInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the flow module.
	//
	// ContactFlowModuleId is a required field
	ContactFlowModuleId *string `location:"uri" locationName:"ContactFlowModuleId" min:"1" type:"string" required:"true"`

	// The description of the flow module.
	Description *string `type:"string"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the flow module.
	Name *string `min:"1" type:"string"`

	// The state of flow module.
	State *string `type:"string" enum:"ContactFlowModuleState"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContactFlowModuleMetadataInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContactFlowModuleMetadataInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateContactFlowModuleMetadataInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateContactFlowModuleMetadataInput"}
	if s.ContactFlowModuleId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactFlowModuleId"))
	}
	if s.ContactFlowModuleId != nil && len(*s.ContactFlowModuleId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactFlowModuleId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactFlowModuleId sets the ContactFlowModuleId field's value.
func (s *UpdateContactFlowModuleMetadataInput) SetContactFlowModuleId(v string) *UpdateContactFlowModuleMetadataInput {
	s.ContactFlowModuleId = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateContactFlowModuleMetadataInput) SetDescription(v string) *UpdateContactFlowModuleMetadataInput {
	s.Description = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateContactFlowModuleMetadataInput) SetInstanceId(v string) *UpdateContactFlowModuleMetadataInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateContactFlowModuleMetadataInput) SetName(v string) *UpdateContactFlowModuleMetadataInput {
	s.Name = &v
	return s
}

// SetState sets the State field's value.
func (s *UpdateContactFlowModuleMetadataInput) SetState(v string) *UpdateContactFlowModuleMetadataInput {
	s.State = &v
	return s
}

type UpdateContactFlowModuleMetadataOutput 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 UpdateContactFlowModuleMetadataOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContactFlowModuleMetadataOutput) GoString() string {
	return s.String()
}

type UpdateContactFlowNameInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the flow.
	//
	// ContactFlowId is a required field
	ContactFlowId *string `location:"uri" locationName:"ContactFlowId" type:"string" required:"true"`

	// The description of the flow.
	Description *string `type:"string"`

	// The identifier of the Amazon Connect instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the flow.
	Name *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContactFlowNameInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContactFlowNameInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateContactFlowNameInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateContactFlowNameInput"}
	if s.ContactFlowId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactFlowId"))
	}
	if s.ContactFlowId != nil && len(*s.ContactFlowId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactFlowId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactFlowId sets the ContactFlowId field's value.
func (s *UpdateContactFlowNameInput) SetContactFlowId(v string) *UpdateContactFlowNameInput {
	s.ContactFlowId = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateContactFlowNameInput) SetDescription(v string) *UpdateContactFlowNameInput {
	s.Description = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateContactFlowNameInput) SetInstanceId(v string) *UpdateContactFlowNameInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateContactFlowNameInput) SetName(v string) *UpdateContactFlowNameInput {
	s.Name = &v
	return s
}

type UpdateContactFlowNameOutput 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 UpdateContactFlowNameOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContactFlowNameOutput) GoString() string {
	return s.String()
}

type UpdateContactInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the contact. This is the identifier of the contact associated
	// with the first interaction with your contact center.
	//
	// ContactId is a required field
	ContactId *string `location:"uri" locationName:"ContactId" min:"1" type:"string" required:"true"`

	// The description of the contact.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateContactInput's
	// String and GoString methods.
	Description *string `type:"string" sensitive:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the contact.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateContactInput's
	// String and GoString methods.
	Name *string `type:"string" sensitive:"true"`

	// Well-formed data on contact, shown to agents on Contact Control Panel (CCP).
	References map[string]*Reference `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 UpdateContactInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContactInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateContactInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateContactInput"}
	if s.ContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactId"))
	}
	if s.ContactId != nil && len(*s.ContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.References != nil {
		for i, v := range s.References {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "References", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactId sets the ContactId field's value.
func (s *UpdateContactInput) SetContactId(v string) *UpdateContactInput {
	s.ContactId = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateContactInput) SetDescription(v string) *UpdateContactInput {
	s.Description = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateContactInput) SetInstanceId(v string) *UpdateContactInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateContactInput) SetName(v string) *UpdateContactInput {
	s.Name = &v
	return s
}

// SetReferences sets the References field's value.
func (s *UpdateContactInput) SetReferences(v map[string]*Reference) *UpdateContactInput {
	s.References = v
	return s
}

type UpdateContactOutput 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 UpdateContactOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContactOutput) GoString() string {
	return s.String()
}

type UpdateContactRoutingDataInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the contact in this instance of Amazon Connect.
	//
	// ContactId is a required field
	ContactId *string `location:"uri" locationName:"ContactId" min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// Priority of the contact in the queue. The default priority for new contacts
	// is 5. You can raise the priority of a contact compared to other contacts
	// in the queue by assigning them a higher priority, such as 1 or 2.
	QueuePriority *int64 `min:"1" type:"long"`

	// The number of seconds to add or subtract from the contact's routing age.
	// Contacts are routed to agents on a first-come, first-serve basis. This means
	// that changing their amount of time in queue compared to others also changes
	// their position in queue.
	QueueTimeAdjustmentSeconds *int64 `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 UpdateContactRoutingDataInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContactRoutingDataInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateContactRoutingDataInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateContactRoutingDataInput"}
	if s.ContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactId"))
	}
	if s.ContactId != nil && len(*s.ContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.QueuePriority != nil && *s.QueuePriority < 1 {
		invalidParams.Add(request.NewErrParamMinValue("QueuePriority", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactId sets the ContactId field's value.
func (s *UpdateContactRoutingDataInput) SetContactId(v string) *UpdateContactRoutingDataInput {
	s.ContactId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateContactRoutingDataInput) SetInstanceId(v string) *UpdateContactRoutingDataInput {
	s.InstanceId = &v
	return s
}

// SetQueuePriority sets the QueuePriority field's value.
func (s *UpdateContactRoutingDataInput) SetQueuePriority(v int64) *UpdateContactRoutingDataInput {
	s.QueuePriority = &v
	return s
}

// SetQueueTimeAdjustmentSeconds sets the QueueTimeAdjustmentSeconds field's value.
func (s *UpdateContactRoutingDataInput) SetQueueTimeAdjustmentSeconds(v int64) *UpdateContactRoutingDataInput {
	s.QueueTimeAdjustmentSeconds = &v
	return s
}

type UpdateContactRoutingDataOutput 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 UpdateContactRoutingDataOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContactRoutingDataOutput) GoString() string {
	return s.String()
}

type UpdateContactScheduleInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the contact.
	//
	// ContactId is a required field
	ContactId *string `min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`

	// The timestamp, in Unix Epoch seconds format, at which to start running the
	// inbound flow. The scheduled time cannot be in the past. It must be within
	// up to 6 days in future.
	//
	// ScheduledTime is a required field
	ScheduledTime *time.Time `type:"timestamp" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContactScheduleInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContactScheduleInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateContactScheduleInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateContactScheduleInput"}
	if s.ContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactId"))
	}
	if s.ContactId != nil && len(*s.ContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.ScheduledTime == nil {
		invalidParams.Add(request.NewErrParamRequired("ScheduledTime"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactId sets the ContactId field's value.
func (s *UpdateContactScheduleInput) SetContactId(v string) *UpdateContactScheduleInput {
	s.ContactId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateContactScheduleInput) SetInstanceId(v string) *UpdateContactScheduleInput {
	s.InstanceId = &v
	return s
}

// SetScheduledTime sets the ScheduledTime field's value.
func (s *UpdateContactScheduleInput) SetScheduledTime(v time.Time) *UpdateContactScheduleInput {
	s.ScheduledTime = &v
	return s
}

type UpdateContactScheduleOutput 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 UpdateContactScheduleOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateContactScheduleOutput) GoString() string {
	return s.String()
}

type UpdateEvaluationFormInput struct {
	_ struct{} `type:"structure"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// A flag indicating whether the operation must create a new version.
	CreateNewVersion *bool `type:"boolean"`

	// The description of the evaluation form.
	Description *string `type:"string"`

	// The unique identifier for the evaluation form.
	//
	// EvaluationFormId is a required field
	EvaluationFormId *string `location:"uri" locationName:"EvaluationFormId" min:"1" type:"string" required:"true"`

	// A version of the evaluation form to update.
	//
	// EvaluationFormVersion is a required field
	EvaluationFormVersion *int64 `min:"1" type:"integer" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// Items that are part of the evaluation form. The total number of sections
	// and questions must not exceed 100 each. Questions must be contained in a
	// section.
	//
	// Items is a required field
	Items []*EvaluationFormItem `min:"1" type:"list" required:"true"`

	// A scoring strategy of the evaluation form.
	ScoringStrategy *EvaluationFormScoringStrategy `type:"structure"`

	// A title of the evaluation form.
	//
	// Title is a required field
	Title *string `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 UpdateEvaluationFormInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateEvaluationFormInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateEvaluationFormInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateEvaluationFormInput"}
	if s.EvaluationFormId == nil {
		invalidParams.Add(request.NewErrParamRequired("EvaluationFormId"))
	}
	if s.EvaluationFormId != nil && len(*s.EvaluationFormId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EvaluationFormId", 1))
	}
	if s.EvaluationFormVersion == nil {
		invalidParams.Add(request.NewErrParamRequired("EvaluationFormVersion"))
	}
	if s.EvaluationFormVersion != nil && *s.EvaluationFormVersion < 1 {
		invalidParams.Add(request.NewErrParamMinValue("EvaluationFormVersion", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Items == nil {
		invalidParams.Add(request.NewErrParamRequired("Items"))
	}
	if s.Items != nil && len(s.Items) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Items", 1))
	}
	if s.Title == nil {
		invalidParams.Add(request.NewErrParamRequired("Title"))
	}
	if s.Title != nil && len(*s.Title) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Title", 1))
	}
	if s.Items != nil {
		for i, v := range s.Items {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Items", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ScoringStrategy != nil {
		if err := s.ScoringStrategy.Validate(); err != nil {
			invalidParams.AddNested("ScoringStrategy", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *UpdateEvaluationFormInput) SetClientToken(v string) *UpdateEvaluationFormInput {
	s.ClientToken = &v
	return s
}

// SetCreateNewVersion sets the CreateNewVersion field's value.
func (s *UpdateEvaluationFormInput) SetCreateNewVersion(v bool) *UpdateEvaluationFormInput {
	s.CreateNewVersion = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateEvaluationFormInput) SetDescription(v string) *UpdateEvaluationFormInput {
	s.Description = &v
	return s
}

// SetEvaluationFormId sets the EvaluationFormId field's value.
func (s *UpdateEvaluationFormInput) SetEvaluationFormId(v string) *UpdateEvaluationFormInput {
	s.EvaluationFormId = &v
	return s
}

// SetEvaluationFormVersion sets the EvaluationFormVersion field's value.
func (s *UpdateEvaluationFormInput) SetEvaluationFormVersion(v int64) *UpdateEvaluationFormInput {
	s.EvaluationFormVersion = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateEvaluationFormInput) SetInstanceId(v string) *UpdateEvaluationFormInput {
	s.InstanceId = &v
	return s
}

// SetItems sets the Items field's value.
func (s *UpdateEvaluationFormInput) SetItems(v []*EvaluationFormItem) *UpdateEvaluationFormInput {
	s.Items = v
	return s
}

// SetScoringStrategy sets the ScoringStrategy field's value.
func (s *UpdateEvaluationFormInput) SetScoringStrategy(v *EvaluationFormScoringStrategy) *UpdateEvaluationFormInput {
	s.ScoringStrategy = v
	return s
}

// SetTitle sets the Title field's value.
func (s *UpdateEvaluationFormInput) SetTitle(v string) *UpdateEvaluationFormInput {
	s.Title = &v
	return s
}

type UpdateEvaluationFormOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the contact evaluation resource.
	//
	// EvaluationFormArn is a required field
	EvaluationFormArn *string `type:"string" required:"true"`

	// The unique identifier for the evaluation form.
	//
	// EvaluationFormId is a required field
	EvaluationFormId *string `min:"1" type:"string" required:"true"`

	// The version of the updated evaluation form resource.
	//
	// EvaluationFormVersion is a required field
	EvaluationFormVersion *int64 `min:"1" type:"integer" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateEvaluationFormOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateEvaluationFormOutput) GoString() string {
	return s.String()
}

// SetEvaluationFormArn sets the EvaluationFormArn field's value.
func (s *UpdateEvaluationFormOutput) SetEvaluationFormArn(v string) *UpdateEvaluationFormOutput {
	s.EvaluationFormArn = &v
	return s
}

// SetEvaluationFormId sets the EvaluationFormId field's value.
func (s *UpdateEvaluationFormOutput) SetEvaluationFormId(v string) *UpdateEvaluationFormOutput {
	s.EvaluationFormId = &v
	return s
}

// SetEvaluationFormVersion sets the EvaluationFormVersion field's value.
func (s *UpdateEvaluationFormOutput) SetEvaluationFormVersion(v int64) *UpdateEvaluationFormOutput {
	s.EvaluationFormVersion = &v
	return s
}

type UpdateHoursOfOperationInput struct {
	_ struct{} `type:"structure"`

	// Configuration information of the hours of operation.
	Config []*HoursOfOperationConfig `type:"list"`

	// The description of the hours of operation.
	Description *string `type:"string"`

	// The identifier of the hours of operation.
	//
	// HoursOfOperationId is a required field
	HoursOfOperationId *string `location:"uri" locationName:"HoursOfOperationId" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the hours of operation.
	Name *string `min:"1" type:"string"`

	// The time zone of the hours of operation.
	TimeZone *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateHoursOfOperationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateHoursOfOperationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateHoursOfOperationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateHoursOfOperationInput"}
	if s.HoursOfOperationId == nil {
		invalidParams.Add(request.NewErrParamRequired("HoursOfOperationId"))
	}
	if s.HoursOfOperationId != nil && len(*s.HoursOfOperationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("HoursOfOperationId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.Config != nil {
		for i, v := range s.Config {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Config", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConfig sets the Config field's value.
func (s *UpdateHoursOfOperationInput) SetConfig(v []*HoursOfOperationConfig) *UpdateHoursOfOperationInput {
	s.Config = v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateHoursOfOperationInput) SetDescription(v string) *UpdateHoursOfOperationInput {
	s.Description = &v
	return s
}

// SetHoursOfOperationId sets the HoursOfOperationId field's value.
func (s *UpdateHoursOfOperationInput) SetHoursOfOperationId(v string) *UpdateHoursOfOperationInput {
	s.HoursOfOperationId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateHoursOfOperationInput) SetInstanceId(v string) *UpdateHoursOfOperationInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateHoursOfOperationInput) SetName(v string) *UpdateHoursOfOperationInput {
	s.Name = &v
	return s
}

// SetTimeZone sets the TimeZone field's value.
func (s *UpdateHoursOfOperationInput) SetTimeZone(v string) *UpdateHoursOfOperationInput {
	s.TimeZone = &v
	return s
}

type UpdateHoursOfOperationOutput 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 UpdateHoursOfOperationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateHoursOfOperationOutput) GoString() string {
	return s.String()
}

type UpdateInstanceAttributeInput struct {
	_ struct{} `type:"structure"`

	// The type of attribute.
	//
	// Only allowlisted customers can consume USE_CUSTOM_TTS_VOICES. To access this
	// feature, contact Amazon Web Services Support for allowlisting.
	//
	// AttributeType is a required field
	AttributeType *string `location:"uri" locationName:"AttributeType" type:"string" required:"true" enum:"InstanceAttributeType"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The value for the attribute. Maximum character limit is 100.
	//
	// Value is a required field
	Value *string `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 UpdateInstanceAttributeInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateInstanceAttributeInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateInstanceAttributeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateInstanceAttributeInput"}
	if s.AttributeType == nil {
		invalidParams.Add(request.NewErrParamRequired("AttributeType"))
	}
	if s.AttributeType != nil && len(*s.AttributeType) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AttributeType", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}
	if s.Value != nil && len(*s.Value) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Value", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAttributeType sets the AttributeType field's value.
func (s *UpdateInstanceAttributeInput) SetAttributeType(v string) *UpdateInstanceAttributeInput {
	s.AttributeType = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateInstanceAttributeInput) SetInstanceId(v string) *UpdateInstanceAttributeInput {
	s.InstanceId = &v
	return s
}

// SetValue sets the Value field's value.
func (s *UpdateInstanceAttributeInput) SetValue(v string) *UpdateInstanceAttributeInput {
	s.Value = &v
	return s
}

type UpdateInstanceAttributeOutput 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 UpdateInstanceAttributeOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateInstanceAttributeOutput) GoString() string {
	return s.String()
}

type UpdateInstanceStorageConfigInput struct {
	_ struct{} `type:"structure"`

	// The existing association identifier that uniquely identifies the resource
	// type and storage config for the given instance ID.
	//
	// AssociationId is a required field
	AssociationId *string `location:"uri" locationName:"AssociationId" min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// A valid resource type.
	//
	// ResourceType is a required field
	ResourceType *string `location:"querystring" locationName:"resourceType" type:"string" required:"true" enum:"InstanceStorageResourceType"`

	// The storage configuration for the instance.
	//
	// StorageConfig is a required field
	StorageConfig *InstanceStorageConfig `type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateInstanceStorageConfigInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateInstanceStorageConfigInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateInstanceStorageConfigInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateInstanceStorageConfigInput"}
	if s.AssociationId == nil {
		invalidParams.Add(request.NewErrParamRequired("AssociationId"))
	}
	if s.AssociationId != nil && len(*s.AssociationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AssociationId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.ResourceType == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceType"))
	}
	if s.StorageConfig == nil {
		invalidParams.Add(request.NewErrParamRequired("StorageConfig"))
	}
	if s.StorageConfig != nil {
		if err := s.StorageConfig.Validate(); err != nil {
			invalidParams.AddNested("StorageConfig", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssociationId sets the AssociationId field's value.
func (s *UpdateInstanceStorageConfigInput) SetAssociationId(v string) *UpdateInstanceStorageConfigInput {
	s.AssociationId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateInstanceStorageConfigInput) SetInstanceId(v string) *UpdateInstanceStorageConfigInput {
	s.InstanceId = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *UpdateInstanceStorageConfigInput) SetResourceType(v string) *UpdateInstanceStorageConfigInput {
	s.ResourceType = &v
	return s
}

// SetStorageConfig sets the StorageConfig field's value.
func (s *UpdateInstanceStorageConfigInput) SetStorageConfig(v *InstanceStorageConfig) *UpdateInstanceStorageConfigInput {
	s.StorageConfig = v
	return s
}

type UpdateInstanceStorageConfigOutput 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 UpdateInstanceStorageConfigOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateInstanceStorageConfigOutput) GoString() string {
	return s.String()
}

// Configuration information for the chat participant role.
type UpdateParticipantRoleConfigChannelInfo struct {
	_ struct{} `type:"structure"`

	// Configuration information for the chat participant role.
	Chat *ChatParticipantRoleConfig `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 UpdateParticipantRoleConfigChannelInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateParticipantRoleConfigChannelInfo) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateParticipantRoleConfigChannelInfo) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateParticipantRoleConfigChannelInfo"}
	if s.Chat != nil {
		if err := s.Chat.Validate(); err != nil {
			invalidParams.AddNested("Chat", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetChat sets the Chat field's value.
func (s *UpdateParticipantRoleConfigChannelInfo) SetChat(v *ChatParticipantRoleConfig) *UpdateParticipantRoleConfigChannelInfo {
	s.Chat = v
	return s
}

type UpdateParticipantRoleConfigInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Connect channel you want to configure.
	//
	// ChannelConfiguration is a required field
	ChannelConfiguration *UpdateParticipantRoleConfigChannelInfo `type:"structure" required:"true"`

	// The identifier of the contact in this instance of Amazon Connect.
	//
	// ContactId is a required field
	ContactId *string `location:"uri" locationName:"ContactId" min:"1" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 UpdateParticipantRoleConfigInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateParticipantRoleConfigInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateParticipantRoleConfigInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateParticipantRoleConfigInput"}
	if s.ChannelConfiguration == nil {
		invalidParams.Add(request.NewErrParamRequired("ChannelConfiguration"))
	}
	if s.ContactId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactId"))
	}
	if s.ContactId != nil && len(*s.ContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContactId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.ChannelConfiguration != nil {
		if err := s.ChannelConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ChannelConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetChannelConfiguration sets the ChannelConfiguration field's value.
func (s *UpdateParticipantRoleConfigInput) SetChannelConfiguration(v *UpdateParticipantRoleConfigChannelInfo) *UpdateParticipantRoleConfigInput {
	s.ChannelConfiguration = v
	return s
}

// SetContactId sets the ContactId field's value.
func (s *UpdateParticipantRoleConfigInput) SetContactId(v string) *UpdateParticipantRoleConfigInput {
	s.ContactId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateParticipantRoleConfigInput) SetInstanceId(v string) *UpdateParticipantRoleConfigInput {
	s.InstanceId = &v
	return s
}

type UpdateParticipantRoleConfigOutput 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 UpdateParticipantRoleConfigOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateParticipantRoleConfigOutput) GoString() string {
	return s.String()
}

type UpdatePhoneNumberInput struct {
	_ struct{} `type:"structure"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// The identifier of the Amazon Connect instance that phone numbers are claimed
	// to. You can find the instance ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance. You must enter InstanceId
	// or TargetArn.
	InstanceId *string `min:"1" type:"string"`

	// A unique identifier for the phone number.
	//
	// PhoneNumberId is a required field
	PhoneNumberId *string `location:"uri" locationName:"PhoneNumberId" type:"string" required:"true"`

	// The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution
	// groups that phone number inbound traffic is routed through. You must enter
	// InstanceId or TargetArn.
	TargetArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdatePhoneNumberInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdatePhoneNumberInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdatePhoneNumberInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdatePhoneNumberInput"}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.PhoneNumberId == nil {
		invalidParams.Add(request.NewErrParamRequired("PhoneNumberId"))
	}
	if s.PhoneNumberId != nil && len(*s.PhoneNumberId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PhoneNumberId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *UpdatePhoneNumberInput) SetClientToken(v string) *UpdatePhoneNumberInput {
	s.ClientToken = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdatePhoneNumberInput) SetInstanceId(v string) *UpdatePhoneNumberInput {
	s.InstanceId = &v
	return s
}

// SetPhoneNumberId sets the PhoneNumberId field's value.
func (s *UpdatePhoneNumberInput) SetPhoneNumberId(v string) *UpdatePhoneNumberInput {
	s.PhoneNumberId = &v
	return s
}

// SetTargetArn sets the TargetArn field's value.
func (s *UpdatePhoneNumberInput) SetTargetArn(v string) *UpdatePhoneNumberInput {
	s.TargetArn = &v
	return s
}

type UpdatePhoneNumberMetadataInput struct {
	_ struct{} `type:"structure"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. If not provided, the Amazon Web Services SDK populates this
	// field. For more information about idempotency, see Making retries safe with
	// idempotent APIs (https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/).
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// The description of the phone number.
	PhoneNumberDescription *string `type:"string"`

	// The Amazon Resource Name (ARN) or resource ID of the phone number.
	//
	// PhoneNumberId is a required field
	PhoneNumberId *string `location:"uri" locationName:"PhoneNumberId" 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 UpdatePhoneNumberMetadataInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdatePhoneNumberMetadataInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdatePhoneNumberMetadataInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdatePhoneNumberMetadataInput"}
	if s.PhoneNumberId == nil {
		invalidParams.Add(request.NewErrParamRequired("PhoneNumberId"))
	}
	if s.PhoneNumberId != nil && len(*s.PhoneNumberId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PhoneNumberId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *UpdatePhoneNumberMetadataInput) SetClientToken(v string) *UpdatePhoneNumberMetadataInput {
	s.ClientToken = &v
	return s
}

// SetPhoneNumberDescription sets the PhoneNumberDescription field's value.
func (s *UpdatePhoneNumberMetadataInput) SetPhoneNumberDescription(v string) *UpdatePhoneNumberMetadataInput {
	s.PhoneNumberDescription = &v
	return s
}

// SetPhoneNumberId sets the PhoneNumberId field's value.
func (s *UpdatePhoneNumberMetadataInput) SetPhoneNumberId(v string) *UpdatePhoneNumberMetadataInput {
	s.PhoneNumberId = &v
	return s
}

type UpdatePhoneNumberMetadataOutput 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 UpdatePhoneNumberMetadataOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdatePhoneNumberMetadataOutput) GoString() string {
	return s.String()
}

type UpdatePhoneNumberOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the phone number.
	PhoneNumberArn *string `type:"string"`

	// A unique identifier for the phone number.
	PhoneNumberId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdatePhoneNumberOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdatePhoneNumberOutput) GoString() string {
	return s.String()
}

// SetPhoneNumberArn sets the PhoneNumberArn field's value.
func (s *UpdatePhoneNumberOutput) SetPhoneNumberArn(v string) *UpdatePhoneNumberOutput {
	s.PhoneNumberArn = &v
	return s
}

// SetPhoneNumberId sets the PhoneNumberId field's value.
func (s *UpdatePhoneNumberOutput) SetPhoneNumberId(v string) *UpdatePhoneNumberOutput {
	s.PhoneNumberId = &v
	return s
}

type UpdatePredefinedAttributeInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the predefined attribute.
	//
	// Name is a required field
	Name *string `location:"uri" locationName:"Name" min:"1" type:"string" required:"true"`

	// The values of the predefined attribute.
	Values *PredefinedAttributeValues `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 UpdatePredefinedAttributeInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdatePredefinedAttributeInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdatePredefinedAttributeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdatePredefinedAttributeInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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.Values != nil {
		if err := s.Values.Validate(); err != nil {
			invalidParams.AddNested("Values", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdatePredefinedAttributeInput) SetInstanceId(v string) *UpdatePredefinedAttributeInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdatePredefinedAttributeInput) SetName(v string) *UpdatePredefinedAttributeInput {
	s.Name = &v
	return s
}

// SetValues sets the Values field's value.
func (s *UpdatePredefinedAttributeInput) SetValues(v *PredefinedAttributeValues) *UpdatePredefinedAttributeInput {
	s.Values = v
	return s
}

type UpdatePredefinedAttributeOutput 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 UpdatePredefinedAttributeOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdatePredefinedAttributeOutput) GoString() string {
	return s.String()
}

type UpdatePromptInput struct {
	_ struct{} `type:"structure"`

	// A description of the prompt.
	Description *string `min:"1" type:"string"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the prompt.
	Name *string `min:"1" type:"string"`

	// A unique identifier for the prompt.
	//
	// PromptId is a required field
	PromptId *string `location:"uri" locationName:"PromptId" min:"1" type:"string" required:"true"`

	// The URI for the S3 bucket where the prompt is stored. You can provide S3
	// pre-signed URLs returned by the GetPromptFile (https://docs.aws.amazon.com/connect/latest/APIReference/API_GetPromptFile.html)
	// API instead of providing S3 URIs.
	S3Uri *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdatePromptInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdatePromptInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdatePromptInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdatePromptInput"}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.PromptId == nil {
		invalidParams.Add(request.NewErrParamRequired("PromptId"))
	}
	if s.PromptId != nil && len(*s.PromptId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PromptId", 1))
	}
	if s.S3Uri != nil && len(*s.S3Uri) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("S3Uri", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *UpdatePromptInput) SetDescription(v string) *UpdatePromptInput {
	s.Description = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdatePromptInput) SetInstanceId(v string) *UpdatePromptInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdatePromptInput) SetName(v string) *UpdatePromptInput {
	s.Name = &v
	return s
}

// SetPromptId sets the PromptId field's value.
func (s *UpdatePromptInput) SetPromptId(v string) *UpdatePromptInput {
	s.PromptId = &v
	return s
}

// SetS3Uri sets the S3Uri field's value.
func (s *UpdatePromptInput) SetS3Uri(v string) *UpdatePromptInput {
	s.S3Uri = &v
	return s
}

type UpdatePromptOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the prompt.
	PromptARN *string `type:"string"`

	// A unique identifier for the prompt.
	PromptId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdatePromptOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdatePromptOutput) GoString() string {
	return s.String()
}

// SetPromptARN sets the PromptARN field's value.
func (s *UpdatePromptOutput) SetPromptARN(v string) *UpdatePromptOutput {
	s.PromptARN = &v
	return s
}

// SetPromptId sets the PromptId field's value.
func (s *UpdatePromptOutput) SetPromptId(v string) *UpdatePromptOutput {
	s.PromptId = &v
	return s
}

type UpdateQueueHoursOfOperationInput struct {
	_ struct{} `type:"structure"`

	// The identifier for the hours of operation.
	//
	// HoursOfOperationId is a required field
	HoursOfOperationId *string `type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier for the queue.
	//
	// QueueId is a required field
	QueueId *string `location:"uri" locationName:"QueueId" 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 UpdateQueueHoursOfOperationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateQueueHoursOfOperationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateQueueHoursOfOperationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateQueueHoursOfOperationInput"}
	if s.HoursOfOperationId == nil {
		invalidParams.Add(request.NewErrParamRequired("HoursOfOperationId"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.QueueId == nil {
		invalidParams.Add(request.NewErrParamRequired("QueueId"))
	}
	if s.QueueId != nil && len(*s.QueueId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QueueId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetHoursOfOperationId sets the HoursOfOperationId field's value.
func (s *UpdateQueueHoursOfOperationInput) SetHoursOfOperationId(v string) *UpdateQueueHoursOfOperationInput {
	s.HoursOfOperationId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateQueueHoursOfOperationInput) SetInstanceId(v string) *UpdateQueueHoursOfOperationInput {
	s.InstanceId = &v
	return s
}

// SetQueueId sets the QueueId field's value.
func (s *UpdateQueueHoursOfOperationInput) SetQueueId(v string) *UpdateQueueHoursOfOperationInput {
	s.QueueId = &v
	return s
}

type UpdateQueueHoursOfOperationOutput 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 UpdateQueueHoursOfOperationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateQueueHoursOfOperationOutput) GoString() string {
	return s.String()
}

type UpdateQueueMaxContactsInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The maximum number of contacts that can be in the queue before it is considered
	// full.
	MaxContacts *int64 `type:"integer"`

	// The identifier for the queue.
	//
	// QueueId is a required field
	QueueId *string `location:"uri" locationName:"QueueId" 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 UpdateQueueMaxContactsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateQueueMaxContactsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateQueueMaxContactsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateQueueMaxContactsInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.QueueId == nil {
		invalidParams.Add(request.NewErrParamRequired("QueueId"))
	}
	if s.QueueId != nil && len(*s.QueueId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QueueId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateQueueMaxContactsInput) SetInstanceId(v string) *UpdateQueueMaxContactsInput {
	s.InstanceId = &v
	return s
}

// SetMaxContacts sets the MaxContacts field's value.
func (s *UpdateQueueMaxContactsInput) SetMaxContacts(v int64) *UpdateQueueMaxContactsInput {
	s.MaxContacts = &v
	return s
}

// SetQueueId sets the QueueId field's value.
func (s *UpdateQueueMaxContactsInput) SetQueueId(v string) *UpdateQueueMaxContactsInput {
	s.QueueId = &v
	return s
}

type UpdateQueueMaxContactsOutput 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 UpdateQueueMaxContactsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateQueueMaxContactsOutput) GoString() string {
	return s.String()
}

type UpdateQueueNameInput struct {
	_ struct{} `type:"structure"`

	// The description of the queue.
	Description *string `min:"1" type:"string"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the queue.
	Name *string `min:"1" type:"string"`

	// The identifier for the queue.
	//
	// QueueId is a required field
	QueueId *string `location:"uri" locationName:"QueueId" 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 UpdateQueueNameInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateQueueNameInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateQueueNameInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateQueueNameInput"}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.QueueId == nil {
		invalidParams.Add(request.NewErrParamRequired("QueueId"))
	}
	if s.QueueId != nil && len(*s.QueueId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QueueId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *UpdateQueueNameInput) SetDescription(v string) *UpdateQueueNameInput {
	s.Description = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateQueueNameInput) SetInstanceId(v string) *UpdateQueueNameInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateQueueNameInput) SetName(v string) *UpdateQueueNameInput {
	s.Name = &v
	return s
}

// SetQueueId sets the QueueId field's value.
func (s *UpdateQueueNameInput) SetQueueId(v string) *UpdateQueueNameInput {
	s.QueueId = &v
	return s
}

type UpdateQueueNameOutput 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 UpdateQueueNameOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateQueueNameOutput) GoString() string {
	return s.String()
}

type UpdateQueueOutboundCallerConfigInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The outbound caller ID name, number, and outbound whisper flow.
	//
	// OutboundCallerConfig is a required field
	OutboundCallerConfig *OutboundCallerConfig `type:"structure" required:"true"`

	// The identifier for the queue.
	//
	// QueueId is a required field
	QueueId *string `location:"uri" locationName:"QueueId" 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 UpdateQueueOutboundCallerConfigInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateQueueOutboundCallerConfigInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateQueueOutboundCallerConfigInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateQueueOutboundCallerConfigInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.OutboundCallerConfig == nil {
		invalidParams.Add(request.NewErrParamRequired("OutboundCallerConfig"))
	}
	if s.QueueId == nil {
		invalidParams.Add(request.NewErrParamRequired("QueueId"))
	}
	if s.QueueId != nil && len(*s.QueueId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QueueId", 1))
	}
	if s.OutboundCallerConfig != nil {
		if err := s.OutboundCallerConfig.Validate(); err != nil {
			invalidParams.AddNested("OutboundCallerConfig", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateQueueOutboundCallerConfigInput) SetInstanceId(v string) *UpdateQueueOutboundCallerConfigInput {
	s.InstanceId = &v
	return s
}

// SetOutboundCallerConfig sets the OutboundCallerConfig field's value.
func (s *UpdateQueueOutboundCallerConfigInput) SetOutboundCallerConfig(v *OutboundCallerConfig) *UpdateQueueOutboundCallerConfigInput {
	s.OutboundCallerConfig = v
	return s
}

// SetQueueId sets the QueueId field's value.
func (s *UpdateQueueOutboundCallerConfigInput) SetQueueId(v string) *UpdateQueueOutboundCallerConfigInput {
	s.QueueId = &v
	return s
}

type UpdateQueueOutboundCallerConfigOutput 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 UpdateQueueOutboundCallerConfigOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateQueueOutboundCallerConfigOutput) GoString() string {
	return s.String()
}

type UpdateQueueStatusInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier for the queue.
	//
	// QueueId is a required field
	QueueId *string `location:"uri" locationName:"QueueId" type:"string" required:"true"`

	// The status of the queue.
	//
	// Status is a required field
	Status *string `type:"string" required:"true" enum:"QueueStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateQueueStatusInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateQueueStatusInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateQueueStatusInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateQueueStatusInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.QueueId == nil {
		invalidParams.Add(request.NewErrParamRequired("QueueId"))
	}
	if s.QueueId != nil && len(*s.QueueId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QueueId", 1))
	}
	if s.Status == nil {
		invalidParams.Add(request.NewErrParamRequired("Status"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateQueueStatusInput) SetInstanceId(v string) *UpdateQueueStatusInput {
	s.InstanceId = &v
	return s
}

// SetQueueId sets the QueueId field's value.
func (s *UpdateQueueStatusInput) SetQueueId(v string) *UpdateQueueStatusInput {
	s.QueueId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateQueueStatusInput) SetStatus(v string) *UpdateQueueStatusInput {
	s.Status = &v
	return s
}

type UpdateQueueStatusOutput 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 UpdateQueueStatusOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateQueueStatusOutput) GoString() string {
	return s.String()
}

type UpdateQuickConnectConfigInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// Information about the configuration settings for the quick connect.
	//
	// QuickConnectConfig is a required field
	QuickConnectConfig *QuickConnectConfig `type:"structure" required:"true"`

	// The identifier for the quick connect.
	//
	// QuickConnectId is a required field
	QuickConnectId *string `location:"uri" locationName:"QuickConnectId" 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 UpdateQuickConnectConfigInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateQuickConnectConfigInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateQuickConnectConfigInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateQuickConnectConfigInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.QuickConnectConfig == nil {
		invalidParams.Add(request.NewErrParamRequired("QuickConnectConfig"))
	}
	if s.QuickConnectId == nil {
		invalidParams.Add(request.NewErrParamRequired("QuickConnectId"))
	}
	if s.QuickConnectId != nil && len(*s.QuickConnectId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QuickConnectId", 1))
	}
	if s.QuickConnectConfig != nil {
		if err := s.QuickConnectConfig.Validate(); err != nil {
			invalidParams.AddNested("QuickConnectConfig", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateQuickConnectConfigInput) SetInstanceId(v string) *UpdateQuickConnectConfigInput {
	s.InstanceId = &v
	return s
}

// SetQuickConnectConfig sets the QuickConnectConfig field's value.
func (s *UpdateQuickConnectConfigInput) SetQuickConnectConfig(v *QuickConnectConfig) *UpdateQuickConnectConfigInput {
	s.QuickConnectConfig = v
	return s
}

// SetQuickConnectId sets the QuickConnectId field's value.
func (s *UpdateQuickConnectConfigInput) SetQuickConnectId(v string) *UpdateQuickConnectConfigInput {
	s.QuickConnectId = &v
	return s
}

type UpdateQuickConnectConfigOutput 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 UpdateQuickConnectConfigOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateQuickConnectConfigOutput) GoString() string {
	return s.String()
}

type UpdateQuickConnectNameInput struct {
	_ struct{} `type:"structure"`

	// The description of the quick connect.
	Description *string `type:"string"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the quick connect.
	Name *string `min:"1" type:"string"`

	// The identifier for the quick connect.
	//
	// QuickConnectId is a required field
	QuickConnectId *string `location:"uri" locationName:"QuickConnectId" 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 UpdateQuickConnectNameInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateQuickConnectNameInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateQuickConnectNameInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateQuickConnectNameInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.QuickConnectId == nil {
		invalidParams.Add(request.NewErrParamRequired("QuickConnectId"))
	}
	if s.QuickConnectId != nil && len(*s.QuickConnectId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QuickConnectId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *UpdateQuickConnectNameInput) SetDescription(v string) *UpdateQuickConnectNameInput {
	s.Description = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateQuickConnectNameInput) SetInstanceId(v string) *UpdateQuickConnectNameInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateQuickConnectNameInput) SetName(v string) *UpdateQuickConnectNameInput {
	s.Name = &v
	return s
}

// SetQuickConnectId sets the QuickConnectId field's value.
func (s *UpdateQuickConnectNameInput) SetQuickConnectId(v string) *UpdateQuickConnectNameInput {
	s.QuickConnectId = &v
	return s
}

type UpdateQuickConnectNameOutput 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 UpdateQuickConnectNameOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateQuickConnectNameOutput) GoString() string {
	return s.String()
}

type UpdateRoutingProfileAgentAvailabilityTimerInput struct {
	_ struct{} `type:"structure"`

	// Whether agents with this routing profile will have their routing order calculated
	// based on time since their last inbound contact or longest idle time.
	//
	// AgentAvailabilityTimer is a required field
	AgentAvailabilityTimer *string `type:"string" required:"true" enum:"AgentAvailabilityTimer"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the routing profile.
	//
	// RoutingProfileId is a required field
	RoutingProfileId *string `location:"uri" locationName:"RoutingProfileId" 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 UpdateRoutingProfileAgentAvailabilityTimerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateRoutingProfileAgentAvailabilityTimerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateRoutingProfileAgentAvailabilityTimerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateRoutingProfileAgentAvailabilityTimerInput"}
	if s.AgentAvailabilityTimer == nil {
		invalidParams.Add(request.NewErrParamRequired("AgentAvailabilityTimer"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.RoutingProfileId == nil {
		invalidParams.Add(request.NewErrParamRequired("RoutingProfileId"))
	}
	if s.RoutingProfileId != nil && len(*s.RoutingProfileId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RoutingProfileId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAgentAvailabilityTimer sets the AgentAvailabilityTimer field's value.
func (s *UpdateRoutingProfileAgentAvailabilityTimerInput) SetAgentAvailabilityTimer(v string) *UpdateRoutingProfileAgentAvailabilityTimerInput {
	s.AgentAvailabilityTimer = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateRoutingProfileAgentAvailabilityTimerInput) SetInstanceId(v string) *UpdateRoutingProfileAgentAvailabilityTimerInput {
	s.InstanceId = &v
	return s
}

// SetRoutingProfileId sets the RoutingProfileId field's value.
func (s *UpdateRoutingProfileAgentAvailabilityTimerInput) SetRoutingProfileId(v string) *UpdateRoutingProfileAgentAvailabilityTimerInput {
	s.RoutingProfileId = &v
	return s
}

type UpdateRoutingProfileAgentAvailabilityTimerOutput 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 UpdateRoutingProfileAgentAvailabilityTimerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateRoutingProfileAgentAvailabilityTimerOutput) GoString() string {
	return s.String()
}

type UpdateRoutingProfileConcurrencyInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The channels that agents can handle in the Contact Control Panel (CCP).
	//
	// MediaConcurrencies is a required field
	MediaConcurrencies []*MediaConcurrency `type:"list" required:"true"`

	// The identifier of the routing profile.
	//
	// RoutingProfileId is a required field
	RoutingProfileId *string `location:"uri" locationName:"RoutingProfileId" 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 UpdateRoutingProfileConcurrencyInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateRoutingProfileConcurrencyInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateRoutingProfileConcurrencyInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateRoutingProfileConcurrencyInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.MediaConcurrencies == nil {
		invalidParams.Add(request.NewErrParamRequired("MediaConcurrencies"))
	}
	if s.RoutingProfileId == nil {
		invalidParams.Add(request.NewErrParamRequired("RoutingProfileId"))
	}
	if s.RoutingProfileId != nil && len(*s.RoutingProfileId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RoutingProfileId", 1))
	}
	if s.MediaConcurrencies != nil {
		for i, v := range s.MediaConcurrencies {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "MediaConcurrencies", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateRoutingProfileConcurrencyInput) SetInstanceId(v string) *UpdateRoutingProfileConcurrencyInput {
	s.InstanceId = &v
	return s
}

// SetMediaConcurrencies sets the MediaConcurrencies field's value.
func (s *UpdateRoutingProfileConcurrencyInput) SetMediaConcurrencies(v []*MediaConcurrency) *UpdateRoutingProfileConcurrencyInput {
	s.MediaConcurrencies = v
	return s
}

// SetRoutingProfileId sets the RoutingProfileId field's value.
func (s *UpdateRoutingProfileConcurrencyInput) SetRoutingProfileId(v string) *UpdateRoutingProfileConcurrencyInput {
	s.RoutingProfileId = &v
	return s
}

type UpdateRoutingProfileConcurrencyOutput 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 UpdateRoutingProfileConcurrencyOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateRoutingProfileConcurrencyOutput) GoString() string {
	return s.String()
}

type UpdateRoutingProfileDefaultOutboundQueueInput struct {
	_ struct{} `type:"structure"`

	// The identifier for the default outbound queue.
	//
	// DefaultOutboundQueueId is a required field
	DefaultOutboundQueueId *string `type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the routing profile.
	//
	// RoutingProfileId is a required field
	RoutingProfileId *string `location:"uri" locationName:"RoutingProfileId" 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 UpdateRoutingProfileDefaultOutboundQueueInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateRoutingProfileDefaultOutboundQueueInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateRoutingProfileDefaultOutboundQueueInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateRoutingProfileDefaultOutboundQueueInput"}
	if s.DefaultOutboundQueueId == nil {
		invalidParams.Add(request.NewErrParamRequired("DefaultOutboundQueueId"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.RoutingProfileId == nil {
		invalidParams.Add(request.NewErrParamRequired("RoutingProfileId"))
	}
	if s.RoutingProfileId != nil && len(*s.RoutingProfileId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RoutingProfileId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDefaultOutboundQueueId sets the DefaultOutboundQueueId field's value.
func (s *UpdateRoutingProfileDefaultOutboundQueueInput) SetDefaultOutboundQueueId(v string) *UpdateRoutingProfileDefaultOutboundQueueInput {
	s.DefaultOutboundQueueId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateRoutingProfileDefaultOutboundQueueInput) SetInstanceId(v string) *UpdateRoutingProfileDefaultOutboundQueueInput {
	s.InstanceId = &v
	return s
}

// SetRoutingProfileId sets the RoutingProfileId field's value.
func (s *UpdateRoutingProfileDefaultOutboundQueueInput) SetRoutingProfileId(v string) *UpdateRoutingProfileDefaultOutboundQueueInput {
	s.RoutingProfileId = &v
	return s
}

type UpdateRoutingProfileDefaultOutboundQueueOutput 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 UpdateRoutingProfileDefaultOutboundQueueOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateRoutingProfileDefaultOutboundQueueOutput) GoString() string {
	return s.String()
}

type UpdateRoutingProfileNameInput struct {
	_ struct{} `type:"structure"`

	// The description of the routing profile. Must not be more than 250 characters.
	Description *string `min:"1" type:"string"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the routing profile. Must not be more than 127 characters.
	Name *string `min:"1" type:"string"`

	// The identifier of the routing profile.
	//
	// RoutingProfileId is a required field
	RoutingProfileId *string `location:"uri" locationName:"RoutingProfileId" 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 UpdateRoutingProfileNameInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateRoutingProfileNameInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateRoutingProfileNameInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateRoutingProfileNameInput"}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.RoutingProfileId == nil {
		invalidParams.Add(request.NewErrParamRequired("RoutingProfileId"))
	}
	if s.RoutingProfileId != nil && len(*s.RoutingProfileId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RoutingProfileId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *UpdateRoutingProfileNameInput) SetDescription(v string) *UpdateRoutingProfileNameInput {
	s.Description = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateRoutingProfileNameInput) SetInstanceId(v string) *UpdateRoutingProfileNameInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateRoutingProfileNameInput) SetName(v string) *UpdateRoutingProfileNameInput {
	s.Name = &v
	return s
}

// SetRoutingProfileId sets the RoutingProfileId field's value.
func (s *UpdateRoutingProfileNameInput) SetRoutingProfileId(v string) *UpdateRoutingProfileNameInput {
	s.RoutingProfileId = &v
	return s
}

type UpdateRoutingProfileNameOutput 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 UpdateRoutingProfileNameOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateRoutingProfileNameOutput) GoString() string {
	return s.String()
}

type UpdateRoutingProfileQueuesInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The queues to be updated for this routing profile. Queues must first be associated
	// to the routing profile. You can do this using AssociateRoutingProfileQueues.
	//
	// QueueConfigs is a required field
	QueueConfigs []*RoutingProfileQueueConfig `min:"1" type:"list" required:"true"`

	// The identifier of the routing profile.
	//
	// RoutingProfileId is a required field
	RoutingProfileId *string `location:"uri" locationName:"RoutingProfileId" 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 UpdateRoutingProfileQueuesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateRoutingProfileQueuesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateRoutingProfileQueuesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateRoutingProfileQueuesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.QueueConfigs == nil {
		invalidParams.Add(request.NewErrParamRequired("QueueConfigs"))
	}
	if s.QueueConfigs != nil && len(s.QueueConfigs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QueueConfigs", 1))
	}
	if s.RoutingProfileId == nil {
		invalidParams.Add(request.NewErrParamRequired("RoutingProfileId"))
	}
	if s.RoutingProfileId != nil && len(*s.RoutingProfileId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RoutingProfileId", 1))
	}
	if s.QueueConfigs != nil {
		for i, v := range s.QueueConfigs {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "QueueConfigs", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateRoutingProfileQueuesInput) SetInstanceId(v string) *UpdateRoutingProfileQueuesInput {
	s.InstanceId = &v
	return s
}

// SetQueueConfigs sets the QueueConfigs field's value.
func (s *UpdateRoutingProfileQueuesInput) SetQueueConfigs(v []*RoutingProfileQueueConfig) *UpdateRoutingProfileQueuesInput {
	s.QueueConfigs = v
	return s
}

// SetRoutingProfileId sets the RoutingProfileId field's value.
func (s *UpdateRoutingProfileQueuesInput) SetRoutingProfileId(v string) *UpdateRoutingProfileQueuesInput {
	s.RoutingProfileId = &v
	return s
}

type UpdateRoutingProfileQueuesOutput 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 UpdateRoutingProfileQueuesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateRoutingProfileQueuesOutput) GoString() string {
	return s.String()
}

type UpdateRuleInput struct {
	_ struct{} `type:"structure"`

	// A list of actions to be run when the rule is triggered.
	//
	// Actions is a required field
	Actions []*RuleAction `type:"list" required:"true"`

	// The conditions of the rule.
	//
	// Function is a required field
	Function *string `type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the rule. You can change the name only if TriggerEventSource
	// is one of the following values: OnZendeskTicketCreate | OnZendeskTicketStatusUpdate
	// | OnSalesforceCaseCreate
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The publish status of the rule.
	//
	// PublishStatus is a required field
	PublishStatus *string `type:"string" required:"true" enum:"RulePublishStatus"`

	// A unique identifier for the rule.
	//
	// RuleId is a required field
	RuleId *string `location:"uri" locationName:"RuleId" 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 UpdateRuleInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateRuleInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateRuleInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateRuleInput"}
	if s.Actions == nil {
		invalidParams.Add(request.NewErrParamRequired("Actions"))
	}
	if s.Function == nil {
		invalidParams.Add(request.NewErrParamRequired("Function"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 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.PublishStatus == nil {
		invalidParams.Add(request.NewErrParamRequired("PublishStatus"))
	}
	if s.RuleId == nil {
		invalidParams.Add(request.NewErrParamRequired("RuleId"))
	}
	if s.RuleId != nil && len(*s.RuleId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RuleId", 1))
	}
	if s.Actions != nil {
		for i, v := range s.Actions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *UpdateRuleInput) SetActions(v []*RuleAction) *UpdateRuleInput {
	s.Actions = v
	return s
}

// SetFunction sets the Function field's value.
func (s *UpdateRuleInput) SetFunction(v string) *UpdateRuleInput {
	s.Function = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateRuleInput) SetInstanceId(v string) *UpdateRuleInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateRuleInput) SetName(v string) *UpdateRuleInput {
	s.Name = &v
	return s
}

// SetPublishStatus sets the PublishStatus field's value.
func (s *UpdateRuleInput) SetPublishStatus(v string) *UpdateRuleInput {
	s.PublishStatus = &v
	return s
}

// SetRuleId sets the RuleId field's value.
func (s *UpdateRuleInput) SetRuleId(v string) *UpdateRuleInput {
	s.RuleId = &v
	return s
}

type UpdateRuleOutput 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 UpdateRuleOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateRuleOutput) GoString() string {
	return s.String()
}

type UpdateSecurityProfileInput struct {
	_ struct{} `type:"structure"`

	// The list of tags that a security profile uses to restrict access to resources
	// in Amazon Connect.
	AllowedAccessControlTags map[string]*string `type:"map"`

	// This API is in preview release for Amazon Connect and is subject to change.
	//
	// A list of the third-party application's metadata.
	Applications []*Application `type:"list"`

	// The description of the security profile.
	Description *string `type:"string"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The permissions granted to a security profile. For a list of valid permissions,
	// see List of security profile permissions (https://docs.aws.amazon.com/connect/latest/adminguide/security-profile-list.html).
	Permissions []*string `type:"list"`

	// The identifier for the security profle.
	//
	// SecurityProfileId is a required field
	SecurityProfileId *string `location:"uri" locationName:"SecurityProfileId" type:"string" required:"true"`

	// The list of resources that a security profile applies tag restrictions to
	// in Amazon Connect.
	TagRestrictedResources []*string `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 UpdateSecurityProfileInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSecurityProfileInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateSecurityProfileInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateSecurityProfileInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.SecurityProfileId == nil {
		invalidParams.Add(request.NewErrParamRequired("SecurityProfileId"))
	}
	if s.SecurityProfileId != nil && len(*s.SecurityProfileId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SecurityProfileId", 1))
	}
	if s.Applications != nil {
		for i, v := range s.Applications {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Applications", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAllowedAccessControlTags sets the AllowedAccessControlTags field's value.
func (s *UpdateSecurityProfileInput) SetAllowedAccessControlTags(v map[string]*string) *UpdateSecurityProfileInput {
	s.AllowedAccessControlTags = v
	return s
}

// SetApplications sets the Applications field's value.
func (s *UpdateSecurityProfileInput) SetApplications(v []*Application) *UpdateSecurityProfileInput {
	s.Applications = v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateSecurityProfileInput) SetDescription(v string) *UpdateSecurityProfileInput {
	s.Description = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateSecurityProfileInput) SetInstanceId(v string) *UpdateSecurityProfileInput {
	s.InstanceId = &v
	return s
}

// SetPermissions sets the Permissions field's value.
func (s *UpdateSecurityProfileInput) SetPermissions(v []*string) *UpdateSecurityProfileInput {
	s.Permissions = v
	return s
}

// SetSecurityProfileId sets the SecurityProfileId field's value.
func (s *UpdateSecurityProfileInput) SetSecurityProfileId(v string) *UpdateSecurityProfileInput {
	s.SecurityProfileId = &v
	return s
}

// SetTagRestrictedResources sets the TagRestrictedResources field's value.
func (s *UpdateSecurityProfileInput) SetTagRestrictedResources(v []*string) *UpdateSecurityProfileInput {
	s.TagRestrictedResources = v
	return s
}

type UpdateSecurityProfileOutput 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 UpdateSecurityProfileOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSecurityProfileOutput) GoString() string {
	return s.String()
}

type UpdateTaskTemplateInput struct {
	_ struct{} `type:"structure"`

	// Constraints that are applicable to the fields listed.
	Constraints *TaskTemplateConstraints `type:"structure"`

	// The identifier of the flow that runs by default when a task is created by
	// referencing this template.
	ContactFlowId *string `type:"string"`

	// The default values for fields when a task is created by referencing this
	// template.
	Defaults *TaskTemplateDefaults `type:"structure"`

	// The description of the task template.
	Description *string `min:"1" type:"string"`

	// Fields that are part of the template.
	Fields []*TaskTemplateField `type:"list"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the task template.
	Name *string `min:"1" type:"string"`

	// Marks a template as ACTIVE or INACTIVE for a task to refer to it. Tasks can
	// only be created from ACTIVE templates. If a template is marked as INACTIVE,
	// then a task that refers to this template cannot be created.
	Status *string `type:"string" enum:"TaskTemplateStatus"`

	// A unique identifier for the task template.
	//
	// TaskTemplateId is a required field
	TaskTemplateId *string `location:"uri" locationName:"TaskTemplateId" 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 UpdateTaskTemplateInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateTaskTemplateInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateTaskTemplateInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateTaskTemplateInput"}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.TaskTemplateId == nil {
		invalidParams.Add(request.NewErrParamRequired("TaskTemplateId"))
	}
	if s.TaskTemplateId != nil && len(*s.TaskTemplateId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TaskTemplateId", 1))
	}
	if s.Constraints != nil {
		if err := s.Constraints.Validate(); err != nil {
			invalidParams.AddNested("Constraints", err.(request.ErrInvalidParams))
		}
	}
	if s.Defaults != nil {
		if err := s.Defaults.Validate(); err != nil {
			invalidParams.AddNested("Defaults", err.(request.ErrInvalidParams))
		}
	}
	if s.Fields != nil {
		for i, v := range s.Fields {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Fields", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConstraints sets the Constraints field's value.
func (s *UpdateTaskTemplateInput) SetConstraints(v *TaskTemplateConstraints) *UpdateTaskTemplateInput {
	s.Constraints = v
	return s
}

// SetContactFlowId sets the ContactFlowId field's value.
func (s *UpdateTaskTemplateInput) SetContactFlowId(v string) *UpdateTaskTemplateInput {
	s.ContactFlowId = &v
	return s
}

// SetDefaults sets the Defaults field's value.
func (s *UpdateTaskTemplateInput) SetDefaults(v *TaskTemplateDefaults) *UpdateTaskTemplateInput {
	s.Defaults = v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateTaskTemplateInput) SetDescription(v string) *UpdateTaskTemplateInput {
	s.Description = &v
	return s
}

// SetFields sets the Fields field's value.
func (s *UpdateTaskTemplateInput) SetFields(v []*TaskTemplateField) *UpdateTaskTemplateInput {
	s.Fields = v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateTaskTemplateInput) SetInstanceId(v string) *UpdateTaskTemplateInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateTaskTemplateInput) SetName(v string) *UpdateTaskTemplateInput {
	s.Name = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateTaskTemplateInput) SetStatus(v string) *UpdateTaskTemplateInput {
	s.Status = &v
	return s
}

// SetTaskTemplateId sets the TaskTemplateId field's value.
func (s *UpdateTaskTemplateInput) SetTaskTemplateId(v string) *UpdateTaskTemplateInput {
	s.TaskTemplateId = &v
	return s
}

type UpdateTaskTemplateOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the task template resource.
	Arn *string `min:"1" type:"string"`

	// Constraints that are applicable to the fields listed.
	Constraints *TaskTemplateConstraints `type:"structure"`

	// The identifier of the flow that runs by default when a task is created by
	// referencing this template.
	ContactFlowId *string `type:"string"`

	// The timestamp when the task template was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The default values for fields when a task is created by referencing this
	// template.
	Defaults *TaskTemplateDefaults `type:"structure"`

	// The description of the task template.
	Description *string `min:"1" type:"string"`

	// Fields that are part of the template.
	Fields []*TaskTemplateField `type:"list"`

	// The identifier of the task template resource.
	Id *string `min:"1" type:"string"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	InstanceId *string `min:"1" type:"string"`

	// The timestamp when the task template was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The name of the task template.
	Name *string `min:"1" type:"string"`

	// Marks a template as ACTIVE or INACTIVE for a task to refer to it. Tasks can
	// only be created from ACTIVE templates. If a template is marked as INACTIVE,
	// then a task that refers to this template cannot be created.
	Status *string `type:"string" enum:"TaskTemplateStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateTaskTemplateOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateTaskTemplateOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *UpdateTaskTemplateOutput) SetArn(v string) *UpdateTaskTemplateOutput {
	s.Arn = &v
	return s
}

// SetConstraints sets the Constraints field's value.
func (s *UpdateTaskTemplateOutput) SetConstraints(v *TaskTemplateConstraints) *UpdateTaskTemplateOutput {
	s.Constraints = v
	return s
}

// SetContactFlowId sets the ContactFlowId field's value.
func (s *UpdateTaskTemplateOutput) SetContactFlowId(v string) *UpdateTaskTemplateOutput {
	s.ContactFlowId = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *UpdateTaskTemplateOutput) SetCreatedTime(v time.Time) *UpdateTaskTemplateOutput {
	s.CreatedTime = &v
	return s
}

// SetDefaults sets the Defaults field's value.
func (s *UpdateTaskTemplateOutput) SetDefaults(v *TaskTemplateDefaults) *UpdateTaskTemplateOutput {
	s.Defaults = v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateTaskTemplateOutput) SetDescription(v string) *UpdateTaskTemplateOutput {
	s.Description = &v
	return s
}

// SetFields sets the Fields field's value.
func (s *UpdateTaskTemplateOutput) SetFields(v []*TaskTemplateField) *UpdateTaskTemplateOutput {
	s.Fields = v
	return s
}

// SetId sets the Id field's value.
func (s *UpdateTaskTemplateOutput) SetId(v string) *UpdateTaskTemplateOutput {
	s.Id = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateTaskTemplateOutput) SetInstanceId(v string) *UpdateTaskTemplateOutput {
	s.InstanceId = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *UpdateTaskTemplateOutput) SetLastModifiedTime(v time.Time) *UpdateTaskTemplateOutput {
	s.LastModifiedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateTaskTemplateOutput) SetName(v string) *UpdateTaskTemplateOutput {
	s.Name = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateTaskTemplateOutput) SetStatus(v string) *UpdateTaskTemplateOutput {
	s.Status = &v
	return s
}

type UpdateTrafficDistributionInput struct {
	_ struct{} `type:"structure"`

	// The distribution of agents between the instance and its replica(s).
	AgentConfig *AgentConfig `type:"structure"`

	// The identifier of the traffic distribution group. This can be the ID or the
	// ARN if the API is being called in the Region where the traffic distribution
	// group was created. The ARN must be provided if the call is from the replicated
	// Region.
	//
	// Id is a required field
	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`

	// The distribution that determines which Amazon Web Services Regions should
	// be used to sign in agents in to both the instance and its replica(s).
	SignInConfig *SignInConfig `type:"structure"`

	// The distribution of traffic between the instance and its replica(s).
	TelephonyConfig *TelephonyConfig `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 UpdateTrafficDistributionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateTrafficDistributionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateTrafficDistributionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateTrafficDistributionInput"}
	if s.Id == nil {
		invalidParams.Add(request.NewErrParamRequired("Id"))
	}
	if s.Id != nil && len(*s.Id) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
	}
	if s.AgentConfig != nil {
		if err := s.AgentConfig.Validate(); err != nil {
			invalidParams.AddNested("AgentConfig", err.(request.ErrInvalidParams))
		}
	}
	if s.SignInConfig != nil {
		if err := s.SignInConfig.Validate(); err != nil {
			invalidParams.AddNested("SignInConfig", err.(request.ErrInvalidParams))
		}
	}
	if s.TelephonyConfig != nil {
		if err := s.TelephonyConfig.Validate(); err != nil {
			invalidParams.AddNested("TelephonyConfig", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAgentConfig sets the AgentConfig field's value.
func (s *UpdateTrafficDistributionInput) SetAgentConfig(v *AgentConfig) *UpdateTrafficDistributionInput {
	s.AgentConfig = v
	return s
}

// SetId sets the Id field's value.
func (s *UpdateTrafficDistributionInput) SetId(v string) *UpdateTrafficDistributionInput {
	s.Id = &v
	return s
}

// SetSignInConfig sets the SignInConfig field's value.
func (s *UpdateTrafficDistributionInput) SetSignInConfig(v *SignInConfig) *UpdateTrafficDistributionInput {
	s.SignInConfig = v
	return s
}

// SetTelephonyConfig sets the TelephonyConfig field's value.
func (s *UpdateTrafficDistributionInput) SetTelephonyConfig(v *TelephonyConfig) *UpdateTrafficDistributionInput {
	s.TelephonyConfig = v
	return s
}

type UpdateTrafficDistributionOutput 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 UpdateTrafficDistributionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateTrafficDistributionOutput) GoString() string {
	return s.String()
}

type UpdateUserHierarchyGroupNameInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the hierarchy group.
	//
	// HierarchyGroupId is a required field
	HierarchyGroupId *string `location:"uri" locationName:"HierarchyGroupId" type:"string" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the hierarchy group. Must not be more than 100 characters.
	//
	// Name is a required field
	Name *string `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 UpdateUserHierarchyGroupNameInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUserHierarchyGroupNameInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateUserHierarchyGroupNameInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateUserHierarchyGroupNameInput"}
	if s.HierarchyGroupId == nil {
		invalidParams.Add(request.NewErrParamRequired("HierarchyGroupId"))
	}
	if s.HierarchyGroupId != nil && len(*s.HierarchyGroupId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("HierarchyGroupId", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetHierarchyGroupId sets the HierarchyGroupId field's value.
func (s *UpdateUserHierarchyGroupNameInput) SetHierarchyGroupId(v string) *UpdateUserHierarchyGroupNameInput {
	s.HierarchyGroupId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateUserHierarchyGroupNameInput) SetInstanceId(v string) *UpdateUserHierarchyGroupNameInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateUserHierarchyGroupNameInput) SetName(v string) *UpdateUserHierarchyGroupNameInput {
	s.Name = &v
	return s
}

type UpdateUserHierarchyGroupNameOutput 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 UpdateUserHierarchyGroupNameOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUserHierarchyGroupNameOutput) GoString() string {
	return s.String()
}

type UpdateUserHierarchyInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the hierarchy group.
	HierarchyGroupId *string `type:"string"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the user account.
	//
	// UserId is a required field
	UserId *string `location:"uri" locationName:"UserId" 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 UpdateUserHierarchyInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUserHierarchyInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateUserHierarchyInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateUserHierarchyInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.UserId == nil {
		invalidParams.Add(request.NewErrParamRequired("UserId"))
	}
	if s.UserId != nil && len(*s.UserId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetHierarchyGroupId sets the HierarchyGroupId field's value.
func (s *UpdateUserHierarchyInput) SetHierarchyGroupId(v string) *UpdateUserHierarchyInput {
	s.HierarchyGroupId = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateUserHierarchyInput) SetInstanceId(v string) *UpdateUserHierarchyInput {
	s.InstanceId = &v
	return s
}

// SetUserId sets the UserId field's value.
func (s *UpdateUserHierarchyInput) SetUserId(v string) *UpdateUserHierarchyInput {
	s.UserId = &v
	return s
}

type UpdateUserHierarchyOutput 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 UpdateUserHierarchyOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUserHierarchyOutput) GoString() string {
	return s.String()
}

type UpdateUserHierarchyStructureInput struct {
	_ struct{} `type:"structure"`

	// The hierarchy levels to update.
	//
	// HierarchyStructure is a required field
	HierarchyStructure *HierarchyStructureUpdate `type:"structure" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" 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 UpdateUserHierarchyStructureInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUserHierarchyStructureInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateUserHierarchyStructureInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateUserHierarchyStructureInput"}
	if s.HierarchyStructure == nil {
		invalidParams.Add(request.NewErrParamRequired("HierarchyStructure"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.HierarchyStructure != nil {
		if err := s.HierarchyStructure.Validate(); err != nil {
			invalidParams.AddNested("HierarchyStructure", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetHierarchyStructure sets the HierarchyStructure field's value.
func (s *UpdateUserHierarchyStructureInput) SetHierarchyStructure(v *HierarchyStructureUpdate) *UpdateUserHierarchyStructureInput {
	s.HierarchyStructure = v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateUserHierarchyStructureInput) SetInstanceId(v string) *UpdateUserHierarchyStructureInput {
	s.InstanceId = &v
	return s
}

type UpdateUserHierarchyStructureOutput 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 UpdateUserHierarchyStructureOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUserHierarchyStructureOutput) GoString() string {
	return s.String()
}

type UpdateUserIdentityInfoInput struct {
	_ struct{} `type:"structure"`

	// The identity information for the user.
	//
	// IdentityInfo is a required field
	IdentityInfo *UserIdentityInfo `type:"structure" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the user account.
	//
	// UserId is a required field
	UserId *string `location:"uri" locationName:"UserId" 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 UpdateUserIdentityInfoInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUserIdentityInfoInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateUserIdentityInfoInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateUserIdentityInfoInput"}
	if s.IdentityInfo == nil {
		invalidParams.Add(request.NewErrParamRequired("IdentityInfo"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.UserId == nil {
		invalidParams.Add(request.NewErrParamRequired("UserId"))
	}
	if s.UserId != nil && len(*s.UserId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserId", 1))
	}
	if s.IdentityInfo != nil {
		if err := s.IdentityInfo.Validate(); err != nil {
			invalidParams.AddNested("IdentityInfo", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetIdentityInfo sets the IdentityInfo field's value.
func (s *UpdateUserIdentityInfoInput) SetIdentityInfo(v *UserIdentityInfo) *UpdateUserIdentityInfoInput {
	s.IdentityInfo = v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateUserIdentityInfoInput) SetInstanceId(v string) *UpdateUserIdentityInfoInput {
	s.InstanceId = &v
	return s
}

// SetUserId sets the UserId field's value.
func (s *UpdateUserIdentityInfoInput) SetUserId(v string) *UpdateUserIdentityInfoInput {
	s.UserId = &v
	return s
}

type UpdateUserIdentityInfoOutput 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 UpdateUserIdentityInfoOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUserIdentityInfoOutput) GoString() string {
	return s.String()
}

type UpdateUserPhoneConfigInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// Information about phone configuration settings for the user.
	//
	// PhoneConfig is a required field
	PhoneConfig *UserPhoneConfig `type:"structure" required:"true"`

	// The identifier of the user account.
	//
	// UserId is a required field
	UserId *string `location:"uri" locationName:"UserId" 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 UpdateUserPhoneConfigInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUserPhoneConfigInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateUserPhoneConfigInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateUserPhoneConfigInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.PhoneConfig == nil {
		invalidParams.Add(request.NewErrParamRequired("PhoneConfig"))
	}
	if s.UserId == nil {
		invalidParams.Add(request.NewErrParamRequired("UserId"))
	}
	if s.UserId != nil && len(*s.UserId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserId", 1))
	}
	if s.PhoneConfig != nil {
		if err := s.PhoneConfig.Validate(); err != nil {
			invalidParams.AddNested("PhoneConfig", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateUserPhoneConfigInput) SetInstanceId(v string) *UpdateUserPhoneConfigInput {
	s.InstanceId = &v
	return s
}

// SetPhoneConfig sets the PhoneConfig field's value.
func (s *UpdateUserPhoneConfigInput) SetPhoneConfig(v *UserPhoneConfig) *UpdateUserPhoneConfigInput {
	s.PhoneConfig = v
	return s
}

// SetUserId sets the UserId field's value.
func (s *UpdateUserPhoneConfigInput) SetUserId(v string) *UpdateUserPhoneConfigInput {
	s.UserId = &v
	return s
}

type UpdateUserPhoneConfigOutput 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 UpdateUserPhoneConfigOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUserPhoneConfigOutput) GoString() string {
	return s.String()
}

type UpdateUserProficienciesInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the user account.
	//
	// UserId is a required field
	UserId *string `location:"uri" locationName:"UserId" type:"string" required:"true"`

	// The proficiencies to be updated for the user. Proficiencies must first be
	// associated to the user. You can do this using AssociateUserProficiencies
	// API.
	//
	// UserProficiencies is a required field
	UserProficiencies []*UserProficiency `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 UpdateUserProficienciesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUserProficienciesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateUserProficienciesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateUserProficienciesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.UserId == nil {
		invalidParams.Add(request.NewErrParamRequired("UserId"))
	}
	if s.UserId != nil && len(*s.UserId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserId", 1))
	}
	if s.UserProficiencies == nil {
		invalidParams.Add(request.NewErrParamRequired("UserProficiencies"))
	}
	if s.UserProficiencies != nil {
		for i, v := range s.UserProficiencies {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "UserProficiencies", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateUserProficienciesInput) SetInstanceId(v string) *UpdateUserProficienciesInput {
	s.InstanceId = &v
	return s
}

// SetUserId sets the UserId field's value.
func (s *UpdateUserProficienciesInput) SetUserId(v string) *UpdateUserProficienciesInput {
	s.UserId = &v
	return s
}

// SetUserProficiencies sets the UserProficiencies field's value.
func (s *UpdateUserProficienciesInput) SetUserProficiencies(v []*UserProficiency) *UpdateUserProficienciesInput {
	s.UserProficiencies = v
	return s
}

type UpdateUserProficienciesOutput 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 UpdateUserProficienciesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUserProficienciesOutput) GoString() string {
	return s.String()
}

type UpdateUserRoutingProfileInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifier of the routing profile for the user.
	//
	// RoutingProfileId is a required field
	RoutingProfileId *string `type:"string" required:"true"`

	// The identifier of the user account.
	//
	// UserId is a required field
	UserId *string `location:"uri" locationName:"UserId" 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 UpdateUserRoutingProfileInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUserRoutingProfileInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateUserRoutingProfileInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateUserRoutingProfileInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.RoutingProfileId == nil {
		invalidParams.Add(request.NewErrParamRequired("RoutingProfileId"))
	}
	if s.UserId == nil {
		invalidParams.Add(request.NewErrParamRequired("UserId"))
	}
	if s.UserId != nil && len(*s.UserId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateUserRoutingProfileInput) SetInstanceId(v string) *UpdateUserRoutingProfileInput {
	s.InstanceId = &v
	return s
}

// SetRoutingProfileId sets the RoutingProfileId field's value.
func (s *UpdateUserRoutingProfileInput) SetRoutingProfileId(v string) *UpdateUserRoutingProfileInput {
	s.RoutingProfileId = &v
	return s
}

// SetUserId sets the UserId field's value.
func (s *UpdateUserRoutingProfileInput) SetUserId(v string) *UpdateUserRoutingProfileInput {
	s.UserId = &v
	return s
}

type UpdateUserRoutingProfileOutput 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 UpdateUserRoutingProfileOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUserRoutingProfileOutput) GoString() string {
	return s.String()
}

type UpdateUserSecurityProfilesInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Connect instance. You can find the instance
	// ID (https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html)
	// in the Amazon Resource Name (ARN) of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The identifiers of the security profiles for the user.
	//
	// SecurityProfileIds is a required field
	SecurityProfileIds []*string `min:"1" type:"list" required:"true"`

	// The identifier of the user account.
	//
	// UserId is a required field
	UserId *string `location:"uri" locationName:"UserId" 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 UpdateUserSecurityProfilesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUserSecurityProfilesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateUserSecurityProfilesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateUserSecurityProfilesInput"}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.SecurityProfileIds == nil {
		invalidParams.Add(request.NewErrParamRequired("SecurityProfileIds"))
	}
	if s.SecurityProfileIds != nil && len(s.SecurityProfileIds) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SecurityProfileIds", 1))
	}
	if s.UserId == nil {
		invalidParams.Add(request.NewErrParamRequired("UserId"))
	}
	if s.UserId != nil && len(*s.UserId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateUserSecurityProfilesInput) SetInstanceId(v string) *UpdateUserSecurityProfilesInput {
	s.InstanceId = &v
	return s
}

// SetSecurityProfileIds sets the SecurityProfileIds field's value.
func (s *UpdateUserSecurityProfilesInput) SetSecurityProfileIds(v []*string) *UpdateUserSecurityProfilesInput {
	s.SecurityProfileIds = v
	return s
}

// SetUserId sets the UserId field's value.
func (s *UpdateUserSecurityProfilesInput) SetUserId(v string) *UpdateUserSecurityProfilesInput {
	s.UserId = &v
	return s
}

type UpdateUserSecurityProfilesOutput 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 UpdateUserSecurityProfilesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUserSecurityProfilesOutput) GoString() string {
	return s.String()
}

type UpdateViewContentInput struct {
	_ struct{} `type:"structure"`

	// View content containing all content necessary to render a view except for
	// runtime input data and the runtime input schema, which is auto-generated
	// by this operation.
	//
	// The total uncompressed content has a maximum file size of 400kB.
	//
	// Content is a required field
	Content *ViewInputContent `type:"structure" required:"true"`

	// The identifier of the Amazon Connect instance. You can find the instanceId
	// in the ARN of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// Indicates the view status as either SAVED or PUBLISHED. The PUBLISHED status
	// will initiate validation on the content.
	//
	// Status is a required field
	Status *string `type:"string" required:"true" enum:"ViewStatus"`

	// The identifier of the view. Both ViewArn and ViewId can be used.
	//
	// ViewId is a required field
	ViewId *string `location:"uri" locationName:"ViewId" 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 UpdateViewContentInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateViewContentInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateViewContentInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateViewContentInput"}
	if s.Content == nil {
		invalidParams.Add(request.NewErrParamRequired("Content"))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Status == nil {
		invalidParams.Add(request.NewErrParamRequired("Status"))
	}
	if s.ViewId == nil {
		invalidParams.Add(request.NewErrParamRequired("ViewId"))
	}
	if s.ViewId != nil && len(*s.ViewId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ViewId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContent sets the Content field's value.
func (s *UpdateViewContentInput) SetContent(v *ViewInputContent) *UpdateViewContentInput {
	s.Content = v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateViewContentInput) SetInstanceId(v string) *UpdateViewContentInput {
	s.InstanceId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateViewContentInput) SetStatus(v string) *UpdateViewContentInput {
	s.Status = &v
	return s
}

// SetViewId sets the ViewId field's value.
func (s *UpdateViewContentInput) SetViewId(v string) *UpdateViewContentInput {
	s.ViewId = &v
	return s
}

type UpdateViewContentOutput struct {
	_ struct{} `type:"structure"`

	// A view resource object. Contains metadata and content necessary to render
	// the view.
	View *View `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 UpdateViewContentOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateViewContentOutput) GoString() string {
	return s.String()
}

// SetView sets the View field's value.
func (s *UpdateViewContentOutput) SetView(v *View) *UpdateViewContentOutput {
	s.View = v
	return s
}

type UpdateViewMetadataInput struct {
	_ struct{} `type:"structure"`

	// The description of the view.
	Description *string `min:"1" type:"string"`

	// The identifier of the Amazon Connect instance. You can find the instanceId
	// in the ARN of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `location:"uri" locationName:"InstanceId" min:"1" type:"string" required:"true"`

	// The name of the view.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateViewMetadataInput's
	// String and GoString methods.
	Name *string `min:"1" type:"string" sensitive:"true"`

	// The identifier of the view. Both ViewArn and ViewId can be used.
	//
	// ViewId is a required field
	ViewId *string `location:"uri" locationName:"ViewId" 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 UpdateViewMetadataInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateViewMetadataInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateViewMetadataInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateViewMetadataInput"}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.ViewId == nil {
		invalidParams.Add(request.NewErrParamRequired("ViewId"))
	}
	if s.ViewId != nil && len(*s.ViewId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ViewId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *UpdateViewMetadataInput) SetDescription(v string) *UpdateViewMetadataInput {
	s.Description = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *UpdateViewMetadataInput) SetInstanceId(v string) *UpdateViewMetadataInput {
	s.InstanceId = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateViewMetadataInput) SetName(v string) *UpdateViewMetadataInput {
	s.Name = &v
	return s
}

// SetViewId sets the ViewId field's value.
func (s *UpdateViewMetadataInput) SetViewId(v string) *UpdateViewMetadataInput {
	s.ViewId = &v
	return s
}

type UpdateViewMetadataOutput 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 UpdateViewMetadataOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateViewMetadataOutput) GoString() string {
	return s.String()
}

// The URL reference.
type UrlReference struct {
	_ struct{} `type:"structure"`

	// Identifier of the URL reference.
	Name *string `min:"1" type:"string"`

	// A valid URL.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UrlReference) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UrlReference) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *UrlReference) SetName(v string) *UrlReference {
	s.Name = &v
	return s
}

// SetValue sets the Value field's value.
func (s *UrlReference) SetValue(v string) *UrlReference {
	s.Value = &v
	return s
}

// Contains the use case.
type UseCase struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the use case.
	UseCaseArn *string `type:"string"`

	// The identifier for the use case.
	UseCaseId *string `min:"1" type:"string"`

	// The type of use case to associate to the integration association. Each integration
	// association can have only one of each use case type.
	UseCaseType *string `type:"string" enum:"UseCaseType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UseCase) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UseCase) GoString() string {
	return s.String()
}

// SetUseCaseArn sets the UseCaseArn field's value.
func (s *UseCase) SetUseCaseArn(v string) *UseCase {
	s.UseCaseArn = &v
	return s
}

// SetUseCaseId sets the UseCaseId field's value.
func (s *UseCase) SetUseCaseId(v string) *UseCase {
	s.UseCaseId = &v
	return s
}

// SetUseCaseType sets the UseCaseType field's value.
func (s *UseCase) SetUseCaseType(v string) *UseCase {
	s.UseCaseType = &v
	return s
}

// Contains information about a user account for an Amazon Connect instance.
type User struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the user account.
	Arn *string `type:"string"`

	// The identifier of the user account in the directory used for identity management.
	DirectoryUserId *string `type:"string"`

	// The identifier of the hierarchy group for the user.
	HierarchyGroupId *string `type:"string"`

	// The identifier of the user account.
	Id *string `type:"string"`

	// Information about the user identity.
	IdentityInfo *UserIdentityInfo `type:"structure"`

	// The Amazon Web Services Region where this resource was last modified.
	LastModifiedRegion *string `type:"string"`

	// The timestamp when this resource was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// Information about the phone configuration for the user.
	PhoneConfig *UserPhoneConfig `type:"structure"`

	// The identifier of the routing profile for the user.
	RoutingProfileId *string `type:"string"`

	// The identifiers of the security profiles for the user.
	SecurityProfileIds []*string `min:"1" type:"list"`

	// The tags.
	Tags map[string]*string `min:"1" type:"map"`

	// The user name assigned to the user account.
	Username *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s User) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s User) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *User) SetArn(v string) *User {
	s.Arn = &v
	return s
}

// SetDirectoryUserId sets the DirectoryUserId field's value.
func (s *User) SetDirectoryUserId(v string) *User {
	s.DirectoryUserId = &v
	return s
}

// SetHierarchyGroupId sets the HierarchyGroupId field's value.
func (s *User) SetHierarchyGroupId(v string) *User {
	s.HierarchyGroupId = &v
	return s
}

// SetId sets the Id field's value.
func (s *User) SetId(v string) *User {
	s.Id = &v
	return s
}

// SetIdentityInfo sets the IdentityInfo field's value.
func (s *User) SetIdentityInfo(v *UserIdentityInfo) *User {
	s.IdentityInfo = v
	return s
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *User) SetLastModifiedRegion(v string) *User {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *User) SetLastModifiedTime(v time.Time) *User {
	s.LastModifiedTime = &v
	return s
}

// SetPhoneConfig sets the PhoneConfig field's value.
func (s *User) SetPhoneConfig(v *UserPhoneConfig) *User {
	s.PhoneConfig = v
	return s
}

// SetRoutingProfileId sets the RoutingProfileId field's value.
func (s *User) SetRoutingProfileId(v string) *User {
	s.RoutingProfileId = &v
	return s
}

// SetSecurityProfileIds sets the SecurityProfileIds field's value.
func (s *User) SetSecurityProfileIds(v []*string) *User {
	s.SecurityProfileIds = v
	return s
}

// SetTags sets the Tags field's value.
func (s *User) SetTags(v map[string]*string) *User {
	s.Tags = v
	return s
}

// SetUsername sets the Username field's value.
func (s *User) SetUsername(v string) *User {
	s.Username = &v
	return s
}

// Data for a user.
type UserData struct {
	_ struct{} `type:"structure"`

	// A map of active slots by channel. The key is a channel name. The value is
	// an integer: the number of active slots.
	ActiveSlotsByChannel map[string]*int64 `type:"map"`

	// A map of available slots by channel. The key is a channel name. The value
	// is an integer: the available number of slots.
	AvailableSlotsByChannel map[string]*int64 `type:"map"`

	// A list of contact reference information.
	Contacts []*AgentContactReference `type:"list"`

	// Contains information about the levels of a hierarchy group assigned to a
	// user.
	HierarchyPath *HierarchyPathReference `type:"structure"`

	// A map of maximum slots by channel. The key is a channel name. The value is
	// an integer: the maximum number of slots. This is calculated from MediaConcurrency
	// (https://docs.aws.amazon.com/connect/latest/APIReference/API_MediaConcurrency.html)
	// of the RoutingProfile assigned to the agent.
	MaxSlotsByChannel map[string]*int64 `type:"map"`

	// The Next status of the agent.
	NextStatus *string `min:"1" type:"string"`

	// Information about the routing profile that is assigned to the user.
	RoutingProfile *RoutingProfileReference `type:"structure"`

	// The status of the agent that they manually set in their Contact Control Panel
	// (CCP), or that the supervisor manually changes in the real-time metrics report.
	Status *AgentStatusReference `type:"structure"`

	// Information about the user for the data that is returned. It contains the
	// resourceId and ARN of the user.
	User *UserReference `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 UserData) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserData) GoString() string {
	return s.String()
}

// SetActiveSlotsByChannel sets the ActiveSlotsByChannel field's value.
func (s *UserData) SetActiveSlotsByChannel(v map[string]*int64) *UserData {
	s.ActiveSlotsByChannel = v
	return s
}

// SetAvailableSlotsByChannel sets the AvailableSlotsByChannel field's value.
func (s *UserData) SetAvailableSlotsByChannel(v map[string]*int64) *UserData {
	s.AvailableSlotsByChannel = v
	return s
}

// SetContacts sets the Contacts field's value.
func (s *UserData) SetContacts(v []*AgentContactReference) *UserData {
	s.Contacts = v
	return s
}

// SetHierarchyPath sets the HierarchyPath field's value.
func (s *UserData) SetHierarchyPath(v *HierarchyPathReference) *UserData {
	s.HierarchyPath = v
	return s
}

// SetMaxSlotsByChannel sets the MaxSlotsByChannel field's value.
func (s *UserData) SetMaxSlotsByChannel(v map[string]*int64) *UserData {
	s.MaxSlotsByChannel = v
	return s
}

// SetNextStatus sets the NextStatus field's value.
func (s *UserData) SetNextStatus(v string) *UserData {
	s.NextStatus = &v
	return s
}

// SetRoutingProfile sets the RoutingProfile field's value.
func (s *UserData) SetRoutingProfile(v *RoutingProfileReference) *UserData {
	s.RoutingProfile = v
	return s
}

// SetStatus sets the Status field's value.
func (s *UserData) SetStatus(v *AgentStatusReference) *UserData {
	s.Status = v
	return s
}

// SetUser sets the User field's value.
func (s *UserData) SetUser(v *UserReference) *UserData {
	s.User = v
	return s
}

// A filter for the user data.
type UserDataFilters struct {
	_ struct{} `type:"structure"`

	// A list of up to 100 agent IDs or ARNs.
	Agents []*string `min:"1" type:"list"`

	// A filter for the user data based on the contact information that is associated
	// to the user. It contains a list of contact states.
	ContactFilter *ContactFilter `type:"structure"`

	// A list of up to 100 queues or ARNs.
	Queues []*string `min:"1" type:"list"`

	// A list of up to 100 routing profile IDs or ARNs.
	RoutingProfiles []*string `min:"1" type:"list"`

	// A UserHierarchyGroup ID or ARN.
	UserHierarchyGroups []*string `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserDataFilters) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserDataFilters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UserDataFilters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UserDataFilters"}
	if s.Agents != nil && len(s.Agents) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Agents", 1))
	}
	if s.Queues != nil && len(s.Queues) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Queues", 1))
	}
	if s.RoutingProfiles != nil && len(s.RoutingProfiles) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RoutingProfiles", 1))
	}
	if s.UserHierarchyGroups != nil && len(s.UserHierarchyGroups) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserHierarchyGroups", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAgents sets the Agents field's value.
func (s *UserDataFilters) SetAgents(v []*string) *UserDataFilters {
	s.Agents = v
	return s
}

// SetContactFilter sets the ContactFilter field's value.
func (s *UserDataFilters) SetContactFilter(v *ContactFilter) *UserDataFilters {
	s.ContactFilter = v
	return s
}

// SetQueues sets the Queues field's value.
func (s *UserDataFilters) SetQueues(v []*string) *UserDataFilters {
	s.Queues = v
	return s
}

// SetRoutingProfiles sets the RoutingProfiles field's value.
func (s *UserDataFilters) SetRoutingProfiles(v []*string) *UserDataFilters {
	s.RoutingProfiles = v
	return s
}

// SetUserHierarchyGroups sets the UserHierarchyGroups field's value.
func (s *UserDataFilters) SetUserHierarchyGroups(v []*string) *UserDataFilters {
	s.UserHierarchyGroups = v
	return s
}

// Contains information about the identity of a user.
type UserIdentityInfo struct {
	_ struct{} `type:"structure"`

	// The email address. If you are using SAML for identity management and include
	// this parameter, an error is returned.
	//
	// Email is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UserIdentityInfo's
	// String and GoString methods.
	Email *string `type:"string" sensitive:"true"`

	// The first name. This is required if you are using Amazon Connect or SAML
	// for identity management.
	//
	// FirstName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UserIdentityInfo's
	// String and GoString methods.
	FirstName *string `min:"1" type:"string" sensitive:"true"`

	// The last name. This is required if you are using Amazon Connect or SAML for
	// identity management.
	//
	// LastName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UserIdentityInfo's
	// String and GoString methods.
	LastName *string `min:"1" type:"string" sensitive:"true"`

	// The user's mobile number.
	Mobile *string `type:"string"`

	// The user's secondary email address. If you provide a secondary email, the
	// user receives email notifications - other than password reset notifications
	// - to this email address instead of to their primary email address.
	//
	// Pattern: (?=^.{0,265}$)[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,63}
	//
	// SecondaryEmail is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UserIdentityInfo's
	// String and GoString methods.
	SecondaryEmail *string `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 UserIdentityInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserIdentityInfo) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UserIdentityInfo) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UserIdentityInfo"}
	if s.FirstName != nil && len(*s.FirstName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FirstName", 1))
	}
	if s.LastName != nil && len(*s.LastName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("LastName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEmail sets the Email field's value.
func (s *UserIdentityInfo) SetEmail(v string) *UserIdentityInfo {
	s.Email = &v
	return s
}

// SetFirstName sets the FirstName field's value.
func (s *UserIdentityInfo) SetFirstName(v string) *UserIdentityInfo {
	s.FirstName = &v
	return s
}

// SetLastName sets the LastName field's value.
func (s *UserIdentityInfo) SetLastName(v string) *UserIdentityInfo {
	s.LastName = &v
	return s
}

// SetMobile sets the Mobile field's value.
func (s *UserIdentityInfo) SetMobile(v string) *UserIdentityInfo {
	s.Mobile = &v
	return s
}

// SetSecondaryEmail sets the SecondaryEmail field's value.
func (s *UserIdentityInfo) SetSecondaryEmail(v string) *UserIdentityInfo {
	s.SecondaryEmail = &v
	return s
}

// The user's first name and last name.
type UserIdentityInfoLite struct {
	_ struct{} `type:"structure"`

	// The user's first name.
	//
	// FirstName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UserIdentityInfoLite's
	// String and GoString methods.
	FirstName *string `min:"1" type:"string" sensitive:"true"`

	// The user's last name.
	//
	// LastName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UserIdentityInfoLite's
	// String and GoString methods.
	LastName *string `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 UserIdentityInfoLite) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserIdentityInfoLite) GoString() string {
	return s.String()
}

// SetFirstName sets the FirstName field's value.
func (s *UserIdentityInfoLite) SetFirstName(v string) *UserIdentityInfoLite {
	s.FirstName = &v
	return s
}

// SetLastName sets the LastName field's value.
func (s *UserIdentityInfoLite) SetLastName(v string) *UserIdentityInfoLite {
	s.LastName = &v
	return s
}

// No user with the specified credentials was found in the Amazon Connect instance.
type UserNotFoundException 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 UserNotFoundException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserNotFoundException) GoString() string {
	return s.String()
}

func newErrorUserNotFoundException(v protocol.ResponseMetadata) error {
	return &UserNotFoundException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *UserNotFoundException) Code() string {
	return "UserNotFoundException"
}

// Message returns the exception's message.
func (s *UserNotFoundException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *UserNotFoundException) OrigErr() error {
	return nil
}

func (s *UserNotFoundException) 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 *UserNotFoundException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *UserNotFoundException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Contains information about the phone configuration settings for a user.
type UserPhoneConfig struct {
	_ struct{} `type:"structure"`

	// The After Call Work (ACW) timeout setting, in seconds.
	//
	// When returned by a SearchUsers call, AfterContactWorkTimeLimit is returned
	// in milliseconds.
	AfterContactWorkTimeLimit *int64 `type:"integer"`

	// The Auto accept setting.
	AutoAccept *bool `type:"boolean"`

	// The phone number for the user's desk phone.
	DeskPhoneNumber *string `type:"string"`

	// The phone type.
	//
	// PhoneType is a required field
	PhoneType *string `type:"string" required:"true" enum:"PhoneType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserPhoneConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserPhoneConfig) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UserPhoneConfig) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UserPhoneConfig"}
	if s.PhoneType == nil {
		invalidParams.Add(request.NewErrParamRequired("PhoneType"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAfterContactWorkTimeLimit sets the AfterContactWorkTimeLimit field's value.
func (s *UserPhoneConfig) SetAfterContactWorkTimeLimit(v int64) *UserPhoneConfig {
	s.AfterContactWorkTimeLimit = &v
	return s
}

// SetAutoAccept sets the AutoAccept field's value.
func (s *UserPhoneConfig) SetAutoAccept(v bool) *UserPhoneConfig {
	s.AutoAccept = &v
	return s
}

// SetDeskPhoneNumber sets the DeskPhoneNumber field's value.
func (s *UserPhoneConfig) SetDeskPhoneNumber(v string) *UserPhoneConfig {
	s.DeskPhoneNumber = &v
	return s
}

// SetPhoneType sets the PhoneType field's value.
func (s *UserPhoneConfig) SetPhoneType(v string) *UserPhoneConfig {
	s.PhoneType = &v
	return s
}

// Information about proficiency of a user.
type UserProficiency struct {
	_ struct{} `type:"structure"`

	// The name of user's proficiency. You must use name of predefined attribute
	// present in the Amazon Connect instance.
	//
	// AttributeName is a required field
	AttributeName *string `min:"1" type:"string" required:"true"`

	// The value of user's proficiency. You must use value of predefined attribute
	// present in the Amazon Connect instance.
	//
	// AttributeValue is a required field
	AttributeValue *string `min:"1" type:"string" required:"true"`

	// The level of the proficiency. The valid values are 1, 2, 3, 4 and 5.
	//
	// Level is a required field
	Level *float64 `min:"1" type:"float" 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 UserProficiency) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserProficiency) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UserProficiency) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UserProficiency"}
	if s.AttributeName == nil {
		invalidParams.Add(request.NewErrParamRequired("AttributeName"))
	}
	if s.AttributeName != nil && len(*s.AttributeName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AttributeName", 1))
	}
	if s.AttributeValue == nil {
		invalidParams.Add(request.NewErrParamRequired("AttributeValue"))
	}
	if s.AttributeValue != nil && len(*s.AttributeValue) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AttributeValue", 1))
	}
	if s.Level == nil {
		invalidParams.Add(request.NewErrParamRequired("Level"))
	}
	if s.Level != nil && *s.Level < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Level", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAttributeName sets the AttributeName field's value.
func (s *UserProficiency) SetAttributeName(v string) *UserProficiency {
	s.AttributeName = &v
	return s
}

// SetAttributeValue sets the AttributeValue field's value.
func (s *UserProficiency) SetAttributeValue(v string) *UserProficiency {
	s.AttributeValue = &v
	return s
}

// SetLevel sets the Level field's value.
func (s *UserProficiency) SetLevel(v float64) *UserProficiency {
	s.Level = &v
	return s
}

// Information about proficiency to be disassociated from the user.
type UserProficiencyDisassociate struct {
	_ struct{} `type:"structure"`

	// The name of user's proficiency.
	//
	// AttributeName is a required field
	AttributeName *string `min:"1" type:"string" required:"true"`

	// The value of user's proficiency.
	//
	// AttributeValue is a required field
	AttributeValue *string `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 UserProficiencyDisassociate) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserProficiencyDisassociate) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UserProficiencyDisassociate) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UserProficiencyDisassociate"}
	if s.AttributeName == nil {
		invalidParams.Add(request.NewErrParamRequired("AttributeName"))
	}
	if s.AttributeName != nil && len(*s.AttributeName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AttributeName", 1))
	}
	if s.AttributeValue == nil {
		invalidParams.Add(request.NewErrParamRequired("AttributeValue"))
	}
	if s.AttributeValue != nil && len(*s.AttributeValue) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AttributeValue", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAttributeName sets the AttributeName field's value.
func (s *UserProficiencyDisassociate) SetAttributeName(v string) *UserProficiencyDisassociate {
	s.AttributeName = &v
	return s
}

// SetAttributeValue sets the AttributeValue field's value.
func (s *UserProficiencyDisassociate) SetAttributeValue(v string) *UserProficiencyDisassociate {
	s.AttributeValue = &v
	return s
}

// Contains information about the quick connect configuration settings for a
// user. The contact flow must be of type Transfer to Agent.
type UserQuickConnectConfig struct {
	_ struct{} `type:"structure"`

	// The identifier of the flow.
	//
	// ContactFlowId is a required field
	ContactFlowId *string `type:"string" required:"true"`

	// The identifier of the user.
	//
	// UserId is a required field
	UserId *string `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 UserQuickConnectConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserQuickConnectConfig) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UserQuickConnectConfig) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UserQuickConnectConfig"}
	if s.ContactFlowId == nil {
		invalidParams.Add(request.NewErrParamRequired("ContactFlowId"))
	}
	if s.UserId == nil {
		invalidParams.Add(request.NewErrParamRequired("UserId"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContactFlowId sets the ContactFlowId field's value.
func (s *UserQuickConnectConfig) SetContactFlowId(v string) *UserQuickConnectConfig {
	s.ContactFlowId = &v
	return s
}

// SetUserId sets the UserId field's value.
func (s *UserQuickConnectConfig) SetUserId(v string) *UserQuickConnectConfig {
	s.UserId = &v
	return s
}

// Information about the user.
type UserReference struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the user.
	Arn *string `type:"string"`

	// The unique identifier for the user.
	Id *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserReference) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserReference) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *UserReference) SetArn(v string) *UserReference {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *UserReference) SetId(v string) *UserReference {
	s.Id = &v
	return s
}

// The search criteria to be used to return users.
//
// The name and description fields support "contains" queries with a minimum
// of 2 characters and a maximum of 25 characters. Any queries with character
// lengths outside of this range will throw invalid results.
type UserSearchCriteria struct {
	_ struct{} `type:"structure"`

	// A list of conditions which would be applied together with an AND condition.
	AndConditions []*UserSearchCriteria `type:"list"`

	// A leaf node condition which can be used to specify a hierarchy group condition.
	HierarchyGroupCondition *HierarchyGroupCondition `type:"structure"`

	// A list of conditions which would be applied together with an OR condition.
	OrConditions []*UserSearchCriteria `type:"list"`

	// A leaf node condition which can be used to specify a string condition.
	//
	// The currently supported values for FieldName are username, firstname, lastname,
	// resourceId, routingProfileId, securityProfileId, agentGroupId, and agentGroupPathIds.
	StringCondition *StringCondition `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 UserSearchCriteria) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserSearchCriteria) GoString() string {
	return s.String()
}

// SetAndConditions sets the AndConditions field's value.
func (s *UserSearchCriteria) SetAndConditions(v []*UserSearchCriteria) *UserSearchCriteria {
	s.AndConditions = v
	return s
}

// SetHierarchyGroupCondition sets the HierarchyGroupCondition field's value.
func (s *UserSearchCriteria) SetHierarchyGroupCondition(v *HierarchyGroupCondition) *UserSearchCriteria {
	s.HierarchyGroupCondition = v
	return s
}

// SetOrConditions sets the OrConditions field's value.
func (s *UserSearchCriteria) SetOrConditions(v []*UserSearchCriteria) *UserSearchCriteria {
	s.OrConditions = v
	return s
}

// SetStringCondition sets the StringCondition field's value.
func (s *UserSearchCriteria) SetStringCondition(v *StringCondition) *UserSearchCriteria {
	s.StringCondition = v
	return s
}

// Filters to be applied to search results.
type UserSearchFilter struct {
	_ struct{} `type:"structure"`

	// An object that can be used to specify Tag conditions inside the SearchFilter.
	// This accepts an OR of AND (List of List) input where:
	//
	//    * Top level list specifies conditions that need to be applied with OR
	//    operator
	//
	//    * Inner list specifies conditions that need to be applied with AND operator.
	TagFilter *ControlPlaneTagFilter `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 UserSearchFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserSearchFilter) GoString() string {
	return s.String()
}

// SetTagFilter sets the TagFilter field's value.
func (s *UserSearchFilter) SetTagFilter(v *ControlPlaneTagFilter) *UserSearchFilter {
	s.TagFilter = v
	return s
}

// Information about the returned users.
type UserSearchSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the user.
	Arn *string `type:"string"`

	// The directory identifier of the user.
	DirectoryUserId *string `type:"string"`

	// The identifier of the user's hierarchy group.
	HierarchyGroupId *string `type:"string"`

	// The identifier of the user's summary.
	Id *string `type:"string"`

	// The user's first name and last name.
	IdentityInfo *UserIdentityInfoLite `type:"structure"`

	// Contains information about the phone configuration settings for a user.
	PhoneConfig *UserPhoneConfig `type:"structure"`

	// The identifier of the user's routing profile.
	RoutingProfileId *string `type:"string"`

	// The identifiers of the user's security profiles.
	SecurityProfileIds []*string `min:"1" type:"list"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`

	// The name of the user.
	Username *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserSearchSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserSearchSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *UserSearchSummary) SetArn(v string) *UserSearchSummary {
	s.Arn = &v
	return s
}

// SetDirectoryUserId sets the DirectoryUserId field's value.
func (s *UserSearchSummary) SetDirectoryUserId(v string) *UserSearchSummary {
	s.DirectoryUserId = &v
	return s
}

// SetHierarchyGroupId sets the HierarchyGroupId field's value.
func (s *UserSearchSummary) SetHierarchyGroupId(v string) *UserSearchSummary {
	s.HierarchyGroupId = &v
	return s
}

// SetId sets the Id field's value.
func (s *UserSearchSummary) SetId(v string) *UserSearchSummary {
	s.Id = &v
	return s
}

// SetIdentityInfo sets the IdentityInfo field's value.
func (s *UserSearchSummary) SetIdentityInfo(v *UserIdentityInfoLite) *UserSearchSummary {
	s.IdentityInfo = v
	return s
}

// SetPhoneConfig sets the PhoneConfig field's value.
func (s *UserSearchSummary) SetPhoneConfig(v *UserPhoneConfig) *UserSearchSummary {
	s.PhoneConfig = v
	return s
}

// SetRoutingProfileId sets the RoutingProfileId field's value.
func (s *UserSearchSummary) SetRoutingProfileId(v string) *UserSearchSummary {
	s.RoutingProfileId = &v
	return s
}

// SetSecurityProfileIds sets the SecurityProfileIds field's value.
func (s *UserSearchSummary) SetSecurityProfileIds(v []*string) *UserSearchSummary {
	s.SecurityProfileIds = v
	return s
}

// SetTags sets the Tags field's value.
func (s *UserSearchSummary) SetTags(v map[string]*string) *UserSearchSummary {
	s.Tags = v
	return s
}

// SetUsername sets the Username field's value.
func (s *UserSearchSummary) SetUsername(v string) *UserSearchSummary {
	s.Username = &v
	return s
}

// Contains summary information about a user.
type UserSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the user account.
	Arn *string `type:"string"`

	// The identifier of the user account.
	Id *string `type:"string"`

	// The Amazon Web Services Region where this resource was last modified.
	LastModifiedRegion *string `type:"string"`

	// The timestamp when this resource was last modified.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The Amazon Connect user name of the user account.
	Username *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *UserSummary) SetArn(v string) *UserSummary {
	s.Arn = &v
	return s
}

// SetId sets the Id field's value.
func (s *UserSummary) SetId(v string) *UserSummary {
	s.Id = &v
	return s
}

// SetLastModifiedRegion sets the LastModifiedRegion field's value.
func (s *UserSummary) SetLastModifiedRegion(v string) *UserSummary {
	s.LastModifiedRegion = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *UserSummary) SetLastModifiedTime(v time.Time) *UserSummary {
	s.LastModifiedTime = &v
	return s
}

// SetUsername sets the Username field's value.
func (s *UserSummary) SetUsername(v string) *UserSummary {
	s.Username = &v
	return s
}

// A view resource object. Contains metadata and content necessary to render
// the view.
type View struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the view.
	Arn *string `type:"string"`

	// View content containing all content necessary to render a view except for
	// runtime input data.
	Content *ViewContent `type:"structure"`

	// The timestamp of when the view was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The description of the view.
	Description *string `min:"1" type:"string"`

	// The identifier of the view.
	Id *string `min:"1" type:"string"`

	// Latest timestamp of the UpdateViewContent or CreateViewVersion operations.
	LastModifiedTime *time.Time `type:"timestamp"`

	// The name of the view.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by View's
	// String and GoString methods.
	Name *string `min:"1" type:"string" sensitive:"true"`

	// Indicates the view status as either SAVED or PUBLISHED. The PUBLISHED status
	// will initiate validation on the content.
	Status *string `type:"string" enum:"ViewStatus"`

	// The tags associated with the view resource (not specific to view version).
	Tags map[string]*string `min:"1" type:"map"`

	// The type of the view - CUSTOMER_MANAGED.
	Type *string `type:"string" enum:"ViewType"`

	// Current version of the view.
	Version *int64 `type:"integer"`

	// The description of the version.
	VersionDescription *string `min:"1" type:"string"`

	// Indicates the checksum value of the latest published view content.
	ViewContentSha256 *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s View) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s View) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *View) SetArn(v string) *View {
	s.Arn = &v
	return s
}

// SetContent sets the Content field's value.
func (s *View) SetContent(v *ViewContent) *View {
	s.Content = v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *View) SetCreatedTime(v time.Time) *View {
	s.CreatedTime = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *View) SetDescription(v string) *View {
	s.Description = &v
	return s
}

// SetId sets the Id field's value.
func (s *View) SetId(v string) *View {
	s.Id = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *View) SetLastModifiedTime(v time.Time) *View {
	s.LastModifiedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *View) SetName(v string) *View {
	s.Name = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *View) SetStatus(v string) *View {
	s.Status = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *View) SetTags(v map[string]*string) *View {
	s.Tags = v
	return s
}

// SetType sets the Type field's value.
func (s *View) SetType(v string) *View {
	s.Type = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *View) SetVersion(v int64) *View {
	s.Version = &v
	return s
}

// SetVersionDescription sets the VersionDescription field's value.
func (s *View) SetVersionDescription(v string) *View {
	s.VersionDescription = &v
	return s
}

// SetViewContentSha256 sets the ViewContentSha256 field's value.
func (s *View) SetViewContentSha256(v string) *View {
	s.ViewContentSha256 = &v
	return s
}

// View content containing all content necessary to render a view except for
// runtime input data.
type ViewContent struct {
	_ struct{} `type:"structure"`

	// A list of possible actions from the view.
	Actions []*string `type:"list"`

	// The data schema matching data that the view template must be provided to
	// render.
	//
	// InputSchema is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ViewContent's
	// String and GoString methods.
	InputSchema *string `type:"string" sensitive:"true"`

	// The view template representing the structure of the view.
	Template *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ViewContent) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ViewContent) GoString() string {
	return s.String()
}

// SetActions sets the Actions field's value.
func (s *ViewContent) SetActions(v []*string) *ViewContent {
	s.Actions = v
	return s
}

// SetInputSchema sets the InputSchema field's value.
func (s *ViewContent) SetInputSchema(v string) *ViewContent {
	s.InputSchema = &v
	return s
}

// SetTemplate sets the Template field's value.
func (s *ViewContent) SetTemplate(v string) *ViewContent {
	s.Template = &v
	return s
}

// View content containing all content necessary to render a view except for
// runtime input data and the runtime input schema, which is auto-generated
// by this operation.
type ViewInputContent struct {
	_ struct{} `type:"structure"`

	// A list of possible actions from the view.
	Actions []*string `type:"list"`

	// The view template representing the structure of the view.
	Template *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ViewInputContent) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ViewInputContent) GoString() string {
	return s.String()
}

// SetActions sets the Actions field's value.
func (s *ViewInputContent) SetActions(v []*string) *ViewInputContent {
	s.Actions = v
	return s
}

// SetTemplate sets the Template field's value.
func (s *ViewInputContent) SetTemplate(v string) *ViewInputContent {
	s.Template = &v
	return s
}

// A summary of a view's metadata.
type ViewSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the view.
	Arn *string `type:"string"`

	// The description of the view.
	Description *string `min:"1" type:"string"`

	// The identifier of the view.
	Id *string `min:"1" type:"string"`

	// The name of the view.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ViewSummary's
	// String and GoString methods.
	Name *string `min:"1" type:"string" sensitive:"true"`

	// Indicates the view status as either SAVED or PUBLISHED. The PUBLISHED status
	// will initiate validation on the content.
	Status *string `type:"string" enum:"ViewStatus"`

	// The type of the view.
	Type *string `type:"string" enum:"ViewType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ViewSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ViewSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *ViewSummary) SetArn(v string) *ViewSummary {
	s.Arn = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *ViewSummary) SetDescription(v string) *ViewSummary {
	s.Description = &v
	return s
}

// SetId sets the Id field's value.
func (s *ViewSummary) SetId(v string) *ViewSummary {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *ViewSummary) SetName(v string) *ViewSummary {
	s.Name = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ViewSummary) SetStatus(v string) *ViewSummary {
	s.Status = &v
	return s
}

// SetType sets the Type field's value.
func (s *ViewSummary) SetType(v string) *ViewSummary {
	s.Type = &v
	return s
}

// A summary of a view version's metadata.
type ViewVersionSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the view version.
	Arn *string `type:"string"`

	// The description of the view version.
	Description *string `min:"1" type:"string"`

	// The identifier of the view version.
	Id *string `min:"1" type:"string"`

	// The name of the view version.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ViewVersionSummary's
	// String and GoString methods.
	Name *string `min:"1" type:"string" sensitive:"true"`

	// The type of the view version.
	Type *string `type:"string" enum:"ViewType"`

	// The sequentially incremented version of the view version.
	Version *int64 `type:"integer"`

	// The description of the view version.
	VersionDescription *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ViewVersionSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ViewVersionSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *ViewVersionSummary) SetArn(v string) *ViewVersionSummary {
	s.Arn = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *ViewVersionSummary) SetDescription(v string) *ViewVersionSummary {
	s.Description = &v
	return s
}

// SetId sets the Id field's value.
func (s *ViewVersionSummary) SetId(v string) *ViewVersionSummary {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *ViewVersionSummary) SetName(v string) *ViewVersionSummary {
	s.Name = &v
	return s
}

// SetType sets the Type field's value.
func (s *ViewVersionSummary) SetType(v string) *ViewVersionSummary {
	s.Type = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *ViewVersionSummary) SetVersion(v int64) *ViewVersionSummary {
	s.Version = &v
	return s
}

// SetVersionDescription sets the VersionDescription field's value.
func (s *ViewVersionSummary) SetVersionDescription(v string) *ViewVersionSummary {
	s.VersionDescription = &v
	return s
}

// Contains information about a custom vocabulary.
type Vocabulary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the custom vocabulary.
	//
	// Arn is a required field
	Arn *string `type:"string" required:"true"`

	// The content of the custom vocabulary in plain-text format with a table of
	// values. Each row in the table represents a word or a phrase, described with
	// Phrase, IPA, SoundsLike, and DisplayAs fields. Separate the fields with TAB
	// characters. For more information, see Create a custom vocabulary using a
	// table (https://docs.aws.amazon.com/transcribe/latest/dg/custom-vocabulary.html#create-vocabulary-table).
	Content *string `min:"1" type:"string"`

	// The reason why the custom vocabulary was not created.
	FailureReason *string `type:"string"`

	// The identifier of the custom vocabulary.
	//
	// Id is a required field
	Id *string `min:"1" type:"string" required:"true"`

	// The language code of the vocabulary entries. For a list of languages and
	// their corresponding language codes, see What is Amazon Transcribe? (https://docs.aws.amazon.com/transcribe/latest/dg/transcribe-whatis.html)
	//
	// LanguageCode is a required field
	LanguageCode *string `type:"string" required:"true" enum:"VocabularyLanguageCode"`

	// The timestamp when the custom vocabulary was last modified.
	//
	// LastModifiedTime is a required field
	LastModifiedTime *time.Time `type:"timestamp" required:"true"`

	// A unique name of the custom vocabulary.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The current state of the custom vocabulary.
	//
	// State is a required field
	State *string `type:"string" required:"true" enum:"VocabularyState"`

	// The tags used to organize, track, or control access for this resource. For
	// example, { "Tags": {"key1":"value1", "key2":"value2"} }.
	Tags map[string]*string `min:"1" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Vocabulary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Vocabulary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *Vocabulary) SetArn(v string) *Vocabulary {
	s.Arn = &v
	return s
}

// SetContent sets the Content field's value.
func (s *Vocabulary) SetContent(v string) *Vocabulary {
	s.Content = &v
	return s
}

// SetFailureReason sets the FailureReason field's value.
func (s *Vocabulary) SetFailureReason(v string) *Vocabulary {
	s.FailureReason = &v
	return s
}

// SetId sets the Id field's value.
func (s *Vocabulary) SetId(v string) *Vocabulary {
	s.Id = &v
	return s
}

// SetLanguageCode sets the LanguageCode field's value.
func (s *Vocabulary) SetLanguageCode(v string) *Vocabulary {
	s.LanguageCode = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *Vocabulary) SetLastModifiedTime(v time.Time) *Vocabulary {
	s.LastModifiedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *Vocabulary) SetName(v string) *Vocabulary {
	s.Name = &v
	return s
}

// SetState sets the State field's value.
func (s *Vocabulary) SetState(v string) *Vocabulary {
	s.State = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *Vocabulary) SetTags(v map[string]*string) *Vocabulary {
	s.Tags = v
	return s
}

// Contains summary information about the custom vocabulary.
type VocabularySummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the custom vocabulary.
	//
	// Arn is a required field
	Arn *string `type:"string" required:"true"`

	// The reason why the custom vocabulary was not created.
	FailureReason *string `type:"string"`

	// The identifier of the custom vocabulary.
	//
	// Id is a required field
	Id *string `min:"1" type:"string" required:"true"`

	// The language code of the vocabulary entries. For a list of languages and
	// their corresponding language codes, see What is Amazon Transcribe? (https://docs.aws.amazon.com/transcribe/latest/dg/transcribe-whatis.html)
	//
	// LanguageCode is a required field
	LanguageCode *string `type:"string" required:"true" enum:"VocabularyLanguageCode"`

	// The timestamp when the custom vocabulary was last modified.
	//
	// LastModifiedTime is a required field
	LastModifiedTime *time.Time `type:"timestamp" required:"true"`

	// A unique name of the custom vocabulary.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The current state of the custom vocabulary.
	//
	// State is a required field
	State *string `type:"string" required:"true" enum:"VocabularyState"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VocabularySummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VocabularySummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *VocabularySummary) SetArn(v string) *VocabularySummary {
	s.Arn = &v
	return s
}

// SetFailureReason sets the FailureReason field's value.
func (s *VocabularySummary) SetFailureReason(v string) *VocabularySummary {
	s.FailureReason = &v
	return s
}

// SetId sets the Id field's value.
func (s *VocabularySummary) SetId(v string) *VocabularySummary {
	s.Id = &v
	return s
}

// SetLanguageCode sets the LanguageCode field's value.
func (s *VocabularySummary) SetLanguageCode(v string) *VocabularySummary {
	s.LanguageCode = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *VocabularySummary) SetLastModifiedTime(v time.Time) *VocabularySummary {
	s.LastModifiedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *VocabularySummary) SetName(v string) *VocabularySummary {
	s.Name = &v
	return s
}

// SetState sets the State field's value.
func (s *VocabularySummary) SetState(v string) *VocabularySummary {
	s.State = &v
	return s
}

// Contains information about the recording configuration settings.
type VoiceRecordingConfiguration struct {
	_ struct{} `type:"structure"`

	// Identifies which track is being recorded.
	VoiceRecordingTrack *string `type:"string" enum:"VoiceRecordingTrack"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VoiceRecordingConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VoiceRecordingConfiguration) GoString() string {
	return s.String()
}

// SetVoiceRecordingTrack sets the VoiceRecordingTrack field's value.
func (s *VoiceRecordingConfiguration) SetVoiceRecordingTrack(v string) *VoiceRecordingConfiguration {
	s.VoiceRecordingTrack = &v
	return s
}

// Information about Amazon Connect Wisdom.
type WisdomInfo struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the Wisdom session.
	SessionArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s WisdomInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s WisdomInfo) GoString() string {
	return s.String()
}

// SetSessionArn sets the SessionArn field's value.
func (s *WisdomInfo) SetSessionArn(v string) *WisdomInfo {
	s.SessionArn = &v
	return s
}

const (
	// ActionTypeCreateTask is a ActionType enum value
	ActionTypeCreateTask = "CREATE_TASK"

	// ActionTypeAssignContactCategory is a ActionType enum value
	ActionTypeAssignContactCategory = "ASSIGN_CONTACT_CATEGORY"

	// ActionTypeGenerateEventbridgeEvent is a ActionType enum value
	ActionTypeGenerateEventbridgeEvent = "GENERATE_EVENTBRIDGE_EVENT"

	// ActionTypeSendNotification is a ActionType enum value
	ActionTypeSendNotification = "SEND_NOTIFICATION"

	// ActionTypeCreateCase is a ActionType enum value
	ActionTypeCreateCase = "CREATE_CASE"

	// ActionTypeUpdateCase is a ActionType enum value
	ActionTypeUpdateCase = "UPDATE_CASE"

	// ActionTypeEndAssociatedTasks is a ActionType enum value
	ActionTypeEndAssociatedTasks = "END_ASSOCIATED_TASKS"
)

// ActionType_Values returns all elements of the ActionType enum
func ActionType_Values() []string {
	return []string{
		ActionTypeCreateTask,
		ActionTypeAssignContactCategory,
		ActionTypeGenerateEventbridgeEvent,
		ActionTypeSendNotification,
		ActionTypeCreateCase,
		ActionTypeUpdateCase,
		ActionTypeEndAssociatedTasks,
	}
}

const (
	// AgentAvailabilityTimerTimeSinceLastActivity is a AgentAvailabilityTimer enum value
	AgentAvailabilityTimerTimeSinceLastActivity = "TIME_SINCE_LAST_ACTIVITY"

	// AgentAvailabilityTimerTimeSinceLastInbound is a AgentAvailabilityTimer enum value
	AgentAvailabilityTimerTimeSinceLastInbound = "TIME_SINCE_LAST_INBOUND"
)

// AgentAvailabilityTimer_Values returns all elements of the AgentAvailabilityTimer enum
func AgentAvailabilityTimer_Values() []string {
	return []string{
		AgentAvailabilityTimerTimeSinceLastActivity,
		AgentAvailabilityTimerTimeSinceLastInbound,
	}
}

const (
	// AgentStatusStateEnabled is a AgentStatusState enum value
	AgentStatusStateEnabled = "ENABLED"

	// AgentStatusStateDisabled is a AgentStatusState enum value
	AgentStatusStateDisabled = "DISABLED"
)

// AgentStatusState_Values returns all elements of the AgentStatusState enum
func AgentStatusState_Values() []string {
	return []string{
		AgentStatusStateEnabled,
		AgentStatusStateDisabled,
	}
}

const (
	// AgentStatusTypeRoutable is a AgentStatusType enum value
	AgentStatusTypeRoutable = "ROUTABLE"

	// AgentStatusTypeCustom is a AgentStatusType enum value
	AgentStatusTypeCustom = "CUSTOM"

	// AgentStatusTypeOffline is a AgentStatusType enum value
	AgentStatusTypeOffline = "OFFLINE"
)

// AgentStatusType_Values returns all elements of the AgentStatusType enum
func AgentStatusType_Values() []string {
	return []string{
		AgentStatusTypeRoutable,
		AgentStatusTypeCustom,
		AgentStatusTypeOffline,
	}
}

const (
	// ArtifactStatusApproved is a ArtifactStatus enum value
	ArtifactStatusApproved = "APPROVED"

	// ArtifactStatusRejected is a ArtifactStatus enum value
	ArtifactStatusRejected = "REJECTED"

	// ArtifactStatusInProgress is a ArtifactStatus enum value
	ArtifactStatusInProgress = "IN_PROGRESS"
)

// ArtifactStatus_Values returns all elements of the ArtifactStatus enum
func ArtifactStatus_Values() []string {
	return []string{
		ArtifactStatusApproved,
		ArtifactStatusRejected,
		ArtifactStatusInProgress,
	}
}

const (
	// BehaviorTypeRouteCurrentChannelOnly is a BehaviorType enum value
	BehaviorTypeRouteCurrentChannelOnly = "ROUTE_CURRENT_CHANNEL_ONLY"

	// BehaviorTypeRouteAnyChannel is a BehaviorType enum value
	BehaviorTypeRouteAnyChannel = "ROUTE_ANY_CHANNEL"
)

// BehaviorType_Values returns all elements of the BehaviorType enum
func BehaviorType_Values() []string {
	return []string{
		BehaviorTypeRouteCurrentChannelOnly,
		BehaviorTypeRouteAnyChannel,
	}
}

const (
	// ChannelVoice is a Channel enum value
	ChannelVoice = "VOICE"

	// ChannelChat is a Channel enum value
	ChannelChat = "CHAT"

	// ChannelTask is a Channel enum value
	ChannelTask = "TASK"
)

// Channel_Values returns all elements of the Channel enum
func Channel_Values() []string {
	return []string{
		ChannelVoice,
		ChannelChat,
		ChannelTask,
	}
}

const (
	// ChatEventTypeDisconnect is a ChatEventType enum value
	ChatEventTypeDisconnect = "DISCONNECT"

	// ChatEventTypeMessage is a ChatEventType enum value
	ChatEventTypeMessage = "MESSAGE"

	// ChatEventTypeEvent is a ChatEventType enum value
	ChatEventTypeEvent = "EVENT"
)

// ChatEventType_Values returns all elements of the ChatEventType enum
func ChatEventType_Values() []string {
	return []string{
		ChatEventTypeDisconnect,
		ChatEventTypeMessage,
		ChatEventTypeEvent,
	}
}

const (
	// ComparisonLt is a Comparison enum value
	ComparisonLt = "LT"
)

// Comparison_Values returns all elements of the Comparison enum
func Comparison_Values() []string {
	return []string{
		ComparisonLt,
	}
}

const (
	// ContactFlowModuleStateActive is a ContactFlowModuleState enum value
	ContactFlowModuleStateActive = "ACTIVE"

	// ContactFlowModuleStateArchived is a ContactFlowModuleState enum value
	ContactFlowModuleStateArchived = "ARCHIVED"
)

// ContactFlowModuleState_Values returns all elements of the ContactFlowModuleState enum
func ContactFlowModuleState_Values() []string {
	return []string{
		ContactFlowModuleStateActive,
		ContactFlowModuleStateArchived,
	}
}

const (
	// ContactFlowModuleStatusPublished is a ContactFlowModuleStatus enum value
	ContactFlowModuleStatusPublished = "PUBLISHED"

	// ContactFlowModuleStatusSaved is a ContactFlowModuleStatus enum value
	ContactFlowModuleStatusSaved = "SAVED"
)

// ContactFlowModuleStatus_Values returns all elements of the ContactFlowModuleStatus enum
func ContactFlowModuleStatus_Values() []string {
	return []string{
		ContactFlowModuleStatusPublished,
		ContactFlowModuleStatusSaved,
	}
}

const (
	// ContactFlowStateActive is a ContactFlowState enum value
	ContactFlowStateActive = "ACTIVE"

	// ContactFlowStateArchived is a ContactFlowState enum value
	ContactFlowStateArchived = "ARCHIVED"
)

// ContactFlowState_Values returns all elements of the ContactFlowState enum
func ContactFlowState_Values() []string {
	return []string{
		ContactFlowStateActive,
		ContactFlowStateArchived,
	}
}

const (
	// ContactFlowTypeContactFlow is a ContactFlowType enum value
	ContactFlowTypeContactFlow = "CONTACT_FLOW"

	// ContactFlowTypeCustomerQueue is a ContactFlowType enum value
	ContactFlowTypeCustomerQueue = "CUSTOMER_QUEUE"

	// ContactFlowTypeCustomerHold is a ContactFlowType enum value
	ContactFlowTypeCustomerHold = "CUSTOMER_HOLD"

	// ContactFlowTypeCustomerWhisper is a ContactFlowType enum value
	ContactFlowTypeCustomerWhisper = "CUSTOMER_WHISPER"

	// ContactFlowTypeAgentHold is a ContactFlowType enum value
	ContactFlowTypeAgentHold = "AGENT_HOLD"

	// ContactFlowTypeAgentWhisper is a ContactFlowType enum value
	ContactFlowTypeAgentWhisper = "AGENT_WHISPER"

	// ContactFlowTypeOutboundWhisper is a ContactFlowType enum value
	ContactFlowTypeOutboundWhisper = "OUTBOUND_WHISPER"

	// ContactFlowTypeAgentTransfer is a ContactFlowType enum value
	ContactFlowTypeAgentTransfer = "AGENT_TRANSFER"

	// ContactFlowTypeQueueTransfer is a ContactFlowType enum value
	ContactFlowTypeQueueTransfer = "QUEUE_TRANSFER"
)

// ContactFlowType_Values returns all elements of the ContactFlowType enum
func ContactFlowType_Values() []string {
	return []string{
		ContactFlowTypeContactFlow,
		ContactFlowTypeCustomerQueue,
		ContactFlowTypeCustomerHold,
		ContactFlowTypeCustomerWhisper,
		ContactFlowTypeAgentHold,
		ContactFlowTypeAgentWhisper,
		ContactFlowTypeOutboundWhisper,
		ContactFlowTypeAgentTransfer,
		ContactFlowTypeQueueTransfer,
	}
}

const (
	// ContactInitiationMethodInbound is a ContactInitiationMethod enum value
	ContactInitiationMethodInbound = "INBOUND"

	// ContactInitiationMethodOutbound is a ContactInitiationMethod enum value
	ContactInitiationMethodOutbound = "OUTBOUND"

	// ContactInitiationMethodTransfer is a ContactInitiationMethod enum value
	ContactInitiationMethodTransfer = "TRANSFER"

	// ContactInitiationMethodQueueTransfer is a ContactInitiationMethod enum value
	ContactInitiationMethodQueueTransfer = "QUEUE_TRANSFER"

	// ContactInitiationMethodCallback is a ContactInitiationMethod enum value
	ContactInitiationMethodCallback = "CALLBACK"

	// ContactInitiationMethodApi is a ContactInitiationMethod enum value
	ContactInitiationMethodApi = "API"

	// ContactInitiationMethodDisconnect is a ContactInitiationMethod enum value
	ContactInitiationMethodDisconnect = "DISCONNECT"

	// ContactInitiationMethodMonitor is a ContactInitiationMethod enum value
	ContactInitiationMethodMonitor = "MONITOR"

	// ContactInitiationMethodExternalOutbound is a ContactInitiationMethod enum value
	ContactInitiationMethodExternalOutbound = "EXTERNAL_OUTBOUND"
)

// ContactInitiationMethod_Values returns all elements of the ContactInitiationMethod enum
func ContactInitiationMethod_Values() []string {
	return []string{
		ContactInitiationMethodInbound,
		ContactInitiationMethodOutbound,
		ContactInitiationMethodTransfer,
		ContactInitiationMethodQueueTransfer,
		ContactInitiationMethodCallback,
		ContactInitiationMethodApi,
		ContactInitiationMethodDisconnect,
		ContactInitiationMethodMonitor,
		ContactInitiationMethodExternalOutbound,
	}
}

const (
	// ContactStateIncoming is a ContactState enum value
	ContactStateIncoming = "INCOMING"

	// ContactStatePending is a ContactState enum value
	ContactStatePending = "PENDING"

	// ContactStateConnecting is a ContactState enum value
	ContactStateConnecting = "CONNECTING"

	// ContactStateConnected is a ContactState enum value
	ContactStateConnected = "CONNECTED"

	// ContactStateConnectedOnhold is a ContactState enum value
	ContactStateConnectedOnhold = "CONNECTED_ONHOLD"

	// ContactStateMissed is a ContactState enum value
	ContactStateMissed = "MISSED"

	// ContactStateError is a ContactState enum value
	ContactStateError = "ERROR"

	// ContactStateEnded is a ContactState enum value
	ContactStateEnded = "ENDED"

	// ContactStateRejected is a ContactState enum value
	ContactStateRejected = "REJECTED"
)

// ContactState_Values returns all elements of the ContactState enum
func ContactState_Values() []string {
	return []string{
		ContactStateIncoming,
		ContactStatePending,
		ContactStateConnecting,
		ContactStateConnected,
		ContactStateConnectedOnhold,
		ContactStateMissed,
		ContactStateError,
		ContactStateEnded,
		ContactStateRejected,
	}
}

// The current metric names.
const (
	// CurrentMetricNameAgentsOnline is a CurrentMetricName enum value
	CurrentMetricNameAgentsOnline = "AGENTS_ONLINE"

	// CurrentMetricNameAgentsAvailable is a CurrentMetricName enum value
	CurrentMetricNameAgentsAvailable = "AGENTS_AVAILABLE"

	// CurrentMetricNameAgentsOnCall is a CurrentMetricName enum value
	CurrentMetricNameAgentsOnCall = "AGENTS_ON_CALL"

	// CurrentMetricNameAgentsNonProductive is a CurrentMetricName enum value
	CurrentMetricNameAgentsNonProductive = "AGENTS_NON_PRODUCTIVE"

	// CurrentMetricNameAgentsAfterContactWork is a CurrentMetricName enum value
	CurrentMetricNameAgentsAfterContactWork = "AGENTS_AFTER_CONTACT_WORK"

	// CurrentMetricNameAgentsError is a CurrentMetricName enum value
	CurrentMetricNameAgentsError = "AGENTS_ERROR"

	// CurrentMetricNameAgentsStaffed is a CurrentMetricName enum value
	CurrentMetricNameAgentsStaffed = "AGENTS_STAFFED"

	// CurrentMetricNameContactsInQueue is a CurrentMetricName enum value
	CurrentMetricNameContactsInQueue = "CONTACTS_IN_QUEUE"

	// CurrentMetricNameOldestContactAge is a CurrentMetricName enum value
	CurrentMetricNameOldestContactAge = "OLDEST_CONTACT_AGE"

	// CurrentMetricNameContactsScheduled is a CurrentMetricName enum value
	CurrentMetricNameContactsScheduled = "CONTACTS_SCHEDULED"

	// CurrentMetricNameAgentsOnContact is a CurrentMetricName enum value
	CurrentMetricNameAgentsOnContact = "AGENTS_ON_CONTACT"

	// CurrentMetricNameSlotsActive is a CurrentMetricName enum value
	CurrentMetricNameSlotsActive = "SLOTS_ACTIVE"

	// CurrentMetricNameSlotsAvailable is a CurrentMetricName enum value
	CurrentMetricNameSlotsAvailable = "SLOTS_AVAILABLE"
)

// CurrentMetricName_Values returns all elements of the CurrentMetricName enum
func CurrentMetricName_Values() []string {
	return []string{
		CurrentMetricNameAgentsOnline,
		CurrentMetricNameAgentsAvailable,
		CurrentMetricNameAgentsOnCall,
		CurrentMetricNameAgentsNonProductive,
		CurrentMetricNameAgentsAfterContactWork,
		CurrentMetricNameAgentsError,
		CurrentMetricNameAgentsStaffed,
		CurrentMetricNameContactsInQueue,
		CurrentMetricNameOldestContactAge,
		CurrentMetricNameContactsScheduled,
		CurrentMetricNameAgentsOnContact,
		CurrentMetricNameSlotsActive,
		CurrentMetricNameSlotsAvailable,
	}
}

const (
	// DirectoryTypeSaml is a DirectoryType enum value
	DirectoryTypeSaml = "SAML"

	// DirectoryTypeConnectManaged is a DirectoryType enum value
	DirectoryTypeConnectManaged = "CONNECT_MANAGED"

	// DirectoryTypeExistingDirectory is a DirectoryType enum value
	DirectoryTypeExistingDirectory = "EXISTING_DIRECTORY"
)

// DirectoryType_Values returns all elements of the DirectoryType enum
func DirectoryType_Values() []string {
	return []string{
		DirectoryTypeSaml,
		DirectoryTypeConnectManaged,
		DirectoryTypeExistingDirectory,
	}
}

const (
	// EncryptionTypeKms is a EncryptionType enum value
	EncryptionTypeKms = "KMS"
)

// EncryptionType_Values returns all elements of the EncryptionType enum
func EncryptionType_Values() []string {
	return []string{
		EncryptionTypeKms,
	}
}

const (
	// EndpointTypeTelephoneNumber is a EndpointType enum value
	EndpointTypeTelephoneNumber = "TELEPHONE_NUMBER"

	// EndpointTypeVoip is a EndpointType enum value
	EndpointTypeVoip = "VOIP"

	// EndpointTypeContactFlow is a EndpointType enum value
	EndpointTypeContactFlow = "CONTACT_FLOW"
)

// EndpointType_Values returns all elements of the EndpointType enum
func EndpointType_Values() []string {
	return []string{
		EndpointTypeTelephoneNumber,
		EndpointTypeVoip,
		EndpointTypeContactFlow,
	}
}

const (
	// EvaluationFormQuestionTypeText is a EvaluationFormQuestionType enum value
	EvaluationFormQuestionTypeText = "TEXT"

	// EvaluationFormQuestionTypeSingleselect is a EvaluationFormQuestionType enum value
	EvaluationFormQuestionTypeSingleselect = "SINGLESELECT"

	// EvaluationFormQuestionTypeNumeric is a EvaluationFormQuestionType enum value
	EvaluationFormQuestionTypeNumeric = "NUMERIC"
)

// EvaluationFormQuestionType_Values returns all elements of the EvaluationFormQuestionType enum
func EvaluationFormQuestionType_Values() []string {
	return []string{
		EvaluationFormQuestionTypeText,
		EvaluationFormQuestionTypeSingleselect,
		EvaluationFormQuestionTypeNumeric,
	}
}

const (
	// EvaluationFormScoringModeQuestionOnly is a EvaluationFormScoringMode enum value
	EvaluationFormScoringModeQuestionOnly = "QUESTION_ONLY"

	// EvaluationFormScoringModeSectionOnly is a EvaluationFormScoringMode enum value
	EvaluationFormScoringModeSectionOnly = "SECTION_ONLY"
)

// EvaluationFormScoringMode_Values returns all elements of the EvaluationFormScoringMode enum
func EvaluationFormScoringMode_Values() []string {
	return []string{
		EvaluationFormScoringModeQuestionOnly,
		EvaluationFormScoringModeSectionOnly,
	}
}

const (
	// EvaluationFormScoringStatusEnabled is a EvaluationFormScoringStatus enum value
	EvaluationFormScoringStatusEnabled = "ENABLED"

	// EvaluationFormScoringStatusDisabled is a EvaluationFormScoringStatus enum value
	EvaluationFormScoringStatusDisabled = "DISABLED"
)

// EvaluationFormScoringStatus_Values returns all elements of the EvaluationFormScoringStatus enum
func EvaluationFormScoringStatus_Values() []string {
	return []string{
		EvaluationFormScoringStatusEnabled,
		EvaluationFormScoringStatusDisabled,
	}
}

const (
	// EvaluationFormSingleSelectQuestionDisplayModeDropdown is a EvaluationFormSingleSelectQuestionDisplayMode enum value
	EvaluationFormSingleSelectQuestionDisplayModeDropdown = "DROPDOWN"

	// EvaluationFormSingleSelectQuestionDisplayModeRadio is a EvaluationFormSingleSelectQuestionDisplayMode enum value
	EvaluationFormSingleSelectQuestionDisplayModeRadio = "RADIO"
)

// EvaluationFormSingleSelectQuestionDisplayMode_Values returns all elements of the EvaluationFormSingleSelectQuestionDisplayMode enum
func EvaluationFormSingleSelectQuestionDisplayMode_Values() []string {
	return []string{
		EvaluationFormSingleSelectQuestionDisplayModeDropdown,
		EvaluationFormSingleSelectQuestionDisplayModeRadio,
	}
}

const (
	// EvaluationFormVersionStatusDraft is a EvaluationFormVersionStatus enum value
	EvaluationFormVersionStatusDraft = "DRAFT"

	// EvaluationFormVersionStatusActive is a EvaluationFormVersionStatus enum value
	EvaluationFormVersionStatusActive = "ACTIVE"
)

// EvaluationFormVersionStatus_Values returns all elements of the EvaluationFormVersionStatus enum
func EvaluationFormVersionStatus_Values() []string {
	return []string{
		EvaluationFormVersionStatusDraft,
		EvaluationFormVersionStatusActive,
	}
}

const (
	// EvaluationStatusDraft is a EvaluationStatus enum value
	EvaluationStatusDraft = "DRAFT"

	// EvaluationStatusSubmitted is a EvaluationStatus enum value
	EvaluationStatusSubmitted = "SUBMITTED"
)

// EvaluationStatus_Values returns all elements of the EvaluationStatus enum
func EvaluationStatus_Values() []string {
	return []string{
		EvaluationStatusDraft,
		EvaluationStatusSubmitted,
	}
}

const (
	// EventSourceNameOnPostCallAnalysisAvailable is a EventSourceName enum value
	EventSourceNameOnPostCallAnalysisAvailable = "OnPostCallAnalysisAvailable"

	// EventSourceNameOnRealTimeCallAnalysisAvailable is a EventSourceName enum value
	EventSourceNameOnRealTimeCallAnalysisAvailable = "OnRealTimeCallAnalysisAvailable"

	// EventSourceNameOnRealTimeChatAnalysisAvailable is a EventSourceName enum value
	EventSourceNameOnRealTimeChatAnalysisAvailable = "OnRealTimeChatAnalysisAvailable"

	// EventSourceNameOnPostChatAnalysisAvailable is a EventSourceName enum value
	EventSourceNameOnPostChatAnalysisAvailable = "OnPostChatAnalysisAvailable"

	// EventSourceNameOnZendeskTicketCreate is a EventSourceName enum value
	EventSourceNameOnZendeskTicketCreate = "OnZendeskTicketCreate"

	// EventSourceNameOnZendeskTicketStatusUpdate is a EventSourceName enum value
	EventSourceNameOnZendeskTicketStatusUpdate = "OnZendeskTicketStatusUpdate"

	// EventSourceNameOnSalesforceCaseCreate is a EventSourceName enum value
	EventSourceNameOnSalesforceCaseCreate = "OnSalesforceCaseCreate"

	// EventSourceNameOnContactEvaluationSubmit is a EventSourceName enum value
	EventSourceNameOnContactEvaluationSubmit = "OnContactEvaluationSubmit"

	// EventSourceNameOnMetricDataUpdate is a EventSourceName enum value
	EventSourceNameOnMetricDataUpdate = "OnMetricDataUpdate"

	// EventSourceNameOnCaseCreate is a EventSourceName enum value
	EventSourceNameOnCaseCreate = "OnCaseCreate"

	// EventSourceNameOnCaseUpdate is a EventSourceName enum value
	EventSourceNameOnCaseUpdate = "OnCaseUpdate"
)

// EventSourceName_Values returns all elements of the EventSourceName enum
func EventSourceName_Values() []string {
	return []string{
		EventSourceNameOnPostCallAnalysisAvailable,
		EventSourceNameOnRealTimeCallAnalysisAvailable,
		EventSourceNameOnRealTimeChatAnalysisAvailable,
		EventSourceNameOnPostChatAnalysisAvailable,
		EventSourceNameOnZendeskTicketCreate,
		EventSourceNameOnZendeskTicketStatusUpdate,
		EventSourceNameOnSalesforceCaseCreate,
		EventSourceNameOnContactEvaluationSubmit,
		EventSourceNameOnMetricDataUpdate,
		EventSourceNameOnCaseCreate,
		EventSourceNameOnCaseUpdate,
	}
}

const (
	// FailureReasonCodeInvalidAttributeKey is a FailureReasonCode enum value
	FailureReasonCodeInvalidAttributeKey = "INVALID_ATTRIBUTE_KEY"

	// FailureReasonCodeInvalidCustomerEndpoint is a FailureReasonCode enum value
	FailureReasonCodeInvalidCustomerEndpoint = "INVALID_CUSTOMER_ENDPOINT"

	// FailureReasonCodeInvalidSystemEndpoint is a FailureReasonCode enum value
	FailureReasonCodeInvalidSystemEndpoint = "INVALID_SYSTEM_ENDPOINT"

	// FailureReasonCodeInvalidQueue is a FailureReasonCode enum value
	FailureReasonCodeInvalidQueue = "INVALID_QUEUE"

	// FailureReasonCodeMissingCampaign is a FailureReasonCode enum value
	FailureReasonCodeMissingCampaign = "MISSING_CAMPAIGN"

	// FailureReasonCodeMissingCustomerEndpoint is a FailureReasonCode enum value
	FailureReasonCodeMissingCustomerEndpoint = "MISSING_CUSTOMER_ENDPOINT"

	// FailureReasonCodeMissingQueueIdAndSystemEndpoint is a FailureReasonCode enum value
	FailureReasonCodeMissingQueueIdAndSystemEndpoint = "MISSING_QUEUE_ID_AND_SYSTEM_ENDPOINT"

	// FailureReasonCodeRequestThrottled is a FailureReasonCode enum value
	FailureReasonCodeRequestThrottled = "REQUEST_THROTTLED"

	// FailureReasonCodeIdempotencyException is a FailureReasonCode enum value
	FailureReasonCodeIdempotencyException = "IDEMPOTENCY_EXCEPTION"

	// FailureReasonCodeInternalError is a FailureReasonCode enum value
	FailureReasonCodeInternalError = "INTERNAL_ERROR"
)

// FailureReasonCode_Values returns all elements of the FailureReasonCode enum
func FailureReasonCode_Values() []string {
	return []string{
		FailureReasonCodeInvalidAttributeKey,
		FailureReasonCodeInvalidCustomerEndpoint,
		FailureReasonCodeInvalidSystemEndpoint,
		FailureReasonCodeInvalidQueue,
		FailureReasonCodeMissingCampaign,
		FailureReasonCodeMissingCustomerEndpoint,
		FailureReasonCodeMissingQueueIdAndSystemEndpoint,
		FailureReasonCodeRequestThrottled,
		FailureReasonCodeIdempotencyException,
		FailureReasonCodeInternalError,
	}
}

const (
	// FlowAssociationResourceTypeSmsPhoneNumber is a FlowAssociationResourceType enum value
	FlowAssociationResourceTypeSmsPhoneNumber = "SMS_PHONE_NUMBER"
)

// FlowAssociationResourceType_Values returns all elements of the FlowAssociationResourceType enum
func FlowAssociationResourceType_Values() []string {
	return []string{
		FlowAssociationResourceTypeSmsPhoneNumber,
	}
}

const (
	// GroupingQueue is a Grouping enum value
	GroupingQueue = "QUEUE"

	// GroupingChannel is a Grouping enum value
	GroupingChannel = "CHANNEL"

	// GroupingRoutingProfile is a Grouping enum value
	GroupingRoutingProfile = "ROUTING_PROFILE"

	// GroupingRoutingStepExpression is a Grouping enum value
	GroupingRoutingStepExpression = "ROUTING_STEP_EXPRESSION"
)

// Grouping_Values returns all elements of the Grouping enum
func Grouping_Values() []string {
	return []string{
		GroupingQueue,
		GroupingChannel,
		GroupingRoutingProfile,
		GroupingRoutingStepExpression,
	}
}

const (
	// HierarchyGroupMatchTypeExact is a HierarchyGroupMatchType enum value
	HierarchyGroupMatchTypeExact = "EXACT"

	// HierarchyGroupMatchTypeWithChildGroups is a HierarchyGroupMatchType enum value
	HierarchyGroupMatchTypeWithChildGroups = "WITH_CHILD_GROUPS"
)

// HierarchyGroupMatchType_Values returns all elements of the HierarchyGroupMatchType enum
func HierarchyGroupMatchType_Values() []string {
	return []string{
		HierarchyGroupMatchTypeExact,
		HierarchyGroupMatchTypeWithChildGroups,
	}
}

// The historical metric names.
const (
	// HistoricalMetricNameContactsQueued is a HistoricalMetricName enum value
	HistoricalMetricNameContactsQueued = "CONTACTS_QUEUED"

	// HistoricalMetricNameContactsHandled is a HistoricalMetricName enum value
	HistoricalMetricNameContactsHandled = "CONTACTS_HANDLED"

	// HistoricalMetricNameContactsAbandoned is a HistoricalMetricName enum value
	HistoricalMetricNameContactsAbandoned = "CONTACTS_ABANDONED"

	// HistoricalMetricNameContactsConsulted is a HistoricalMetricName enum value
	HistoricalMetricNameContactsConsulted = "CONTACTS_CONSULTED"

	// HistoricalMetricNameContactsAgentHungUpFirst is a HistoricalMetricName enum value
	HistoricalMetricNameContactsAgentHungUpFirst = "CONTACTS_AGENT_HUNG_UP_FIRST"

	// HistoricalMetricNameContactsHandledIncoming is a HistoricalMetricName enum value
	HistoricalMetricNameContactsHandledIncoming = "CONTACTS_HANDLED_INCOMING"

	// HistoricalMetricNameContactsHandledOutbound is a HistoricalMetricName enum value
	HistoricalMetricNameContactsHandledOutbound = "CONTACTS_HANDLED_OUTBOUND"

	// HistoricalMetricNameContactsHoldAbandons is a HistoricalMetricName enum value
	HistoricalMetricNameContactsHoldAbandons = "CONTACTS_HOLD_ABANDONS"

	// HistoricalMetricNameContactsTransferredIn is a HistoricalMetricName enum value
	HistoricalMetricNameContactsTransferredIn = "CONTACTS_TRANSFERRED_IN"

	// HistoricalMetricNameContactsTransferredOut is a HistoricalMetricName enum value
	HistoricalMetricNameContactsTransferredOut = "CONTACTS_TRANSFERRED_OUT"

	// HistoricalMetricNameContactsTransferredInFromQueue is a HistoricalMetricName enum value
	HistoricalMetricNameContactsTransferredInFromQueue = "CONTACTS_TRANSFERRED_IN_FROM_QUEUE"

	// HistoricalMetricNameContactsTransferredOutFromQueue is a HistoricalMetricName enum value
	HistoricalMetricNameContactsTransferredOutFromQueue = "CONTACTS_TRANSFERRED_OUT_FROM_QUEUE"

	// HistoricalMetricNameContactsMissed is a HistoricalMetricName enum value
	HistoricalMetricNameContactsMissed = "CONTACTS_MISSED"

	// HistoricalMetricNameCallbackContactsHandled is a HistoricalMetricName enum value
	HistoricalMetricNameCallbackContactsHandled = "CALLBACK_CONTACTS_HANDLED"

	// HistoricalMetricNameApiContactsHandled is a HistoricalMetricName enum value
	HistoricalMetricNameApiContactsHandled = "API_CONTACTS_HANDLED"

	// HistoricalMetricNameOccupancy is a HistoricalMetricName enum value
	HistoricalMetricNameOccupancy = "OCCUPANCY"

	// HistoricalMetricNameHandleTime is a HistoricalMetricName enum value
	HistoricalMetricNameHandleTime = "HANDLE_TIME"

	// HistoricalMetricNameAfterContactWorkTime is a HistoricalMetricName enum value
	HistoricalMetricNameAfterContactWorkTime = "AFTER_CONTACT_WORK_TIME"

	// HistoricalMetricNameQueuedTime is a HistoricalMetricName enum value
	HistoricalMetricNameQueuedTime = "QUEUED_TIME"

	// HistoricalMetricNameAbandonTime is a HistoricalMetricName enum value
	HistoricalMetricNameAbandonTime = "ABANDON_TIME"

	// HistoricalMetricNameQueueAnswerTime is a HistoricalMetricName enum value
	HistoricalMetricNameQueueAnswerTime = "QUEUE_ANSWER_TIME"

	// HistoricalMetricNameHoldTime is a HistoricalMetricName enum value
	HistoricalMetricNameHoldTime = "HOLD_TIME"

	// HistoricalMetricNameInteractionTime is a HistoricalMetricName enum value
	HistoricalMetricNameInteractionTime = "INTERACTION_TIME"

	// HistoricalMetricNameInteractionAndHoldTime is a HistoricalMetricName enum value
	HistoricalMetricNameInteractionAndHoldTime = "INTERACTION_AND_HOLD_TIME"

	// HistoricalMetricNameServiceLevel is a HistoricalMetricName enum value
	HistoricalMetricNameServiceLevel = "SERVICE_LEVEL"
)

// HistoricalMetricName_Values returns all elements of the HistoricalMetricName enum
func HistoricalMetricName_Values() []string {
	return []string{
		HistoricalMetricNameContactsQueued,
		HistoricalMetricNameContactsHandled,
		HistoricalMetricNameContactsAbandoned,
		HistoricalMetricNameContactsConsulted,
		HistoricalMetricNameContactsAgentHungUpFirst,
		HistoricalMetricNameContactsHandledIncoming,
		HistoricalMetricNameContactsHandledOutbound,
		HistoricalMetricNameContactsHoldAbandons,
		HistoricalMetricNameContactsTransferredIn,
		HistoricalMetricNameContactsTransferredOut,
		HistoricalMetricNameContactsTransferredInFromQueue,
		HistoricalMetricNameContactsTransferredOutFromQueue,
		HistoricalMetricNameContactsMissed,
		HistoricalMetricNameCallbackContactsHandled,
		HistoricalMetricNameApiContactsHandled,
		HistoricalMetricNameOccupancy,
		HistoricalMetricNameHandleTime,
		HistoricalMetricNameAfterContactWorkTime,
		HistoricalMetricNameQueuedTime,
		HistoricalMetricNameAbandonTime,
		HistoricalMetricNameQueueAnswerTime,
		HistoricalMetricNameHoldTime,
		HistoricalMetricNameInteractionTime,
		HistoricalMetricNameInteractionAndHoldTime,
		HistoricalMetricNameServiceLevel,
	}
}

const (
	// HoursOfOperationDaysSunday is a HoursOfOperationDays enum value
	HoursOfOperationDaysSunday = "SUNDAY"

	// HoursOfOperationDaysMonday is a HoursOfOperationDays enum value
	HoursOfOperationDaysMonday = "MONDAY"

	// HoursOfOperationDaysTuesday is a HoursOfOperationDays enum value
	HoursOfOperationDaysTuesday = "TUESDAY"

	// HoursOfOperationDaysWednesday is a HoursOfOperationDays enum value
	HoursOfOperationDaysWednesday = "WEDNESDAY"

	// HoursOfOperationDaysThursday is a HoursOfOperationDays enum value
	HoursOfOperationDaysThursday = "THURSDAY"

	// HoursOfOperationDaysFriday is a HoursOfOperationDays enum value
	HoursOfOperationDaysFriday = "FRIDAY"

	// HoursOfOperationDaysSaturday is a HoursOfOperationDays enum value
	HoursOfOperationDaysSaturday = "SATURDAY"
)

// HoursOfOperationDays_Values returns all elements of the HoursOfOperationDays enum
func HoursOfOperationDays_Values() []string {
	return []string{
		HoursOfOperationDaysSunday,
		HoursOfOperationDaysMonday,
		HoursOfOperationDaysTuesday,
		HoursOfOperationDaysWednesday,
		HoursOfOperationDaysThursday,
		HoursOfOperationDaysFriday,
		HoursOfOperationDaysSaturday,
	}
}

const (
	// InstanceAttributeTypeInboundCalls is a InstanceAttributeType enum value
	InstanceAttributeTypeInboundCalls = "INBOUND_CALLS"

	// InstanceAttributeTypeOutboundCalls is a InstanceAttributeType enum value
	InstanceAttributeTypeOutboundCalls = "OUTBOUND_CALLS"

	// InstanceAttributeTypeContactflowLogs is a InstanceAttributeType enum value
	InstanceAttributeTypeContactflowLogs = "CONTACTFLOW_LOGS"

	// InstanceAttributeTypeContactLens is a InstanceAttributeType enum value
	InstanceAttributeTypeContactLens = "CONTACT_LENS"

	// InstanceAttributeTypeAutoResolveBestVoices is a InstanceAttributeType enum value
	InstanceAttributeTypeAutoResolveBestVoices = "AUTO_RESOLVE_BEST_VOICES"

	// InstanceAttributeTypeUseCustomTtsVoices is a InstanceAttributeType enum value
	InstanceAttributeTypeUseCustomTtsVoices = "USE_CUSTOM_TTS_VOICES"

	// InstanceAttributeTypeEarlyMedia is a InstanceAttributeType enum value
	InstanceAttributeTypeEarlyMedia = "EARLY_MEDIA"

	// InstanceAttributeTypeMultiPartyConference is a InstanceAttributeType enum value
	InstanceAttributeTypeMultiPartyConference = "MULTI_PARTY_CONFERENCE"

	// InstanceAttributeTypeHighVolumeOutbound is a InstanceAttributeType enum value
	InstanceAttributeTypeHighVolumeOutbound = "HIGH_VOLUME_OUTBOUND"

	// InstanceAttributeTypeEnhancedContactMonitoring is a InstanceAttributeType enum value
	InstanceAttributeTypeEnhancedContactMonitoring = "ENHANCED_CONTACT_MONITORING"

	// InstanceAttributeTypeEnhancedChatMonitoring is a InstanceAttributeType enum value
	InstanceAttributeTypeEnhancedChatMonitoring = "ENHANCED_CHAT_MONITORING"
)

// InstanceAttributeType_Values returns all elements of the InstanceAttributeType enum
func InstanceAttributeType_Values() []string {
	return []string{
		InstanceAttributeTypeInboundCalls,
		InstanceAttributeTypeOutboundCalls,
		InstanceAttributeTypeContactflowLogs,
		InstanceAttributeTypeContactLens,
		InstanceAttributeTypeAutoResolveBestVoices,
		InstanceAttributeTypeUseCustomTtsVoices,
		InstanceAttributeTypeEarlyMedia,
		InstanceAttributeTypeMultiPartyConference,
		InstanceAttributeTypeHighVolumeOutbound,
		InstanceAttributeTypeEnhancedContactMonitoring,
		InstanceAttributeTypeEnhancedChatMonitoring,
	}
}

const (
	// InstanceStatusCreationInProgress is a InstanceStatus enum value
	InstanceStatusCreationInProgress = "CREATION_IN_PROGRESS"

	// InstanceStatusActive is a InstanceStatus enum value
	InstanceStatusActive = "ACTIVE"

	// InstanceStatusCreationFailed is a InstanceStatus enum value
	InstanceStatusCreationFailed = "CREATION_FAILED"
)

// InstanceStatus_Values returns all elements of the InstanceStatus enum
func InstanceStatus_Values() []string {
	return []string{
		InstanceStatusCreationInProgress,
		InstanceStatusActive,
		InstanceStatusCreationFailed,
	}
}

const (
	// InstanceStorageResourceTypeChatTranscripts is a InstanceStorageResourceType enum value
	InstanceStorageResourceTypeChatTranscripts = "CHAT_TRANSCRIPTS"

	// InstanceStorageResourceTypeCallRecordings is a InstanceStorageResourceType enum value
	InstanceStorageResourceTypeCallRecordings = "CALL_RECORDINGS"

	// InstanceStorageResourceTypeScheduledReports is a InstanceStorageResourceType enum value
	InstanceStorageResourceTypeScheduledReports = "SCHEDULED_REPORTS"

	// InstanceStorageResourceTypeMediaStreams is a InstanceStorageResourceType enum value
	InstanceStorageResourceTypeMediaStreams = "MEDIA_STREAMS"

	// InstanceStorageResourceTypeContactTraceRecords is a InstanceStorageResourceType enum value
	InstanceStorageResourceTypeContactTraceRecords = "CONTACT_TRACE_RECORDS"

	// InstanceStorageResourceTypeAgentEvents is a InstanceStorageResourceType enum value
	InstanceStorageResourceTypeAgentEvents = "AGENT_EVENTS"

	// InstanceStorageResourceTypeRealTimeContactAnalysisSegments is a InstanceStorageResourceType enum value
	InstanceStorageResourceTypeRealTimeContactAnalysisSegments = "REAL_TIME_CONTACT_ANALYSIS_SEGMENTS"

	// InstanceStorageResourceTypeAttachments is a InstanceStorageResourceType enum value
	InstanceStorageResourceTypeAttachments = "ATTACHMENTS"

	// InstanceStorageResourceTypeContactEvaluations is a InstanceStorageResourceType enum value
	InstanceStorageResourceTypeContactEvaluations = "CONTACT_EVALUATIONS"

	// InstanceStorageResourceTypeScreenRecordings is a InstanceStorageResourceType enum value
	InstanceStorageResourceTypeScreenRecordings = "SCREEN_RECORDINGS"
)

// InstanceStorageResourceType_Values returns all elements of the InstanceStorageResourceType enum
func InstanceStorageResourceType_Values() []string {
	return []string{
		InstanceStorageResourceTypeChatTranscripts,
		InstanceStorageResourceTypeCallRecordings,
		InstanceStorageResourceTypeScheduledReports,
		InstanceStorageResourceTypeMediaStreams,
		InstanceStorageResourceTypeContactTraceRecords,
		InstanceStorageResourceTypeAgentEvents,
		InstanceStorageResourceTypeRealTimeContactAnalysisSegments,
		InstanceStorageResourceTypeAttachments,
		InstanceStorageResourceTypeContactEvaluations,
		InstanceStorageResourceTypeScreenRecordings,
	}
}

const (
	// IntegrationTypeEvent is a IntegrationType enum value
	IntegrationTypeEvent = "EVENT"

	// IntegrationTypeVoiceId is a IntegrationType enum value
	IntegrationTypeVoiceId = "VOICE_ID"

	// IntegrationTypePinpointApp is a IntegrationType enum value
	IntegrationTypePinpointApp = "PINPOINT_APP"

	// IntegrationTypeWisdomAssistant is a IntegrationType enum value
	IntegrationTypeWisdomAssistant = "WISDOM_ASSISTANT"

	// IntegrationTypeWisdomKnowledgeBase is a IntegrationType enum value
	IntegrationTypeWisdomKnowledgeBase = "WISDOM_KNOWLEDGE_BASE"

	// IntegrationTypeWisdomQuickResponses is a IntegrationType enum value
	IntegrationTypeWisdomQuickResponses = "WISDOM_QUICK_RESPONSES"

	// IntegrationTypeCasesDomain is a IntegrationType enum value
	IntegrationTypeCasesDomain = "CASES_DOMAIN"

	// IntegrationTypeApplication is a IntegrationType enum value
	IntegrationTypeApplication = "APPLICATION"

	// IntegrationTypeFileScanner is a IntegrationType enum value
	IntegrationTypeFileScanner = "FILE_SCANNER"
)

// IntegrationType_Values returns all elements of the IntegrationType enum
func IntegrationType_Values() []string {
	return []string{
		IntegrationTypeEvent,
		IntegrationTypeVoiceId,
		IntegrationTypePinpointApp,
		IntegrationTypeWisdomAssistant,
		IntegrationTypeWisdomKnowledgeBase,
		IntegrationTypeWisdomQuickResponses,
		IntegrationTypeCasesDomain,
		IntegrationTypeApplication,
		IntegrationTypeFileScanner,
	}
}

const (
	// IntervalPeriodFifteenMin is a IntervalPeriod enum value
	IntervalPeriodFifteenMin = "FIFTEEN_MIN"

	// IntervalPeriodThirtyMin is a IntervalPeriod enum value
	IntervalPeriodThirtyMin = "THIRTY_MIN"

	// IntervalPeriodHour is a IntervalPeriod enum value
	IntervalPeriodHour = "HOUR"

	// IntervalPeriodDay is a IntervalPeriod enum value
	IntervalPeriodDay = "DAY"

	// IntervalPeriodWeek is a IntervalPeriod enum value
	IntervalPeriodWeek = "WEEK"

	// IntervalPeriodTotal is a IntervalPeriod enum value
	IntervalPeriodTotal = "TOTAL"
)

// IntervalPeriod_Values returns all elements of the IntervalPeriod enum
func IntervalPeriod_Values() []string {
	return []string{
		IntervalPeriodFifteenMin,
		IntervalPeriodThirtyMin,
		IntervalPeriodHour,
		IntervalPeriodDay,
		IntervalPeriodWeek,
		IntervalPeriodTotal,
	}
}

const (
	// LexVersionV1 is a LexVersion enum value
	LexVersionV1 = "V1"

	// LexVersionV2 is a LexVersion enum value
	LexVersionV2 = "V2"
)

// LexVersion_Values returns all elements of the LexVersion enum
func LexVersion_Values() []string {
	return []string{
		LexVersionV1,
		LexVersionV2,
	}
}

const (
	// ListFlowAssociationResourceTypeVoicePhoneNumber is a ListFlowAssociationResourceType enum value
	ListFlowAssociationResourceTypeVoicePhoneNumber = "VOICE_PHONE_NUMBER"
)

// ListFlowAssociationResourceType_Values returns all elements of the ListFlowAssociationResourceType enum
func ListFlowAssociationResourceType_Values() []string {
	return []string{
		ListFlowAssociationResourceTypeVoicePhoneNumber,
	}
}

const (
	// MeetingFeatureStatusAvailable is a MeetingFeatureStatus enum value
	MeetingFeatureStatusAvailable = "AVAILABLE"

	// MeetingFeatureStatusUnavailable is a MeetingFeatureStatus enum value
	MeetingFeatureStatusUnavailable = "UNAVAILABLE"
)

// MeetingFeatureStatus_Values returns all elements of the MeetingFeatureStatus enum
func MeetingFeatureStatus_Values() []string {
	return []string{
		MeetingFeatureStatusAvailable,
		MeetingFeatureStatusUnavailable,
	}
}

const (
	// MonitorCapabilitySilentMonitor is a MonitorCapability enum value
	MonitorCapabilitySilentMonitor = "SILENT_MONITOR"

	// MonitorCapabilityBarge is a MonitorCapability enum value
	MonitorCapabilityBarge = "BARGE"
)

// MonitorCapability_Values returns all elements of the MonitorCapability enum
func MonitorCapability_Values() []string {
	return []string{
		MonitorCapabilitySilentMonitor,
		MonitorCapabilityBarge,
	}
}

const (
	// NotificationContentTypePlainText is a NotificationContentType enum value
	NotificationContentTypePlainText = "PLAIN_TEXT"
)

// NotificationContentType_Values returns all elements of the NotificationContentType enum
func NotificationContentType_Values() []string {
	return []string{
		NotificationContentTypePlainText,
	}
}

const (
	// NotificationDeliveryTypeEmail is a NotificationDeliveryType enum value
	NotificationDeliveryTypeEmail = "EMAIL"
)

// NotificationDeliveryType_Values returns all elements of the NotificationDeliveryType enum
func NotificationDeliveryType_Values() []string {
	return []string{
		NotificationDeliveryTypeEmail,
	}
}

const (
	// NumericQuestionPropertyAutomationLabelOverallCustomerSentimentScore is a NumericQuestionPropertyAutomationLabel enum value
	NumericQuestionPropertyAutomationLabelOverallCustomerSentimentScore = "OVERALL_CUSTOMER_SENTIMENT_SCORE"

	// NumericQuestionPropertyAutomationLabelOverallAgentSentimentScore is a NumericQuestionPropertyAutomationLabel enum value
	NumericQuestionPropertyAutomationLabelOverallAgentSentimentScore = "OVERALL_AGENT_SENTIMENT_SCORE"

	// NumericQuestionPropertyAutomationLabelNonTalkTime is a NumericQuestionPropertyAutomationLabel enum value
	NumericQuestionPropertyAutomationLabelNonTalkTime = "NON_TALK_TIME"

	// NumericQuestionPropertyAutomationLabelNonTalkTimePercentage is a NumericQuestionPropertyAutomationLabel enum value
	NumericQuestionPropertyAutomationLabelNonTalkTimePercentage = "NON_TALK_TIME_PERCENTAGE"

	// NumericQuestionPropertyAutomationLabelNumberOfInterruptions is a NumericQuestionPropertyAutomationLabel enum value
	NumericQuestionPropertyAutomationLabelNumberOfInterruptions = "NUMBER_OF_INTERRUPTIONS"

	// NumericQuestionPropertyAutomationLabelContactDuration is a NumericQuestionPropertyAutomationLabel enum value
	NumericQuestionPropertyAutomationLabelContactDuration = "CONTACT_DURATION"

	// NumericQuestionPropertyAutomationLabelAgentInteractionDuration is a NumericQuestionPropertyAutomationLabel enum value
	NumericQuestionPropertyAutomationLabelAgentInteractionDuration = "AGENT_INTERACTION_DURATION"

	// NumericQuestionPropertyAutomationLabelCustomerHoldTime is a NumericQuestionPropertyAutomationLabel enum value
	NumericQuestionPropertyAutomationLabelCustomerHoldTime = "CUSTOMER_HOLD_TIME"
)

// NumericQuestionPropertyAutomationLabel_Values returns all elements of the NumericQuestionPropertyAutomationLabel enum
func NumericQuestionPropertyAutomationLabel_Values() []string {
	return []string{
		NumericQuestionPropertyAutomationLabelOverallCustomerSentimentScore,
		NumericQuestionPropertyAutomationLabelOverallAgentSentimentScore,
		NumericQuestionPropertyAutomationLabelNonTalkTime,
		NumericQuestionPropertyAutomationLabelNonTalkTimePercentage,
		NumericQuestionPropertyAutomationLabelNumberOfInterruptions,
		NumericQuestionPropertyAutomationLabelContactDuration,
		NumericQuestionPropertyAutomationLabelAgentInteractionDuration,
		NumericQuestionPropertyAutomationLabelCustomerHoldTime,
	}
}

const (
	// ParticipantRoleAgent is a ParticipantRole enum value
	ParticipantRoleAgent = "AGENT"

	// ParticipantRoleCustomer is a ParticipantRole enum value
	ParticipantRoleCustomer = "CUSTOMER"

	// ParticipantRoleSystem is a ParticipantRole enum value
	ParticipantRoleSystem = "SYSTEM"

	// ParticipantRoleCustomBot is a ParticipantRole enum value
	ParticipantRoleCustomBot = "CUSTOM_BOT"

	// ParticipantRoleSupervisor is a ParticipantRole enum value
	ParticipantRoleSupervisor = "SUPERVISOR"
)

// ParticipantRole_Values returns all elements of the ParticipantRole enum
func ParticipantRole_Values() []string {
	return []string{
		ParticipantRoleAgent,
		ParticipantRoleCustomer,
		ParticipantRoleSystem,
		ParticipantRoleCustomBot,
		ParticipantRoleSupervisor,
	}
}

const (
	// ParticipantTimerActionUnset is a ParticipantTimerAction enum value
	ParticipantTimerActionUnset = "Unset"
)

// ParticipantTimerAction_Values returns all elements of the ParticipantTimerAction enum
func ParticipantTimerAction_Values() []string {
	return []string{
		ParticipantTimerActionUnset,
	}
}

const (
	// ParticipantTimerTypeIdle is a ParticipantTimerType enum value
	ParticipantTimerTypeIdle = "IDLE"

	// ParticipantTimerTypeDisconnectNoncustomer is a ParticipantTimerType enum value
	ParticipantTimerTypeDisconnectNoncustomer = "DISCONNECT_NONCUSTOMER"
)

// ParticipantTimerType_Values returns all elements of the ParticipantTimerType enum
func ParticipantTimerType_Values() []string {
	return []string{
		ParticipantTimerTypeIdle,
		ParticipantTimerTypeDisconnectNoncustomer,
	}
}

const (
	// PhoneNumberCountryCodeAf is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeAf = "AF"

	// PhoneNumberCountryCodeAl is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeAl = "AL"

	// PhoneNumberCountryCodeDz is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeDz = "DZ"

	// PhoneNumberCountryCodeAs is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeAs = "AS"

	// PhoneNumberCountryCodeAd is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeAd = "AD"

	// PhoneNumberCountryCodeAo is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeAo = "AO"

	// PhoneNumberCountryCodeAi is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeAi = "AI"

	// PhoneNumberCountryCodeAq is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeAq = "AQ"

	// PhoneNumberCountryCodeAg is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeAg = "AG"

	// PhoneNumberCountryCodeAr is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeAr = "AR"

	// PhoneNumberCountryCodeAm is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeAm = "AM"

	// PhoneNumberCountryCodeAw is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeAw = "AW"

	// PhoneNumberCountryCodeAu is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeAu = "AU"

	// PhoneNumberCountryCodeAt is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeAt = "AT"

	// PhoneNumberCountryCodeAz is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeAz = "AZ"

	// PhoneNumberCountryCodeBs is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeBs = "BS"

	// PhoneNumberCountryCodeBh is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeBh = "BH"

	// PhoneNumberCountryCodeBd is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeBd = "BD"

	// PhoneNumberCountryCodeBb is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeBb = "BB"

	// PhoneNumberCountryCodeBy is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeBy = "BY"

	// PhoneNumberCountryCodeBe is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeBe = "BE"

	// PhoneNumberCountryCodeBz is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeBz = "BZ"

	// PhoneNumberCountryCodeBj is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeBj = "BJ"

	// PhoneNumberCountryCodeBm is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeBm = "BM"

	// PhoneNumberCountryCodeBt is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeBt = "BT"

	// PhoneNumberCountryCodeBo is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeBo = "BO"

	// PhoneNumberCountryCodeBa is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeBa = "BA"

	// PhoneNumberCountryCodeBw is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeBw = "BW"

	// PhoneNumberCountryCodeBr is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeBr = "BR"

	// PhoneNumberCountryCodeIo is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeIo = "IO"

	// PhoneNumberCountryCodeVg is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeVg = "VG"

	// PhoneNumberCountryCodeBn is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeBn = "BN"

	// PhoneNumberCountryCodeBg is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeBg = "BG"

	// PhoneNumberCountryCodeBf is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeBf = "BF"

	// PhoneNumberCountryCodeBi is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeBi = "BI"

	// PhoneNumberCountryCodeKh is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeKh = "KH"

	// PhoneNumberCountryCodeCm is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeCm = "CM"

	// PhoneNumberCountryCodeCa is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeCa = "CA"

	// PhoneNumberCountryCodeCv is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeCv = "CV"

	// PhoneNumberCountryCodeKy is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeKy = "KY"

	// PhoneNumberCountryCodeCf is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeCf = "CF"

	// PhoneNumberCountryCodeTd is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeTd = "TD"

	// PhoneNumberCountryCodeCl is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeCl = "CL"

	// PhoneNumberCountryCodeCn is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeCn = "CN"

	// PhoneNumberCountryCodeCx is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeCx = "CX"

	// PhoneNumberCountryCodeCc is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeCc = "CC"

	// PhoneNumberCountryCodeCo is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeCo = "CO"

	// PhoneNumberCountryCodeKm is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeKm = "KM"

	// PhoneNumberCountryCodeCk is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeCk = "CK"

	// PhoneNumberCountryCodeCr is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeCr = "CR"

	// PhoneNumberCountryCodeHr is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeHr = "HR"

	// PhoneNumberCountryCodeCu is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeCu = "CU"

	// PhoneNumberCountryCodeCw is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeCw = "CW"

	// PhoneNumberCountryCodeCy is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeCy = "CY"

	// PhoneNumberCountryCodeCz is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeCz = "CZ"

	// PhoneNumberCountryCodeCd is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeCd = "CD"

	// PhoneNumberCountryCodeDk is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeDk = "DK"

	// PhoneNumberCountryCodeDj is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeDj = "DJ"

	// PhoneNumberCountryCodeDm is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeDm = "DM"

	// PhoneNumberCountryCodeDo is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeDo = "DO"

	// PhoneNumberCountryCodeTl is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeTl = "TL"

	// PhoneNumberCountryCodeEc is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeEc = "EC"

	// PhoneNumberCountryCodeEg is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeEg = "EG"

	// PhoneNumberCountryCodeSv is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeSv = "SV"

	// PhoneNumberCountryCodeGq is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeGq = "GQ"

	// PhoneNumberCountryCodeEr is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeEr = "ER"

	// PhoneNumberCountryCodeEe is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeEe = "EE"

	// PhoneNumberCountryCodeEt is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeEt = "ET"

	// PhoneNumberCountryCodeFk is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeFk = "FK"

	// PhoneNumberCountryCodeFo is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeFo = "FO"

	// PhoneNumberCountryCodeFj is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeFj = "FJ"

	// PhoneNumberCountryCodeFi is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeFi = "FI"

	// PhoneNumberCountryCodeFr is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeFr = "FR"

	// PhoneNumberCountryCodePf is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodePf = "PF"

	// PhoneNumberCountryCodeGa is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeGa = "GA"

	// PhoneNumberCountryCodeGm is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeGm = "GM"

	// PhoneNumberCountryCodeGe is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeGe = "GE"

	// PhoneNumberCountryCodeDe is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeDe = "DE"

	// PhoneNumberCountryCodeGh is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeGh = "GH"

	// PhoneNumberCountryCodeGi is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeGi = "GI"

	// PhoneNumberCountryCodeGr is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeGr = "GR"

	// PhoneNumberCountryCodeGl is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeGl = "GL"

	// PhoneNumberCountryCodeGd is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeGd = "GD"

	// PhoneNumberCountryCodeGu is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeGu = "GU"

	// PhoneNumberCountryCodeGt is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeGt = "GT"

	// PhoneNumberCountryCodeGg is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeGg = "GG"

	// PhoneNumberCountryCodeGn is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeGn = "GN"

	// PhoneNumberCountryCodeGw is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeGw = "GW"

	// PhoneNumberCountryCodeGy is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeGy = "GY"

	// PhoneNumberCountryCodeHt is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeHt = "HT"

	// PhoneNumberCountryCodeHn is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeHn = "HN"

	// PhoneNumberCountryCodeHk is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeHk = "HK"

	// PhoneNumberCountryCodeHu is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeHu = "HU"

	// PhoneNumberCountryCodeIs is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeIs = "IS"

	// PhoneNumberCountryCodeIn is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeIn = "IN"

	// PhoneNumberCountryCodeId is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeId = "ID"

	// PhoneNumberCountryCodeIr is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeIr = "IR"

	// PhoneNumberCountryCodeIq is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeIq = "IQ"

	// PhoneNumberCountryCodeIe is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeIe = "IE"

	// PhoneNumberCountryCodeIm is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeIm = "IM"

	// PhoneNumberCountryCodeIl is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeIl = "IL"

	// PhoneNumberCountryCodeIt is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeIt = "IT"

	// PhoneNumberCountryCodeCi is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeCi = "CI"

	// PhoneNumberCountryCodeJm is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeJm = "JM"

	// PhoneNumberCountryCodeJp is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeJp = "JP"

	// PhoneNumberCountryCodeJe is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeJe = "JE"

	// PhoneNumberCountryCodeJo is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeJo = "JO"

	// PhoneNumberCountryCodeKz is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeKz = "KZ"

	// PhoneNumberCountryCodeKe is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeKe = "KE"

	// PhoneNumberCountryCodeKi is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeKi = "KI"

	// PhoneNumberCountryCodeKw is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeKw = "KW"

	// PhoneNumberCountryCodeKg is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeKg = "KG"

	// PhoneNumberCountryCodeLa is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeLa = "LA"

	// PhoneNumberCountryCodeLv is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeLv = "LV"

	// PhoneNumberCountryCodeLb is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeLb = "LB"

	// PhoneNumberCountryCodeLs is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeLs = "LS"

	// PhoneNumberCountryCodeLr is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeLr = "LR"

	// PhoneNumberCountryCodeLy is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeLy = "LY"

	// PhoneNumberCountryCodeLi is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeLi = "LI"

	// PhoneNumberCountryCodeLt is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeLt = "LT"

	// PhoneNumberCountryCodeLu is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeLu = "LU"

	// PhoneNumberCountryCodeMo is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeMo = "MO"

	// PhoneNumberCountryCodeMk is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeMk = "MK"

	// PhoneNumberCountryCodeMg is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeMg = "MG"

	// PhoneNumberCountryCodeMw is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeMw = "MW"

	// PhoneNumberCountryCodeMy is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeMy = "MY"

	// PhoneNumberCountryCodeMv is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeMv = "MV"

	// PhoneNumberCountryCodeMl is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeMl = "ML"

	// PhoneNumberCountryCodeMt is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeMt = "MT"

	// PhoneNumberCountryCodeMh is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeMh = "MH"

	// PhoneNumberCountryCodeMr is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeMr = "MR"

	// PhoneNumberCountryCodeMu is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeMu = "MU"

	// PhoneNumberCountryCodeYt is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeYt = "YT"

	// PhoneNumberCountryCodeMx is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeMx = "MX"

	// PhoneNumberCountryCodeFm is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeFm = "FM"

	// PhoneNumberCountryCodeMd is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeMd = "MD"

	// PhoneNumberCountryCodeMc is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeMc = "MC"

	// PhoneNumberCountryCodeMn is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeMn = "MN"

	// PhoneNumberCountryCodeMe is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeMe = "ME"

	// PhoneNumberCountryCodeMs is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeMs = "MS"

	// PhoneNumberCountryCodeMa is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeMa = "MA"

	// PhoneNumberCountryCodeMz is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeMz = "MZ"

	// PhoneNumberCountryCodeMm is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeMm = "MM"

	// PhoneNumberCountryCodeNa is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeNa = "NA"

	// PhoneNumberCountryCodeNr is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeNr = "NR"

	// PhoneNumberCountryCodeNp is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeNp = "NP"

	// PhoneNumberCountryCodeNl is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeNl = "NL"

	// PhoneNumberCountryCodeAn is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeAn = "AN"

	// PhoneNumberCountryCodeNc is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeNc = "NC"

	// PhoneNumberCountryCodeNz is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeNz = "NZ"

	// PhoneNumberCountryCodeNi is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeNi = "NI"

	// PhoneNumberCountryCodeNe is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeNe = "NE"

	// PhoneNumberCountryCodeNg is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeNg = "NG"

	// PhoneNumberCountryCodeNu is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeNu = "NU"

	// PhoneNumberCountryCodeKp is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeKp = "KP"

	// PhoneNumberCountryCodeMp is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeMp = "MP"

	// PhoneNumberCountryCodeNo is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeNo = "NO"

	// PhoneNumberCountryCodeOm is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeOm = "OM"

	// PhoneNumberCountryCodePk is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodePk = "PK"

	// PhoneNumberCountryCodePw is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodePw = "PW"

	// PhoneNumberCountryCodePa is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodePa = "PA"

	// PhoneNumberCountryCodePg is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodePg = "PG"

	// PhoneNumberCountryCodePy is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodePy = "PY"

	// PhoneNumberCountryCodePe is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodePe = "PE"

	// PhoneNumberCountryCodePh is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodePh = "PH"

	// PhoneNumberCountryCodePn is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodePn = "PN"

	// PhoneNumberCountryCodePl is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodePl = "PL"

	// PhoneNumberCountryCodePt is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodePt = "PT"

	// PhoneNumberCountryCodePr is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodePr = "PR"

	// PhoneNumberCountryCodeQa is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeQa = "QA"

	// PhoneNumberCountryCodeCg is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeCg = "CG"

	// PhoneNumberCountryCodeRe is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeRe = "RE"

	// PhoneNumberCountryCodeRo is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeRo = "RO"

	// PhoneNumberCountryCodeRu is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeRu = "RU"

	// PhoneNumberCountryCodeRw is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeRw = "RW"

	// PhoneNumberCountryCodeBl is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeBl = "BL"

	// PhoneNumberCountryCodeSh is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeSh = "SH"

	// PhoneNumberCountryCodeKn is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeKn = "KN"

	// PhoneNumberCountryCodeLc is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeLc = "LC"

	// PhoneNumberCountryCodeMf is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeMf = "MF"

	// PhoneNumberCountryCodePm is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodePm = "PM"

	// PhoneNumberCountryCodeVc is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeVc = "VC"

	// PhoneNumberCountryCodeWs is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeWs = "WS"

	// PhoneNumberCountryCodeSm is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeSm = "SM"

	// PhoneNumberCountryCodeSt is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeSt = "ST"

	// PhoneNumberCountryCodeSa is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeSa = "SA"

	// PhoneNumberCountryCodeSn is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeSn = "SN"

	// PhoneNumberCountryCodeRs is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeRs = "RS"

	// PhoneNumberCountryCodeSc is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeSc = "SC"

	// PhoneNumberCountryCodeSl is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeSl = "SL"

	// PhoneNumberCountryCodeSg is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeSg = "SG"

	// PhoneNumberCountryCodeSx is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeSx = "SX"

	// PhoneNumberCountryCodeSk is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeSk = "SK"

	// PhoneNumberCountryCodeSi is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeSi = "SI"

	// PhoneNumberCountryCodeSb is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeSb = "SB"

	// PhoneNumberCountryCodeSo is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeSo = "SO"

	// PhoneNumberCountryCodeZa is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeZa = "ZA"

	// PhoneNumberCountryCodeKr is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeKr = "KR"

	// PhoneNumberCountryCodeEs is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeEs = "ES"

	// PhoneNumberCountryCodeLk is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeLk = "LK"

	// PhoneNumberCountryCodeSd is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeSd = "SD"

	// PhoneNumberCountryCodeSr is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeSr = "SR"

	// PhoneNumberCountryCodeSj is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeSj = "SJ"

	// PhoneNumberCountryCodeSz is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeSz = "SZ"

	// PhoneNumberCountryCodeSe is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeSe = "SE"

	// PhoneNumberCountryCodeCh is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeCh = "CH"

	// PhoneNumberCountryCodeSy is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeSy = "SY"

	// PhoneNumberCountryCodeTw is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeTw = "TW"

	// PhoneNumberCountryCodeTj is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeTj = "TJ"

	// PhoneNumberCountryCodeTz is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeTz = "TZ"

	// PhoneNumberCountryCodeTh is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeTh = "TH"

	// PhoneNumberCountryCodeTg is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeTg = "TG"

	// PhoneNumberCountryCodeTk is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeTk = "TK"

	// PhoneNumberCountryCodeTo is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeTo = "TO"

	// PhoneNumberCountryCodeTt is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeTt = "TT"

	// PhoneNumberCountryCodeTn is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeTn = "TN"

	// PhoneNumberCountryCodeTr is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeTr = "TR"

	// PhoneNumberCountryCodeTm is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeTm = "TM"

	// PhoneNumberCountryCodeTc is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeTc = "TC"

	// PhoneNumberCountryCodeTv is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeTv = "TV"

	// PhoneNumberCountryCodeVi is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeVi = "VI"

	// PhoneNumberCountryCodeUg is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeUg = "UG"

	// PhoneNumberCountryCodeUa is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeUa = "UA"

	// PhoneNumberCountryCodeAe is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeAe = "AE"

	// PhoneNumberCountryCodeGb is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeGb = "GB"

	// PhoneNumberCountryCodeUs is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeUs = "US"

	// PhoneNumberCountryCodeUy is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeUy = "UY"

	// PhoneNumberCountryCodeUz is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeUz = "UZ"

	// PhoneNumberCountryCodeVu is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeVu = "VU"

	// PhoneNumberCountryCodeVa is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeVa = "VA"

	// PhoneNumberCountryCodeVe is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeVe = "VE"

	// PhoneNumberCountryCodeVn is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeVn = "VN"

	// PhoneNumberCountryCodeWf is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeWf = "WF"

	// PhoneNumberCountryCodeEh is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeEh = "EH"

	// PhoneNumberCountryCodeYe is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeYe = "YE"

	// PhoneNumberCountryCodeZm is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeZm = "ZM"

	// PhoneNumberCountryCodeZw is a PhoneNumberCountryCode enum value
	PhoneNumberCountryCodeZw = "ZW"
)

// PhoneNumberCountryCode_Values returns all elements of the PhoneNumberCountryCode enum
func PhoneNumberCountryCode_Values() []string {
	return []string{
		PhoneNumberCountryCodeAf,
		PhoneNumberCountryCodeAl,
		PhoneNumberCountryCodeDz,
		PhoneNumberCountryCodeAs,
		PhoneNumberCountryCodeAd,
		PhoneNumberCountryCodeAo,
		PhoneNumberCountryCodeAi,
		PhoneNumberCountryCodeAq,
		PhoneNumberCountryCodeAg,
		PhoneNumberCountryCodeAr,
		PhoneNumberCountryCodeAm,
		PhoneNumberCountryCodeAw,
		PhoneNumberCountryCodeAu,
		PhoneNumberCountryCodeAt,
		PhoneNumberCountryCodeAz,
		PhoneNumberCountryCodeBs,
		PhoneNumberCountryCodeBh,
		PhoneNumberCountryCodeBd,
		PhoneNumberCountryCodeBb,
		PhoneNumberCountryCodeBy,
		PhoneNumberCountryCodeBe,
		PhoneNumberCountryCodeBz,
		PhoneNumberCountryCodeBj,
		PhoneNumberCountryCodeBm,
		PhoneNumberCountryCodeBt,
		PhoneNumberCountryCodeBo,
		PhoneNumberCountryCodeBa,
		PhoneNumberCountryCodeBw,
		PhoneNumberCountryCodeBr,
		PhoneNumberCountryCodeIo,
		PhoneNumberCountryCodeVg,
		PhoneNumberCountryCodeBn,
		PhoneNumberCountryCodeBg,
		PhoneNumberCountryCodeBf,
		PhoneNumberCountryCodeBi,
		PhoneNumberCountryCodeKh,
		PhoneNumberCountryCodeCm,
		PhoneNumberCountryCodeCa,
		PhoneNumberCountryCodeCv,
		PhoneNumberCountryCodeKy,
		PhoneNumberCountryCodeCf,
		PhoneNumberCountryCodeTd,
		PhoneNumberCountryCodeCl,
		PhoneNumberCountryCodeCn,
		PhoneNumberCountryCodeCx,
		PhoneNumberCountryCodeCc,
		PhoneNumberCountryCodeCo,
		PhoneNumberCountryCodeKm,
		PhoneNumberCountryCodeCk,
		PhoneNumberCountryCodeCr,
		PhoneNumberCountryCodeHr,
		PhoneNumberCountryCodeCu,
		PhoneNumberCountryCodeCw,
		PhoneNumberCountryCodeCy,
		PhoneNumberCountryCodeCz,
		PhoneNumberCountryCodeCd,
		PhoneNumberCountryCodeDk,
		PhoneNumberCountryCodeDj,
		PhoneNumberCountryCodeDm,
		PhoneNumberCountryCodeDo,
		PhoneNumberCountryCodeTl,
		PhoneNumberCountryCodeEc,
		PhoneNumberCountryCodeEg,
		PhoneNumberCountryCodeSv,
		PhoneNumberCountryCodeGq,
		PhoneNumberCountryCodeEr,
		PhoneNumberCountryCodeEe,
		PhoneNumberCountryCodeEt,
		PhoneNumberCountryCodeFk,
		PhoneNumberCountryCodeFo,
		PhoneNumberCountryCodeFj,
		PhoneNumberCountryCodeFi,
		PhoneNumberCountryCodeFr,
		PhoneNumberCountryCodePf,
		PhoneNumberCountryCodeGa,
		PhoneNumberCountryCodeGm,
		PhoneNumberCountryCodeGe,
		PhoneNumberCountryCodeDe,
		PhoneNumberCountryCodeGh,
		PhoneNumberCountryCodeGi,
		PhoneNumberCountryCodeGr,
		PhoneNumberCountryCodeGl,
		PhoneNumberCountryCodeGd,
		PhoneNumberCountryCodeGu,
		PhoneNumberCountryCodeGt,
		PhoneNumberCountryCodeGg,
		PhoneNumberCountryCodeGn,
		PhoneNumberCountryCodeGw,
		PhoneNumberCountryCodeGy,
		PhoneNumberCountryCodeHt,
		PhoneNumberCountryCodeHn,
		PhoneNumberCountryCodeHk,
		PhoneNumberCountryCodeHu,
		PhoneNumberCountryCodeIs,
		PhoneNumberCountryCodeIn,
		PhoneNumberCountryCodeId,
		PhoneNumberCountryCodeIr,
		PhoneNumberCountryCodeIq,
		PhoneNumberCountryCodeIe,
		PhoneNumberCountryCodeIm,
		PhoneNumberCountryCodeIl,
		PhoneNumberCountryCodeIt,
		PhoneNumberCountryCodeCi,
		PhoneNumberCountryCodeJm,
		PhoneNumberCountryCodeJp,
		PhoneNumberCountryCodeJe,
		PhoneNumberCountryCodeJo,
		PhoneNumberCountryCodeKz,
		PhoneNumberCountryCodeKe,
		PhoneNumberCountryCodeKi,
		PhoneNumberCountryCodeKw,
		PhoneNumberCountryCodeKg,
		PhoneNumberCountryCodeLa,
		PhoneNumberCountryCodeLv,
		PhoneNumberCountryCodeLb,
		PhoneNumberCountryCodeLs,
		PhoneNumberCountryCodeLr,
		PhoneNumberCountryCodeLy,
		PhoneNumberCountryCodeLi,
		PhoneNumberCountryCodeLt,
		PhoneNumberCountryCodeLu,
		PhoneNumberCountryCodeMo,
		PhoneNumberCountryCodeMk,
		PhoneNumberCountryCodeMg,
		PhoneNumberCountryCodeMw,
		PhoneNumberCountryCodeMy,
		PhoneNumberCountryCodeMv,
		PhoneNumberCountryCodeMl,
		PhoneNumberCountryCodeMt,
		PhoneNumberCountryCodeMh,
		PhoneNumberCountryCodeMr,
		PhoneNumberCountryCodeMu,
		PhoneNumberCountryCodeYt,
		PhoneNumberCountryCodeMx,
		PhoneNumberCountryCodeFm,
		PhoneNumberCountryCodeMd,
		PhoneNumberCountryCodeMc,
		PhoneNumberCountryCodeMn,
		PhoneNumberCountryCodeMe,
		PhoneNumberCountryCodeMs,
		PhoneNumberCountryCodeMa,
		PhoneNumberCountryCodeMz,
		PhoneNumberCountryCodeMm,
		PhoneNumberCountryCodeNa,
		PhoneNumberCountryCodeNr,
		PhoneNumberCountryCodeNp,
		PhoneNumberCountryCodeNl,
		PhoneNumberCountryCodeAn,
		PhoneNumberCountryCodeNc,
		PhoneNumberCountryCodeNz,
		PhoneNumberCountryCodeNi,
		PhoneNumberCountryCodeNe,
		PhoneNumberCountryCodeNg,
		PhoneNumberCountryCodeNu,
		PhoneNumberCountryCodeKp,
		PhoneNumberCountryCodeMp,
		PhoneNumberCountryCodeNo,
		PhoneNumberCountryCodeOm,
		PhoneNumberCountryCodePk,
		PhoneNumberCountryCodePw,
		PhoneNumberCountryCodePa,
		PhoneNumberCountryCodePg,
		PhoneNumberCountryCodePy,
		PhoneNumberCountryCodePe,
		PhoneNumberCountryCodePh,
		PhoneNumberCountryCodePn,
		PhoneNumberCountryCodePl,
		PhoneNumberCountryCodePt,
		PhoneNumberCountryCodePr,
		PhoneNumberCountryCodeQa,
		PhoneNumberCountryCodeCg,
		PhoneNumberCountryCodeRe,
		PhoneNumberCountryCodeRo,
		PhoneNumberCountryCodeRu,
		PhoneNumberCountryCodeRw,
		PhoneNumberCountryCodeBl,
		PhoneNumberCountryCodeSh,
		PhoneNumberCountryCodeKn,
		PhoneNumberCountryCodeLc,
		PhoneNumberCountryCodeMf,
		PhoneNumberCountryCodePm,
		PhoneNumberCountryCodeVc,
		PhoneNumberCountryCodeWs,
		PhoneNumberCountryCodeSm,
		PhoneNumberCountryCodeSt,
		PhoneNumberCountryCodeSa,
		PhoneNumberCountryCodeSn,
		PhoneNumberCountryCodeRs,
		PhoneNumberCountryCodeSc,
		PhoneNumberCountryCodeSl,
		PhoneNumberCountryCodeSg,
		PhoneNumberCountryCodeSx,
		PhoneNumberCountryCodeSk,
		PhoneNumberCountryCodeSi,
		PhoneNumberCountryCodeSb,
		PhoneNumberCountryCodeSo,
		PhoneNumberCountryCodeZa,
		PhoneNumberCountryCodeKr,
		PhoneNumberCountryCodeEs,
		PhoneNumberCountryCodeLk,
		PhoneNumberCountryCodeSd,
		PhoneNumberCountryCodeSr,
		PhoneNumberCountryCodeSj,
		PhoneNumberCountryCodeSz,
		PhoneNumberCountryCodeSe,
		PhoneNumberCountryCodeCh,
		PhoneNumberCountryCodeSy,
		PhoneNumberCountryCodeTw,
		PhoneNumberCountryCodeTj,
		PhoneNumberCountryCodeTz,
		PhoneNumberCountryCodeTh,
		PhoneNumberCountryCodeTg,
		PhoneNumberCountryCodeTk,
		PhoneNumberCountryCodeTo,
		PhoneNumberCountryCodeTt,
		PhoneNumberCountryCodeTn,
		PhoneNumberCountryCodeTr,
		PhoneNumberCountryCodeTm,
		PhoneNumberCountryCodeTc,
		PhoneNumberCountryCodeTv,
		PhoneNumberCountryCodeVi,
		PhoneNumberCountryCodeUg,
		PhoneNumberCountryCodeUa,
		PhoneNumberCountryCodeAe,
		PhoneNumberCountryCodeGb,
		PhoneNumberCountryCodeUs,
		PhoneNumberCountryCodeUy,
		PhoneNumberCountryCodeUz,
		PhoneNumberCountryCodeVu,
		PhoneNumberCountryCodeVa,
		PhoneNumberCountryCodeVe,
		PhoneNumberCountryCodeVn,
		PhoneNumberCountryCodeWf,
		PhoneNumberCountryCodeEh,
		PhoneNumberCountryCodeYe,
		PhoneNumberCountryCodeZm,
		PhoneNumberCountryCodeZw,
	}
}

const (
	// PhoneNumberTypeTollFree is a PhoneNumberType enum value
	PhoneNumberTypeTollFree = "TOLL_FREE"

	// PhoneNumberTypeDid is a PhoneNumberType enum value
	PhoneNumberTypeDid = "DID"

	// PhoneNumberTypeUifn is a PhoneNumberType enum value
	PhoneNumberTypeUifn = "UIFN"

	// PhoneNumberTypeShared is a PhoneNumberType enum value
	PhoneNumberTypeShared = "SHARED"

	// PhoneNumberTypeThirdPartyTf is a PhoneNumberType enum value
	PhoneNumberTypeThirdPartyTf = "THIRD_PARTY_TF"

	// PhoneNumberTypeThirdPartyDid is a PhoneNumberType enum value
	PhoneNumberTypeThirdPartyDid = "THIRD_PARTY_DID"

	// PhoneNumberTypeShortCode is a PhoneNumberType enum value
	PhoneNumberTypeShortCode = "SHORT_CODE"
)

// PhoneNumberType_Values returns all elements of the PhoneNumberType enum
func PhoneNumberType_Values() []string {
	return []string{
		PhoneNumberTypeTollFree,
		PhoneNumberTypeDid,
		PhoneNumberTypeUifn,
		PhoneNumberTypeShared,
		PhoneNumberTypeThirdPartyTf,
		PhoneNumberTypeThirdPartyDid,
		PhoneNumberTypeShortCode,
	}
}

const (
	// PhoneNumberWorkflowStatusClaimed is a PhoneNumberWorkflowStatus enum value
	PhoneNumberWorkflowStatusClaimed = "CLAIMED"

	// PhoneNumberWorkflowStatusInProgress is a PhoneNumberWorkflowStatus enum value
	PhoneNumberWorkflowStatusInProgress = "IN_PROGRESS"

	// PhoneNumberWorkflowStatusFailed is a PhoneNumberWorkflowStatus enum value
	PhoneNumberWorkflowStatusFailed = "FAILED"
)

// PhoneNumberWorkflowStatus_Values returns all elements of the PhoneNumberWorkflowStatus enum
func PhoneNumberWorkflowStatus_Values() []string {
	return []string{
		PhoneNumberWorkflowStatusClaimed,
		PhoneNumberWorkflowStatusInProgress,
		PhoneNumberWorkflowStatusFailed,
	}
}

const (
	// PhoneTypeSoftPhone is a PhoneType enum value
	PhoneTypeSoftPhone = "SOFT_PHONE"

	// PhoneTypeDeskPhone is a PhoneType enum value
	PhoneTypeDeskPhone = "DESK_PHONE"
)

// PhoneType_Values returns all elements of the PhoneType enum
func PhoneType_Values() []string {
	return []string{
		PhoneTypeSoftPhone,
		PhoneTypeDeskPhone,
	}
}

const (
	// PropertyValidationExceptionReasonInvalidFormat is a PropertyValidationExceptionReason enum value
	PropertyValidationExceptionReasonInvalidFormat = "INVALID_FORMAT"

	// PropertyValidationExceptionReasonUniqueConstraintViolated is a PropertyValidationExceptionReason enum value
	PropertyValidationExceptionReasonUniqueConstraintViolated = "UNIQUE_CONSTRAINT_VIOLATED"

	// PropertyValidationExceptionReasonReferencedResourceNotFound is a PropertyValidationExceptionReason enum value
	PropertyValidationExceptionReasonReferencedResourceNotFound = "REFERENCED_RESOURCE_NOT_FOUND"

	// PropertyValidationExceptionReasonResourceNameAlreadyExists is a PropertyValidationExceptionReason enum value
	PropertyValidationExceptionReasonResourceNameAlreadyExists = "RESOURCE_NAME_ALREADY_EXISTS"

	// PropertyValidationExceptionReasonRequiredPropertyMissing is a PropertyValidationExceptionReason enum value
	PropertyValidationExceptionReasonRequiredPropertyMissing = "REQUIRED_PROPERTY_MISSING"

	// PropertyValidationExceptionReasonNotSupported is a PropertyValidationExceptionReason enum value
	PropertyValidationExceptionReasonNotSupported = "NOT_SUPPORTED"
)

// PropertyValidationExceptionReason_Values returns all elements of the PropertyValidationExceptionReason enum
func PropertyValidationExceptionReason_Values() []string {
	return []string{
		PropertyValidationExceptionReasonInvalidFormat,
		PropertyValidationExceptionReasonUniqueConstraintViolated,
		PropertyValidationExceptionReasonReferencedResourceNotFound,
		PropertyValidationExceptionReasonResourceNameAlreadyExists,
		PropertyValidationExceptionReasonRequiredPropertyMissing,
		PropertyValidationExceptionReasonNotSupported,
	}
}

const (
	// QueueStatusEnabled is a QueueStatus enum value
	QueueStatusEnabled = "ENABLED"

	// QueueStatusDisabled is a QueueStatus enum value
	QueueStatusDisabled = "DISABLED"
)

// QueueStatus_Values returns all elements of the QueueStatus enum
func QueueStatus_Values() []string {
	return []string{
		QueueStatusEnabled,
		QueueStatusDisabled,
	}
}

const (
	// QueueTypeStandard is a QueueType enum value
	QueueTypeStandard = "STANDARD"

	// QueueTypeAgent is a QueueType enum value
	QueueTypeAgent = "AGENT"
)

// QueueType_Values returns all elements of the QueueType enum
func QueueType_Values() []string {
	return []string{
		QueueTypeStandard,
		QueueTypeAgent,
	}
}

const (
	// QuickConnectTypeUser is a QuickConnectType enum value
	QuickConnectTypeUser = "USER"

	// QuickConnectTypeQueue is a QuickConnectType enum value
	QuickConnectTypeQueue = "QUEUE"

	// QuickConnectTypePhoneNumber is a QuickConnectType enum value
	QuickConnectTypePhoneNumber = "PHONE_NUMBER"
)

// QuickConnectType_Values returns all elements of the QuickConnectType enum
func QuickConnectType_Values() []string {
	return []string{
		QuickConnectTypeUser,
		QuickConnectTypeQueue,
		QuickConnectTypePhoneNumber,
	}
}

const (
	// RealTimeContactAnalysisOutputTypeRaw is a RealTimeContactAnalysisOutputType enum value
	RealTimeContactAnalysisOutputTypeRaw = "Raw"

	// RealTimeContactAnalysisOutputTypeRedacted is a RealTimeContactAnalysisOutputType enum value
	RealTimeContactAnalysisOutputTypeRedacted = "Redacted"
)

// RealTimeContactAnalysisOutputType_Values returns all elements of the RealTimeContactAnalysisOutputType enum
func RealTimeContactAnalysisOutputType_Values() []string {
	return []string{
		RealTimeContactAnalysisOutputTypeRaw,
		RealTimeContactAnalysisOutputTypeRedacted,
	}
}

const (
	// RealTimeContactAnalysisSegmentTypeTranscript is a RealTimeContactAnalysisSegmentType enum value
	RealTimeContactAnalysisSegmentTypeTranscript = "Transcript"

	// RealTimeContactAnalysisSegmentTypeCategories is a RealTimeContactAnalysisSegmentType enum value
	RealTimeContactAnalysisSegmentTypeCategories = "Categories"

	// RealTimeContactAnalysisSegmentTypeIssues is a RealTimeContactAnalysisSegmentType enum value
	RealTimeContactAnalysisSegmentTypeIssues = "Issues"

	// RealTimeContactAnalysisSegmentTypeEvent is a RealTimeContactAnalysisSegmentType enum value
	RealTimeContactAnalysisSegmentTypeEvent = "Event"

	// RealTimeContactAnalysisSegmentTypeAttachments is a RealTimeContactAnalysisSegmentType enum value
	RealTimeContactAnalysisSegmentTypeAttachments = "Attachments"
)

// RealTimeContactAnalysisSegmentType_Values returns all elements of the RealTimeContactAnalysisSegmentType enum
func RealTimeContactAnalysisSegmentType_Values() []string {
	return []string{
		RealTimeContactAnalysisSegmentTypeTranscript,
		RealTimeContactAnalysisSegmentTypeCategories,
		RealTimeContactAnalysisSegmentTypeIssues,
		RealTimeContactAnalysisSegmentTypeEvent,
		RealTimeContactAnalysisSegmentTypeAttachments,
	}
}

const (
	// RealTimeContactAnalysisSentimentLabelPositive is a RealTimeContactAnalysisSentimentLabel enum value
	RealTimeContactAnalysisSentimentLabelPositive = "POSITIVE"

	// RealTimeContactAnalysisSentimentLabelNegative is a RealTimeContactAnalysisSentimentLabel enum value
	RealTimeContactAnalysisSentimentLabelNegative = "NEGATIVE"

	// RealTimeContactAnalysisSentimentLabelNeutral is a RealTimeContactAnalysisSentimentLabel enum value
	RealTimeContactAnalysisSentimentLabelNeutral = "NEUTRAL"
)

// RealTimeContactAnalysisSentimentLabel_Values returns all elements of the RealTimeContactAnalysisSentimentLabel enum
func RealTimeContactAnalysisSentimentLabel_Values() []string {
	return []string{
		RealTimeContactAnalysisSentimentLabelPositive,
		RealTimeContactAnalysisSentimentLabelNegative,
		RealTimeContactAnalysisSentimentLabelNeutral,
	}
}

const (
	// RealTimeContactAnalysisStatusInProgress is a RealTimeContactAnalysisStatus enum value
	RealTimeContactAnalysisStatusInProgress = "IN_PROGRESS"

	// RealTimeContactAnalysisStatusFailed is a RealTimeContactAnalysisStatus enum value
	RealTimeContactAnalysisStatusFailed = "FAILED"

	// RealTimeContactAnalysisStatusCompleted is a RealTimeContactAnalysisStatus enum value
	RealTimeContactAnalysisStatusCompleted = "COMPLETED"
)

// RealTimeContactAnalysisStatus_Values returns all elements of the RealTimeContactAnalysisStatus enum
func RealTimeContactAnalysisStatus_Values() []string {
	return []string{
		RealTimeContactAnalysisStatusInProgress,
		RealTimeContactAnalysisStatusFailed,
		RealTimeContactAnalysisStatusCompleted,
	}
}

const (
	// RealTimeContactAnalysisSupportedChannelVoice is a RealTimeContactAnalysisSupportedChannel enum value
	RealTimeContactAnalysisSupportedChannelVoice = "VOICE"

	// RealTimeContactAnalysisSupportedChannelChat is a RealTimeContactAnalysisSupportedChannel enum value
	RealTimeContactAnalysisSupportedChannelChat = "CHAT"
)

// RealTimeContactAnalysisSupportedChannel_Values returns all elements of the RealTimeContactAnalysisSupportedChannel enum
func RealTimeContactAnalysisSupportedChannel_Values() []string {
	return []string{
		RealTimeContactAnalysisSupportedChannelVoice,
		RealTimeContactAnalysisSupportedChannelChat,
	}
}

const (
	// ReferenceStatusApproved is a ReferenceStatus enum value
	ReferenceStatusApproved = "APPROVED"

	// ReferenceStatusRejected is a ReferenceStatus enum value
	ReferenceStatusRejected = "REJECTED"
)

// ReferenceStatus_Values returns all elements of the ReferenceStatus enum
func ReferenceStatus_Values() []string {
	return []string{
		ReferenceStatusApproved,
		ReferenceStatusRejected,
	}
}

const (
	// ReferenceTypeUrl is a ReferenceType enum value
	ReferenceTypeUrl = "URL"

	// ReferenceTypeAttachment is a ReferenceType enum value
	ReferenceTypeAttachment = "ATTACHMENT"

	// ReferenceTypeNumber is a ReferenceType enum value
	ReferenceTypeNumber = "NUMBER"

	// ReferenceTypeString is a ReferenceType enum value
	ReferenceTypeString = "STRING"

	// ReferenceTypeDate is a ReferenceType enum value
	ReferenceTypeDate = "DATE"

	// ReferenceTypeEmail is a ReferenceType enum value
	ReferenceTypeEmail = "EMAIL"
)

// ReferenceType_Values returns all elements of the ReferenceType enum
func ReferenceType_Values() []string {
	return []string{
		ReferenceTypeUrl,
		ReferenceTypeAttachment,
		ReferenceTypeNumber,
		ReferenceTypeString,
		ReferenceTypeDate,
		ReferenceTypeEmail,
	}
}

const (
	// RehydrationTypeEntirePastSession is a RehydrationType enum value
	RehydrationTypeEntirePastSession = "ENTIRE_PAST_SESSION"

	// RehydrationTypeFromSegment is a RehydrationType enum value
	RehydrationTypeFromSegment = "FROM_SEGMENT"
)

// RehydrationType_Values returns all elements of the RehydrationType enum
func RehydrationType_Values() []string {
	return []string{
		RehydrationTypeEntirePastSession,
		RehydrationTypeFromSegment,
	}
}

const (
	// ResourceTypeContact is a ResourceType enum value
	ResourceTypeContact = "CONTACT"

	// ResourceTypeContactFlow is a ResourceType enum value
	ResourceTypeContactFlow = "CONTACT_FLOW"

	// ResourceTypeInstance is a ResourceType enum value
	ResourceTypeInstance = "INSTANCE"

	// ResourceTypeParticipant is a ResourceType enum value
	ResourceTypeParticipant = "PARTICIPANT"

	// ResourceTypeHierarchyLevel is a ResourceType enum value
	ResourceTypeHierarchyLevel = "HIERARCHY_LEVEL"

	// ResourceTypeHierarchyGroup is a ResourceType enum value
	ResourceTypeHierarchyGroup = "HIERARCHY_GROUP"

	// ResourceTypeUser is a ResourceType enum value
	ResourceTypeUser = "USER"

	// ResourceTypePhoneNumber is a ResourceType enum value
	ResourceTypePhoneNumber = "PHONE_NUMBER"
)

// ResourceType_Values returns all elements of the ResourceType enum
func ResourceType_Values() []string {
	return []string{
		ResourceTypeContact,
		ResourceTypeContactFlow,
		ResourceTypeInstance,
		ResourceTypeParticipant,
		ResourceTypeHierarchyLevel,
		ResourceTypeHierarchyGroup,
		ResourceTypeUser,
		ResourceTypePhoneNumber,
	}
}

const (
	// RulePublishStatusDraft is a RulePublishStatus enum value
	RulePublishStatusDraft = "DRAFT"

	// RulePublishStatusPublished is a RulePublishStatus enum value
	RulePublishStatusPublished = "PUBLISHED"
)

// RulePublishStatus_Values returns all elements of the RulePublishStatus enum
func RulePublishStatus_Values() []string {
	return []string{
		RulePublishStatusDraft,
		RulePublishStatusPublished,
	}
}

const (
	// SearchContactsMatchTypeMatchAll is a SearchContactsMatchType enum value
	SearchContactsMatchTypeMatchAll = "MATCH_ALL"

	// SearchContactsMatchTypeMatchAny is a SearchContactsMatchType enum value
	SearchContactsMatchTypeMatchAny = "MATCH_ANY"
)

// SearchContactsMatchType_Values returns all elements of the SearchContactsMatchType enum
func SearchContactsMatchType_Values() []string {
	return []string{
		SearchContactsMatchTypeMatchAll,
		SearchContactsMatchTypeMatchAny,
	}
}

const (
	// SearchContactsTimeRangeTypeInitiationTimestamp is a SearchContactsTimeRangeType enum value
	SearchContactsTimeRangeTypeInitiationTimestamp = "INITIATION_TIMESTAMP"

	// SearchContactsTimeRangeTypeScheduledTimestamp is a SearchContactsTimeRangeType enum value
	SearchContactsTimeRangeTypeScheduledTimestamp = "SCHEDULED_TIMESTAMP"

	// SearchContactsTimeRangeTypeConnectedToAgentTimestamp is a SearchContactsTimeRangeType enum value
	SearchContactsTimeRangeTypeConnectedToAgentTimestamp = "CONNECTED_TO_AGENT_TIMESTAMP"

	// SearchContactsTimeRangeTypeDisconnectTimestamp is a SearchContactsTimeRangeType enum value
	SearchContactsTimeRangeTypeDisconnectTimestamp = "DISCONNECT_TIMESTAMP"
)

// SearchContactsTimeRangeType_Values returns all elements of the SearchContactsTimeRangeType enum
func SearchContactsTimeRangeType_Values() []string {
	return []string{
		SearchContactsTimeRangeTypeInitiationTimestamp,
		SearchContactsTimeRangeTypeScheduledTimestamp,
		SearchContactsTimeRangeTypeConnectedToAgentTimestamp,
		SearchContactsTimeRangeTypeDisconnectTimestamp,
	}
}

const (
	// SearchableQueueTypeStandard is a SearchableQueueType enum value
	SearchableQueueTypeStandard = "STANDARD"
)

// SearchableQueueType_Values returns all elements of the SearchableQueueType enum
func SearchableQueueType_Values() []string {
	return []string{
		SearchableQueueTypeStandard,
	}
}

const (
	// SingleSelectQuestionRuleCategoryAutomationConditionPresent is a SingleSelectQuestionRuleCategoryAutomationCondition enum value
	SingleSelectQuestionRuleCategoryAutomationConditionPresent = "PRESENT"

	// SingleSelectQuestionRuleCategoryAutomationConditionNotPresent is a SingleSelectQuestionRuleCategoryAutomationCondition enum value
	SingleSelectQuestionRuleCategoryAutomationConditionNotPresent = "NOT_PRESENT"
)

// SingleSelectQuestionRuleCategoryAutomationCondition_Values returns all elements of the SingleSelectQuestionRuleCategoryAutomationCondition enum
func SingleSelectQuestionRuleCategoryAutomationCondition_Values() []string {
	return []string{
		SingleSelectQuestionRuleCategoryAutomationConditionPresent,
		SingleSelectQuestionRuleCategoryAutomationConditionNotPresent,
	}
}

const (
	// SortOrderAscending is a SortOrder enum value
	SortOrderAscending = "ASCENDING"

	// SortOrderDescending is a SortOrder enum value
	SortOrderDescending = "DESCENDING"
)

// SortOrder_Values returns all elements of the SortOrder enum
func SortOrder_Values() []string {
	return []string{
		SortOrderAscending,
		SortOrderDescending,
	}
}

const (
	// SortableFieldNameInitiationTimestamp is a SortableFieldName enum value
	SortableFieldNameInitiationTimestamp = "INITIATION_TIMESTAMP"

	// SortableFieldNameScheduledTimestamp is a SortableFieldName enum value
	SortableFieldNameScheduledTimestamp = "SCHEDULED_TIMESTAMP"

	// SortableFieldNameConnectedToAgentTimestamp is a SortableFieldName enum value
	SortableFieldNameConnectedToAgentTimestamp = "CONNECTED_TO_AGENT_TIMESTAMP"

	// SortableFieldNameDisconnectTimestamp is a SortableFieldName enum value
	SortableFieldNameDisconnectTimestamp = "DISCONNECT_TIMESTAMP"

	// SortableFieldNameInitiationMethod is a SortableFieldName enum value
	SortableFieldNameInitiationMethod = "INITIATION_METHOD"

	// SortableFieldNameChannel is a SortableFieldName enum value
	SortableFieldNameChannel = "CHANNEL"
)

// SortableFieldName_Values returns all elements of the SortableFieldName enum
func SortableFieldName_Values() []string {
	return []string{
		SortableFieldNameInitiationTimestamp,
		SortableFieldNameScheduledTimestamp,
		SortableFieldNameConnectedToAgentTimestamp,
		SortableFieldNameDisconnectTimestamp,
		SortableFieldNameInitiationMethod,
		SortableFieldNameChannel,
	}
}

const (
	// SourceTypeSalesforce is a SourceType enum value
	SourceTypeSalesforce = "SALESFORCE"

	// SourceTypeZendesk is a SourceType enum value
	SourceTypeZendesk = "ZENDESK"

	// SourceTypeCases is a SourceType enum value
	SourceTypeCases = "CASES"
)

// SourceType_Values returns all elements of the SourceType enum
func SourceType_Values() []string {
	return []string{
		SourceTypeSalesforce,
		SourceTypeZendesk,
		SourceTypeCases,
	}
}

const (
	// StatisticSum is a Statistic enum value
	StatisticSum = "SUM"

	// StatisticMax is a Statistic enum value
	StatisticMax = "MAX"

	// StatisticAvg is a Statistic enum value
	StatisticAvg = "AVG"
)

// Statistic_Values returns all elements of the Statistic enum
func Statistic_Values() []string {
	return []string{
		StatisticSum,
		StatisticMax,
		StatisticAvg,
	}
}

const (
	// StorageTypeS3 is a StorageType enum value
	StorageTypeS3 = "S3"

	// StorageTypeKinesisVideoStream is a StorageType enum value
	StorageTypeKinesisVideoStream = "KINESIS_VIDEO_STREAM"

	// StorageTypeKinesisStream is a StorageType enum value
	StorageTypeKinesisStream = "KINESIS_STREAM"

	// StorageTypeKinesisFirehose is a StorageType enum value
	StorageTypeKinesisFirehose = "KINESIS_FIREHOSE"
)

// StorageType_Values returns all elements of the StorageType enum
func StorageType_Values() []string {
	return []string{
		StorageTypeS3,
		StorageTypeKinesisVideoStream,
		StorageTypeKinesisStream,
		StorageTypeKinesisFirehose,
	}
}

const (
	// StringComparisonTypeStartsWith is a StringComparisonType enum value
	StringComparisonTypeStartsWith = "STARTS_WITH"

	// StringComparisonTypeContains is a StringComparisonType enum value
	StringComparisonTypeContains = "CONTAINS"

	// StringComparisonTypeExact is a StringComparisonType enum value
	StringComparisonTypeExact = "EXACT"
)

// StringComparisonType_Values returns all elements of the StringComparisonType enum
func StringComparisonType_Values() []string {
	return []string{
		StringComparisonTypeStartsWith,
		StringComparisonTypeContains,
		StringComparisonTypeExact,
	}
}

const (
	// TaskTemplateFieldTypeName is a TaskTemplateFieldType enum value
	TaskTemplateFieldTypeName = "NAME"

	// TaskTemplateFieldTypeDescription is a TaskTemplateFieldType enum value
	TaskTemplateFieldTypeDescription = "DESCRIPTION"

	// TaskTemplateFieldTypeScheduledTime is a TaskTemplateFieldType enum value
	TaskTemplateFieldTypeScheduledTime = "SCHEDULED_TIME"

	// TaskTemplateFieldTypeQuickConnect is a TaskTemplateFieldType enum value
	TaskTemplateFieldTypeQuickConnect = "QUICK_CONNECT"

	// TaskTemplateFieldTypeUrl is a TaskTemplateFieldType enum value
	TaskTemplateFieldTypeUrl = "URL"

	// TaskTemplateFieldTypeNumber is a TaskTemplateFieldType enum value
	TaskTemplateFieldTypeNumber = "NUMBER"

	// TaskTemplateFieldTypeText is a TaskTemplateFieldType enum value
	TaskTemplateFieldTypeText = "TEXT"

	// TaskTemplateFieldTypeTextArea is a TaskTemplateFieldType enum value
	TaskTemplateFieldTypeTextArea = "TEXT_AREA"

	// TaskTemplateFieldTypeDateTime is a TaskTemplateFieldType enum value
	TaskTemplateFieldTypeDateTime = "DATE_TIME"

	// TaskTemplateFieldTypeBoolean is a TaskTemplateFieldType enum value
	TaskTemplateFieldTypeBoolean = "BOOLEAN"

	// TaskTemplateFieldTypeSingleSelect is a TaskTemplateFieldType enum value
	TaskTemplateFieldTypeSingleSelect = "SINGLE_SELECT"

	// TaskTemplateFieldTypeEmail is a TaskTemplateFieldType enum value
	TaskTemplateFieldTypeEmail = "EMAIL"
)

// TaskTemplateFieldType_Values returns all elements of the TaskTemplateFieldType enum
func TaskTemplateFieldType_Values() []string {
	return []string{
		TaskTemplateFieldTypeName,
		TaskTemplateFieldTypeDescription,
		TaskTemplateFieldTypeScheduledTime,
		TaskTemplateFieldTypeQuickConnect,
		TaskTemplateFieldTypeUrl,
		TaskTemplateFieldTypeNumber,
		TaskTemplateFieldTypeText,
		TaskTemplateFieldTypeTextArea,
		TaskTemplateFieldTypeDateTime,
		TaskTemplateFieldTypeBoolean,
		TaskTemplateFieldTypeSingleSelect,
		TaskTemplateFieldTypeEmail,
	}
}

const (
	// TaskTemplateStatusActive is a TaskTemplateStatus enum value
	TaskTemplateStatusActive = "ACTIVE"

	// TaskTemplateStatusInactive is a TaskTemplateStatus enum value
	TaskTemplateStatusInactive = "INACTIVE"
)

// TaskTemplateStatus_Values returns all elements of the TaskTemplateStatus enum
func TaskTemplateStatus_Values() []string {
	return []string{
		TaskTemplateStatusActive,
		TaskTemplateStatusInactive,
	}
}

const (
	// TimerEligibleParticipantRolesCustomer is a TimerEligibleParticipantRoles enum value
	TimerEligibleParticipantRolesCustomer = "CUSTOMER"

	// TimerEligibleParticipantRolesAgent is a TimerEligibleParticipantRoles enum value
	TimerEligibleParticipantRolesAgent = "AGENT"
)

// TimerEligibleParticipantRoles_Values returns all elements of the TimerEligibleParticipantRoles enum
func TimerEligibleParticipantRoles_Values() []string {
	return []string{
		TimerEligibleParticipantRolesCustomer,
		TimerEligibleParticipantRolesAgent,
	}
}

const (
	// TrafficDistributionGroupStatusCreationInProgress is a TrafficDistributionGroupStatus enum value
	TrafficDistributionGroupStatusCreationInProgress = "CREATION_IN_PROGRESS"

	// TrafficDistributionGroupStatusActive is a TrafficDistributionGroupStatus enum value
	TrafficDistributionGroupStatusActive = "ACTIVE"

	// TrafficDistributionGroupStatusCreationFailed is a TrafficDistributionGroupStatus enum value
	TrafficDistributionGroupStatusCreationFailed = "CREATION_FAILED"

	// TrafficDistributionGroupStatusPendingDeletion is a TrafficDistributionGroupStatus enum value
	TrafficDistributionGroupStatusPendingDeletion = "PENDING_DELETION"

	// TrafficDistributionGroupStatusDeletionFailed is a TrafficDistributionGroupStatus enum value
	TrafficDistributionGroupStatusDeletionFailed = "DELETION_FAILED"

	// TrafficDistributionGroupStatusUpdateInProgress is a TrafficDistributionGroupStatus enum value
	TrafficDistributionGroupStatusUpdateInProgress = "UPDATE_IN_PROGRESS"
)

// TrafficDistributionGroupStatus_Values returns all elements of the TrafficDistributionGroupStatus enum
func TrafficDistributionGroupStatus_Values() []string {
	return []string{
		TrafficDistributionGroupStatusCreationInProgress,
		TrafficDistributionGroupStatusActive,
		TrafficDistributionGroupStatusCreationFailed,
		TrafficDistributionGroupStatusPendingDeletion,
		TrafficDistributionGroupStatusDeletionFailed,
		TrafficDistributionGroupStatusUpdateInProgress,
	}
}

const (
	// TrafficTypeGeneral is a TrafficType enum value
	TrafficTypeGeneral = "GENERAL"

	// TrafficTypeCampaign is a TrafficType enum value
	TrafficTypeCampaign = "CAMPAIGN"
)

// TrafficType_Values returns all elements of the TrafficType enum
func TrafficType_Values() []string {
	return []string{
		TrafficTypeGeneral,
		TrafficTypeCampaign,
	}
}

const (
	// UnitSeconds is a Unit enum value
	UnitSeconds = "SECONDS"

	// UnitCount is a Unit enum value
	UnitCount = "COUNT"

	// UnitPercent is a Unit enum value
	UnitPercent = "PERCENT"
)

// Unit_Values returns all elements of the Unit enum
func Unit_Values() []string {
	return []string{
		UnitSeconds,
		UnitCount,
		UnitPercent,
	}
}

const (
	// UseCaseTypeRulesEvaluation is a UseCaseType enum value
	UseCaseTypeRulesEvaluation = "RULES_EVALUATION"

	// UseCaseTypeConnectCampaigns is a UseCaseType enum value
	UseCaseTypeConnectCampaigns = "CONNECT_CAMPAIGNS"
)

// UseCaseType_Values returns all elements of the UseCaseType enum
func UseCaseType_Values() []string {
	return []string{
		UseCaseTypeRulesEvaluation,
		UseCaseTypeConnectCampaigns,
	}
}

const (
	// VideoCapabilitySend is a VideoCapability enum value
	VideoCapabilitySend = "SEND"
)

// VideoCapability_Values returns all elements of the VideoCapability enum
func VideoCapability_Values() []string {
	return []string{
		VideoCapabilitySend,
	}
}

const (
	// ViewStatusPublished is a ViewStatus enum value
	ViewStatusPublished = "PUBLISHED"

	// ViewStatusSaved is a ViewStatus enum value
	ViewStatusSaved = "SAVED"
)

// ViewStatus_Values returns all elements of the ViewStatus enum
func ViewStatus_Values() []string {
	return []string{
		ViewStatusPublished,
		ViewStatusSaved,
	}
}

const (
	// ViewTypeCustomerManaged is a ViewType enum value
	ViewTypeCustomerManaged = "CUSTOMER_MANAGED"

	// ViewTypeAwsManaged is a ViewType enum value
	ViewTypeAwsManaged = "AWS_MANAGED"
)

// ViewType_Values returns all elements of the ViewType enum
func ViewType_Values() []string {
	return []string{
		ViewTypeCustomerManaged,
		ViewTypeAwsManaged,
	}
}

const (
	// VocabularyLanguageCodeArAe is a VocabularyLanguageCode enum value
	VocabularyLanguageCodeArAe = "ar-AE"

	// VocabularyLanguageCodeDeCh is a VocabularyLanguageCode enum value
	VocabularyLanguageCodeDeCh = "de-CH"

	// VocabularyLanguageCodeDeDe is a VocabularyLanguageCode enum value
	VocabularyLanguageCodeDeDe = "de-DE"

	// VocabularyLanguageCodeEnAb is a VocabularyLanguageCode enum value
	VocabularyLanguageCodeEnAb = "en-AB"

	// VocabularyLanguageCodeEnAu is a VocabularyLanguageCode enum value
	VocabularyLanguageCodeEnAu = "en-AU"

	// VocabularyLanguageCodeEnGb is a VocabularyLanguageCode enum value
	VocabularyLanguageCodeEnGb = "en-GB"

	// VocabularyLanguageCodeEnIe is a VocabularyLanguageCode enum value
	VocabularyLanguageCodeEnIe = "en-IE"

	// VocabularyLanguageCodeEnIn is a VocabularyLanguageCode enum value
	VocabularyLanguageCodeEnIn = "en-IN"

	// VocabularyLanguageCodeEnUs is a VocabularyLanguageCode enum value
	VocabularyLanguageCodeEnUs = "en-US"

	// VocabularyLanguageCodeEnWl is a VocabularyLanguageCode enum value
	VocabularyLanguageCodeEnWl = "en-WL"

	// VocabularyLanguageCodeEsEs is a VocabularyLanguageCode enum value
	VocabularyLanguageCodeEsEs = "es-ES"

	// VocabularyLanguageCodeEsUs is a VocabularyLanguageCode enum value
	VocabularyLanguageCodeEsUs = "es-US"

	// VocabularyLanguageCodeFrCa is a VocabularyLanguageCode enum value
	VocabularyLanguageCodeFrCa = "fr-CA"

	// VocabularyLanguageCodeFrFr is a VocabularyLanguageCode enum value
	VocabularyLanguageCodeFrFr = "fr-FR"

	// VocabularyLanguageCodeHiIn is a VocabularyLanguageCode enum value
	VocabularyLanguageCodeHiIn = "hi-IN"

	// VocabularyLanguageCodeItIt is a VocabularyLanguageCode enum value
	VocabularyLanguageCodeItIt = "it-IT"

	// VocabularyLanguageCodeJaJp is a VocabularyLanguageCode enum value
	VocabularyLanguageCodeJaJp = "ja-JP"

	// VocabularyLanguageCodeKoKr is a VocabularyLanguageCode enum value
	VocabularyLanguageCodeKoKr = "ko-KR"

	// VocabularyLanguageCodePtBr is a VocabularyLanguageCode enum value
	VocabularyLanguageCodePtBr = "pt-BR"

	// VocabularyLanguageCodePtPt is a VocabularyLanguageCode enum value
	VocabularyLanguageCodePtPt = "pt-PT"

	// VocabularyLanguageCodeZhCn is a VocabularyLanguageCode enum value
	VocabularyLanguageCodeZhCn = "zh-CN"

	// VocabularyLanguageCodeEnNz is a VocabularyLanguageCode enum value
	VocabularyLanguageCodeEnNz = "en-NZ"

	// VocabularyLanguageCodeEnZa is a VocabularyLanguageCode enum value
	VocabularyLanguageCodeEnZa = "en-ZA"
)

// VocabularyLanguageCode_Values returns all elements of the VocabularyLanguageCode enum
func VocabularyLanguageCode_Values() []string {
	return []string{
		VocabularyLanguageCodeArAe,
		VocabularyLanguageCodeDeCh,
		VocabularyLanguageCodeDeDe,
		VocabularyLanguageCodeEnAb,
		VocabularyLanguageCodeEnAu,
		VocabularyLanguageCodeEnGb,
		VocabularyLanguageCodeEnIe,
		VocabularyLanguageCodeEnIn,
		VocabularyLanguageCodeEnUs,
		VocabularyLanguageCodeEnWl,
		VocabularyLanguageCodeEsEs,
		VocabularyLanguageCodeEsUs,
		VocabularyLanguageCodeFrCa,
		VocabularyLanguageCodeFrFr,
		VocabularyLanguageCodeHiIn,
		VocabularyLanguageCodeItIt,
		VocabularyLanguageCodeJaJp,
		VocabularyLanguageCodeKoKr,
		VocabularyLanguageCodePtBr,
		VocabularyLanguageCodePtPt,
		VocabularyLanguageCodeZhCn,
		VocabularyLanguageCodeEnNz,
		VocabularyLanguageCodeEnZa,
	}
}

const (
	// VocabularyStateCreationInProgress is a VocabularyState enum value
	VocabularyStateCreationInProgress = "CREATION_IN_PROGRESS"

	// VocabularyStateActive is a VocabularyState enum value
	VocabularyStateActive = "ACTIVE"

	// VocabularyStateCreationFailed is a VocabularyState enum value
	VocabularyStateCreationFailed = "CREATION_FAILED"

	// VocabularyStateDeleteInProgress is a VocabularyState enum value
	VocabularyStateDeleteInProgress = "DELETE_IN_PROGRESS"
)

// VocabularyState_Values returns all elements of the VocabularyState enum
func VocabularyState_Values() []string {
	return []string{
		VocabularyStateCreationInProgress,
		VocabularyStateActive,
		VocabularyStateCreationFailed,
		VocabularyStateDeleteInProgress,
	}
}

const (
	// VoiceRecordingTrackFromAgent is a VoiceRecordingTrack enum value
	VoiceRecordingTrackFromAgent = "FROM_AGENT"

	// VoiceRecordingTrackToAgent is a VoiceRecordingTrack enum value
	VoiceRecordingTrackToAgent = "TO_AGENT"

	// VoiceRecordingTrackAll is a VoiceRecordingTrack enum value
	VoiceRecordingTrackAll = "ALL"
)

// VoiceRecordingTrack_Values returns all elements of the VoiceRecordingTrack enum
func VoiceRecordingTrack_Values() []string {
	return []string{
		VoiceRecordingTrackFromAgent,
		VoiceRecordingTrackToAgent,
		VoiceRecordingTrackAll,
	}
}
