er Guide.
type Endpoint struct {
	_ struct{} `type:"structure"`

	// The ARN of the endpoint.
	Arn *string `min:"1" type:"string"`

	// The time the endpoint was created.
	CreationTime *time.Time `type:"timestamp"`

	// A description for the endpoint.
	Description *string `type:"string"`

	// The URL subdomain of the endpoint. For example, if the URL for Endpoint is
	// https://abcde.veo.endpoints.event.amazonaws.com, then the EndpointId is abcde.veo.
	EndpointId *string `min:"1" type:"string"`

	// The URL of the endpoint.
	EndpointUrl *string `min:"1" type:"string"`

	// The event buses being used by the endpoint.
	EventBuses []*EndpointEventBus `min:"2" type:"list"`

	// The last time the endpoint was modified.
	LastModifiedTime *time.Time `type:"timestamp"`

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

	// Whether event replication was enabled or disabled for this endpoint. The
	// default state is ENABLED which means you must supply a RoleArn. If you don't
	// have a RoleArn or you don't want event replication enabled, set the state
	// to DISABLED.
	ReplicationConfig *ReplicationConfig `type:"structure"`

	// The ARN of the role used by event replication for the endpoint.
	RoleArn *string `min:"1" type:"string"`

	// The routing configuration of the endpoint.
	RoutingConfig *RoutingConfig `type:"structure"`

	// The current state of the endpoint.
	State *string `type:"string" enum:"EndpointState"`

	// The reason the endpoint is in its current state.
	StateReason *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 Endpoint) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// SetEndpointId sets the EndpointId field's value.
func (s *Endpoint) SetEndpointId(v string) *Endpoint {
	s.EndpointId = &v
	return s
}

// SetEndpointUrl sets the EndpointUrl field's value.
func (s *Endpoint) SetEndpointUrl(v string) *Endpoint {
	s.EndpointUrl = &v
	return s
}

// SetEventBuses sets the EventBuses field's value.
func (s *Endpoint) SetEventBuses(v []*EndpointEventBus) *Endpoint {
	s.EventBuses = v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *Endpoint) SetLastModifiedTime(v time.Time) *Endpoint {
	s.LastModifiedTime = &v
	return s
}

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

// SetReplicationConfig sets the ReplicationConfig field's value.
func (s *Endpoint) SetReplicationConfig(v *ReplicationConfig) *Endpoint {
	s.ReplicationConfig = v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *Endpoint) SetRoleArn(v string) *Endpoint {
	s.RoleArn = &v
	return s
}

// SetRoutingConfig sets the RoutingConfig field's value.
func (s *Endpoint) SetRoutingConfig(v *RoutingConfig) *Endpoint {
	s.RoutingConfig = v
	return s
}

// SetState sets the State field's value.
func (s *Endpoint) SetState(v string) *Endpoint {
	s.State = &v
	return s
}

// SetStateReason sets the StateReason field's value.
func (s *Endpoint) SetStateReason(v string) *Endpoint {
	s.StateReason = &v
	return s
}

// The event buses the endpoint is associated with.
type EndpointEventBus struct {
	_ struct{} `type:"structure"`

	// The ARN of the event bus the endpoint is associated with.
	//
	// EventBusArn is a required field
	EventBusArn *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 EndpointEventBus) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetEventBusArn sets the EventBusArn field's value.
func (s *EndpointEventBus) SetEventBusArn(v string) *EndpointEventBus {
	s.EventBusArn = &v
	return s
}

// An event bus receives events from a source, uses rules to evaluate them,
// applies any configured input transformation, and routes them to the appropriate
// target(s). Your account's default event bus receives events from Amazon Web
// Services services. A custom event bus can receive events from your custom
// applications and services. A partner event bus receives events from an event
// source created by an SaaS partner. These events come from the partners services
// or applications.
type EventBus struct {
	_ struct{} `type:"structure"`

	// The ARN of the event bus.
	Arn *string `type:"string"`

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

	// The permissions policy of the event bus, describing which other Amazon Web
	// Services accounts can write events to this event bus.
	Policy *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 EventBus) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetPolicy sets the Policy field's value.
func (s *EventBus) SetPolicy(v string) *EventBus {
	s.Policy = &v
	return s
}

// A partner event source is created by an SaaS partner. If a customer creates
// a partner event bus that matches this event source, that Amazon Web Services
// account can receive events from the partner's applications or services.
type EventSource struct {
	_ struct{} `type:"structure"`

	// The ARN of the event source.
	Arn *string `type:"string"`

	// The name of the partner that created the event source.
	CreatedBy *string `type:"string"`

	// The date and time the event source was created.
	CreationTime *time.Time `type:"timestamp"`

	// The date and time that the event source will expire, if the Amazon Web Services
	// account doesn't create a matching event bus for it.
	ExpirationTime *time.Time `type:"timestamp"`

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

	// The state of the event source. If it is ACTIVE, you have already created
	// a matching event bus for this event source, and that event bus is active.
	// If it is PENDING, either you haven't yet created a matching event bus, or
	// that event bus is deactivated. If it is DELETED, you have created a matching
	// event bus, but the event source has since been deleted.
	State *string `type:"string" enum:"EventSourceState"`
}

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

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

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

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

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

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

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

// SetState sets the State field's value.
func (s *EventSource) SetState(v string) *EventSource {
	s.State = &v
	return s
}

// The failover configuration for an endpoint. This includes what triggers failover
// and what happens when it's triggered.
type FailoverConfig struct {
	_ struct{} `type:"structure"`

	// The main Region of the endpoint.
	//
	// Primary is a required field
	Primary *Primary `type:"structure" required:"true"`

	// The Region that events are routed to when failover is triggered or event
	// replication is enabled.
	//
	// Secondary is a required field
	Secondary *Secondary `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 FailoverConfig) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *FailoverConfig) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FailoverConfig"}
	if s.Primary == nil {
		invalidParams.Add(request.NewErrParamRequired("Primary"))
	}
	if s.Secondary == nil {
		invalidParams.Add(request.NewErrParamRequired("Secondary"))
	}
	if s.Primary != nil {
		if err := s.Primary.Validate(); err != nil {
			invalidParams.AddNested("Primary", err.(request.ErrInvalidParams))
		}
	}
	if s.Secondary != nil {
		if err := s.Secondary.Validate(); err != nil {
			invalidParams.AddNested("Secondary", err.(request.ErrInvalidParams))
		}
	}

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

// SetPrimary sets the Primary field's value.
func (s *FailoverConfig) SetPrimary(v *Primary) *FailoverConfig {
	s.Primary = v
	return s
}

// SetSecondary sets the Secondary field's value.
func (s *FailoverConfig) SetSecondary(v *Secondary) *FailoverConfig {
	s.Secondary = v
	return s
}

// These are custom parameter to be used when the target is an API Gateway APIs
// or EventBridge ApiDestinations. In the latter case, these are merged with
// any InvocationParameters specified on the Connection, with any values from
// the Connection taking precedence.
type HttpParameters struct {
	_ struct{} `type:"structure"`

	// The headers that need to be sent as part of request invoking the API Gateway
	// API or EventBridge ApiDestination.
	HeaderParameters map[string]*string `type:"map"`

	// The path parameter values to be used to populate API Gateway API or EventBridge
	// ApiDestination path wildcards ("*").
	PathParameterValues []*string `type:"list"`

	// The query string keys/values that need to be sent as part of request invoking
	// the API Gateway API or EventBridge ApiDestination.
	QueryStringParameters 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 HttpParameters) String() string {
	return awsutil.Prettify(s)
}

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

// SetHeaderParameters sets the HeaderParameters field's value.
func (s *HttpParameters) SetHeaderParameters(v map[string]*string) *HttpParameters {
	s.HeaderParameters = v
	return s
}

// SetPathParameterValues sets the PathParameterValues field's value.
func (s *HttpParameters) SetPathParameterValues(v []*string) *HttpParameters {
	s.PathParameterValues = v
	return s
}

// SetQueryStringParameters sets the QueryStringParameters field's value.
func (s *HttpParameters) SetQueryStringParameters(v map[string]*string) *HttpParameters {
	s.QueryStringParameters = v
	return s
}

// An error occurred because a replay can be canceled only when the state is
// Running or Starting.
type IllegalStatusException 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 IllegalStatusException) String() string {
	return awsutil.Prettify(s)
}

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

func newErrorIllegalStatusException(v protocol.ResponseMetadata) error {
	return &IllegalStatusException{
		RespMetadata: v,
	}
}

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

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

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

func (s *IllegalStatusException) 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 *IllegalStatusException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

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

// Contains the parameters needed for you to provide custom input to a target
// based on one or more pieces of data extracted from the event.
type InputTransformer struct {
	_ struct{} `type:"structure"`

	// Map of JSON paths to be extracted from the event. You can then insert these
	// in the template in InputTemplate to produce the output you want to be sent
	// to the target.
	//
	// InputPathsMap is an array key-value pairs, where each value is a valid JSON
	// path. You can have as many as 100 key-value pairs. You must use JSON dot
	// notation, not bracket notation.
	//
	// The keys cannot start with "Amazon Web Services."
	InputPathsMap map[string]*string `type:"map"`

	// Input template where you specify placeholders that will be filled with the
	// values of the keys from InputPathsMap to customize the data sent to the target.
	// Enclose each InputPathsMaps value in brackets: <value>
	//
	// If InputTemplate is a JSON object (surrounded by curly braces), the following
	// restrictions apply:
	//
	//    * The placeholder cannot be used as an object key.
	//
	// The following example shows the syntax for using InputPathsMap and InputTemplate.
	//
	// "InputTransformer":
	//
	// {
	//
	// "InputPathsMap": {"instance": "$.detail.instance","status": "$.detail.status"},
	//
	// "InputTemplate": "<instance> is in state <status>"
	//
	// }
	//
	// To have the InputTemplate include quote marks within a JSON string, escape
	// each quote marks with a slash, as in the following example:
	//
	// "InputTransformer":
	//
	// {
	//
	// "InputPathsMap": {"instance": "$.detail.instance","status": "$.detail.status"},
	//
	// "InputTemplate": "<instance> is in state \"<status>\""
	//
	// }
	//
	// The InputTemplate can also be valid JSON with varibles in quotes or out,
	// as in the following example:
	//
	// "InputTransformer":
	//
	// {
	//
	// "InputPathsMap": {"instance": "$.detail.instance","status": "$.detail.status"},
	//
	// "InputTemplate": '{"myInstance": <instance>,"myStatus": "<instance> is in
	// state \"<status>\""}'
	//
	// }
	//
	// InputTemplate is a required field
	InputTemplate *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 InputTransformer) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetInputPathsMap sets the InputPathsMap field's value.
func (s *InputTransformer) SetInputPathsMap(v map[string]*string) *InputTransformer {
	s.InputPathsMap = v
	return s
}

// SetInputTemplate sets the InputTemplate field's value.
func (s *InputTransformer) SetInputTemplate(v string) *InputTransformer {
	s.InputTemplate = &v
	return s
}

// This exception occurs due to unexpected causes.
type InternalException 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 InternalException) String() string {
	return awsutil.Prettify(s)
}

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

func newErrorInternalException(v protocol.ResponseMetadata) error {
	return &InternalException{
		RespMetadata: v,
	}
}

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

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

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

func (s *InternalException) 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 *InternalException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

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

// The event pattern is not valid.
type InvalidEventPatternException 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 InvalidEventPatternException) String() string {
	return awsutil.Prettify(s)
}

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

func newErrorInvalidEventPatternException(v protocol.ResponseMetadata) error {
	return &InvalidEventPatternException{
		RespMetadata: v,
	}
}

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

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

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

func (s *InvalidEventPatternException) 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 *InvalidEventPatternException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

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

// The specified state is not a valid state for an event source.
type InvalidStateException 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 InvalidStateException) String() string {
	return awsutil.Prettify(s)
}

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

func newErrorInvalidStateException(v protocol.ResponseMetadata) error {
	return &InvalidStateException{
		RespMetadata: v,
	}
}

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

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

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

func (s *InvalidStateException) 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 *InvalidStateException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

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

// This object enables you to specify a JSON path to extract from the event
// and use as the partition key for the Amazon Kinesis data stream, so that
// you can control the shard to which the event goes. If you do not include
// this parameter, the default is to use the eventId as the partition key.
type KinesisParameters struct {
	_ struct{} `type:"structure"`

	// The JSON path to be extracted from the event and used as the partition key.
	// For more information, see Amazon Kinesis Streams Key Concepts (https://docs.aws.amazon.com/streams/latest/dev/key-concepts.html#partition-key)
	// in the Amazon Kinesis Streams Developer Guide.
	//
	// PartitionKeyPath is a required field
	PartitionKeyPath *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 KinesisParameters) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *KinesisParameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "KinesisParameters"}
	if s.PartitionKeyPath == nil {
		invalidParams.Add(request.NewErrParamRequired("PartitionKeyPath"))
	}

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

// SetPartitionKeyPath sets the PartitionKeyPath field's value.
func (s *KinesisParameters) SetPartitionKeyPath(v string) *KinesisParameters {
	s.PartitionKeyPath = &v
	return s
}

// The request failed because it attempted to create resource beyond the allowed
// service quota.
type LimitExceededException 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 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 ListApiDestinationsInput struct {
	_ struct{} `type:"structure"`

	// The ARN of the connection specified for the API destination.
	ConnectionArn *string `min:"1" type:"string"`

	// The maximum number of API destinations to include in the response.
	Limit *int64 `min:"1" type:"integer"`

	// A name prefix to filter results returned. Only API destinations with a name
	// that starts with the prefix are returned.
	NamePrefix *string `min:"1" type:"string"`

	// The token returned by a previous call 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 ListApiDestinationsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetConnectionArn sets the ConnectionArn field's value.
func (s *ListApiDestinationsInput) SetConnectionArn(v string) *ListApiDestinationsInput {
	s.ConnectionArn = &v
	return s
}

// SetLimit sets the Limit field's value.
func (s *ListApiDestinationsInput) SetLimit(v int64) *ListApiDestinationsInput {
	s.Limit = &v
	return s
}

// SetNamePrefix sets the NamePrefix field's value.
func (s *ListApiDestinationsInput) SetNamePrefix(v string) *ListApiDestinationsInput {
	s.NamePrefix = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListApiDestinationsInput) SetNextToken(v string) *ListApiDestinationsInput {
	s.NextToken = &v
	return s
}

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

	// An array of ApiDestination objects that include information about an API
	// destination.
	ApiDestinations []*ApiDestination `type:"list"`

	// A token you can use in a subsequent 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 ListApiDestinationsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetApiDestinations sets the ApiDestinations field's value.
func (s *ListApiDestinationsOutput) SetApiDestinations(v []*ApiDestination) *ListApiDestinationsOutput {
	s.ApiDestinations = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListApiDestinationsOutput) SetNextToken(v string) *ListApiDestinationsOutput {
	s.NextToken = &v
	return s
}

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

	// The ARN of the event source associated with the archive.
	EventSourceArn *string `min:"1" type:"string"`

	// The maximum number of results to return.
	Limit *int64 `min:"1" type:"integer"`

	// A name prefix to filter the archives returned. Only archives with name that
	// match the prefix are returned.
	NamePrefix *string `min:"1" type:"string"`

	// The token returned by a previous call to retrieve the next set of results.
	NextToken *string `min:"1" type:"string"`

	// The state of the archive.
	State *string `type:"string" enum:"ArchiveState"`
}

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

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

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

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

// SetEventSourceArn sets the EventSourceArn field's value.
func (s *ListArchivesInput) SetEventSourceArn(v string) *ListArchivesInput {
	s.EventSourceArn = &v
	return s
}

// SetLimit sets the Limit field's value.
func (s *ListArchivesInput) SetLimit(v int64) *ListArchivesInput {
	s.Limit = &v
	return s
}

// SetNamePrefix sets the NamePrefix field's value.
func (s *ListArchivesInput) SetNamePrefix(v string) *ListArchivesInput {
	s.NamePrefix = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListArchivesInput) SetNextToken(v string) *ListArchivesInput {
	s.NextToken = &v
	return s
}

// SetState sets the State field's value.
func (s *ListArchivesInput) SetState(v string) *ListArchivesInput {
	s.State = &v
	return s
}

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

	// An array of Archive objects that include details about an archive.
	Archives []*Archive `type:"list"`

	// The token returned by a previous call 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 ListArchivesOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetArchives sets the Archives field's value.
func (s *ListArchivesOutput) SetArchives(v []*Archive) *ListArchivesOutput {
	s.Archives = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListArchivesOutput) SetNextToken(v string) *ListArchivesOutput {
	s.NextToken = &v
	return s
}

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

	// The state of the connection.
	ConnectionState *string `type:"string" enum:"ConnectionState"`

	// The maximum number of connections to return.
	Limit *int64 `min:"1" type:"integer"`

	// A name prefix to filter results returned. Only connections with a name that
	// starts with the prefix are returned.
	NamePrefix *string `min:"1" type:"string"`

	// The token returned by a previous call 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 ListConnectionsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetConnectionState sets the ConnectionState field's value.
func (s *ListConnectionsInput) SetConnectionState(v string) *ListConnectionsInput {
	s.ConnectionState = &v
	return s
}

// SetLimit sets the Limit field's value.
func (s *ListConnectionsInput) SetLimit(v int64) *ListConnectionsInput {
	s.Limit = &v
	return s
}

// SetNamePrefix sets the NamePrefix field's value.
func (s *ListConnectionsInput) SetNamePrefix(v string) *ListConnectionsInput {
	s.NamePrefix = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListConnectionsInput) SetNextToken(v string) *ListConnectionsInput {
	s.NextToken = &v
	return s
}

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

	// An array of connections objects that include details about the connections.
	Connections []*Connection `type:"list"`

	// A token you can use in a subsequent 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 ListConnectionsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetConnections sets the Connections field's value.
func (s *ListConnectionsOutput) SetConnections(v []*Connection) *ListConnectionsOutput {
	s.Connections = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListConnectionsOutput) SetNextToken(v string) *ListConnectionsOutput {
	s.NextToken = &v
	return s
}

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

	// The primary Region of the endpoints associated with this account. For example
	// "HomeRegion": "us-east-1".
	HomeRegion *string `min:"9" type:"string"`

	// The maximum number of results returned by the call.
	MaxResults *int64 `min:"1" type:"integer"`

	// A value that will return a subset of the endpoints associated with this account.
	// For example, "NamePrefix": "ABC" will return all endpoints with "ABC" in
	// the name.
	NamePrefix *string `min:"1" type:"string"`

	// If nextToken is returned, there are more results available. The value of
	// nextToken is a unique pagination token for each page. Make the call again
	// using the returned token to retrieve the next page. Keep all other arguments
	// unchanged. Each pagination token expires after 24 hours. Using an expired
	// pagination token will return an HTTP 400 InvalidToken error.
	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 ListEndpointsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetHomeRegion sets the HomeRegion field's value.
func (s *ListEndpointsInput) SetHomeRegion(v string) *ListEndpointsInput {
	s.HomeRegion = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListEndpointsInput) SetMaxResults(v int64) *ListEndpointsInput {
	s.MaxResults = &v
	return s
}

// SetNamePrefix sets the NamePrefix field's value.
func (s *ListEndpointsInput) SetNamePrefix(v string) *ListEndpointsInput {
	s.NamePrefix = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListEndpointsInput) SetNextToken(v string) *ListEndpointsInput {
	s.NextToken = &v
	return s
}

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

	// The endpoints returned by the call.
	Endpoints []*Endpoint `type:"list"`

	// If nextToken is returned, there are more results available. The value of
	// nextToken is a unique pagination token for each page. Make the call again
	// using the returned token to retrieve the next page. Keep all other arguments
	// unchanged. Each pagination token expires after 24 hours. Using an expired
	// pagination token will return an HTTP 400 InvalidToken error.
	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 ListEndpointsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetEndpoints sets the Endpoints field's value.
func (s *ListEndpointsOutput) SetEndpoints(v []*Endpoint) *ListEndpointsOutput {
	s.Endpoints = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListEndpointsOutput) SetNextToken(v string) *ListEndpointsOutput {
	s.NextToken = &v
	return s
}

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

	// Specifying this limits the number of results returned by this operation.
	// The operation also returns a NextToken which you can use in a subsequent
	// operation to retrieve the next set of results.
	Limit *int64 `min:"1" type:"integer"`

	// Specifying this limits the results to only those event buses with names that
	// start with the specified prefix.
	NamePrefix *string `min:"1" type:"string"`

	// The token returned by a previous call 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 ListEventBusesInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetLimit sets the Limit field's value.
func (s *ListEventBusesInput) SetLimit(v int64) *ListEventBusesInput {
	s.Limit = &v
	return s
}

// SetNamePrefix sets the NamePrefix field's value.
func (s *ListEventBusesInput) SetNamePrefix(v string) *ListEventBusesInput {
	s.NamePrefix = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListEventBusesInput) SetNextToken(v string) *ListEventBusesInput {
	s.NextToken = &v
	return s
}

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

	// This list of event buses.
	EventBuses []*EventBus `type:"list"`

	// A token you can use in a subsequent operation 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 ListEventBusesOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetEventBuses sets the EventBuses field's value.
func (s *ListEventBusesOutput) SetEventBuses(v []*EventBus) *ListEventBusesOutput {
	s.EventBuses = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListEventBusesOutput) SetNextToken(v string) *ListEventBusesOutput {
	s.NextToken = &v
	return s
}

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

	// Specifying this limits the number of results returned by this operation.
	// The operation also returns a NextToken which you can use in a subsequent
	// operation to retrieve the next set of results.
	Limit *int64 `min:"1" type:"integer"`

	// Specifying this limits the results to only those partner event sources with
	// names that start with the specified prefix.
	NamePrefix *string `min:"1" type:"string"`

	// The token returned by a previous call 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 ListEventSourcesInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetLimit sets the Limit field's value.
func (s *ListEventSourcesInput) SetLimit(v int64) *ListEventSourcesInput {
	s.Limit = &v
	return s
}

// SetNamePrefix sets the NamePrefix field's value.
func (s *ListEventSourcesInput) SetNamePrefix(v string) *ListEventSourcesInput {
	s.NamePrefix = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListEventSourcesInput) SetNextToken(v string) *ListEventSourcesInput {
	s.NextToken = &v
	return s
}

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

	// The list of event sources.
	EventSources []*EventSource `type:"list"`

	// A token you can use in a subsequent operation 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 ListEventSourcesOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetEventSources sets the EventSources field's value.
func (s *ListEventSourcesOutput) SetEventSources(v []*EventSource) *ListEventSourcesOutput {
	s.EventSources = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListEventSourcesOutput) SetNextToken(v string) *ListEventSourcesOutput {
	s.NextToken = &v
	return s
}

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

	// The name of the partner event source to display account information about.
	//
	// EventSourceName is a required field
	EventSourceName *string `min:"1" type:"string" required:"true"`

	// Specifying this limits the number of results returned by this operation.
	// The operation also returns a NextToken which you can use in a subsequent
	// operation to retrieve the next set of results.
	Limit *int64 `min:"1" type:"integer"`

	// The token returned by a previous call to this operation. Specifying this
	// retrieves 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 ListPartnerEventSourceAccountsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetEventSourceName sets the EventSourceName field's value.
func (s *ListPartnerEventSourceAccountsInput) SetEventSourceName(v string) *ListPartnerEventSourceAccountsInput {
	s.EventSourceName = &v
	return s
}

// SetLimit sets the Limit field's value.
func (s *ListPartnerEventSourceAccountsInput) SetLimit(v int64) *ListPartnerEventSourceAccountsInput {
	s.Limit = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListPartnerEventSourceAccountsInput) SetNextToken(v string) *ListPartnerEventSourceAccountsInput {
	s.NextToken = &v
	return s
}

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

	// A token you can use in a subsequent operation to retrieve the next set of
	// results.
	NextToken *string `min:"1" type:"string"`

	// The list of partner event sources returned by the operation.
	PartnerEventSourceAccounts []*PartnerEventSourceAccount `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 ListPartnerEventSourceAccountsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetNextToken sets the NextToken field's value.
func (s *ListPartnerEventSourceAccountsOutput) SetNextToken(v string) *ListPartnerEventSourceAccountsOutput {
	s.NextToken = &v
	return s
}

// SetPartnerEventSourceAccounts sets the PartnerEventSourceAccounts field's value.
func (s *ListPartnerEventSourceAccountsOutput) SetPartnerEventSourceAccounts(v []*PartnerEventSourceAccount) *ListPartnerEventSourceAccountsOutput {
	s.PartnerEventSourceAccounts = v
	return s
}

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

	// pecifying this limits the number of results returned by this operation. The
	// operation also returns a NextToken which you can use in a subsequent operation
	// to retrieve the next set of results.
	Limit *int64 `min:"1" type:"integer"`

	// If you specify this, the results are limited to only those partner event
	// sources that start with the string you specify.
	//
	// NamePrefix is a required field
	NamePrefix *string `min:"1" type:"string" required:"true"`

	// The token returned by a previous call to this operation. Specifying this
	// retrieves 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 ListPartnerEventSourcesInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetLimit sets the Limit field's value.
func (s *ListPartnerEventSourcesInput) SetLimit(v int64) *ListPartnerEventSourcesInput {
	s.Limit = &v
	return s
}

// SetNamePrefix sets the NamePrefix field's value.
func (s *ListPartnerEventSourcesInput) SetNamePrefix(v string) *ListPartnerEventSourcesInput {
	s.NamePrefix = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListPartnerEventSourcesInput) SetNextToken(v string) *ListPartnerEventSourcesInput {
	s.NextToken = &v
	return s
}

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

	// A token you can use in a subsequent operation to retrieve the next set of
	// results.
	NextToken *string `min:"1" type:"string"`

	// The list of partner event sources returned by the operation.
	PartnerEventSources []*PartnerEventSource `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 ListPartnerEventSourcesOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetNextToken sets the NextToken field's value.
func (s *ListPartnerEventSourcesOutput) SetNextToken(v string) *ListPartnerEventSourcesOutput {
	s.NextToken = &v
	return s
}

// SetPartnerEventSources sets the PartnerEventSources field's value.
func (s *ListPartnerEventSourcesOutput) SetPartnerEventSources(v []*PartnerEventSource) *ListPartnerEventSourcesOutput {
	s.PartnerEventSources = v
	return s
}

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

	// The ARN of the archive from which the events are replayed.
	EventSourceArn *string `min:"1" type:"string"`

	// The maximum number of replays to retrieve.
	Limit *int64 `min:"1" type:"integer"`

	// A name prefix to filter the replays returned. Only replays with name that
	// match the prefix are returned.
	NamePrefix *string `min:"1" type:"string"`

	// The token returned by a previous call to retrieve the next set of results.
	NextToken *string `min:"1" type:"string"`

	// The state of the replay.
	State *string `type:"string" enum:"ReplayState"`
}

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

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

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

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

// SetEventSourceArn sets the EventSourceArn field's value.
func (s *ListReplaysInput) SetEventSourceArn(v string) *ListReplaysInput {
	s.EventSourceArn = &v
	return s
}

// SetLimit sets the Limit field's value.
func (s *ListReplaysInput) SetLimit(v int64) *ListReplaysInput {
	s.Limit = &v
	return s
}

// SetNamePrefix sets the NamePrefix field's value.
func (s *ListReplaysInput) SetNamePrefix(v string) *ListReplaysInput {
	s.NamePrefix = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListReplaysInput) SetNextToken(v string) *ListReplaysInput {
	s.NextToken = &v
	return s
}

// SetState sets the State field's value.
func (s *ListReplaysInput) SetState(v string) *ListReplaysInput {
	s.State = &v
	return s
}

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

	// The token returned by a previous call to retrieve the next set of results.
	NextToken *string `min:"1" type:"string"`

	// An array of Replay objects that contain information about the replay.
	Replays []*Replay `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 ListReplaysOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetNextToken sets the NextToken field's value.
func (s *ListReplaysOutput) SetNextToken(v string) *ListReplaysOutput {
	s.NextToken = &v
	return s
}

// SetReplays sets the Replays field's value.
func (s *ListReplaysOutput) SetReplays(v []*Replay) *ListReplaysOutput {
	s.Replays = v
	return s
}

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

	// The name or ARN of the event bus to list rules for. If you omit this, the
	// default event bus is used.
	EventBusName *string `min:"1" type:"string"`

	// The maximum number of results to return.
	Limit *int64 `min:"1" type:"integer"`

	// The token returned by a previous call to retrieve the next set of results.
	NextToken *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the target resource.
	//
	// TargetArn is a required field
	TargetArn *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 ListRuleNamesByTargetInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetEventBusName sets the EventBusName field's value.
func (s *ListRuleNamesByTargetInput) SetEventBusName(v string) *ListRuleNamesByTargetInput {
	s.EventBusName = &v
	return s
}

// SetLimit sets the Limit field's value.
func (s *ListRuleNamesByTargetInput) SetLimit(v int64) *ListRuleNamesByTargetInput {
	s.Limit = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListRuleNamesByTargetInput) SetNextToken(v string) *ListRuleNamesByTargetInput {
	s.NextToken = &v
	return s
}

// SetTargetArn sets the TargetArn field's value.
func (s *ListRuleNamesByTargetInput) SetTargetArn(v string) *ListRuleNamesByTargetInput {
	s.TargetArn = &v
	return s
}

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

	// Indicates whether there are additional results to retrieve. If there are
	// no more results, the value is null.
	NextToken *string `min:"1" type:"string"`

	// The names of the rules that can invoke the given target.
	RuleNames []*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 ListRuleNamesByTargetOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetNextToken sets the NextToken field's value.
func (s *ListRuleNamesByTargetOutput) SetNextToken(v string) *ListRuleNamesByTargetOutput {
	s.NextToken = &v
	return s
}

// SetRuleNames sets the RuleNames field's value.
func (s *ListRuleNamesByTargetOutput) SetRuleNames(v []*string) *ListRuleNamesByTargetOutput {
	s.RuleNames = v
	return s
}

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

	// The name or ARN of the event bus to list the rules for. If you omit this,
	// the default event bus is used.
	EventBusName *string `min:"1" type:"string"`

	// The maximum number of results to return.
	Limit *int64 `min:"1" type:"integer"`

	// The prefix matching the rule name.
	NamePrefix *string `min:"1" type:"string"`

	// The token returned by a previous call 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 ListRulesInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetEventBusName sets the EventBusName field's value.
func (s *ListRulesInput) SetEventBusName(v string) *ListRulesInput {
	s.EventBusName = &v
	return s
}

// SetLimit sets the Limit field's value.
func (s *ListRulesInput) SetLimit(v int64) *ListRulesInput {
	s.Limit = &v
	return s
}

// SetNamePrefix sets the NamePrefix field's value.
func (s *ListRulesInput) SetNamePrefix(v string) *ListRulesInput {
	s.NamePrefix = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListRulesInput) SetNextToken(v string) *ListRulesInput {
	s.NextToken = &v
	return s
}

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

	// Indicates whether there are additional results to retrieve. If there are
	// no more results, the value is null.
	NextToken *string `min:"1" type:"string"`

	// The rules that match the specified criteria.
	Rules []*Rule `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 ListRulesOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetNextToken sets the NextToken field's value.
func (s *ListRulesOutput) SetNextToken(v string) *ListRulesOutput {
	s.NextToken = &v
	return s
}

// SetRules sets the Rules field's value.
func (s *ListRulesOutput) SetRules(v []*Rule) *ListRulesOutput {
	s.Rules = v
	return s
}

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

	// The ARN of the EventBridge resource for which you want to view tags.
	//
	// ResourceARN is a required field
	ResourceARN *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 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"`

	// The list of tag keys and values associated with the resource you specified
	Tags []*Tag `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 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 []*Tag) *ListTagsForResourceOutput {
	s.Tags = v
	return s
}

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

	// The name or ARN of the event bus associated with the rule. If you omit this,
	// the default event bus is used.
	EventBusName *string `min:"1" type:"string"`

	// The maximum number of results to return.
	Limit *int64 `min:"1" type:"integer"`

	// The token returned by a previous call to retrieve the next set of results.
	NextToken *string `min:"1" type:"string"`

	// The name of the rule.
	//
	// Rule is a required field
	Rule *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 ListTargetsByRuleInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetEventBusName sets the EventBusName field's value.
func (s *ListTargetsByRuleInput) SetEventBusName(v string) *ListTargetsByRuleInput {
	s.EventBusName = &v
	return s
}

// SetLimit sets the Limit field's value.
func (s *ListTargetsByRuleInput) SetLimit(v int64) *ListTargetsByRuleInput {
	s.Limit = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListTargetsByRuleInput) SetNextToken(v string) *ListTargetsByRuleInput {
	s.NextToken = &v
	return s
}

// SetRule sets the Rule field's value.
func (s *ListTargetsByRuleInput) SetRule(v string) *ListTargetsByRuleInput {
	s.Rule = &v
	return s
}

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

	// Indicates whether there are additional results to retrieve. If there are
	// no more results, the value is null.
	NextToken *string `min:"1" type:"string"`

	// The targets assigned to the rule.
	Targets []*Target `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 ListTargetsByRuleOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetNextToken sets the NextToken field's value.
func (s *ListTargetsByRuleOutput) SetNextToken(v string) *ListTargetsByRuleOutput {
	s.NextToken = &v
	return s
}

// SetTargets sets the Targets field's value.
func (s *ListTargetsByRuleOutput) SetTargets(v []*Target) *ListTargetsByRuleOutput {
	s.Targets = v
	return s
}

// This rule was created by an Amazon Web Services service on behalf of your
// account. It is managed by that service. If you see this error in response
// to DeleteRule or RemoveTargets, you can use the Force parameter in those
// calls to delete the rule or remove targets from the rule. You cannot modify
// these managed rules by using DisableRule, EnableRule, PutTargets, PutRule,
// TagResource, or UntagResource.
type ManagedRuleException 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 ManagedRuleException) String() string {
	return awsutil.Prettify(s)
}

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

func newErrorManagedRuleException(v protocol.ResponseMetadata) error {
	return &ManagedRuleException{
		RespMetadata: v,
	}
}

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

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

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

func (s *ManagedRuleException) 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 *ManagedRuleException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

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

// This structure specifies the network configuration for an ECS task.
type NetworkConfiguration struct {
	_ struct{} `type:"structure"`

	// Use this structure to specify the VPC subnets and security groups for the
	// task, and whether a public IP address is to be used. This structure is relevant
	// only for ECS tasks that use the awsvpc network mode.
	AwsvpcConfiguration *AwsVpcConfiguration `locationName:"awsvpcConfiguration" type:"structure"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *NetworkConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "NetworkConfiguration"}
	if s.AwsvpcConfiguration != nil {
		if err := s.AwsvpcConfiguration.Validate(); err != nil {
			invalidParams.AddNested("AwsvpcConfiguration", err.(request.ErrInvalidParams))
		}
	}

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

// SetAwsvpcConfiguration sets the AwsvpcConfiguration field's value.
func (s *NetworkConfiguration) SetAwsvpcConfiguration(v *AwsVpcConfiguration) *NetworkConfiguration {
	s.AwsvpcConfiguration = v
	return s
}

// The operation you are attempting is not available in this region.
type OperationDisabledException 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 OperationDisabledException) String() string {
	return awsutil.Prettify(s)
}

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

func newErrorOperationDisabledException(v protocol.ResponseMetadata) error {
	return &OperationDisabledException{
		RespMetadata: v,
	}
}

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

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

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

func (s *OperationDisabledException) 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 *OperationDisabledException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

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

// A partner event source is created by an SaaS partner. If a customer creates
// a partner event bus that matches this event source, that Amazon Web Services
// account can receive events from the partner's applications or services.
type PartnerEventSource struct {
	_ struct{} `type:"structure"`

	// The ARN of the partner event source.
	Arn *string `type:"string"`

	// The name of the partner event source.
	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 PartnerEventSource) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// The Amazon Web Services account that a partner event source has been offered
// to.
type PartnerEventSourceAccount struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID that the partner event source was offered
	// to.
	Account *string `min:"12" type:"string"`

	// The date and time the event source was created.
	CreationTime *time.Time `type:"timestamp"`

	// The date and time that the event source will expire, if the Amazon Web Services
	// account doesn't create a matching event bus for it.
	ExpirationTime *time.Time `type:"timestamp"`

	// The state of the event source. If it is ACTIVE, you have already created
	// a matching event bus for this event source, and that event bus is active.
	// If it is PENDING, either you haven't yet created a matching event bus, or
	// that event bus is deactivated. If it is DELETED, you have created a matching
	// event bus, but the event source has since been deleted.
	State *string `type:"string" enum:"EventSourceState"`
}

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

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

// SetAccount sets the Account field's value.
func (s *PartnerEventSourceAccount) SetAccount(v string) *PartnerEventSourceAccount {
	s.Account = &v
	return s
}

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

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

// SetState sets the State field's value.
func (s *PartnerEventSourceAccount) SetState(v string) *PartnerEventSourceAccount {
	s.State = &v
	return s
}

// An object representing a constraint on task placement. To learn more, see
// Task Placement Constraints (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html)
// in the Amazon Elastic Container Service Developer Guide.
type PlacementConstraint struct {
	_ struct{} `type:"structure"`

	// A cluster query language expression to apply to the constraint. You cannot
	// specify an expression if the constraint type is distinctInstance. To learn
	// more, see Cluster Query Language (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html)
	// in the Amazon Elastic Container Service Developer Guide.
	Expression *string `locationName:"expression" type:"string"`

	// The type of constraint. Use distinctInstance to ensure that each task in
	// a particular group is running on a different container instance. Use memberOf
	// to restrict the selection to a group of valid candidates.
	Type *string `locationName:"type" type:"string" enum:"PlacementConstraintType"`
}

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

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

// SetExpression sets the Expression field's value.
func (s *PlacementConstraint) SetExpression(v string) *PlacementConstraint {
	s.Expression = &v
	return s
}

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

// The task placement strategy for a task or service. To learn more, see Task
// Placement Strategies (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-strategies.html)
// in the Amazon Elastic Container Service Service Developer Guide.
type PlacementStrategy struct {
	_ struct{} `type:"structure"`

	// The field to apply the placement strategy against. For the spread placement
	// strategy, valid values are instanceId (or host, which has the same effect),
	// or any platform or custom attribute that is applied to a container instance,
	// such as attribute:ecs.availability-zone. For the binpack placement strategy,
	// valid values are cpu and memory. For the random placement strategy, this
	// field is not used.
	Field *string `locationName:"field" type:"string"`

	// The type of placement strategy. The random placement strategy randomly places
	// tasks on available candidates. The spread placement strategy spreads placement
	// across available candidates evenly based on the field parameter. The binpack
	// strategy places tasks on available candidates that have the least available
	// amount of the resource that is specified with the field parameter. For example,
	// if you binpack on memory, a task is placed on the instance with the least
	// amount of remaining memory (but still enough to run the task).
	Type *string `locationName:"type" type:"string" enum:"PlacementStrategyType"`
}

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

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

// SetField sets the Field field's value.
func (s *PlacementStrategy) SetField(v string) *PlacementStrategy {
	s.Field = &v
	return s
}

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

// The event bus policy is too long. For more information, see the limits.
type PolicyLengthExceededException 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 PolicyLengthExceededException) String() string {
	return awsutil.Prettify(s)
}

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

func newErrorPolicyLengthExceededException(v protocol.ResponseMetadata) error {
	return &PolicyLengthExceededException{
		RespMetadata: v,
	}
}

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

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

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

func (s *PolicyLengthExceededException) 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 *PolicyLengthExceededException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

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

// The primary Region of the endpoint.
type Primary struct {
	_ struct{} `type:"structure"`

	// The ARN of the health check used by the endpoint to determine whether failover
	// is triggered.
	//
	// HealthCheck is a required field
	HealthCheck *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 Primary) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetHealthCheck sets the HealthCheck field's value.
func (s *Primary) SetHealthCheck(v string) *Primary {
	s.HealthCheck = &v
	return s
}

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

	// The URL subdomain of the endpoint. For example, if the URL for Endpoint is
	// https://abcde.veo.endpoints.event.amazonaws.com, then the EndpointId is abcde.veo.
	//
	// When using Java, you must include auth-crt on the class path.
	//
	// This AWS SDK does not support calling multi-region endpoints with SigV4a authentication.
	EndpointId *string `min:"1" type:"string"`

	// The entry that defines an event in your system. You can specify several parameters
	// for the entry such as the source and type of the event, resources associated
	// with the event, and so on.
	//
	// Entries is a required field
	Entries []*PutEventsRequestEntry `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 PutEventsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetEndpointId sets the EndpointId field's value.
func (s *PutEventsInput) SetEndpointId(v string) *PutEventsInput {
	s.EndpointId = &v
	return s
}

// SetEntries sets the Entries field's value.
func (s *PutEventsInput) SetEntries(v []*PutEventsRequestEntry) *PutEventsInput {
	s.Entries = v
	return s
}

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

	// The successfully and unsuccessfully ingested events results. If the ingestion
	// was successful, the entry has the event ID in it. Otherwise, you can use
	// the error code and error message to identify the problem with the entry.
	//
	// For each record, the index of the response element is the same as the index
	// in the request array.
	Entries []*PutEventsResultEntry `type:"list"`

	// The number of failed entries.
	FailedEntryCount *int64 `type:"integer"`
}

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

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

// SetEntries sets the Entries field's value.
func (s *PutEventsOutput) SetEntries(v []*PutEventsResultEntry) *PutEventsOutput {
	s.Entries = v
	return s
}

// SetFailedEntryCount sets the FailedEntryCount field's value.
func (s *PutEventsOutput) SetFailedEntryCount(v int64) *PutEventsOutput {
	s.FailedEntryCount = &v
	return s
}

// Represents an event to be submitted.
type PutEventsRequestEntry struct {
	_ struct{} `type:"structure"`

	// A valid JSON object. There is no other schema imposed. The JSON object may
	// contain fields and nested subobjects.
	Detail *string `type:"string"`

	// Free-form string, with a maximum of 128 characters, used to decide what fields
	// to expect in the event detail.
	DetailType *string `type:"string"`

	// The name or ARN of the event bus to receive the event. Only the rules that
	// are associated with this event bus are used to match the event. If you omit
	// this, the default event bus is used.
	//
	// If you're using a global endpoint with a custom bus, you must enter the name,
	// not the ARN, of the event bus in either the primary or secondary Region here
	// and the corresponding event bus in the other Region will be determined based
	// on the endpoint referenced by the EndpointId.
	EventBusName *string `min:"1" type:"string"`

	// Amazon Web Services resources, identified by Amazon Resource Name (ARN),
	// which the event primarily concerns. Any number, including zero, may be present.
	Resources []*string `type:"list"`

	// The source of the event.
	Source *string `type:"string"`

	// The time stamp of the event, per RFC3339 (https://www.rfc-editor.org/rfc/rfc3339.txt).
	// If no time stamp is provided, the time stamp of the PutEvents (https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEvents.html)
	// call is used.
	Time *time.Time `type:"timestamp"`

	// An X-Ray trace header, which is an http header (X-Amzn-Trace-Id) that contains
	// the trace-id associated with the event.
	//
	// To learn more about X-Ray trace headers, see Tracing header (https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-tracingheader)
	// in the X-Ray Developer Guide.
	TraceHeader *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 PutEventsRequestEntry) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDetail sets the Detail field's value.
func (s *PutEventsRequestEntry) SetDetail(v string) *PutEventsRequestEntry {
	s.Detail = &v
	return s
}

// SetDetailType sets the DetailType field's value.
func (s *PutEventsRequestEntry) SetDetailType(v string) *PutEventsRequestEntry {
	s.DetailType = &v
	return s
}

// SetEventBusName sets the EventBusName field's value.
func (s *PutEventsRequestEntry) SetEventBusName(v string) *PutEventsRequestEntry {
	s.EventBusName = &v
	return s
}

// SetResources sets the Resources field's value.
func (s *PutEventsRequestEntry) SetResources(v []*string) *PutEventsRequestEntry {
	s.Resources = v
	return s
}

// SetSource sets the Source field's value.
func (s *PutEventsRequestEntry) SetSource(v string) *PutEventsRequestEntry {
	s.Source = &v
	return s
}

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

// SetTraceHeader sets the TraceHeader field's value.
func (s *PutEventsRequestEntry) SetTraceHeader(v string) *PutEventsRequestEntry {
	s.TraceHeader = &v
	return s
}

// Represents an event that failed to be submitted. For information about the
// errors that are common to all actions, see Common Errors (https://docs.aws.amazon.com/eventbridge/latest/APIReference/CommonErrors.html).
type PutEventsResultEntry struct {
	_ struct{} `type:"structure"`

	// The error code that indicates why the event submission failed.
	ErrorCode *string `type:"string"`

	// The error message that explains why the event submission failed.
	ErrorMessage *string `type:"string"`

	// The ID of the event.
	EventId *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 PutEventsResultEntry) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetEventId sets the EventId field's value.
func (s *PutEventsResultEntry) SetEventId(v string) *PutEventsResultEntry {
	s.EventId = &v
	return s
}

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

	// The list of events to write to the event bus.
	//
	// Entries is a required field
	Entries []*PutPartnerEventsRequestEntry `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 PutPartnerEventsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetEntries sets the Entries field's value.
func (s *PutPartnerEventsInput) SetEntries(v []*PutPartnerEventsRequestEntry) *PutPartnerEventsInput {
	s.Entries = v
	return s
}

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

	// The list of events from this operation that were successfully written to
	// the partner event bus.
	Entries []*PutPartnerEventsResultEntry `type:"list"`

	// The number of events from this operation that could not be written to the
	// partner event bus.
	FailedEntryCount *int64 `type:"integer"`
}

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

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

// SetEntries sets the Entries field's value.
func (s *PutPartnerEventsOutput) SetEntries(v []*PutPartnerEventsResultEntry) *PutPartnerEventsOutput {
	s.Entries = v
	return s
}

// SetFailedEntryCount sets the FailedEntryCount field's value.
func (s *PutPartnerEventsOutput) SetFailedEntryCount(v int64) *PutPartnerEventsOutput {
	s.FailedEntryCount = &v
	return s
}

// The details about an event generated by an SaaS partner.
type PutPartnerEventsRequestEntry struct {
	_ struct{} `type:"structure"`

	// A valid JSON string. There is no other schema imposed. The JSON string may
	// contain fields and nested subobjects.
	Detail *string `type:"string"`

	// A free-form string, with a maximum of 128 characters, used to decide what
	// fields to expect in the event detail.
	DetailType *string `type:"string"`

	// Amazon Web Services resources, identified by Amazon Resource Name (ARN),
	// which the event primarily concerns. Any number, including zero, may be present.
	Resources []*string `type:"list"`

	// The event source that is generating the entry.
	Source *string `min:"1" type:"string"`

	// The date and time of the event.
	Time *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 PutPartnerEventsRequestEntry) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDetail sets the Detail field's value.
func (s *PutPartnerEventsRequestEntry) SetDetail(v string) *PutPartnerEventsRequestEntry {
	s.Detail = &v
	return s
}

// SetDetailType sets the DetailType field's value.
func (s *PutPartnerEventsRequestEntry) SetDetailType(v string) *PutPartnerEventsRequestEntry {
	s.DetailType = &v
	return s
}

// SetResources sets the Resources field's value.
func (s *PutPartnerEventsRequestEntry) SetResources(v []*string) *PutPartnerEventsRequestEntry {
	s.Resources = v
	return s
}

// SetSource sets the Source field's value.
func (s *PutPartnerEventsRequestEntry) SetSource(v string) *PutPartnerEventsRequestEntry {
	s.Source = &v
	return s
}

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

// Represents an event that a partner tried to generate, but failed.
type PutPartnerEventsResultEntry struct {
	_ struct{} `type:"structure"`

	// The error code that indicates why the event submission failed.
	ErrorCode *string `type:"string"`

	// The error message that explains why the event submission failed.
	ErrorMessage *string `type:"string"`

	// The ID of the event.
	EventId *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 PutPartnerEventsResultEntry) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetEventId sets the EventId field's value.
func (s *PutPartnerEventsResultEntry) SetEventId(v string) *PutPartnerEventsResultEntry {
	s.EventId = &v
	return s
}

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

	// The action that you are enabling the other account to perform.
	Action *string `min:"1" type:"string"`

	// This parameter enables you to limit the permission to accounts that fulfill
	// a certain condition, such as being a member of a certain Amazon Web Services
	// organization. For more information about Amazon Web Services Organizations,
	// see What Is Amazon Web Services Organizations (https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)
	// in the Amazon Web Services Organizations User Guide.
	//
	// If you specify Condition with an Amazon Web Services organization ID, and
	// specify "*" as the value for Principal, you grant permission to all the accounts
	// in the named organization.
	//
	// The Condition is a JSON string which must contain Type, Key, and Value fields.
	Condition *Condition `type:"structure"`

	// The name of the event bus associated with the rule. If you omit this, the
	// default event bus is used.
	EventBusName *string `min:"1" type:"string"`

	// A JSON string that describes the permission policy statement. You can include
	// a Policy parameter in the request instead of using the StatementId, Action,
	// Principal, or Condition parameters.
	Policy *string `type:"string"`

	// The 12-digit Amazon Web Services account ID that you are permitting to put
	// events to your default event bus. Specify "*" to permit any account to put
	// events to your default event bus.
	//
	// If you specify "*" without specifying Condition, avoid creating rules that
	// may match undesirable events. To create more secure rules, make sure that
	// the event pattern for each rule contains an account field with a specific
	// account ID from which to receive events. Rules with an account field do not
	// match any events sent from other accounts.
	Principal *string `min:"1" type:"string"`

	// An identifier string for the external account that you are granting permissions
	// to. If you later want to revoke the permission for this external account,
	// specify this StatementId when you run RemovePermission (https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_RemovePermission.html).
	//
	// Each StatementId must be unique.
	StatementId *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 PutPermissionInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *PutPermissionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PutPermissionInput"}
	if s.Action != nil && len(*s.Action) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Action", 1))
	}
	if s.EventBusName != nil && len(*s.EventBusName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EventBusName", 1))
	}
	if s.Principal != nil && len(*s.Principal) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Principal", 1))
	}
	if s.StatementId != nil && len(*s.StatementId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("StatementId", 1))
	}
	if s.Condition != nil {
		if err := s.Condition.Validate(); err != nil {
			invalidParams.AddNested("Condition", err.(request.ErrInvalidParams))
		}
	}

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

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

// SetCondition sets the Condition field's value.
func (s *PutPermissionInput) SetCondition(v *Condition) *PutPermissionInput {
	s.Condition = v
	return s
}

// SetEventBusName sets the EventBusName field's value.
func (s *PutPermissionInput) SetEventBusName(v string) *PutPermissionInput {
	s.EventBusName = &v
	return s
}

// SetPolicy sets the Policy field's value.
func (s *PutPermissionInput) SetPolicy(v string) *PutPermissionInput {
	s.Policy = &v
	return s
}

// SetPrincipal sets the Principal field's value.
func (s *PutPermissionInput) SetPrincipal(v string) *PutPermissionInput {
	s.Principal = &v
	return s
}

// SetStatementId sets the StatementId field's value.
func (s *PutPermissionInput) SetStatementId(v string) *PutPermissionInput {
	s.StatementId = &v
	return s
}

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

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

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

	// A description of the rule.
	Description *string `type:"string"`

	// The name or ARN of the event bus to associate with this rule. If you omit
	// this, the default event bus is used.
	EventBusName *string `min:"1" type:"string"`

	// The event pattern. For more information, see Amazon EventBridge event patterns
	// (https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html)
	// in the Amazon EventBridge User Guide.
	EventPattern *string `type:"string"`

	// The name of the rule that you are creating or updating.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of the IAM role associated with the rule.
	//
	// If you're setting an event bus in another account as the target and that
	// account granted permission to your account through an organization instead
	// of directly by the account ID, you must specify a RoleArn with proper permissions
	// in the Target structure, instead of here in this parameter.
	RoleArn *string `min:"1" type:"string"`

	// The scheduling expression. For example, "cron(0 20 * * ? *)" or "rate(5 minutes)".
	ScheduleExpression *string `type:"string"`

	// Indicates whether the rule is enabled or disabled.
	State *string `type:"string" enum:"RuleState"`

	// The list of key-value pairs to associate with the rule.
	Tags []*Tag `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 PutRuleInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *PutRuleInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PutRuleInput"}
	if s.EventBusName != nil && len(*s.EventBusName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EventBusName", 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.RoleArn != nil && len(*s.RoleArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RoleArn", 1))
	}
	if s.Tags != nil {
		for i, v := range s.Tags {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

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

// SetEventBusName sets the EventBusName field's value.
func (s *PutRuleInput) SetEventBusName(v string) *PutRuleInput {
	s.EventBusName = &v
	return s
}

// SetEventPattern sets the EventPattern field's value.
func (s *PutRuleInput) SetEventPattern(v string) *PutRuleInput {
	s.EventPattern = &v
	return s
}

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

// SetRoleArn sets the RoleArn field's value.
func (s *PutRuleInput) SetRoleArn(v string) *PutRuleInput {
	s.RoleArn = &v
	return s
}

// SetScheduleExpression sets the ScheduleExpression field's value.
func (s *PutRuleInput) SetScheduleExpression(v string) *PutRuleInput {
	s.ScheduleExpression = &v
	return s
}

// SetState sets the State field's value.
func (s *PutRuleInput) SetState(v string) *PutRuleInput {
	s.State = &v
	return s
}

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

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

	// The Amazon Resource Name (ARN) of the rule.
	RuleArn *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 PutRuleOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetRuleArn sets the RuleArn field's value.
func (s *PutRuleOutput) SetRuleArn(v string) *PutRuleOutput {
	s.RuleArn = &v
	return s
}

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

	// The name or ARN of the event bus associated with the rule. If you omit this,
	// the default event bus is used.
	EventBusName *string `min:"1" type:"string"`

	// The name of the rule.
	//
	// Rule is a required field
	Rule *string `min:"1" type:"string" required:"true"`

	// The targets to update or add to the rule.
	//
	// Targets is a required field
	Targets []*Target `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 PutTargetsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetEventBusName sets the EventBusName field's value.
func (s *PutTargetsInput) SetEventBusName(v string) *PutTargetsInput {
	s.EventBusName = &v
	return s
}

// SetRule sets the Rule field's value.
func (s *PutTargetsInput) SetRule(v string) *PutTargetsInput {
	s.Rule = &v
	return s
}

// SetTargets sets the Targets field's value.
func (s *PutTargetsInput) SetTargets(v []*Target) *PutTargetsInput {
	s.Targets = v
	return s
}

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

	// The failed target entries.
	FailedEntries []*PutTargetsResultEntry `type:"list"`

	// The number of failed entries.
	FailedEntryCount *int64 `type:"integer"`
}

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

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

// SetFailedEntries sets the FailedEntries field's value.
func (s *PutTargetsOutput) SetFailedEntries(v []*PutTargetsResultEntry) *PutTargetsOutput {
	s.FailedEntries = v
	return s
}

// SetFailedEntryCount sets the FailedEntryCount field's value.
func (s *PutTargetsOutput) SetFailedEntryCount(v int64) *PutTargetsOutput {
	s.FailedEntryCount = &v
	return s
}

// Represents a target that failed to be added to a rule.
type PutTargetsResultEntry struct {
	_ struct{} `type:"structure"`

	// The error code that indicates why the target addition failed. If the value
	// is ConcurrentModificationException, too many requests were made at the same
	// time.
	ErrorCode *string `type:"string"`

	// The error message that explains why the target addition failed.
	ErrorMessage *string `type:"string"`

	// The ID of the target.
	TargetId *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 PutTargetsResultEntry) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetTargetId sets the TargetId field's value.
func (s *PutTargetsResultEntry) SetTargetId(v string) *PutTargetsResultEntry {
	s.TargetId = &v
	return s
}

// These are custom parameters to be used when the target is a Amazon Redshift
// cluster or Redshift Serverless workgroup to invoke the Amazon Redshift Data
// API ExecuteStatement based on EventBridge events.
type RedshiftDataParameters struct {
	_ struct{} `type:"structure"`

	// The name of the database. Required when authenticating using temporary credentials.
	//
	// Database is a required field
	Database *string `min:"1" type:"string" required:"true"`

	// The database user name. Required when authenticating using temporary credentials.
	//
	// Do not provide this parameter when connecting to a Redshift Serverless workgroup.
	DbUser *string `min:"1" type:"string"`

	// The name or ARN of the secret that enables access to the database. Required
	// when authenticating using Amazon Web Services Secrets Manager.
	SecretManagerArn *string `min:"1" type:"string"`

	// The SQL statement text to run.
	//
	// Sql is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by RedshiftDataParameters's
	// String and GoString methods.
	Sql *string `min:"1" type:"string" sensitive:"true"`

	// A list of SQLs.
	//
	// Sqls is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by RedshiftDataParameters's
	// String and GoString methods.
	Sqls []*string `type:"list" sensitive:"true"`

	// The name of the SQL statement. You can name the SQL statement when you create
	// it to identify the query.
	StatementName *string `min:"1" type:"string"`

	// Indicates whether to send an event back to EventBridge after the SQL statement
	// runs.
	WithEvent *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 RedshiftDataParameters) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDatabase sets the Database field's value.
func (s *RedshiftDataParameters) SetDatabase(v string) *RedshiftDataParameters {
	s.Database = &v
	return s
}

// SetDbUser sets the DbUser field's value.
func (s *RedshiftDataParameters) SetDbUser(v string) *RedshiftDataParameters {
	s.DbUser = &v
	return s
}

// SetSecretManagerArn sets the SecretManagerArn field's value.
func (s *RedshiftDataParameters) SetSecretManagerArn(v string) *RedshiftDataParameters {
	s.SecretManagerArn = &v
	return s
}

// SetSql sets the Sql field's value.
func (s *RedshiftDataParameters) SetSql(v string) *RedshiftDataParameters {
	s.Sql = &v
	return s
}

// SetSqls sets the Sqls field's value.
func (s *RedshiftDataParameters) SetSqls(v []*string) *RedshiftDataParameters {
	s.Sqls = v
	return s
}

// SetStatementName sets the StatementName field's value.
func (s *RedshiftDataParameters) SetStatementName(v string) *RedshiftDataParameters {
	s.StatementName = &v
	return s
}

// SetWithEvent sets the WithEvent field's value.
func (s *RedshiftDataParameters) SetWithEvent(v bool) *RedshiftDataParameters {
	s.WithEvent = &v
	return s
}

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

	// The name of the event bus to revoke permissions for. If you omit this, the
	// default event bus is used.
	EventBusName *string `min:"1" type:"string"`

	// Specifies whether to remove all permissions.
	RemoveAllPermissions *bool `type:"boolean"`

	// The statement ID corresponding to the account that is no longer allowed to
	// put events to the default event bus.
	StatementId *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 RemovePermissionInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetEventBusName sets the EventBusName field's value.
func (s *RemovePermissionInput) SetEventBusName(v string) *RemovePermissionInput {
	s.EventBusName = &v
	return s
}

// SetRemoveAllPermissions sets the RemoveAllPermissions field's value.
func (s *RemovePermissionInput) SetRemoveAllPermissions(v bool) *RemovePermissionInput {
	s.RemoveAllPermissions = &v
	return s
}

// SetStatementId sets the StatementId field's value.
func (s *RemovePermissionInput) SetStatementId(v string) *RemovePermissionInput {
	s.StatementId = &v
	return s
}

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

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

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

	// The name or ARN of the event bus associated with the rule. If you omit this,
	// the default event bus is used.
	EventBusName *string `min:"1" type:"string"`

	// If this is a managed rule, created by an Amazon Web Services service on your
	// behalf, you must specify Force as True to remove targets. This parameter
	// is ignored for rules that are not managed rules. You can check whether a
	// rule is a managed rule by using DescribeRule or ListRules and checking the
	// ManagedBy field of the response.
	Force *bool `type:"boolean"`

	// The IDs of the targets to remove from the rule.
	//
	// Ids is a required field
	Ids []*string `min:"1" type:"list" required:"true"`

	// The name of the rule.
	//
	// Rule is a required field
	Rule *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 RemoveTargetsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetEventBusName sets the EventBusName field's value.
func (s *RemoveTargetsInput) SetEventBusName(v string) *RemoveTargetsInput {
	s.EventBusName = &v
	return s
}

// SetForce sets the Force field's value.
func (s *RemoveTargetsInput) SetForce(v bool) *RemoveTargetsInput {
	s.Force = &v
	return s
}

// SetIds sets the Ids field's value.
func (s *RemoveTargetsInput) SetIds(v []*string) *RemoveTargetsInput {
	s.Ids = v
	return s
}

// SetRule sets the Rule field's value.
func (s *RemoveTargetsInput) SetRule(v string) *RemoveTargetsInput {
	s.Rule = &v
	return s
}

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

	// The failed target entries.
	FailedEntries []*RemoveTargetsResultEntry `type:"list"`

	// The number of failed entries.
	FailedEntryCount *int64 `type:"integer"`
}

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

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

// SetFailedEntries sets the FailedEntries field's value.
func (s *RemoveTargetsOutput) SetFailedEntries(v []*RemoveTargetsResultEntry) *RemoveTargetsOutput {
	s.FailedEntries = v
	return s
}

// SetFailedEntryCount sets the FailedEntryCount field's value.
func (s *RemoveTargetsOutput) SetFailedEntryCount(v int64) *RemoveTargetsOutput {
	s.FailedEntryCount = &v
	return s
}

// Represents a target that failed to be removed from a rule.
type RemoveTargetsResultEntry struct {
	_ struct{} `type:"structure"`

	// The error code that indicates why the target removal failed. If the value
	// is ConcurrentModificationException, too many requests were made at the same
	// time.
	ErrorCode *string `type:"string"`

	// The error message that explains why the target removal failed.
	ErrorMessage *string `type:"string"`

	// The ID of the target.
	TargetId *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 RemoveTargetsResultEntry) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetTargetId sets the TargetId field's value.
func (s *RemoveTargetsResultEntry) SetTargetId(v string) *RemoveTargetsResultEntry {
	s.TargetId = &v
	return s
}

// A Replay object that contains details about a replay.
type Replay struct {
	_ struct{} `type:"structure"`

	// A time stamp for the time to start replaying events. Any event with a creation
	// time prior to the EventEndTime specified is replayed.
	EventEndTime *time.Time `type:"timestamp"`

	// A time stamp for the time that the last event was replayed.
	EventLastReplayedTime *time.Time `type:"timestamp"`

	// The ARN of the archive to replay event from.
	EventSourceArn *string `min:"1" type:"string"`

	// A time stamp for the time to start replaying events. This is determined by
	// the time in the event as described in Time (https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEventsRequestEntry.html#eventbridge-Type-PutEventsRequestEntry-Time).
	EventStartTime *time.Time `type:"timestamp"`

	// A time stamp for the time that the replay completed.
	ReplayEndTime *time.Time `type:"timestamp"`

	// The name of the replay.
	ReplayName *string `min:"1" type:"string"`

	// A time stamp for the time that the replay started.
	ReplayStartTime *time.Time `type:"timestamp"`

	// The current state of the replay.
	State *string `type:"string" enum:"ReplayState"`

	// A description of why the replay is in the current state.
	StateReason *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 Replay) String() string {
	return awsutil.Prettify(s)
}

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

// SetEventEndTime sets the EventEndTime field's value.
func (s *Replay) SetEventEndTime(v time.Time) *Replay {
	s.EventEndTime = &v
	return s
}

// SetEventLastReplayedTime sets the EventLastReplayedTime field's value.
func (s *Replay) SetEventLastReplayedTime(v time.Time) *Replay {
	s.EventLastReplayedTime = &v
	return s
}

// SetEventSourceArn sets the EventSourceArn field's value.
func (s *Replay) SetEventSourceArn(v string) *Replay {
	s.EventSourceArn = &v
	return s
}

// SetEventStartTime sets the EventStartTime field's value.
func (s *Replay) SetEventStartTime(v time.Time) *Replay {
	s.EventStartTime = &v
	return s
}

// SetReplayEndTime sets the ReplayEndTime field's value.
func (s *Replay) SetReplayEndTime(v time.Time) *Replay {
	s.ReplayEndTime = &v
	return s
}

// SetReplayName sets the ReplayName field's value.
func (s *Replay) SetReplayName(v string) *Replay {
	s.ReplayName = &v
	return s
}

// SetReplayStartTime sets the ReplayStartTime field's value.
func (s *Replay) SetReplayStartTime(v time.Time) *Replay {
	s.ReplayStartTime = &v
	return s
}

// SetState sets the State field's value.
func (s *Replay) SetState(v string) *Replay {
	s.State = &v
	return s
}

// SetStateReason sets the StateReason field's value.
func (s *Replay) SetStateReason(v string) *Replay {
	s.StateReason = &v
	return s
}

// A ReplayDestination object that contains details about a replay.
type ReplayDestination struct {
	_ struct{} `type:"structure"`

	// The ARN of the event bus to replay event to. You can replay events only to
	// the event bus specified to create the archive.
	//
	// Arn is a required field
	Arn *string `min:"1" type:"string" required:"true"`

	// A list of ARNs for rules to replay events to.
	FilterArns []*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 ReplayDestination) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// SetFilterArns sets the FilterArns field's value.
func (s *ReplayDestination) SetFilterArns(v []*string) *ReplayDestination {
	s.FilterArns = v
	return s
}

// Endpoints can replicate all events to the secondary Region.
type ReplicationConfig struct {
	_ struct{} `type:"structure"`

	// The state of event replication.
	State *string `type:"string" enum:"ReplicationState"`
}

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

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

// SetState sets the State field's value.
func (s *ReplicationConfig) SetState(v string) *ReplicationConfig {
	s.State = &v
	return s
}

// The resource you are trying to create already exists.
type ResourceAlreadyExistsException 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 ResourceAlreadyExistsException) String() string {
	return awsutil.Prettify(s)
}

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

func newErrorResourceAlreadyExistsException(v protocol.ResponseMetadata) error {
	return &ResourceAlreadyExistsException{
		RespMetadata: v,
	}
}

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

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

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

func (s *ResourceAlreadyExistsException) 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 *ResourceAlreadyExistsException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

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

// An entity that you specified does not exist.
type ResourceNotFoundException 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 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
}

// A RetryPolicy object that includes information about the retry policy settings.
type RetryPolicy struct {
	_ struct{} `type:"structure"`

	// The maximum amount of time, in seconds, to continue to make retry attempts.
	MaximumEventAgeInSeconds *int64 `min:"60" type:"integer"`

	// The maximum number of retry attempts to make before the request fails. Retry
	// attempts continue until either the maximum number of attempts is made or
	// until the duration of the MaximumEventAgeInSeconds is met.
	MaximumRetryAttempts *int64 `type:"integer"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *RetryPolicy) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RetryPolicy"}
	if s.MaximumEventAgeInSeconds != nil && *s.MaximumEventAgeInSeconds < 60 {
		invalidParams.Add(request.NewErrParamMinValue("MaximumEventAgeInSeconds", 60))
	}

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

// SetMaximumEventAgeInSeconds sets the MaximumEventAgeInSeconds field's value.
func (s *RetryPolicy) SetMaximumEventAgeInSeconds(v int64) *RetryPolicy {
	s.MaximumEventAgeInSeconds = &v
	return s
}

// SetMaximumRetryAttempts sets the MaximumRetryAttempts field's value.
func (s *RetryPolicy) SetMaximumRetryAttempts(v int64) *RetryPolicy {
	s.MaximumRetryAttempts = &v
	return s
}

// The routing configuration of the endpoint.
type RoutingConfig struct {
	_ struct{} `type:"structure"`

	// The failover configuration for an endpoint. This includes what triggers failover
	// and what happens when it's triggered.
	//
	// FailoverConfig is a required field
	FailoverConfig *FailoverConfig `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 RoutingConfig) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *RoutingConfig) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RoutingConfig"}
	if s.FailoverConfig == nil {
		invalidParams.Add(request.NewErrParamRequired("FailoverConfig"))
	}
	if s.FailoverConfig != nil {
		if err := s.FailoverConfig.Validate(); err != nil {
			invalidParams.AddNested("FailoverConfig", err.(request.ErrInvalidParams))
		}
	}

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

// SetFailoverConfig sets the FailoverConfig field's value.
func (s *RoutingConfig) SetFailoverConfig(v *FailoverConfig) *RoutingConfig {
	s.FailoverConfig = v
	return s
}

// Contains information about a rule in Amazon EventBridge.
type Rule struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the rule.
	Arn *string `min:"1" type:"string"`

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

	// The name or ARN of the event bus associated with the rule. If you omit this,
	// the default event bus is used.
	EventBusName *string `min:"1" type:"string"`

	// The event pattern of the rule. For more information, see Events and Event
	// Patterns (https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html)
	// in the Amazon EventBridge User Guide.
	EventPattern *string `type:"string"`

	// If the rule was created on behalf of your account by an Amazon Web Services
	// service, this field displays the principal name of the service that created
	// the rule.
	ManagedBy *string `min:"1" type:"string"`

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

	// The Amazon Resource Name (ARN) of the role that is used for target invocation.
	//
	// If you're setting an event bus in another account as the target and that
	// account granted permission to your account through an organization instead
	// of directly by the account ID, you must specify a RoleArn with proper permissions
	// in the Target structure, instead of here in this parameter.
	RoleArn *string `min:"1" type:"string"`

	// The scheduling expression. For example, "cron(0 20 * * ? *)", "rate(5 minutes)".
	// For more information, see Creating an Amazon EventBridge rule that runs on
	// a schedule (https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule-schedule.html).
	ScheduleExpression *string `type:"string"`

	// The state of the rule.
	State *string `type:"string" enum:"RuleState"`
}

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

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

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

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

// SetEventBusName sets the EventBusName field's value.
func (s *Rule) SetEventBusName(v string) *Rule {
	s.EventBusName = &v
	return s
}

// SetEventPattern sets the EventPattern field's value.
func (s *Rule) SetEventPattern(v string) *Rule {
	s.EventPattern = &v
	return s
}

// SetManagedBy sets the ManagedBy field's value.
func (s *Rule) SetManagedBy(v string) *Rule {
	s.ManagedBy = &v
	return s
}

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

// SetRoleArn sets the RoleArn field's value.
func (s *Rule) SetRoleArn(v string) *Rule {
	s.RoleArn = &v
	return s
}

// SetScheduleExpression sets the ScheduleExpression field's value.
func (s *Rule) SetScheduleExpression(v string) *Rule {
	s.ScheduleExpression = &v
	return s
}

// SetState sets the State field's value.
func (s *Rule) SetState(v string) *Rule {
	s.State = &v
	return s
}

// This parameter contains the criteria (either InstanceIds or a tag) used to
// specify which EC2 instances are to be sent the command.
type RunCommandParameters struct {
	_ struct{} `type:"structure"`

	// Currently, we support including only one RunCommandTarget block, which specifies
	// either an array of InstanceIds or a tag.
	//
	// RunCommandTargets is a required field
	RunCommandTargets []*RunCommandTarget `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 RunCommandParameters) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetRunCommandTargets sets the RunCommandTargets field's value.
func (s *RunCommandParameters) SetRunCommandTargets(v []*RunCommandTarget) *RunCommandParameters {
	s.RunCommandTargets = v
	return s
}

// Information about the EC2 instances that are to be sent the command, specified
// as key-value pairs. Each RunCommandTarget block can include only one key,
// but this key may specify multiple values.
type RunCommandTarget struct {
	_ struct{} `type:"structure"`

	// Can be either tag: tag-key or InstanceIds.
	//
	// Key is a required field
	Key *string `min:"1" type:"string" required:"true"`

	// If Key is tag: tag-key, Values is a list of tag values. If Key is InstanceIds,
	// Values is a list of Amazon EC2 instance IDs.
	//
	// Values is a required field
	Values []*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 RunCommandTarget) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetKey sets the Key field's value.
func (s *RunCommandTarget) SetKey(v string) *RunCommandTarget {
	s.Key = &v
	return s
}

// SetValues sets the Values field's value.
func (s *RunCommandTarget) SetValues(v []*string) *RunCommandTarget {
	s.Values = v
	return s
}

// Name/Value pair of a parameter to start execution of a SageMaker Model Building
// Pipeline.
type SageMakerPipelineParameter struct {
	_ struct{} `type:"structure"`

	// Name of parameter to start execution of a SageMaker Model Building Pipeline.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// Value of parameter to start execution of a SageMaker Model Building Pipeline.
	//
	// 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 SageMakerPipelineParameter) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *SageMakerPipelineParameter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SageMakerPipelineParameter"}
	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.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}

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

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

// SetValue sets the Value field's value.
func (s *SageMakerPipelineParameter) SetValue(v string) *SageMakerPipelineParameter {
	s.Value = &v
	return s
}

// These are custom parameters to use when the target is a SageMaker Model Building
// Pipeline that starts based on EventBridge events.
type SageMakerPipelineParameters struct {
	_ struct{} `type:"structure"`

	// List of Parameter names and values for SageMaker Model Building Pipeline
	// execution.
	PipelineParameterList []*SageMakerPipelineParameter `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 SageMakerPipelineParameters) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *SageMakerPipelineParameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SageMakerPipelineParameters"}
	if s.PipelineParameterList != nil {
		for i, v := range s.PipelineParameterList {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PipelineParameterList", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetPipelineParameterList sets the PipelineParameterList field's value.
func (s *SageMakerPipelineParameters) SetPipelineParameterList(v []*SageMakerPipelineParameter) *SageMakerPipelineParameters {
	s.PipelineParameterList = v
	return s
}

// The secondary Region that processes events when failover is triggered or
// replication is enabled.
type Secondary struct {
	_ struct{} `type:"structure"`

	// Defines the secondary Region.
	//
	// Route is a required field
	Route *string `min:"9" type:"string" required:"true"`
}

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

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

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

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

// SetRoute sets the Route field's value.
func (s *Secondary) SetRoute(v string) *Secondary {
	s.Route = &v
	return s
}

// This structure includes the custom parameter to be used when the target is
// an SQS FIFO queue.
type SqsParameters struct {
	_ struct{} `type:"structure"`

	// The FIFO message group ID to use as the target.
	MessageGroupId *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 SqsParameters) String() string {
	return awsutil.Prettify(s)
}

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

// SetMessageGroupId sets the MessageGroupId field's value.
func (s *SqsParameters) SetMessageGroupId(v string) *SqsParameters {
	s.MessageGroupId = &v
	return s
}

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

	// A description for the replay to start.
	Description *string `type:"string"`

	// A ReplayDestination object that includes details about the destination for
	// the replay.
	//
	// Destination is a required field
	Destination *ReplayDestination `type:"structure" required:"true"`

	// A time stamp for the time to stop replaying events. Only events that occurred
	// between the EventStartTime and EventEndTime are replayed.
	//
	// EventEndTime is a required field
	EventEndTime *time.Time `type:"timestamp" required:"true"`

	// The ARN of the archive to replay events from.
	//
	// EventSourceArn is a required field
	EventSourceArn *string `min:"1" type:"string" required:"true"`

	// A time stamp for the time to start replaying events. Only events that occurred
	// between the EventStartTime and EventEndTime are replayed.
	//
	// EventStartTime is a required field
	EventStartTime *time.Time `type:"timestamp" required:"true"`

	// The name of the replay to start.
	//
	// ReplayName is a required field
	ReplayName *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 StartReplayInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartReplayInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartReplayInput"}
	if s.Destination == nil {
		invalidParams.Add(request.NewErrParamRequired("Destination"))
	}
	if s.EventEndTime == nil {
		invalidParams.Add(request.NewErrParamRequired("EventEndTime"))
	}
	if s.EventSourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("EventSourceArn"))
	}
	if s.EventSourceArn != nil && len(*s.EventSourceArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EventSourceArn", 1))
	}
	if s.EventStartTime == nil {
		invalidParams.Add(request.NewErrParamRequired("EventStartTime"))
	}
	if s.ReplayName == nil {
		invalidParams.Add(request.NewErrParamRequired("ReplayName"))
	}
	if s.ReplayName != nil && len(*s.ReplayName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ReplayName", 1))
	}
	if s.Destination != nil {
		if err := s.Destination.Validate(); err != nil {
			invalidParams.AddNested("Destination", err.(request.ErrInvalidParams))
		}
	}

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

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

// SetDestination sets the Destination field's value.
func (s *StartReplayInput) SetDestination(v *ReplayDestination) *StartReplayInput {
	s.Destination = v
	return s
}

// SetEventEndTime sets the EventEndTime field's value.
func (s *StartReplayInput) SetEventEndTime(v time.Time) *StartReplayInput {
	s.EventEndTime = &v
	return s
}

// SetEventSourceArn sets the EventSourceArn field's value.
func (s *StartReplayInput) SetEventSourceArn(v string) *StartReplayInput {
	s.EventSourceArn = &v
	return s
}

// SetEventStartTime sets the EventStartTime field's value.
func (s *StartReplayInput) SetEventStartTime(v time.Time) *StartReplayInput {
	s.EventStartTime = &v
	return s
}

// SetReplayName sets the ReplayName field's value.
func (s *StartReplayInput) SetReplayName(v string) *StartReplayInput {
	s.ReplayName = &v
	return s
}

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

	// The ARN of the replay.
	ReplayArn *string `min:"1" type:"string"`

	// The time at which the replay started.
	ReplayStartTime *time.Time `type:"timestamp"`

	// The state of the replay.
	State *string `type:"string" enum:"ReplayState"`

	// The reason that the replay is in the state.
	StateReason *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 StartReplayOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetReplayArn sets the ReplayArn field's value.
func (s *StartReplayOutput) SetReplayArn(v string) *StartReplayOutput {
	s.ReplayArn = &v
	return s
}

// SetReplayStartTime sets the ReplayStartTime field's value.
func (s *StartReplayOutput) SetReplayStartTime(v time.Time) *StartReplayOutput {
	s.ReplayStartTime = &v
	return s
}

// SetState sets the State field's value.
func (s *StartReplayOutput) SetState(v string) *StartReplayOutput {
	s.State = &v
	return s
}

// SetStateReason sets the StateReason field's value.
func (s *StartReplayOutput) SetStateReason(v string) *StartReplayOutput {
	s.StateReason = &v
	return s
}

// A key-value pair associated with an Amazon Web Services resource. In EventBridge,
// rules and event buses support tagging.
type Tag struct {
	_ struct{} `type:"structure"`

	// A string you can use to assign a value. The combination of tag keys and values
	// can help you organize and categorize your resources.
	//
	// Key is a required field
	Key *string `min:"1" type:"string" required:"true"`

	// The value for the specified tag key.
	//
	// 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 Tag) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetKey sets the Key field's value.
func (s *Tag) SetKey(v string) *Tag {
	s.Key = &v
	return s
}

// SetValue sets the Value field's value.
func (s *Tag) SetValue(v string) *Tag {
	s.Value = &v
	return s
}

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

	// The ARN of the EventBridge resource that you're adding tags to.
	//
	// ResourceARN is a required field
	ResourceARN *string `min:"1" type:"string" required:"true"`

	// The list of key-value pairs to associate with the resource.
	//
	// Tags is a required field
	Tags []*Tag `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 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 {
		for i, v := range s.Tags {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
			}
		}
	}

	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 []*Tag) *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()
}

// Targets are the resources to be invoked when a rule is triggered. For a complete
// list of services and resources that can be set as a target, see PutTargets
// (https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutTargets.html).
//
// If you are setting the event bus of another account as the target, and that
// account granted permission to your account through an organization instead
// of directly by the account ID, then you must specify a RoleArn with proper
// permissions in the Target structure. For more information, see Sending and
// Receiving Events Between Amazon Web Services Accounts (https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-cross-account-event-delivery.html)
// in the Amazon EventBridge User Guide.
type Target struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the target.
	//
	// Arn is a required field
	Arn *string `min:"1" type:"string" required:"true"`

	// If the event target is an Batch job, this contains the job definition, job
	// name, and other parameters. For more information, see Jobs (https://docs.aws.amazon.com/batch/latest/userguide/jobs.html)
	// in the Batch User Guide.
	BatchParameters *BatchParameters `type:"structure"`

	// The DeadLetterConfig that defines the target queue to send dead-letter queue
	// events to.
	DeadLetterConfig *DeadLetterConfig `type:"structure"`

	// Contains the Amazon ECS task definition and task count to be used, if the
	// event target is an Amazon ECS task. For more information about Amazon ECS
	// tasks, see Task Definitions (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_defintions.html)
	// in the Amazon EC2 Container Service Developer Guide.
	EcsParameters *EcsParameters `type:"structure"`

	// Contains the HTTP parameters to use when the target is a API Gateway endpoint
	// or EventBridge ApiDestination.
	//
	// If you specify an API Gateway API or EventBridge ApiDestination as a target,
	// you can use this parameter to specify headers, path parameters, and query
	// string keys/values as part of your target invoking request. If you're using
	// ApiDestinations, the corresponding Connection can also have these values
	// configured. In case of any conflicting keys, values from the Connection take
	// precedence.
	HttpParameters *HttpParameters `type:"structure"`

	// The ID of the target within the specified rule. Use this ID to reference
	// the target when updating the rule. We recommend using a memorable and unique
	// string.
	//
	// Id is a required field
	Id *string `min:"1" type:"string" required:"true"`

	// Valid JSON text passed to the target. In this case, nothing from the event
	// itself is passed to the target. For more information, see The JavaScript
	// Object Notation (JSON) Data Interchange Format (http://www.rfc-editor.org/rfc/rfc7159.txt).
	Input *string `type:"string"`

	// The value of the JSONPath that is used for extracting part of the matched
	// event when passing it to the target. You may use JSON dot notation or bracket
	// notation. For more information about JSON paths, see JSONPath (http://goessner.net/articles/JsonPath/).
	InputPath *string `type:"string"`

	// Settings to enable you to provide custom input to a target based on certain
	// event data. You can extract one or more key-value pairs from the event and
	// then use that data to send customized input to the target.
	InputTransformer *InputTransformer `type:"structure"`

	// The custom parameter you can use to control the shard assignment, when the
	// target is a Kinesis data stream. If you do not include this parameter, the
	// default is to use the eventId as the partition key.
	KinesisParameters *KinesisParameters `type:"structure"`

	// Contains the Amazon Redshift Data API parameters to use when the target is
	// a Amazon Redshift cluster.
	//
	// If you specify a Amazon Redshift Cluster as a Target, you can use this to
	// specify parameters to invoke the Amazon Redshift Data API ExecuteStatement
	// based on EventBridge events.
	RedshiftDataParameters *RedshiftDataParameters `type:"structure"`

	// The RetryPolicy object that contains the retry policy configuration to use
	// for the dead-letter queue.
	RetryPolicy *RetryPolicy `type:"structure"`

	// The Amazon Resource Name (ARN) of the IAM role to be used for this target
	// when the rule is triggered. If one rule triggers multiple targets, you can
	// use a different IAM role for each target.
	RoleArn *string `min:"1" type:"string"`

	// Parameters used when you are using the rule to invoke Amazon EC2 Run Command.
	RunCommandParameters *RunCommandParameters `type:"structure"`

	// Contains the SageMaker Model Building Pipeline parameters to start execution
	// of a SageMaker Model Building Pipeline.
	//
	// If you specify a SageMaker Model Building Pipeline as a target, you can use
	// this to specify parameters to start a pipeline execution based on EventBridge
	// events.
	SageMakerPipelineParameters *SageMakerPipelineParameters `type:"structure"`

	// Contains the message group ID to use when the target is a FIFO queue.
	//
	// If you specify an SQS FIFO queue as a target, the queue must have content-based
	// deduplication enabled.
	SqsParameters *SqsParameters `type:"structure"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *Target) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Target"}
	if s.Arn == nil {
		invalidParams.Add(request.NewErrParamRequired("Arn"))
	}
	if s.Arn != nil && len(*s.Arn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Arn", 1))
	}
	if s.Id == nil {
		invalidParams.Add(request.NewErrParamRequired("Id"))
	}
	if s.Id != nil && len(*s.Id) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
	}
	if s.RoleArn != nil && len(*s.RoleArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RoleArn", 1))
	}
	if s.BatchParameters != nil {
		if err := s.BatchParameters.Validate(); err != nil {
			invalidParams.AddNested("BatchParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.DeadLetterConfig != nil {
		if err := s.DeadLetterConfig.Validate(); err != nil {
			invalidParams.AddNested("DeadLetterConfig", err.(request.ErrInvalidParams))
		}
	}
	if s.EcsParameters != nil {
		if err := s.EcsParameters.Validate(); err != nil {
			invalidParams.AddNested("EcsParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.InputTransformer != nil {
		if err := s.InputTransformer.Validate(); err != nil {
			invalidParams.AddNested("InputTransformer", err.(request.ErrInvalidParams))
		}
	}
	if s.KinesisParameters != nil {
		if err := s.KinesisParameters.Validate(); err != nil {
			invalidParams.AddNested("KinesisParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.RedshiftDataParameters != nil {
		if err := s.RedshiftDataParameters.Validate(); err != nil {
			invalidParams.AddNested("RedshiftDataParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.RetryPolicy != nil {
		if err := s.RetryPolicy.Validate(); err != nil {
			invalidParams.AddNested("RetryPolicy", err.(request.ErrInvalidParams))
		}
	}
	if s.RunCommandParameters != nil {
		if err := s.RunCommandParameters.Validate(); err != nil {
			invalidParams.AddNested("RunCommandParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.SageMakerPipelineParameters != nil {
		if err := s.SageMakerPipelineParameters.Validate(); err != nil {
			invalidParams.AddNested("SageMakerPipelineParameters", err.(request.ErrInvalidParams))
		}
	}

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

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

// SetBatchParameters sets the BatchParameters field's value.
func (s *Target) SetBatchParameters(v *BatchParameters) *Target {
	s.BatchParameters = v
	return s
}

// SetDeadLetterConfig sets the DeadLetterConfig field's value.
func (s *Target) SetDeadLetterConfig(v *DeadLetterConfig) *Target {
	s.DeadLetterConfig = v
	return s
}

// SetEcsParameters sets the EcsParameters field's value.
func (s *Target) SetEcsParameters(v *EcsParameters) *Target {
	s.EcsParameters = v
	return s
}

// SetHttpParameters sets the HttpParameters field's value.
func (s *Target) SetHttpParameters(v *HttpParameters) *Target {
	s.HttpParameters = v
	return s
}

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

// SetInput sets the Input field's value.
func (s *Target) SetInput(v string) *Target {
	s.Input = &v
	return s
}

// SetInputPath sets the InputPath field's value.
func (s *Target) SetInputPath(v string) *Target {
	s.InputPath = &v
	return s
}

// SetInputTransformer sets the InputTransformer field's value.
func (s *Target) SetInputTransformer(v *InputTransformer) *Target {
	s.InputTransformer = v
	return s
}

// SetKinesisParameters sets the KinesisParameters field's value.
func (s *Target) SetKinesisParameters(v *KinesisParameters) *Target {
	s.KinesisParameters = v
	return s
}

// SetRedshiftDataParameters sets the RedshiftDataParameters field's value.
func (s *Target) SetRedshiftDataParameters(v *RedshiftDataParameters) *Target {
	s.RedshiftDataParameters = v
	return s
}

// SetRetryPolicy sets the RetryPolicy field's value.
func (s *Target) SetRetryPolicy(v *RetryPolicy) *Target {
	s.RetryPolicy = v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *Target) SetRoleArn(v string) *Target {
	s.RoleArn = &v
	return s
}

// SetRunCommandParameters sets the RunCommandParameters field's value.
func (s *Target) SetRunCommandParameters(v *RunCommandParameters) *Target {
	s.RunCommandParameters = v
	return s
}

// SetSageMakerPipelineParameters sets the SageMakerPipelineParameters field's value.
func (s *Target) SetSageMakerPipelineParameters(v *SageMakerPipelineParameters) *Target {
	s.SageMakerPipelineParameters = v
	return s
}

// SetSqsParameters sets the SqsParameters field's value.
func (s *Target) SetSqsParameters(v *SqsParameters) *Target {
	s.SqsParameters = v
	return s
}

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

	// The event, in JSON format, to test against the event pattern. The JSON must
	// follow the format specified in Amazon Web Services Events (https://docs.aws.amazon.com/eventbridge/latest/userguide/aws-events.html),
	// and the following fields are mandatory:
	//
	//    * id
	//
	//    * account
	//
	//    * source
	//
	//    * time
	//
	//    * region
	//
	//    * resources
	//
	//    * detail-type
	//
	// Event is a required field
	Event *string `type:"string" required:"true"`

	// The event pattern. For more information, see Events and Event Patterns (https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html)
	// in the Amazon EventBridge User Guide.
	//
	// EventPattern is a required field
	EventPattern *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 TestEventPatternInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *TestEventPatternInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TestEventPatternInput"}
	if s.Event == nil {
		invalidParams.Add(request.NewErrParamRequired("Event"))
	}
	if s.EventPattern == nil {
		invalidParams.Add(request.NewErrParamRequired("EventPattern"))
	}

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

// SetEvent sets the Event field's value.
func (s *TestEventPatternInput) SetEvent(v string) *TestEventPatternInput {
	s.Event = &v
	return s
}

// SetEventPattern sets the EventPattern field's value.
func (s *TestEventPatternInput) SetEventPattern(v string) *TestEventPatternInput {
	s.EventPattern = &v
	return s
}

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

	// Indicates whether the event matches the event pattern.
	Result *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 TestEventPatternOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetResult sets the Result field's value.
func (s *TestEventPatternOutput) SetResult(v bool) *TestEventPatternOutput {
	s.Result = &v
	return s
}

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

	// The ARN of the EventBridge resource from which you are removing tags.
	//
	// ResourceARN is a required field
	ResourceARN *string `min:"1" type:"string" required:"true"`

	// The list of tag keys to remove from the resource.
	//
	// TagKeys is a required field
	TagKeys []*string `type:"list" required:"true"`
}

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

	// The ARN of the connection to use for the API destination.
	ConnectionArn *string `min:"1" type:"string"`

	// The name of the API destination to update.
	Description *string `type:"string"`

	// The method to use for the API destination.
	HttpMethod *string `type:"string" enum:"ApiDestinationHttpMethod"`

	// The URL to the endpoint to use for the API destination.
	InvocationEndpoint *string `min:"1" type:"string"`

	// The maximum number of invocations per second to send to the API destination.
	InvocationRateLimitPerSecond *int64 `min:"1" type:"integer"`

	// The name of the API destination to update.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`
}

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

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

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

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

// SetConnectionArn sets the ConnectionArn field's value.
func (s *UpdateApiDestinationInput) SetConnectionArn(v string) *UpdateApiDestinationInput {
	s.ConnectionArn = &v
	return s
}

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

// SetHttpMethod sets the HttpMethod field's value.
func (s *UpdateApiDestinationInput) SetHttpMethod(v string) *UpdateApiDestinationInput {
	s.HttpMethod = &v
	return s
}

// SetInvocationEndpoint sets the InvocationEndpoint field's value.
func (s *UpdateApiDestinationInput) SetInvocationEndpoint(v string) *UpdateApiDestinationInput {
	s.InvocationEndpoint = &v
	return s
}

// SetInvocationRateLimitPerSecond sets the InvocationRateLimitPerSecond field's value.
func (s *UpdateApiDestinationInput) SetInvocationRateLimitPerSecond(v int64) *UpdateApiDestinationInput {
	s.InvocationRateLimitPerSecond = &v
	return s
}

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

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

	// The ARN of the API destination that was updated.
	ApiDestinationArn *string `min:"1" type:"string"`

	// The state of the API destination that was updated.
	ApiDestinationState *string `type:"string" enum:"ApiDestinationState"`

	// A time stamp for the time that the API destination was created.
	CreationTime *time.Time `type:"timestamp"`

	// A time stamp for the time that the API destination was last modified.
	LastModifiedTime *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 UpdateApiDestinationOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetApiDestinationArn sets the ApiDestinationArn field's value.
func (s *UpdateApiDestinationOutput) SetApiDestinationArn(v string) *UpdateApiDestinationOutput {
	s.ApiDestinationArn = &v
	return s
}

// SetApiDestinationState sets the ApiDestinationState field's value.
func (s *UpdateApiDestinationOutput) SetApiDestinationState(v string) *UpdateApiDestinationOutput {
	s.ApiDestinationState = &v
	return s
}

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

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *UpdateApiDestinationOutput) SetLastModifiedTime(v time.Time) *UpdateApiDestinationOutput {
	s.LastModifiedTime = &v
	return s
}

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

	// The name of the archive to update.
	//
	// ArchiveName is a required field
	ArchiveName *string `min:"1" type:"string" required:"true"`

	// The description for the archive.
	Description *string `type:"string"`

	// The event pattern to use to filter events sent to the archive.
	EventPattern *string `type:"string"`

	// The number of days to retain events in the archive.
	RetentionDays *int64 `type:"integer"`
}

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

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

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

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

// SetArchiveName sets the ArchiveName field's value.
func (s *UpdateArchiveInput) SetArchiveName(v string) *UpdateArchiveInput {
	s.ArchiveName = &v
	return s
}

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

// SetEventPattern sets the EventPattern field's value.
func (s *UpdateArchiveInput) SetEventPattern(v string) *UpdateArchiveInput {
	s.EventPattern = &v
	return s
}

// SetRetentionDays sets the RetentionDays field's value.
func (s *UpdateArchiveInput) SetRetentionDays(v int64) *UpdateArchiveInput {
	s.RetentionDays = &v
	return s
}

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

	// The ARN of the archive.
	ArchiveArn *string `min:"1" type:"string"`

	// The time at which the archive was updated.
	CreationTime *time.Time `type:"timestamp"`

	// The state of the archive.
	State *string `type:"string" enum:"ArchiveState"`

	// The reason that the archive is in the current state.
	StateReason *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 UpdateArchiveOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetArchiveArn sets the ArchiveArn field's value.
func (s *UpdateArchiveOutput) SetArchiveArn(v string) *UpdateArchiveOutput {
	s.ArchiveArn = &v
	return s
}

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

// SetState sets the State field's value.
func (s *UpdateArchiveOutput) SetState(v string) *UpdateArchiveOutput {
	s.State = &v
	return s
}

// SetStateReason sets the StateReason field's value.
func (s *UpdateArchiveOutput) SetStateReason(v string) *UpdateArchiveOutput {
	s.StateReason = &v
	return s
}

// Contains the API key authorization parameters to use to update the connection.
type UpdateConnectionApiKeyAuthRequestParameters struct {
	_ struct{} `type:"structure"`

	// The name of the API key to use for authorization.
	ApiKeyName *string `min:"1" type:"string"`

	// The value associated with teh API key to use for authorization.
	ApiKeyValue *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 UpdateConnectionApiKeyAuthRequestParameters) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetApiKeyName sets the ApiKeyName field's value.
func (s *UpdateConnectionApiKeyAuthRequestParameters) SetApiKeyName(v string) *UpdateConnectionApiKeyAuthRequestParameters {
	s.ApiKeyName = &v
	return s
}

// SetApiKeyValue sets the ApiKeyValue field's value.
func (s *UpdateConnectionApiKeyAuthRequestParameters) SetApiKeyValue(v string) *UpdateConnectionApiKeyAuthRequestParameters {
	s.ApiKeyValue = &v
	return s
}

// Contains the additional parameters to use for the connection.
type UpdateConnectionAuthRequestParameters struct {
	_ struct{} `type:"structure"`

	// A UpdateConnectionApiKeyAuthRequestParameters object that contains the authorization
	// parameters for API key authorization.
	ApiKeyAuthParameters *UpdateConnectionApiKeyAuthRequestParameters `type:"structure"`

	// A UpdateConnectionBasicAuthRequestParameters object that contains the authorization
	// parameters for Basic authorization.
	BasicAuthParameters *UpdateConnectionBasicAuthRequestParameters `type:"structure"`

	// A ConnectionHttpParameters object that contains the additional parameters
	// to use for the connection.
	InvocationHttpParameters *ConnectionHttpParameters `type:"structure"`

	// A UpdateConnectionOAuthRequestParameters object that contains the authorization
	// parameters for OAuth authorization.
	OAuthParameters *UpdateConnectionOAuthRequestParameters `type:"structure"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateConnectionAuthRequestParameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateConnectionAuthRequestParameters"}
	if s.ApiKeyAuthParameters != nil {
		if err := s.ApiKeyAuthParameters.Validate(); err != nil {
			invalidParams.AddNested("ApiKeyAuthParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.BasicAuthParameters != nil {
		if err := s.BasicAuthParameters.Validate(); err != nil {
			invalidParams.AddNested("BasicAuthParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.OAuthParameters != nil {
		if err := s.OAuthParameters.Validate(); err != nil {
			invalidParams.AddNested("OAuthParameters", err.(request.ErrInvalidParams))
		}
	}

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

// SetApiKeyAuthParameters sets the ApiKeyAuthParameters field's value.
func (s *UpdateConnectionAuthRequestParameters) SetApiKeyAuthParameters(v *UpdateConnectionApiKeyAuthRequestParameters) *UpdateConnectionAuthRequestParameters {
	s.ApiKeyAuthParameters = v
	return s
}

// SetBasicAuthParameters sets the BasicAuthParameters field's value.
func (s *UpdateConnectionAuthRequestParameters) SetBasicAuthParameters(v *UpdateConnectionBasicAuthRequestParameters) *UpdateConnectionAuthRequestParameters {
	s.BasicAuthParameters = v
	return s
}

// SetInvocationHttpParameters sets the InvocationHttpParameters field's value.
func (s *UpdateConnectionAuthRequestParameters) SetInvocationHttpParameters(v *ConnectionHttpParameters) *UpdateConnectionAuthRequestParameters {
	s.InvocationHttpParameters = v
	return s
}

// SetOAuthParameters sets the OAuthParameters field's value.
func (s *UpdateConnectionAuthRequestParameters) SetOAuthParameters(v *UpdateConnectionOAuthRequestParameters) *UpdateConnectionAuthRequestParameters {
	s.OAuthParameters = v
	return s
}

// Contains the Basic authorization parameters for the connection.
type UpdateConnectionBasicAuthRequestParameters struct {
	_ struct{} `type:"structure"`

	// The password associated with the user name to use for Basic authorization.
	Password *string `min:"1" type:"string"`

	// The user name to use for Basic authorization.
	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 UpdateConnectionBasicAuthRequestParameters) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetPassword sets the Password field's value.
func (s *UpdateConnectionBasicAuthRequestParameters) SetPassword(v string) *UpdateConnectionBasicAuthRequestParameters {
	s.Password = &v
	return s
}

// SetUsername sets the Username field's value.
func (s *UpdateConnectionBasicAuthRequestParameters) SetUsername(v string) *UpdateConnectionBasicAuthRequestParameters {
	s.Username = &v
	return s
}

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

	// The authorization parameters to use for the connection.
	AuthParameters *UpdateConnectionAuthRequestParameters `type:"structure"`

	// The type of authorization to use for the connection.
	AuthorizationType *string `type:"string" enum:"ConnectionAuthorizationType"`

	// A description for the connection.
	Description *string `type:"string"`

	// The name of the connection to update.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateConnectionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateConnectionInput"}
	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.AuthParameters != nil {
		if err := s.AuthParameters.Validate(); err != nil {
			invalidParams.AddNested("AuthParameters", err.(request.ErrInvalidParams))
		}
	}

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

// SetAuthParameters sets the AuthParameters field's value.
func (s *UpdateConnectionInput) SetAuthParameters(v *UpdateConnectionAuthRequestParameters) *UpdateConnectionInput {
	s.AuthParameters = v
	return s
}

// SetAuthorizationType sets the AuthorizationType field's value.
func (s *UpdateConnectionInput) SetAuthorizationType(v string) *UpdateConnectionInput {
	s.AuthorizationType = &v
	return s
}

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

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

// Contains the OAuth authorization parameters to use for the connection.
type UpdateConnectionOAuthClientRequestParameters struct {
	_ struct{} `type:"structure"`

	// The client ID to use for OAuth authorization.
	ClientID *string `min:"1" type:"string"`

	// The client secret assciated with the client ID to use for OAuth authorization.
	ClientSecret *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 UpdateConnectionOAuthClientRequestParameters) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetClientID sets the ClientID field's value.
func (s *UpdateConnectionOAuthClientRequestParameters) SetClientID(v string) *UpdateConnectionOAuthClientRequestParameters {
	s.ClientID = &v
	return s
}

// SetClientSecret sets the ClientSecret field's value.
func (s *UpdateConnectionOAuthClientRequestParameters) SetClientSecret(v string) *UpdateConnectionOAuthClientRequestParameters {
	s.ClientSecret = &v
	return s
}

// Contains the OAuth request parameters to use for the connection.
type UpdateConnectionOAuthRequestParameters struct {
	_ struct{} `type:"structure"`

	// The URL to the authorization endpoint when OAuth is specified as the authorization
	// type.
	AuthorizationEndpoint *string `min:"1" type:"string"`

	// A UpdateConnectionOAuthClientRequestParameters object that contains the client
	// parameters to use for the connection when OAuth is specified as the authorization
	// type.
	ClientParameters *UpdateConnectionOAuthClientRequestParameters `type:"structure"`

	// The method used to connect to the HTTP endpoint.
	HttpMethod *string `type:"string" enum:"ConnectionOAuthHttpMethod"`

	// The additional HTTP parameters used for the OAuth authorization request.
	OAuthHttpParameters *ConnectionHttpParameters `type:"structure"`
}

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

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

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

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

// SetAuthorizationEndpoint sets the AuthorizationEndpoint field's value.
func (s *UpdateConnectionOAuthRequestParameters) SetAuthorizationEndpoint(v string) *UpdateConnectionOAuthRequestParameters {
	s.AuthorizationEndpoint = &v
	return s
}

// SetClientParameters sets the ClientParameters field's value.
func (s *UpdateConnectionOAuthRequestParameters) SetClientParameters(v *UpdateConnectionOAuthClientRequestParameters) *UpdateConnectionOAuthRequestParameters {
	s.ClientParameters = v
	return s
}

// SetHttpMethod sets the HttpMethod field's value.
func (s *UpdateConnectionOAuthRequestParameters) SetHttpMethod(v string) *UpdateConnectionOAuthRequestParameters {
	s.HttpMethod = &v
	return s
}

// SetOAuthHttpParameters sets the OAuthHttpParameters field's value.
func (s *UpdateConnectionOAuthRequestParameters) SetOAuthHttpParameters(v *ConnectionHttpParameters) *UpdateConnectionOAuthRequestParameters {
	s.OAuthHttpParameters = v
	return s
}

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

	// The ARN of the connection that was updated.
	ConnectionArn *string `min:"1" type:"string"`

	// The state of the connection that was updated.
	ConnectionState *string `type:"string" enum:"ConnectionState"`

	// A time stamp for the time that the connection was created.
	CreationTime *time.Time `type:"timestamp"`

	// A time stamp for the time that the connection was last authorized.
	LastAuthorizedTime *time.Time `type:"timestamp"`

	// A time stamp for the time that the connection was last modified.
	LastModifiedTime *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 UpdateConnectionOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetConnectionArn sets the ConnectionArn field's value.
func (s *UpdateConnectionOutput) SetConnectionArn(v string) *UpdateConnectionOutput {
	s.ConnectionArn = &v
	return s
}

// SetConnectionState sets the ConnectionState field's value.
func (s *UpdateConnectionOutput) SetConnectionState(v string) *UpdateConnectionOutput {
	s.ConnectionState = &v
	return s
}

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

// SetLastAuthorizedTime sets the LastAuthorizedTime field's value.
func (s *UpdateConnectionOutput) SetLastAuthorizedTime(v time.Time) *UpdateConnectionOutput {
	s.LastAuthorizedTime = &v
	return s
}

// SetLastModifiedTime sets the LastModifiedTime field's value.
func (s *UpdateConnectionOutput) SetLastModifiedTime(v time.Time) *UpdateConnectionOutput {
	s.LastModifiedTime = &v
	return s
}

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

	// A description for the endpoint.
	Description *string `type:"string"`

	// Define event buses used for replication.
	EventBuses []*EndpointEventBus `min:"2" type:"list"`

	// The name of the endpoint you want to update.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// Whether event replication was enabled or disabled by this request.
	ReplicationConfig *ReplicationConfig `type:"structure"`

	// The ARN of the role used by event replication for this request.
	RoleArn *string `min:"1" type:"string"`

	// Configure the routing policy, including the health check and secondary Region.
	RoutingConfig *RoutingConfig `type:"structure"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateEndpointInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateEndpointInput"}
	if s.EventBuses != nil && len(s.EventBuses) < 2 {
		invalidParams.Add(request.NewErrParamMinLen("EventBuses", 2))
	}
	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.RoleArn != nil && len(*s.RoleArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RoleArn", 1))
	}
	if s.EventBuses != nil {
		for i, v := range s.EventBuses {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "EventBuses", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.RoutingConfig != nil {
		if err := s.RoutingConfig.Validate(); err != nil {
			invalidParams.AddNested("RoutingConfig", err.(request.ErrInvalidParams))
		}
	}

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

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

// SetEventBuses sets the EventBuses field's value.
func (s *UpdateEndpointInput) SetEventBuses(v []*EndpointEventBus) *UpdateEndpointInput {
	s.EventBuses = v
	return s
}

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

// SetReplicationConfig sets the ReplicationConfig field's value.
func (s *UpdateEndpointInput) SetReplicationConfig(v *ReplicationConfig) *UpdateEndpointInput {
	s.ReplicationConfig = v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *UpdateEndpointInput) SetRoleArn(v string) *UpdateEndpointInput {
	s.RoleArn = &v
	return s
}

// SetRoutingConfig sets the RoutingConfig field's value.
func (s *UpdateEndpointInput) SetRoutingConfig(v *RoutingConfig) *UpdateEndpointInput {
	s.RoutingConfig = v
	return s
}

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

	// The ARN of the endpoint you updated in this request.
	Arn *string `min:"1" type:"string"`

	// The ID of the endpoint you updated in this request.
	EndpointId *string `min:"1" type:"string"`

	// The URL of the endpoint you updated in this request.
	EndpointUrl *string `min:"1" type:"string"`

	// The event buses used for replication for the endpoint you updated in this
	// request.
	EventBuses []*EndpointEventBus `min:"2" type:"list"`

	// The name of the endpoint you updated in this request.
	Name *string `min:"1" type:"string"`

	// Whether event replication was enabled or disabled for the endpoint you updated
	// in this request.
	ReplicationConfig *ReplicationConfig `type:"structure"`

	// The ARN of the role used by event replication for the endpoint you updated
	// in this request.
	RoleArn *string `min:"1" type:"string"`

	// The routing configuration you updated in this request.
	RoutingConfig *RoutingConfig `type:"structure"`

	// The state of the endpoint you updated in this request.
	State *string `type:"string" enum:"EndpointState"`
}

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

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

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

// SetEndpointId sets the EndpointId field's value.
func (s *UpdateEndpointOutput) SetEndpointId(v string) *UpdateEndpointOutput {
	s.EndpointId = &v
	return s
}

// SetEndpointUrl sets the EndpointUrl field's value.
func (s *UpdateEndpointOutput) SetEndpointUrl(v string) *UpdateEndpointOutput {
	s.EndpointUrl = &v
	return s
}

// SetEventBuses sets the EventBuses field's value.
func (s *UpdateEndpointOutput) SetEventBuses(v []*EndpointEventBus) *UpdateEndpointOutput {
	s.EventBuses = v
	return s
}

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

// SetReplicationConfig sets the ReplicationConfig field's value.
func (s *UpdateEndpointOutput) SetReplicationConfig(v *ReplicationConfig) *UpdateEndpointOutput {
	s.ReplicationConfig = v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *UpdateEndpointOutput) SetRoleArn(v string) *UpdateEndpointOutput {
	s.RoleArn = &v
	return s
}

// SetRoutingConfig sets the RoutingConfig field's value.
func (s *UpdateEndpointOutput) SetRoutingConfig(v *RoutingConfig) *UpdateEndpointOutput {
	s.RoutingConfig = v
	return s
}

// SetState sets the State field's value.
func (s *UpdateEndpointOutput) SetState(v string) *UpdateEndpointOutput {
	s.State = &v
	return s
}

const (
	// ApiDestinationHttpMethodPost is a ApiDestinationHttpMethod enum value
	ApiDestinationHttpMethodPost = "POST"

	// ApiDestinationHttpMethodGet is a ApiDestinationHttpMethod enum value
	ApiDestinationHttpMethodGet = "GET"

	// ApiDestinationHttpMethodHead is a ApiDestinationHttpMethod enum value
	ApiDestinationHttpMethodHead = "HEAD"

	// ApiDestinationHttpMethodOptions is a ApiDestinationHttpMethod enum value
	ApiDestinationHttpMethodOptions = "OPTIONS"

	// ApiDestinationHttpMethodPut is a ApiDestinationHttpMethod enum value
	ApiDestinationHttpMethodPut = "PUT"

	// ApiDestinationHttpMethodPatch is a ApiDestinationHttpMethod enum value
	ApiDestinationHttpMethodPatch = "PATCH"

	// ApiDestinationHttpMethodDelete is a ApiDestinationHttpMethod enum value
	ApiDestinationHttpMethodDelete = "DELETE"
)

// ApiDestinationHttpMethod_Values returns all elements of the ApiDestinationHttpMethod enum
func ApiDestinationHttpMethod_Values() []string {
	return []string{
		ApiDestinationHttpMethodPost,
		ApiDestinationHttpMethodGet,
		ApiDestinationHttpMethodHead,
		ApiDestinationHttpMethodOptions,
		ApiDestinationHttpMethodPut,
		ApiDestinationHttpMethodPatch,
		ApiDestinationHttpMethodDelete,
	}
}

const (
	// ApiDestinationStateActive is a ApiDestinationState enum value
	ApiDestinationStateActive = "ACTIVE"

	// ApiDestinationStateInactive is a ApiDestinationState enum value
	ApiDestinationStateInactive = "INACTIVE"
)

// ApiDestinationState_Values returns all elements of the ApiDestinationState enum
func ApiDestinationState_Values() []string {
	return []string{
		ApiDestinationStateActive,
		ApiDestinationStateInactive,
	}
}

const (
	// ArchiveStateEnabled is a ArchiveState enum value
	ArchiveStateEnabled = "ENABLED"

	// ArchiveStateDisabled is a ArchiveState enum value
	ArchiveStateDisabled = "DISABLED"

	// ArchiveStateCreating is a ArchiveState enum value
	ArchiveStateCreating = "CREATING"

	// ArchiveStateUpdating is a ArchiveState enum value
	ArchiveStateUpdating = "UPDATING"

	// ArchiveStateCreateFailed is a ArchiveState enum value
	ArchiveStateCreateFailed = "CREATE_FAILED"

	// ArchiveStateUpdateFailed is a ArchiveState enum value
	ArchiveStateUpdateFailed = "UPDATE_FAILED"
)

// ArchiveState_Values returns all elements of the ArchiveState enum
func ArchiveState_Values() []string {
	return []string{
		ArchiveStateEnabled,
		ArchiveStateDisabled,
		ArchiveStateCreating,
		ArchiveStateUpdating,
		ArchiveStateCreateFailed,
		ArchiveStateUpdateFailed,
	}
}

const (
	// AssignPublicIpEnabled is a AssignPublicIp enum value
	AssignPublicIpEnabled = "ENABLED"

	// AssignPublicIpDisabled is a AssignPublicIp enum value
	AssignPublicIpDisabled = "DISABLED"
)

// AssignPublicIp_Values returns all elements of the AssignPublicIp enum
func AssignPublicIp_Values() []string {
	return []string{
		AssignPublicIpEnabled,
		AssignPublicIpDisabled,
	}
}

const (
	// ConnectionAuthorizationTypeBasic is a ConnectionAuthorizationType enum value
	ConnectionAuthorizationTypeBasic = "BASIC"

	// ConnectionAuthorizationTypeOauthClientCredentials is a ConnectionAuthorizationType enum value
	ConnectionAuthorizationTypeOauthClientCredentials = "OAUTH_CLIENT_CREDENTIALS"

	// ConnectionAuthorizationTypeApiKey is a ConnectionAuthorizationType enum value
	ConnectionAuthorizationTypeApiKey = "API_KEY"
)

// ConnectionAuthorizationType_Values returns all elements of the ConnectionAuthorizationType enum
func ConnectionAuthorizationType_Values() []string {
	return []string{
		ConnectionAuthorizationTypeBasic,
		ConnectionAuthorizationTypeOauthClientCredentials,
		ConnectionAuthorizationTypeApiKey,
	}
}

const (
	// ConnectionOAuthHttpMethodGet is a ConnectionOAuthHttpMethod enum value
	ConnectionOAuthHttpMethodGet = "GET"

	// ConnectionOAuthHttpMethodPost is a ConnectionOAuthHttpMethod enum value
	ConnectionOAuthHttpMethodPost = "POST"

	// ConnectionOAuthHttpMethodPut is a ConnectionOAuthHttpMethod enum value
	ConnectionOAuthHttpMethodPut = "PUT"
)

// ConnectionOAuthHttpMethod_Values returns all elements of the ConnectionOAuthHttpMethod enum
func ConnectionOAuthHttpMethod_Values() []string {
	return []string{
		ConnectionOAuthHttpMethodGet,
		ConnectionOAuthHttpMethodPost,
		ConnectionOAuthHttpMethodPut,
	}
}

const (
	// ConnectionStateCreating is a ConnectionState enum value
	ConnectionStateCreating = "CREATING"

	// ConnectionStateUpdating is a ConnectionState enum value
	ConnectionStateUpdating = "UPDATING"

	// ConnectionStateDeleting is a ConnectionState enum value
	ConnectionStateDeleting = "DELETING"

	// ConnectionStateAuthorized is a ConnectionState enum value
	ConnectionStateAuthorized = "AUTHORIZED"

	// ConnectionStateDeauthorized is a ConnectionState enum value
	ConnectionStateDeauthorized = "DEAUTHORIZED"

	// ConnectionStateAuthorizing is a ConnectionState enum value
	ConnectionStateAuthorizing = "AUTHORIZING"

	// ConnectionStateDeauthorizing is a ConnectionState enum value
	ConnectionStateDeauthorizing = "DEAUTHORIZING"
)

// ConnectionState_Values returns all elements of the ConnectionState enum
func ConnectionState_Values() []string {
	return []string{
		ConnectionStateCreating,
		ConnectionStateUpdating,
		ConnectionStateDeleting,
		ConnectionStateAuthorized,
		ConnectionStateDeauthorized,
		ConnectionStateAuthorizing,
		ConnectionStateDeauthorizing,
	}
}

const (
	// EndpointStateActive is a EndpointState enum value
	EndpointStateActive = "ACTIVE"

	// EndpointStateCreating is a EndpointState enum value
	EndpointStateCreating = "CREATING"

	// EndpointStateUpdating is a EndpointState enum value
	EndpointStateUpdating = "UPDATING"

	// EndpointStateDeleting is a EndpointState enum value
	EndpointStateDeleting = "DELETING"

	// EndpointStateCreateFailed is a EndpointState enum value
	EndpointStateCreateFailed = "CREATE_FAILED"

	// EndpointStateUpdateFailed is a EndpointState enum value
	EndpointStateUpdateFailed = "UPDATE_FAILED"

	// EndpointStateDeleteFailed is a EndpointState enum value
	EndpointStateDeleteFailed = "DELETE_FAILED"
)

// EndpointState_Values returns all elements of the EndpointState enum
func EndpointState_Values() []string {
	return []string{
		EndpointStateActive,
		EndpointStateCreating,
		EndpointStateUpdating,
		EndpointStateDeleting,
		EndpointStateCreateFailed,
		EndpointStateUpdateFailed,
		EndpointStateDeleteFailed,
	}
}

const (
	// EventSourceStatePending is a EventSourceState enum value
	EventSourceStatePending = "PENDING"

	// EventSourceStateActive is a EventSourceState enum value
	EventSourceStateActive = "ACTIVE"

	// EventSourceStateDeleted is a EventSourceState enum value
	EventSourceStateDeleted = "DELETED"
)

// EventSourceState_Values returns all elements of the EventSourceState enum
func EventSourceState_Values() []string {
	return []string{
		EventSourceStatePending,
		EventSourceStateActive,
		EventSourceStateDeleted,
	}
}

const (
	// LaunchTypeEc2 is a LaunchType enum value
	LaunchTypeEc2 = "EC2"

	// LaunchTypeFargate is a LaunchType enum value
	LaunchTypeFargate = "FARGATE"

	// LaunchTypeExternal is a LaunchType enum value
	LaunchTypeExternal = "EXTERNAL"
)

// LaunchType_Values returns all elements of the LaunchType enum
func LaunchType_Values() []string {
	return []string{
		LaunchTypeEc2,
		LaunchTypeFargate,
		LaunchTypeExternal,
	}
}

const (
	// PlacementConstraintTypeDistinctInstance is a PlacementConstraintType enum value
	PlacementConstraintTypeDistinctInstance = "distinctInstance"

	// PlacementConstraintTypeMemberOf is a PlacementConstraintType enum value
	PlacementConstraintTypeMemberOf = "memberOf"
)

// PlacementConstraintType_Values returns all elements of the PlacementConstraintType enum
func PlacementConstraintType_Values() []string {
	return []string{
		PlacementConstraintTypeDistinctInstance,
		PlacementConstraintTypeMemberOf,
	}
}

const (
	// PlacementStrategyTypeRandom is a PlacementStrategyType enum value
	PlacementStrategyTypeRandom = "random"

	// PlacementStrategyTypeSpread is a PlacementStrategyType enum value
	PlacementStrategyTypeSpread = "spread"

	// PlacementStrategyTypeBinpack is a PlacementStrategyType enum value
	PlacementStrategyTypeBinpack = "binpack"
)

// PlacementStrategyType_Values returns all elements of the PlacementStrategyType enum
func PlacementStrategyType_Values() []string {
	return []string{
		PlacementStrategyTypeRandom,
		PlacementStrategyTypeSpread,
		PlacementStrategyTypeBinpack,
	}
}

const (
	// PropagateTagsTaskDefinition is a PropagateTags enum value
	PropagateTagsTaskDefinition = "TASK_DEFINITION"
)

// PropagateTags_Values returns all elements of the PropagateTags enum
func PropagateTags_Values() []string {
	return []string{
		PropagateTagsTaskDefinition,
	}
}

const (
	// ReplayStateStarting is a ReplayState enum value
	ReplayStateStarting = "STARTING"

	// ReplayStateRunning is a ReplayState enum value
	ReplayStateRunning = "RUNNING"

	// ReplayStateCancelling is a ReplayState enum value
	ReplayStateCancelling = "CANCELLING"

	// ReplayStateCompleted is a ReplayState enum value
	ReplayStateCompleted = "COMPLETED"

	// ReplayStateCancelled is a ReplayState enum value
	ReplayStateCancelled = "CANCELLED"

	// ReplayStateFailed is a ReplayState enum value
	ReplayStateFailed = "FAILED"
)

// ReplayState_Values returns all elements of the ReplayState enum
func ReplayState_Values() []string {
	return []string{
		ReplayStateStarting,
		ReplayStateRunning,
		ReplayStateCancelling,
		ReplayStateCompleted,
		ReplayStateCancelled,
		ReplayStateFailed,
	}
}

const (
	// ReplicationStateEnabled is a ReplicationState enum value
	ReplicationStateEnabled = "ENABLED"

	// ReplicationStateDisabled is a ReplicationState enum value
	ReplicationStateDisabled = "DISABLED"
)

// ReplicationState_Values returns all elements of the ReplicationState enum
func ReplicationState_Values() []string {
	return []string{
		ReplicationStateEnabled,
		ReplicationStateDisabled,
	}
}

const (
	// RuleStateEnabled is a RuleState enum value
	RuleStateEnabled = "ENABLED"

	// RuleStateDisabled is a RuleState enum value
	RuleStateDisabled = "DISABLED"
)

// RuleState_Values returns all elements of the RuleState enum
func RuleState_Values() []string {
	return []string{
		RuleStateEnabled,
		RuleStateDisabled,
	}
}
