// 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 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 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 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 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 contact flow with a phone number claimed to your 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 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 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.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type 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 contact flow for the specified Amazon Connect instance.
//
// You can also create and update contact flows using the Amazon Connect Flow
// language (https://docs.aws.amazon.com/connect/latest/adminguide/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 contact 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 contact 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 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 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.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type 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 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.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// 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 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.
//
// For information about how to create user accounts using the Amazon Connect
// console, 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 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 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 contact 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 contact 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 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 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 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.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// 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 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 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.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type 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 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 contact flow.
//
// You can also create and update contact flows using the Amazon Connect Flow
// language (https://docs.aws.amazon.com/connect/latest/adminguide/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 contact 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 contact 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 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
//
// Returns awserr.Error for service API and SDK errors. Use runtime type 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 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 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.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// 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 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 account. You can find the instance ID in the
// console (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 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 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 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
// contact 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 contact flow association from a phone number claimed to your
// Amazon Connect instance, if a contact flow association exists.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type 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 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 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.
//
// Retrieves a token for federation.
//
// 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 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.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type 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 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 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.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type 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 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 contact 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 contact flows for the specified Amazon Connect
// instance.
//
// You can also create and update contact flows using the Amazon Connect Flow
// language (https://docs.aws.amazon.com/connect/latest/adminguide/flow-language.html).
//
// For more information about contact flows, see Contact 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 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 contact 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 bots currently 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 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.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type 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.
//
// 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.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type 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 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 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 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 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.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// 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 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 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 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.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type 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 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 the call.
//
// 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 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.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type 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 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 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 contact 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 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 contact flow.
// It performs the actions in the contact flow that's specified (in ContactFlowId).
//
// Agents do not initiate the outbound API, which means that they do not dial
// the contact. If the contact 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.
// 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.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type 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 contact flow to start a new task.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type 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 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 the following initiation
// methods:
//
//    * DISCONNECT
//
//    * TRANSFER
//
//    * QUEUE_TRANSFER
//
// Returns awserr.Error for service API and SDK errors. Use runtime type 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.
//
//   * 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 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 the call. For
// example, you might suspend the call recording while collecting sensitive
// information, such as a credit card number. Then use ResumeContactRecording
// to restart recording.
//
// The period of time that the recording is suspended is filled with silence
// in the final recording.
//
// 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 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 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.
//
// The supported resource types are users, routing profiles, queues, quick connects,
// contact flows, agent status, hours of operation, and phone number.
//
// 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 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 CTR retention and the maximum size of
// the CTR 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.
//
// Important: You cannot use the operation to update attributes for contacts
// that occurred prior to the release of the API, which was September 12, 2018.
// You can update attributes only for contacts that started after the release
// of the API. If you attempt to update attributes for a contact that occurred
// prior to the release of the API, a 400 error is returned. This applies also
// to queued callbacks that were initiated prior to the release of the API but
// are still active in your 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 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 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 contact flow.
//
// You can also create and update contact flows using the Amazon Connect Flow
// language (https://docs.aws.amazon.com/connect/latest/adminguide/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 contact 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 contact 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 contact 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 contact 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 contact flow.
//
// You can also create and update contact flows using the Amazon Connect Flow
// language (https://docs.aws.amazon.com/connect/latest/adminguide/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 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 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 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
// to another Amazon Connect instance in the same 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 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 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.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type 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 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 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.
//
// This API is in preview release for Amazon Connect and is subject to change.
//
// 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 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 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()
}

// 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 the agent who accepted the contact.
type AgentInfo 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 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()
}

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

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

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

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

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

type AssociateApprovedOriginInput 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 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 instanceId
	// in the 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.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 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 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 AssociateInstanceStorageConfigInput 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"`

	// 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 instanceId
	// in the 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 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 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 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 contact flow.
	//
	// ContactFlowId is a required field
	ContactFlowId *string `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"`

	// 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 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 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 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 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 instanceId
	// in the 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
}

// Information about the attachment reference if 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 an attachment reference type.
	Status *string `type:"string" enum:"ReferenceStatus"`

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

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

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

// A chat message.
type ChatMessage struct {
	_ struct{} `type:"structure"`

	// The content of the chat message.
	//
	// Content is a required field
	Content *string `min:"1" type:"string" required:"true"`

	// The type of the content. Supported types are text/plain.
	//
	// 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
}

// 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.
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// 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.
	Tags map[string]*string `min:"1" type:"map"`

	// The Amazon Resource Name (ARN) for Amazon Connect instances that phone numbers
	// are claimed to.
	//
	// TargetArn is a required field
	TargetArn *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 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.PhoneNumber == nil {
		invalidParams.Add(request.NewErrParamRequired("PhoneNumber"))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}
	if s.TargetArn == nil {
		invalidParams.Add(request.NewErrParamRequired("TargetArn"))
	}

	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
}

// 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"`

	// The identifier of 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.
type ClaimedPhoneNumberSummary struct {
	_ struct{} `type:"structure"`

	// 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"`

	// The identifier of the phone number.
	PhoneNumberId *string `type:"string"`

	// The status of the phone number.
	PhoneNumberStatus *PhoneNumberStatus `type:"structure"`

	// The type of phone number.
	PhoneNumberType *string `type:"string" enum:"PhoneNumberType"`

	// The tags used to organize, track, or control access for this resource.
	Tags map[string]*string `min:"1" type:"map"`

	// The Amazon Resource Name (ARN) for Amazon Connect instances that phone numbers
	// are claimed to.
	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()
}

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

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

// 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 *string `type:"string"`

	// 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.
	InitiationTimestamp *time.Time `type:"timestamp"`

	// The timestamp when contact was last updated.
	LastUpdateTimestamp *time.Time `type:"timestamp"`

	// The name of the contact.
	Name *string `type:"string"`

	// 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"`

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

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

// SetScheduledTimestamp sets the ScheduledTimestamp field's value.
func (s *Contact) SetScheduledTimestamp(v time.Time) *Contact {
	s.ScheduledTimestamp = &v
	return s
}

// Contains information about a contact flow.
type ContactFlow struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the contact flow.
	Arn *string `type:"string"`

	// The content of the contact flow.
	Content *string `type:"string"`

	// The description of the contact flow.
	Description *string `type:"string"`

	// The identifier of the contact flow.
	Id *string `type:"string"`

	// The name of the contact flow.
	Name *string `min:"1" type:"string"`

	// The type of contact flow.
	State *string `type:"string" enum:"ContactFlowState"`

	// One or more tags.
	Tags map[string]*string `min:"1" type:"map"`

	// The type of the contact flow. For descriptions of the available types, see
	// Choose a Contact 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 contact flow module.
type ContactFlowModule struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN).
	Arn *string `type:"string"`

	// The content of the contact flow module.
	Content *string `min:"1" type:"string"`

	// The description of the contact flow module.
	Description *string `type:"string"`

	// The identifier of the contact flow module.
	Id *string `min:"1" type:"string"`

	// The name of the contact flow module.
	Name *string `min:"1" type:"string"`

	// The type of contact flow module.
	State *string `type:"string" enum:"ContactFlowModuleState"`

	// The status of the contact flow module.
	Status *string `type:"string" enum:"ContactFlowModuleStatus"`

	// The tags used to organize, track, or control access for this resource.
	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 contact flow.
type ContactFlowModuleSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the contact flow module.
	Arn *string `type:"string"`

	// The identifier of the contact flow module.
	Id *string `min:"1" type:"string"`

	// The name of the contact flow module.
	Name *string `min:"1" type:"string"`

	// The type of contact 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 contact 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 contact flow.
//
// You can also create and update contact flows using the Amazon Connect Flow
// language (https://docs.aws.amazon.com/connect/latest/adminguide/flow-language.html).
type ContactFlowSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the contact flow.
	Arn *string `type:"string"`

	// The type of contact flow.
	ContactFlowState *string `type:"string" enum:"ContactFlowState"`

	// The type of contact flow.
	ContactFlowType *string `type:"string" enum:"ContactFlowType"`

	// The identifier of the contact flow.
	Id *string `type:"string"`

	// The name of the contact 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.
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
}

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

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

	// The content of the contact flow.
	//
	// Content is a required field
	Content *string `type:"string" required:"true"`

	// The description of the contact 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 contact flow.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// One or more tags.
	Tags map[string]*string `min:"1" type:"map"`

	// The type of the contact flow. For descriptions of the available types, see
	// Choose a Contact 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.
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// The content of the contact flow module.
	//
	// Content is a required field
	Content *string `min:"1" type:"string" required:"true"`

	// The description of the contact flow module.
	Description *string `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 contact 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.
	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 contact flow module.
	Arn *string `type:"string"`

	// The identifier of the contact 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 contact flow.
	ContactFlowArn *string `type:"string"`

	// The identifier of the contact 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 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 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 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.
	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"`
}

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

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 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 Amazon Resource Name (ARN) of the integration.
	//
	// 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.
	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 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 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 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.
	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 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 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.
	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"`

	// 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 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 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.
	QueueConfigs []*RoutingProfileQueueConfig `min:"1" type:"list"`

	// One or more tags.
	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
}

// 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 CreateSecurityProfileInput struct {
	_ struct{} `type:"structure"`

	// The description of the security profile.
	Description *string `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"`

	// Permissions assigned to the security profile.
	Permissions []*string `type:"list"`

	// The name of the security profile.
	//
	// SecurityProfileName is a required field
	SecurityProfileName *string `type:"string" required:"true"`

	// The tags used to organize, track, or control access for this resource.
	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.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 *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
}

// 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 CreateUseCaseInput 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 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.
	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 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 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.
	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 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 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 *string `type:"string"`

	// 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"`

	// One or more tags.
	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 CreateVocabularyInput struct {
	_ struct{} `type:"structure"`

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request. 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 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 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.
	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"`

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

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

// Contains information about a default vocabulary.
type DefaultVocabulary 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 `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 DeleteContactFlowInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the contact 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 instanceId
	// in the 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 contact 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 instanceId
	// in the 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 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 instanceId
	// in the 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 instanceId
	// in the 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 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 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 DeleteQuickConnectInput 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 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 DeleteSecurityProfileInput 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 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 DeleteUseCaseInput 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 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 instanceId
	// in the 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 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.
	//
	// 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 DeleteVocabularyInput 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 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 instanceId
	// in the 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 DescribeContactFlowInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the contact 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 contact 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 instanceId
	// in the 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 contact 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 contact 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 instanceId
	// in the 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 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 instanceId
	// in the 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 instanceId
	// in the 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 instanceId
	// in the 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 instanceId
	// in the 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"`

	// The identifier 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 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.
	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 DescribeQueueInput 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 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 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 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 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 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 DescribeSecurityProfileInput 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 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 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 instanceId
	// in the 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 instanceId
	// in the 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 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 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 DescribeVocabularyInput 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 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"`
}

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

type DisassociateApprovedOriginInput 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 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 instanceId
	// in the 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.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 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 instanceId
	// in the 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 instanceId
	// in the 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 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 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 instanceId
	// in the 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 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 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 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 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 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 instanceId
	// in the 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()
}

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

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

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

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

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.
	//
	// 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 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.
	//
	// 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 no Grouping is included in the request, a summary of metrics is returned.
	Groupings []*string `type:"list" enum:"Grouping"`

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

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

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

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

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

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

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

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

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

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

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

// SetName sets the Name field's value.
func (s *HierarchyGroupSummary) SetName(v string) *HierarchyGroupSummary {
	s.Name = &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 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
}

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

// 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 name for the hours of operation.
	Name *string `min:"1" type:"string"`

	// The tags used to organize, track, or control access for this resource.
	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
}

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

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

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

// 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 instanceId
	// in the 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"`

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

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

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

// 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"`

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

// 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 instanceId
	// in the 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
}

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

// 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 Region that the Amazon Lex bot was created in.
	LexRegion *string `type:"string"`

	// The name of the Amazon Lex bot.
	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 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()
}

// 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 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.
	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 ListApprovedOriginsInput 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.
	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 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 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 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 ListContactFlowModulesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The state of the contact flow module.
	ContactFlowModuleState *string `location:"querystring" locationName:"state" type:"string" enum:"ContactFlowModuleState"`

	// 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.
	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 contact 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 contact flow.
	ContactFlowTypes []*string `location:"querystring" locationName:"contactFlowTypes" type:"list" enum:"ContactFlowType"`

	// 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.
	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 contact 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 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 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 contact 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 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 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 ListHoursOfOperationsInput 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.
	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 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.
	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 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.
	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 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 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
}

// 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 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.
	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 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. 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 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 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.
	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.
	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.
type ListPhoneNumbersSummary struct {
	_ struct{} `type:"structure"`

	// 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 identifier of the phone number.
	PhoneNumberId *string `type:"string"`

	// The type of phone number.
	PhoneNumberType *string `type:"string" enum:"PhoneNumberType"`

	// The Amazon Resource Name (ARN) for Amazon Connect instances that phone numbers
	// are claimed to.
	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()
}

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

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

// 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 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 that phone numbers
	// are claimed to. If TargetArn input is not provided, this API lists numbers
	// claimed to all the Amazon Connect instances belonging to your account.
	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.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}

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

// SetMaxResults sets the MaxResults field's value.
func (s *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.
	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 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.
	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 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.
	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"`

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

// 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 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.
	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 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.
	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 console, 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 ListRoutingProfileQueuesInput 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.
	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"`

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

// 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 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.
	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 ListSecurityKeysInput 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.
	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 ListSecurityProfilePermissionsInput 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.
	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"`

	// 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.
	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()
}

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

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

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

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

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

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

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

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

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

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

// 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 identifier of the agent who accepted the contact.
	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 contact flow
// must be of type Transfer to Queue.
type QueueQuickConnectConfig struct {
	_ struct{} `type:"structure"`

	// The identifier of the contact 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
}

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

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

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

// 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 name of the quick connect.
	Name *string `min:"1" type:"string"`

	// The type of quick connect. In the Amazon Connect console, 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
}

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

// A link that an agent selects to complete a given task. 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. Only URL type can be added or updated on a contact.
	//
	// 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 attachment reference if the referenceType is ATTACHMENT.
	// Otherwise, null.
	Attachment *AttachmentReference `type:"structure"`

	// Information about the URL reference if 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
}

// 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.
	ClientToken *string `location:"querystring" locationName:"clientToken" type:"string" idempotencyToken:"true"`

	// The identifier 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 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()
}

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

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 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 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"`

	// 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 instanceId
	// in the ARN of the instance.
	InstanceId *string `min:"1" type:"string"`

	// 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 Amazon Resource Name (ARN) of the routing profile.
	RoutingProfileArn *string `type:"string"`

	// The identifier of the routing profile.
	RoutingProfileId *string `type:"string"`

	// One or more tags.
	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()
}

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

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

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

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

// SetName sets the Name field's value.
func (s *RoutingProfileSummary) SetName(v string) *RoutingProfileSummary {
	s.Name = &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 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 that phone numbers
	// are claimed to.
	//
	// TargetArn is a required field
	TargetArn *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 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.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 s.TargetArn == nil {
		invalidParams.Add(request.NewErrParamRequired("TargetArn"))
	}

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

// 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 for your Amazon Connect
	// instance.
	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 SearchVocabulariesInput 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 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
}

// 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 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 organization resource identifier for the security profile.
	OrganizationResourceId *string `min:"1" type:"string"`

	// The name for the security profile.
	SecurityProfileName *string `type:"string"`

	// The tags used to organize, track, or control access for this resource.
	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()
}

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

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

// SetTags sets the Tags field's value.
func (s *SecurityProfile) SetTags(v map[string]*string) *SecurityProfile {
	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 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
}

// SetName sets the Name field's value.
func (s *SecurityProfileSummary) SetName(v string) *SecurityProfileSummary {
	s.Name = &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
}

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 contact 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 minumum 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.
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// The identifier of the contact flow for initiating the chat. To see the ContactFlowId
	// in the Amazon Connect console user interface, on the navigation menu go to
	// Routing, Contact Flows. Choose the contact flow. On the contact flow page,
	// under the name of the contact 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 instanceId
	// in the 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"`

	// The supported chat message content types. Content types can be text/plain
	// or both text/plain and text/markdown.
	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.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 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
}

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

// 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 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 instanceId
	// in the 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.
	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 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 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 contact 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. 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 contact flow for the outbound call. To see the ContactFlowId
	// in the Amazon Connect console user interface, on the navigation menu go to
	// Routing, Contact Flows. Choose the contact flow. On the contact flow page,
	// under the name of the contact 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 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 instanceId
	// in the ARN of the instance.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"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 contact flow is used. If you do not specify a queue,
	// you must specify a source phone number.
	QueueId *string `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 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
}

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

// SetQueueId sets the QueueId field's value.
func (s *StartOutboundVoiceContactInput) SetQueueId(v string) *StartOutboundVoiceContactInput {
	s.QueueId = &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 contact 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.
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// The identifier of the contact flow for initiating the tasks. To see the ContactFlowId
	// in the Amazon Connect console user interface, on the navigation menu go to
	// Routing, Contact Flows. Choose the contact flow. On the contact flow page,
	// under the name of the contact 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 *string `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 `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 required field
	Name *string `type:"string" required:"true"`

	// The identifier of the previous chat, voice, or task contact.
	PreviousContactId *string `min:"1" type:"string"`

	// A formatted URL that is shown to an agent in the Contact Control Panel (CCP).
	References map[string]*Reference `type:"map"`

	// The timestamp, in Unix Epoch seconds format, at which to start running the
	// inbound contact flow. The scheduled time cannot be in the past. It must be
	// within up to 6 days in future.
	ScheduledTime *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 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.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.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.PreviousContactId != nil && len(*s.PreviousContactId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PreviousContactId", 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
}

// SetReferences sets the References field's value.
func (s *StartTaskContactInput) SetReferences(v map[string]*Reference) *StartTaskContactInput {
	s.References = v
	return s
}

// SetScheduledTime sets the ScheduledTime field's value.
func (s *StartTaskContactInput) SetScheduledTime(v time.Time) *StartTaskContactInput {
	s.ScheduledTime = &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 StopContactInput struct {
	_ struct{} `type:"structure"`

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

// 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 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 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 instanceId
	// in the 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()
}

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 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 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()
}

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"`

	// One or more tags. 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()
}

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

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

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 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 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()
}

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

	// The Amazon Connect attributes. These attributes can be accessed in contact
	// 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 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 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 UpdateContactFlowContentInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the contact flow.
	//
	// ContactFlowId is a required field
	ContactFlowId *string `location:"uri" locationName:"ContactFlowId" type:"string" required:"true"`

	// The JSON string that represents contact flow’s content. For an example,
	// see Example contact flow in Amazon Connect Flow language (https://docs.aws.amazon.com/connect/latest/adminguide/flow-language-example.html)
	// in the Amazon Connect Administrator Guide.
	//
	// 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 contact flow.
	//
	// ContactFlowId is a required field
	ContactFlowId *string `location:"uri" locationName:"ContactFlowId" type:"string" required:"true"`

	// The state of contact flow.
	ContactFlowState *string `type:"string" enum:"ContactFlowState"`

	// The description of the contact flow.
	Description *string `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"`

	// TThe name of the contact 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 contact flow module.
	//
	// ContactFlowModuleId is a required field
	ContactFlowModuleId *string `location:"uri" locationName:"ContactFlowModuleId" min:"1" type:"string" required:"true"`

	// The content of the contact flow module.
	//
	// Content is a required field
	Content *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"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API 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 contact flow module.
	//
	// ContactFlowModuleId is a required field
	ContactFlowModuleId *string `location:"uri" locationName:"ContactFlowModuleId" min:"1" type:"string" required:"true"`

	// The description of the contact flow module.
	Description *string `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 contact flow module.
	Name *string `min:"1" type:"string"`

	// The state of contact 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 contact flow.
	//
	// ContactFlowId is a required field
	ContactFlowId *string `location:"uri" locationName:"ContactFlowId" type:"string" required:"true"`

	// The description of the contact 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 contact 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 *string `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 contact.
	Name *string `type:"string"`

	// A formatted URL that is shown to an agent in the 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 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 instanceId
	// in the 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 contact 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 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 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 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 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 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 instanceId
	// in the 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()
}

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

	// A unique, case-sensitive identifier that you provide to ensure the idempotency
	// of the request.
	ClientToken *string `type:"string" idempotencyToken:"true"`

	// The identifier of 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 that phone numbers
	// are claimed to.
	//
	// TargetArn is a required field
	TargetArn *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 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.PhoneNumberId == nil {
		invalidParams.Add(request.NewErrParamRequired("PhoneNumberId"))
	}
	if s.PhoneNumberId != nil && len(*s.PhoneNumberId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PhoneNumberId", 1))
	}
	if s.TargetArn == nil {
		invalidParams.Add(request.NewErrParamRequired("TargetArn"))
	}

	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
}

// 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 UpdatePhoneNumberOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the phone number.
	PhoneNumberArn *string `type:"string"`

	// The identifier of 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 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 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 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 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 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 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 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 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 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 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 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 instanceId
	// in the 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 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 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 UpdateRoutingProfileConcurrencyInput 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 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 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 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 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 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 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 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 UpdateSecurityProfileInput struct {
	_ struct{} `type:"structure"`

	// The description of the security profile.
	Description *string `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 permissions granted to a security profile.
	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"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API 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 invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

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

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 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 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 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 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 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 instanceId
	// in the 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 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 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 instanceId
	// in the 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 UpdateUserRoutingProfileInput 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 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 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 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()
}

// 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 a 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"`

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

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

// 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 *string `type:"string"`

	// The first name. This is required if you are using Amazon Connect or SAML
	// for identity management.
	FirstName *string `min:"1" type:"string"`

	// The last name. This is required if you are using Amazon Connect or SAML for
	// identity management.
	LastName *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 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
}

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

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

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

// SetUsername sets the Username field's value.
func (s *UserSummary) SetUsername(v string) *UserSummary {
	s.Username = &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.
	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
}

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 (
	// 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 (
	// 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"
)

// ContactInitiationMethod_Values returns all elements of the ContactInitiationMethod enum
func ContactInitiationMethod_Values() []string {
	return []string{
		ContactInitiationMethodInbound,
		ContactInitiationMethodOutbound,
		ContactInitiationMethodTransfer,
		ContactInitiationMethodQueueTransfer,
		ContactInitiationMethodCallback,
		ContactInitiationMethodApi,
	}
}

// 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 (
	// GroupingQueue is a Grouping enum value
	GroupingQueue = "QUEUE"

	// GroupingChannel is a Grouping enum value
	GroupingChannel = "CHANNEL"
)

// Grouping_Values returns all elements of the Grouping enum
func Grouping_Values() []string {
	return []string{
		GroupingQueue,
		GroupingChannel,
	}
}

// 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"
)

// InstanceAttributeType_Values returns all elements of the InstanceAttributeType enum
func InstanceAttributeType_Values() []string {
	return []string{
		InstanceAttributeTypeInboundCalls,
		InstanceAttributeTypeOutboundCalls,
		InstanceAttributeTypeContactflowLogs,
		InstanceAttributeTypeContactLens,
		InstanceAttributeTypeAutoResolveBestVoices,
		InstanceAttributeTypeUseCustomTtsVoices,
		InstanceAttributeTypeEarlyMedia,
		InstanceAttributeTypeMultiPartyConference,
	}
}

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"
)

// InstanceStorageResourceType_Values returns all elements of the InstanceStorageResourceType enum
func InstanceStorageResourceType_Values() []string {
	return []string{
		InstanceStorageResourceTypeChatTranscripts,
		InstanceStorageResourceTypeCallRecordings,
		InstanceStorageResourceTypeScheduledReports,
		InstanceStorageResourceTypeMediaStreams,
		InstanceStorageResourceTypeContactTraceRecords,
		InstanceStorageResourceTypeAgentEvents,
		InstanceStorageResourceTypeRealTimeContactAnalysisSegments,
	}
}

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"
)

// IntegrationType_Values returns all elements of the IntegrationType enum
func IntegrationType_Values() []string {
	return []string{
		IntegrationTypeEvent,
		IntegrationTypeVoiceId,
		IntegrationTypePinpointApp,
		IntegrationTypeWisdomAssistant,
		IntegrationTypeWisdomKnowledgeBase,
	}
}

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 (
	// 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"
)

// PhoneNumberType_Values returns all elements of the PhoneNumberType enum
func PhoneNumberType_Values() []string {
	return []string{
		PhoneNumberTypeTollFree,
		PhoneNumberTypeDid,
	}
}

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 (
	// 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 (
	// 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"
)

// ReferenceType_Values returns all elements of the ReferenceType enum
func ReferenceType_Values() []string {
	return []string{
		ReferenceTypeUrl,
		ReferenceTypeAttachment,
	}
}

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"
)

// ResourceType_Values returns all elements of the ResourceType enum
func ResourceType_Values() []string {
	return []string{
		ResourceTypeContact,
		ResourceTypeContactFlow,
		ResourceTypeInstance,
		ResourceTypeParticipant,
		ResourceTypeHierarchyLevel,
		ResourceTypeHierarchyGroup,
		ResourceTypeUser,
	}
}

const (
	// SourceTypeSalesforce is a SourceType enum value
	SourceTypeSalesforce = "SALESFORCE"

	// SourceTypeZendesk is a SourceType enum value
	SourceTypeZendesk = "ZENDESK"
)

// SourceType_Values returns all elements of the SourceType enum
func SourceType_Values() []string {
	return []string{
		SourceTypeSalesforce,
		SourceTypeZendesk,
	}
}

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 (
	// 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 (
	// 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"
)

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

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