) StatusCode() int {
	return s.RespMetadata.StatusCode
}

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

// An object that defines a message that contains unformatted text.
type PlainTextMessageType struct {
	_ struct{} `type:"structure"`

	// The language to use when delivering the message. For a complete list of supported
	// languages, see the Amazon Polly Developer Guide.
	LanguageCode *string `type:"string"`

	// The plain (not SSML-formatted) text to deliver to the recipient.
	Text *string `type:"string"`

	// The name of the voice that you want to use to deliver the message. For a
	// complete list of supported voices, see the Amazon Polly Developer Guide.
	VoiceId *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 PlainTextMessageType) String() string {
	return awsutil.Prettify(s)
}

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

// SetLanguageCode sets the LanguageCode field's value.
func (s *PlainTextMessageType) SetLanguageCode(v string) *PlainTextMessageType {
	s.LanguageCode = &v
	return s
}

// SetText sets the Text field's value.
func (s *PlainTextMessageType) SetText(v string) *PlainTextMessageType {
	s.Text = &v
	return s
}

// SetVoiceId sets the VoiceId field's value.
func (s *PlainTextMessageType) SetVoiceId(v string) *PlainTextMessageType {
	s.VoiceId = &v
	return s
}

// An object that defines a message that contains SSML-formatted text.
type SSMLMessageType struct {
	_ struct{} `type:"structure"`

	// The language to use when delivering the message. For a complete list of supported
	// languages, see the Amazon Polly Developer Guide.
	LanguageCode *string `type:"string"`

	// The SSML-formatted text to deliver to the recipient.
	Text *string `type:"string"`

	// The name of the voice that you want to use to deliver the message. For a
	// complete list of supported voices, see the Amazon Polly Developer Guide.
	VoiceId *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 SSMLMessageType) String() string {
	return awsutil.Prettify(s)
}

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

// SetLanguageCode sets the LanguageCode field's value.
func (s *SSMLMessageType) SetLanguageCode(v string) *SSMLMessageType {
	s.LanguageCode = &v
	return s
}

// SetText sets the Text field's value.
func (s *SSMLMessageType) SetText(v string) *SSMLMessageType {
	s.Text = &v
	return s
}

// SetVoiceId sets the VoiceId field's value.
func (s *SSMLMessageType) SetVoiceId(v string) *SSMLMessageType {
	s.VoiceId = &v
	return s
}

// A request to create and send a new voice message.
type SendVoiceMessageInput struct {
	_ struct{} `type:"structure"`

	// The phone number that appears on recipients' devices when they receive the
	// message.
	CallerId *string `type:"string"`

	// The name of the configuration set that you want to use to send the message.
	ConfigurationSetName *string `type:"string"`

	// An object that contains a voice message and information about the recipient
	// that you want to send it to.
	Content *VoiceMessageContent `type:"structure"`

	// The phone number that you want to send the voice message to.
	DestinationPhoneNumber *string `type:"string"`

	// The phone number that Amazon Pinpoint should use to send the voice message.
	// This isn't necessarily the phone number that appears on recipients' devices
	// when they receive the message, because you can specify a CallerId parameter
	// in the request.
	OriginationPhoneNumber *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 SendVoiceMessageInput) String() string {
	return awsutil.Prettify(s)
}

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

// SetCallerId sets the CallerId field's value.
func (s *SendVoiceMessageInput) SetCallerId(v string) *SendVoiceMessageInput {
	s.CallerId = &v
	return s
}

// SetConfigurationSetName sets the ConfigurationSetName field's value.
func (s *SendVoiceMessageInput) SetConfigurationSetName(v string) *SendVoiceMessageInput {
	s.ConfigurationSetName = &v
	return s
}

// SetContent sets the Content field's value.
func (s *SendVoiceMessageInput) SetContent(v *VoiceMessageContent) *SendVoiceMessageInput {
	s.Content = v
	return s
}

// SetDestinationPhoneNumber sets the DestinationPhoneNumber field's value.
func (s *SendVoiceMessageInput) SetDestinationPhoneNumber(v string) *SendVoiceMessageInput {
	s.DestinationPhoneNumber = &v
	return s
}

// SetOriginationPhoneNumber sets the OriginationPhoneNumber field's value.
func (s *SendVoiceMessageInput) SetOriginationPhoneNumber(v string) *SendVoiceMessageInput {
	s.OriginationPhoneNumber = &v
	return s
}

// An object that that contains the Message ID of a Voice message that was sent
// successfully.
type SendVoiceMessageOutput struct {
	_ struct{} `type:"structure"`

	// A unique identifier for the voice message.
	MessageId *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 SendVoiceMessageOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetMessageId sets the MessageId field's value.
func (s *SendVoiceMessageOutput) SetMessageId(v string) *SendVoiceMessageOutput {
	s.MessageId = &v
	return s
}

// An object that contains information about an event destination that sends
// data to Amazon SNS.
type SnsDestination struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the Amazon SNS topic that you want to publish
	// events to.
	TopicArn *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 SnsDestination) String() string {
	return awsutil.Prettify(s)
}

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

// SetTopicArn sets the TopicArn field's value.
func (s *SnsDestination) SetTopicArn(v string) *SnsDestination {
	s.TopicArn = &v
	return s
}

// You've issued too many requests to the resource. Wait a few minutes, and
// then try again.
type TooManyRequestsException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

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

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

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

func newErrorTooManyRequestsException(v protocol.ResponseMetadata) error {
	return &TooManyRequestsException{
		RespMetadata: v,
	}
}

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

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

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

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

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

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

// An object that defines a request to update an existing event destination.
type UpdateConfigurationSetEventDestinationInput struct {
	_ struct{} `type:"structure"`

	// ConfigurationSetName is a required field
	ConfigurationSetName *string `location:"uri" locationName:"ConfigurationSetName" type:"string" required:"true"`

	// An object that defines a single event destination.
	EventDestination *EventDestinationDefinition `type:"structure"`

	// EventDestinationName is a required field
	EventDestinationName *string `location:"uri" locationName:"EventDestinationName" type:"string" required:"true"`
}

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

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

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

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

// SetConfigurationSetName sets the ConfigurationSetName field's value.
func (s *UpdateConfigurationSetEventDestinationInput) SetConfigurationSetName(v string) *UpdateConfigurationSetEventDestinationInput {
	s.ConfigurationSetName = &v
	return s
}

// SetEventDestination sets the EventDestination field's value.
func (s *UpdateConfigurationSetEventDestinationInput) SetEventDestination(v *EventDestinationDefinition) *UpdateConfigurationSetEventDestinationInput {
	s.EventDestination = v
	return s
}

// SetEventDestinationName sets the EventDestinationName field's value.
func (s *UpdateConfigurationSetEventDestinationInput) SetEventDestinationName(v string) *UpdateConfigurationSetEventDestinationInput {
	s.EventDestinationName = &v
	return s
}

// An empty object that indicates that the event destination was updated successfully.
type UpdateConfigurationSetEventDestinationOutput 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 UpdateConfigurationSetEventDestinationOutput) String() string {
	return awsutil.Prettify(s)
}

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

// An object that contains a voice message and information about the recipient
// that you want to send it to.
type VoiceMessageContent struct {
	_ struct{} `type:"structure"`

	// An object that defines a message that contains text formatted using Amazon
	// Pinpoint Voice Instructions markup.
	CallInstructionsMessage *CallInstructionsMessageType `type:"structure"`

	// An object that defines a message that contains unformatted text.
	PlainTextMessage *PlainTextMessageType `type:"structure"`

	// An object that defines a message that contains SSML-formatted text.
	SSMLMessage *SSMLMessageType `type:"structure"`
}

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

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

// SetCallInstructionsMessage sets the CallInstructionsMessage field's value.
func (s *VoiceMessageContent) SetCallInstructionsMessage(v *CallInstructionsMessageType) *VoiceMessageContent {
	s.CallInstructionsMessage = v
	return s
}

// SetPlainTextMessage sets the PlainTextMessage field's value.
func (s *VoiceMessageContent) SetPlainTextMessage(v *PlainTextMessageType) *VoiceMessageContent {
	s.PlainTextMessage = v
	return s
}

// SetSSMLMessage sets the SSMLMessage field's value.
func (s *VoiceMessageContent) SetSSMLMessage(v *SSMLMessageType) *VoiceMessageContent {
	s.SSMLMessage = v
	return s
}

// The types of events that are sent to the event destination.
const (
	// EventTypeInitiatedCall is a EventType enum value
	EventTypeInitiatedCall = "INITIATED_CALL"

	// EventTypeRinging is a EventType enum value
	EventTypeRinging = "RINGING"

	// EventTypeAnswered is a EventType enum value
	EventTypeAnswered = "ANSWERED"

	// EventTypeCompletedCall is a EventType enum value
	EventTypeCompletedCall = "COMPLETED_CALL"

	// EventTypeBusy is a EventType enum value
	EventTypeBusy = "BUSY"

	// EventTypeFailed is a EventType enum value
	EventTypeFailed = "FAILED"

	// EventTypeNoAnswer is a EventType enum value
	EventTypeNoAnswer = "NO_ANSWER"
)

// EventType_Values returns all elements of the EventType enum
func EventType_Values() []string {
	return []string{
		EventTypeInitiatedCall,
		EventTypeRinging,
		EventTypeAnswered,
		EventTypeCompletedCall,
		EventTypeBusy,
		EventTypeFailed,
		EventTypeNoAnswer,
	}
}
