Documentation
¶
Index ¶
- Constants
- func ChannelIDsByType(channels []Channel, channelType ChannelType) []string
- func InterfaceMapToStringMap(m map[string]interface{}) map[string]string
- func SortEventDeliveryAttemptsInDescOrder(attempts []EventDeliveryAttempt)
- func StrictInterfaceMapToStringMap(m map[string]interface{}) (map[string]string, error)
- func ValidateRuleConfigWithFeatures(ctx context.Context, service FeatureService, namespace string) models.ValidatorFunc[RuleConfig]
- type BalanceThreshold
- type BalanceThresholdPayload
- type BalanceThresholdRuleConfig
- type Channel
- type ChannelConfig
- type ChannelConfigMeta
- type ChannelIDsDifference
- func (d ChannelIDsDifference) Additions() []string
- func (d ChannelIDsDifference) All() []string
- func (d ChannelIDsDifference) Has(id string) bool
- func (d ChannelIDsDifference) HasChanged() bool
- func (d ChannelIDsDifference) InAdditions(id string) bool
- func (d ChannelIDsDifference) InRemovals(id string) bool
- func (d ChannelIDsDifference) Removals() []string
- type ChannelRepository
- type ChannelService
- type ChannelType
- type CreateChannelInput
- type CreateEventInput
- type CreateRuleInput
- type DeleteChannelInput
- type DeleteRuleInput
- type EntitlementResetPayload
- type EntitlementResetRuleConfig
- type EntitlementValuePayloadBase
- type Event
- type EventDeliveryAttempt
- type EventDeliveryAttemptResponse
- type EventDeliveryStatus
- type EventDeliveryStatusState
- type EventDispatcher
- type EventHandler
- type EventPayload
- type EventPayloadMeta
- type EventReconciler
- type EventRepository
- type EventService
- type EventType
- type FeatureMeta
- type FeatureService
- type GetChannelInput
- type GetEventDeliveryStatusInput
- type GetEventInput
- type GetRuleInput
- type InvoicePayload
- type InvoiceRuleConfig
- type ListChannelsInput
- type ListChannelsResult
- type ListEventsDeliveryStatusInput
- type ListEventsDeliveryStatusResult
- type ListEventsInput
- type ListEventsResult
- type ListRulesInput
- type ListRulesResult
- type NotFoundError
- type OrderBy
- type RawPayload
- type Repository
- type ResendEventInput
- type Rule
- type RuleConfig
- type RuleConfigMeta
- type RuleRepository
- type RuleService
- type Service
- type UpdateAfterDeleteError
- type UpdateChannelInput
- type UpdateEventDeliveryStatusInput
- type UpdateRuleInput
- type WebHookChannelConfig
Constants ¶
const ( // AnnotationRuleTestEvent indicates that the event is generated as part of testing a notification rule AnnotationRuleTestEvent = "notification.rule.test" AnnotationEventFeatureKey = "event.feature.key" AnnotationEventFeatureID = "event.feature.id" AnnotationEventSubjectKey = "event.subject.key" AnnotationEventSubjectID = "event.subject.id" AnnotationEventCustomerID = "event.customer.id" AnnotationEventCustomerKey = "event.customer.key" // TODO[later]: deprecate this annotation and use a generic one AnnotationBalanceEventDedupeHash = "event.balance.dedupe.hash" AnnotationEventInvoiceID = "event.invoice.id" AnnotationEventInvoiceNumber = "event.invoice.number" AnnotationEventResendTimestamp = "event.resend.timestamp" )
const ( DefaultDisabled = false DefaultPageNumber = 1 DefaultPageSize = 100 )
const ( BalanceThresholdTypeNumber = api.NotificationRuleBalanceThresholdValueTypeNumber BalanceThresholdTypePercent = api.NotificationRuleBalanceThresholdValueTypePercent BalanceThresholdTypeUsagePercentage = api.NotificationRuleBalanceThresholdValueTypeUsagePercentage BalanceThresholdTypeBalanceValue = api.NotificationRuleBalanceThresholdValueTypeBalanceValue BalanceThresholdTypeUsageValue = api.NotificationRuleBalanceThresholdValueTypeUsageValue )
const ( DefaultReconcileInterval = 15 * time.Second DefaultDispatchTimeout = 30 * time.Second DefaultDeliveryStatePendingTimeout = 3 * time.Hour DefaultDeliveryStateSendingTimeout = 48 * time.Hour )
const MaxChannelsPerRule = 5
Variables ¶
This section is empty.
Functions ¶
func ChannelIDsByType ¶
func ChannelIDsByType(channels []Channel, channelType ChannelType) []string
ChannelIDsByType returns a list of Channel identifiers from Channel slice with the provided ChannelType
func InterfaceMapToStringMap ¶
func SortEventDeliveryAttemptsInDescOrder ¶
func SortEventDeliveryAttemptsInDescOrder(attempts []EventDeliveryAttempt)
SortEventDeliveryAttemptsInDescOrder sorts the EventDeliveryAttempts in descending order by timestamp.
func ValidateRuleConfigWithFeatures ¶
func ValidateRuleConfigWithFeatures(ctx context.Context, service FeatureService, namespace string) models.ValidatorFunc[RuleConfig]
Types ¶
type BalanceThreshold ¶
type BalanceThreshold = api.NotificationRuleBalanceThresholdValue
type BalanceThresholdPayload ¶
type BalanceThresholdPayload struct {
EntitlementValuePayloadBase
Threshold api.NotificationRuleBalanceThresholdValue `json:"threshold"`
}
func (BalanceThresholdPayload) Validate ¶
func (b BalanceThresholdPayload) Validate() error
Validate returns an error if the balance threshold payload is invalid.
func (BalanceThresholdPayload) ValidateWith ¶
func (b BalanceThresholdPayload) ValidateWith(validators ...models.ValidatorFunc[BalanceThresholdPayload]) error
type BalanceThresholdRuleConfig ¶
type BalanceThresholdRuleConfig struct {
// Features store the list of features the rule is associated with.
Features []string `json:"features"`
// Thresholds store the list of thresholds used to trigger a new notification event if the balance exceeds one of the thresholds.
Thresholds []BalanceThreshold `json:"thresholds"`
}
BalanceThresholdRuleConfig defines the configuration specific to rule.
func (BalanceThresholdRuleConfig) Validate ¶
func (b BalanceThresholdRuleConfig) Validate() error
Validate returns an error if the balance threshold configuration is invalid.
func (BalanceThresholdRuleConfig) ValidateWith ¶
func (b BalanceThresholdRuleConfig) ValidateWith(validators ...models.ValidatorFunc[BalanceThresholdRuleConfig]) error
type Channel ¶
type Channel struct {
models.NamespacedID
models.ManagedModel
models.Annotations
models.Metadata
// Type of the notification channel (e.g. webhook)
Type ChannelType `json:"type"`
// Name of is the user provided name of the Channel.
Name string `json:"name"`
// Disabled defines whether the Channel is disabled or not.
Disabled bool `json:"disabled"`
// Config stores the actual Channel configuration specific to the Type.
Config ChannelConfig `json:"config"`
}
Channel represents a notification channel with specific type and configuration.
type ChannelConfig ¶
type ChannelConfig struct {
ChannelConfigMeta
// WebHook
WebHook WebHookChannelConfig `json:"webhook"`
}
ChannelConfig is a union type capturing configuration parameters for all type of channels.
func (ChannelConfig) Validate ¶
func (c ChannelConfig) Validate() error
Validate invokes channel type specific validator and returns an error if channel configuration is invalid.
type ChannelConfigMeta ¶
type ChannelConfigMeta struct {
Type ChannelType `json:"type"`
}
func (ChannelConfigMeta) Validate ¶
func (m ChannelConfigMeta) Validate() error
type ChannelIDsDifference ¶
type ChannelIDsDifference struct {
// contains filtered or unexported fields
}
func NewChannelIDsDifference ¶
func NewChannelIDsDifference(new, old []string) *ChannelIDsDifference
func (ChannelIDsDifference) Additions ¶
func (d ChannelIDsDifference) Additions() []string
func (ChannelIDsDifference) All ¶
func (d ChannelIDsDifference) All() []string
func (ChannelIDsDifference) Has ¶
func (d ChannelIDsDifference) Has(id string) bool
func (ChannelIDsDifference) HasChanged ¶
func (d ChannelIDsDifference) HasChanged() bool
func (ChannelIDsDifference) InAdditions ¶
func (d ChannelIDsDifference) InAdditions(id string) bool
func (ChannelIDsDifference) InRemovals ¶
func (d ChannelIDsDifference) InRemovals(id string) bool
func (ChannelIDsDifference) Removals ¶
func (d ChannelIDsDifference) Removals() []string
type ChannelRepository ¶
type ChannelRepository interface {
ListChannels(ctx context.Context, params ListChannelsInput) (pagination.Result[Channel], error)
CreateChannel(ctx context.Context, params CreateChannelInput) (*Channel, error)
DeleteChannel(ctx context.Context, params DeleteChannelInput) error
GetChannel(ctx context.Context, params GetChannelInput) (*Channel, error)
UpdateChannel(ctx context.Context, params UpdateChannelInput) (*Channel, error)
}
type ChannelService ¶
type ChannelService interface {
ListChannels(ctx context.Context, params ListChannelsInput) (ListChannelsResult, error)
CreateChannel(ctx context.Context, params CreateChannelInput) (*Channel, error)
DeleteChannel(ctx context.Context, params DeleteChannelInput) error
GetChannel(ctx context.Context, params GetChannelInput) (*Channel, error)
UpdateChannel(ctx context.Context, params UpdateChannelInput) (*Channel, error)
}
type ChannelType ¶
type ChannelType string
const (
ChannelTypeWebhook ChannelType = "WEBHOOK"
)
func ChannelTypes ¶
func ChannelTypes(channels []Channel) []ChannelType
ChannelTypes returns a set of ChannelType from Channel slice
func (ChannelType) Validate ¶
func (t ChannelType) Validate() error
func (ChannelType) Values ¶
func (t ChannelType) Values() []string
type CreateChannelInput ¶
type CreateChannelInput struct {
models.NamespacedModel
// Type defines the Channel type (e.g. webhook)
Type ChannelType
// Name stores the user defined name of the Channel.
Name string
// Disabled defines whether the Channel is disabled or not. Deleted Channels are always disabled.
Disabled bool
// Config stores the Channel Type specific configuration.
Config ChannelConfig
// Metadata
Metadata models.Metadata
// Annotations
Annotations models.Annotations
}
func (CreateChannelInput) Validate ¶
func (i CreateChannelInput) Validate() error
func (CreateChannelInput) ValidateWith ¶
func (i CreateChannelInput) ValidateWith(validators ...models.ValidatorFunc[CreateChannelInput]) error
type CreateEventInput ¶
type CreateEventInput struct {
models.NamespacedModel
Annotations models.Annotations `json:"annotations,omitempty"`
// Type of the notification Event (e.g. entitlements.balance.threshold)
Type EventType `json:"type"`
// Payload is the actual payload sent to Channel as part of the notification Event.
Payload EventPayload `json:"payload"`
// RuleID defines the notification Rule that generated this Event.
RuleID string `json:"ruleId"`
// HandlerDeduplicationHash is a hash that the handler can use to deduplicate events if needed
HandlerDeduplicationHash string `json:"handlerDeduplicationHash"`
}
func (CreateEventInput) Validate ¶
func (i CreateEventInput) Validate() error
func (CreateEventInput) ValidateWith ¶
func (i CreateEventInput) ValidateWith(validators ...models.ValidatorFunc[CreateEventInput]) error
type CreateRuleInput ¶
type CreateRuleInput struct {
models.NamespacedModel
// Type defines the Rule type (e.g. entitlements.balance.threshold)
Type EventType
// Name stores the user defined name of the Rule.
Name string
// Disabled defines whether the Rule is disabled or not. Deleted Rules are always disabled.
Disabled bool
// Config stores the Rule Type specific configuration.
Config RuleConfig
// Channels defines the list of Channels the Rule needs to send Events.
Channels []string
// Metadata
Metadata models.Metadata
// Annotations
Annotations models.Annotations
}
func (CreateRuleInput) Validate ¶
func (i CreateRuleInput) Validate() error
func (CreateRuleInput) ValidateWith ¶
func (i CreateRuleInput) ValidateWith(validators ...models.ValidatorFunc[CreateRuleInput]) error
type DeleteChannelInput ¶
type DeleteChannelInput = GetChannelInput
type DeleteRuleInput ¶
type DeleteRuleInput = GetRuleInput
type EntitlementResetPayload ¶
type EntitlementResetPayload EntitlementValuePayloadBase
func (EntitlementResetPayload) Validate ¶
func (e EntitlementResetPayload) Validate() error
func (EntitlementResetPayload) ValidateWith ¶
func (e EntitlementResetPayload) ValidateWith(validators ...models.ValidatorFunc[EntitlementResetPayload]) error
type EntitlementResetRuleConfig ¶
type EntitlementResetRuleConfig struct {
Features []string `json:"features"`
}
func (EntitlementResetRuleConfig) Validate ¶
func (e EntitlementResetRuleConfig) Validate() error
func (EntitlementResetRuleConfig) ValidateWith ¶
func (e EntitlementResetRuleConfig) ValidateWith(validators ...models.ValidatorFunc[EntitlementResetRuleConfig]) error
type EntitlementValuePayloadBase ¶
type EntitlementValuePayloadBase struct {
Entitlement api.EntitlementMetered `json:"entitlement"`
Feature api.Feature `json:"feature"`
Subject api.Subject `json:"subject"`
Value api.EntitlementValue `json:"value"`
Customer api.Customer `json:"customer"`
}
func (EntitlementValuePayloadBase) Validate ¶
func (e EntitlementValuePayloadBase) Validate() error
func (EntitlementValuePayloadBase) ValidateWith ¶
func (e EntitlementValuePayloadBase) ValidateWith(validators ...models.ValidatorFunc[EntitlementValuePayloadBase]) error
type Event ¶
type Event struct {
models.NamespacedID
models.Annotations
// Type of the notification Event (e.g. entitlements.balance.threshold)
Type EventType `json:"type"`
// CreatedAt Timestamp when the notification event was created.
CreatedAt time.Time `json:"createdAt"`
// DeliveryStatus defines the delivery status of the notification Event per Channel.
DeliveryStatus []EventDeliveryStatus `json:"deliveryStatus"`
// Payload is the actual payload sent to Channel as part of the notification Event.
Payload EventPayload `json:"payload"`
// Rule defines the notification Rule that generated this Event.
Rule Rule `json:"rule"`
// DeduplicationHash is a hash that the handler can use to deduplicate events if needed
HandlerDeduplicationHash string `json:"-"`
}
type EventDeliveryAttempt ¶
type EventDeliveryAttempt struct {
State EventDeliveryStatusState `json:"state"`
Response EventDeliveryAttemptResponse `json:"response"`
Timestamp time.Time `json:"timestamp"`
}
type EventDeliveryStatus ¶
type EventDeliveryStatus struct {
models.NamespacedID
// EventID defines the Event identifier the EventDeliveryStatus belongs to.
EventID string
ChannelID string
State EventDeliveryStatusState
Reason string
CreatedAt time.Time
UpdatedAt time.Time
Attempts []EventDeliveryAttempt
NextAttempt *time.Time
Annotations models.Annotations
}
type EventDeliveryStatusState ¶
type EventDeliveryStatusState string
const ( EventDeliveryStatusStateSuccess EventDeliveryStatusState = "SUCCESS" EventDeliveryStatusStateFailed EventDeliveryStatusState = "FAILED" EventDeliveryStatusStateSending EventDeliveryStatusState = "SENDING" EventDeliveryStatusStatePending EventDeliveryStatusState = "PENDING" EventDeliveryStatusStateResending EventDeliveryStatusState = "RESENDING" )
func DeliveryStatusStates ¶
func DeliveryStatusStates(statuses []EventDeliveryStatus) []EventDeliveryStatusState
DeliveryStatusStates returns a list of EventDeliveryStatusState from EventDeliveryStatus slice
func (EventDeliveryStatusState) String ¶
func (e EventDeliveryStatusState) String() string
func (EventDeliveryStatusState) Validate ¶
func (e EventDeliveryStatusState) Validate() error
func (EventDeliveryStatusState) Values ¶
func (e EventDeliveryStatusState) Values() []string
type EventDispatcher ¶
type EventHandler ¶
type EventHandler interface {
EventDispatcher
EventReconciler
Start() error
Close() error
}
type EventPayload ¶
type EventPayload struct {
EventPayloadMeta
// Entitlements
BalanceThreshold *BalanceThresholdPayload `json:"balanceThreshold,omitempty"`
EntitlementReset *EntitlementResetPayload `json:"entitlementReset,omitempty"`
// Invoice
Invoice *billing.EventInvoice `json:"invoice,omitempty"`
}
EventPayload is a union type capturing payload for all EventType of Events.
func (EventPayload) Validate ¶
func (p EventPayload) Validate() error
type EventPayloadMeta ¶
type EventPayloadMeta struct {
Type EventType `json:"type"`
}
func (EventPayloadMeta) Validate ¶
func (m EventPayloadMeta) Validate() error
type EventReconciler ¶
type EventRepository ¶
type EventRepository interface {
ListEvents(ctx context.Context, params ListEventsInput) (pagination.Result[Event], error)
GetEvent(ctx context.Context, params GetEventInput) (*Event, error)
CreateEvent(ctx context.Context, params CreateEventInput) (*Event, error)
ListEventsDeliveryStatus(ctx context.Context, params ListEventsDeliveryStatusInput) (pagination.Result[EventDeliveryStatus], error)
GetEventDeliveryStatus(ctx context.Context, params GetEventDeliveryStatusInput) (*EventDeliveryStatus, error)
UpdateEventDeliveryStatus(ctx context.Context, params UpdateEventDeliveryStatusInput) (*EventDeliveryStatus, error)
}
type EventService ¶
type EventService interface {
ListEvents(ctx context.Context, params ListEventsInput) (ListEventsResult, error)
GetEvent(ctx context.Context, params GetEventInput) (*Event, error)
CreateEvent(ctx context.Context, params CreateEventInput) (*Event, error)
ResendEvent(ctx context.Context, params ResendEventInput) error
ListEventsDeliveryStatus(ctx context.Context, params ListEventsDeliveryStatusInput) (ListEventsDeliveryStatusResult, error)
GetEventDeliveryStatus(ctx context.Context, params GetEventDeliveryStatusInput) (*EventDeliveryStatus, error)
UpdateEventDeliveryStatus(ctx context.Context, params UpdateEventDeliveryStatusInput) (*EventDeliveryStatus, error)
}
type FeatureMeta ¶
type FeatureMeta = api.FeatureMeta
type FeatureService ¶
type GetChannelInput ¶
type GetChannelInput models.NamespacedID
func (GetChannelInput) Validate ¶
func (i GetChannelInput) Validate() error
func (GetChannelInput) ValidateWith ¶
func (i GetChannelInput) ValidateWith(validators ...models.ValidatorFunc[GetChannelInput]) error
type GetEventDeliveryStatusInput ¶
type GetEventDeliveryStatusInput struct {
models.NamespacedID
// EventID defines the Event identifier the EventDeliveryStatus belongs to. Must be provided if ID is empty.
EventID string
// ChannelID defines the Channel identifier the EventDeliveryStatus belongs to. Must be provided if ID is empty.
ChannelID string
}
func (GetEventDeliveryStatusInput) Validate ¶
func (i GetEventDeliveryStatusInput) Validate() error
func (GetEventDeliveryStatusInput) ValidateWith ¶
func (i GetEventDeliveryStatusInput) ValidateWith(validators ...models.ValidatorFunc[GetEventDeliveryStatusInput]) error
type GetEventInput ¶
type GetEventInput models.NamespacedID
func (GetEventInput) Validate ¶
func (i GetEventInput) Validate() error
func (GetEventInput) ValidateWith ¶
func (i GetEventInput) ValidateWith(validators ...models.ValidatorFunc[GetEventInput]) error
type GetRuleInput ¶
type GetRuleInput models.NamespacedID
func (GetRuleInput) Validate ¶
func (i GetRuleInput) Validate() error
func (GetRuleInput) ValidateWith ¶
func (i GetRuleInput) ValidateWith(validators ...models.ValidatorFunc[GetRuleInput]) error
type InvoicePayload ¶
type InvoicePayload = billing.EventInvoice
type InvoiceRuleConfig ¶
type InvoiceRuleConfig struct{}
func (InvoiceRuleConfig) Validate ¶
func (c InvoiceRuleConfig) Validate() error
func (InvoiceRuleConfig) ValidateWith ¶
func (c InvoiceRuleConfig) ValidateWith(validators ...models.ValidatorFunc[InvoiceRuleConfig]) error
type ListChannelsInput ¶
type ListChannelsInput struct {
pagination.Page
Namespaces []string
Channels []string
IncludeDisabled bool
OrderBy OrderBy
Order sortx.Order
}
func (ListChannelsInput) Validate ¶
func (i ListChannelsInput) Validate() error
func (ListChannelsInput) ValidateWith ¶
func (i ListChannelsInput) ValidateWith(validators ...models.ValidatorFunc[ListChannelsInput]) error
type ListChannelsResult ¶
type ListChannelsResult = pagination.Result[Channel]
type ListEventsDeliveryStatusInput ¶
type ListEventsDeliveryStatusInput struct {
pagination.Page
// Namespaces is a list of namespaces to be used to filter the list of EventDeliveryStatus to be returned.
Namespaces []string
// From limits the scope fo the request by defining the earliest date to be used for lookup.
// This filter is applied to EventDeliveryStatus.UpdatedAt field.
From time.Time
// To limits the scope fo the request by defining the latest date to be used for lookup.
// This filter is applied to EventDeliveryStatus.UpdatedAt field.
To time.Time
// Events is a list of Event identifiers used as filter.
Events []string
// Channels is a list of Channel identifiers used as filter.
Channels []string
// State is a list of Event State used as filter.
States []EventDeliveryStatusState
}
func (ListEventsDeliveryStatusInput) Validate ¶
func (i ListEventsDeliveryStatusInput) Validate() error
func (ListEventsDeliveryStatusInput) ValidateWith ¶
func (i ListEventsDeliveryStatusInput) ValidateWith(validators ...models.ValidatorFunc[ListEventsDeliveryStatusInput]) error
type ListEventsDeliveryStatusResult ¶
type ListEventsDeliveryStatusResult = pagination.Result[EventDeliveryStatus]
type ListEventsInput ¶
type ListEventsInput struct {
pagination.Page
Namespaces []string `json:"namespaces,omitempty"`
Events []string `json:"events,omitempty"`
From time.Time `json:"from,omitempty"`
To time.Time `json:"to,omitempty"`
Subjects []string `json:"subjects,omitempty"`
Features []string `json:"features,omitempty"`
Rules []string `json:"rules,omitempty"`
Channels []string `json:"channels,omitempty"`
DeduplicationHashes []string `json:"deduplicationHashes,omitempty"`
DeliveryStatusStates []EventDeliveryStatusState `json:"deliveryStatusStates,omitempty"`
NextAttemptBefore time.Time `json:"nextAttemptBefore,omitempty"`
OrderBy OrderBy
Order sortx.Order
}
func (ListEventsInput) Validate ¶
func (i ListEventsInput) Validate() error
func (ListEventsInput) ValidateWith ¶
func (i ListEventsInput) ValidateWith(validators ...models.ValidatorFunc[ListEventsInput]) error
type ListEventsResult ¶
type ListEventsResult = pagination.Result[Event]
type ListRulesInput ¶
type ListRulesInput struct {
pagination.Page
Namespaces []string
Rules []string
IncludeDisabled bool
Types []EventType
Channels []string
OrderBy OrderBy
Order sortx.Order
}
func (ListRulesInput) Validate ¶
func (i ListRulesInput) Validate() error
func (ListRulesInput) ValidateWith ¶
func (i ListRulesInput) ValidateWith(validators ...models.ValidatorFunc[ListRulesInput]) error
type ListRulesResult ¶
type ListRulesResult = pagination.Result[Rule]
type NotFoundError ¶
type NotFoundError struct {
models.NamespacedID
}
func (NotFoundError) Error ¶
func (e NotFoundError) Error() string
type RawPayload ¶
func AsRawPayload ¶
func AsRawPayload(t any) (RawPayload, error)
type Repository ¶
type Repository interface {
entutils.TxCreator
ChannelRepository
RuleRepository
EventRepository
}
type ResendEventInput ¶
type ResendEventInput struct {
models.NamespacedID
Channels []string `json:"channels,omitempty"`
}
func (ResendEventInput) Validate ¶
func (i ResendEventInput) Validate() error
func (ResendEventInput) ValidateWith ¶
func (i ResendEventInput) ValidateWith(validators ...models.ValidatorFunc[ResendEventInput]) error
type Rule ¶
type Rule struct {
models.NamespacedID
models.ManagedModel
models.Annotations
models.Metadata
// Type of the notification Rule (e.g. entitlements.balance.threshold)
Type EventType `json:"type"`
// Name of is the user provided name of the Rule.
Name string `json:"name"`
// Disabled defines whether the Rule is disabled or not.
Disabled bool `json:"disabled"`
// Config stores the actual Rule configuration specific to the Type.
Config RuleConfig `json:"config"`
// Channels stores the list of channels the Rule send notification Events to.
Channels []Channel `json:"channels"`
}
func (Rule) HasEnabledChannels ¶
func (Rule) ValidateWith ¶
func (r Rule) ValidateWith(validators ...models.ValidatorFunc[Rule]) error
type RuleConfig ¶
type RuleConfig struct {
RuleConfigMeta
// Balance Threshold
BalanceThreshold *BalanceThresholdRuleConfig `json:"balanceThreshold,omitempty"`
EntitlementReset *EntitlementResetRuleConfig `json:"entitlementReset,omitempty"`
// Invoice
Invoice *InvoiceRuleConfig `json:"invoice,omitempty"`
}
RuleConfig is a union type capturing configuration parameters for all type of rules.
func (RuleConfig) Validate ¶
func (c RuleConfig) Validate() error
Validate invokes channel type specific validator and returns an error if channel configuration is invalid.
func (RuleConfig) ValidateWith ¶
func (c RuleConfig) ValidateWith(validators ...models.ValidatorFunc[RuleConfig]) error
type RuleConfigMeta ¶
type RuleConfigMeta struct {
Type EventType `json:"type"`
}
func (RuleConfigMeta) Validate ¶
func (m RuleConfigMeta) Validate() error
func (RuleConfigMeta) ValidateWith ¶
func (m RuleConfigMeta) ValidateWith(validators ...models.ValidatorFunc[RuleConfigMeta]) error
type RuleRepository ¶
type RuleRepository interface {
ListRules(ctx context.Context, params ListRulesInput) (pagination.Result[Rule], error)
CreateRule(ctx context.Context, params CreateRuleInput) (*Rule, error)
DeleteRule(ctx context.Context, params DeleteRuleInput) error
GetRule(ctx context.Context, params GetRuleInput) (*Rule, error)
UpdateRule(ctx context.Context, params UpdateRuleInput) (*Rule, error)
}
type RuleService ¶
type RuleService interface {
ListRules(ctx context.Context, params ListRulesInput) (ListRulesResult, error)
CreateRule(ctx context.Context, params CreateRuleInput) (*Rule, error)
DeleteRule(ctx context.Context, params DeleteRuleInput) error
GetRule(ctx context.Context, params GetRuleInput) (*Rule, error)
UpdateRule(ctx context.Context, params UpdateRuleInput) (*Rule, error)
}
type Service ¶
type Service interface {
FeatureService
ChannelService
RuleService
EventService
}
type UpdateAfterDeleteError ¶
type UpdateAfterDeleteError genericError
func (UpdateAfterDeleteError) Error ¶
func (e UpdateAfterDeleteError) Error() string
func (UpdateAfterDeleteError) Unwrap ¶
func (e UpdateAfterDeleteError) Unwrap() error
type UpdateChannelInput ¶
type UpdateChannelInput struct {
models.NamespacedID
// Type defines the Channel type (e.g. webhook)
Type ChannelType
// Name stores the user-defined name of the Channel.
Name string
// Disabled defines whether the Channel is disabled or not. Deleted Channels are always disabled.
Disabled bool
// Config stores the Channel Type specific configuration.
Config ChannelConfig
// Metadata
Metadata models.Metadata
// Annotations
Annotations models.Annotations
}
func (UpdateChannelInput) Validate ¶
func (i UpdateChannelInput) Validate() error
func (UpdateChannelInput) ValidateWith ¶
func (i UpdateChannelInput) ValidateWith(validators ...models.ValidatorFunc[UpdateChannelInput]) error
type UpdateEventDeliveryStatusInput ¶
type UpdateEventDeliveryStatusInput struct {
models.NamespacedID
// State is the delivery state of the Event.
State EventDeliveryStatusState
// Reason describes the reason for the latest State transition.
Reason string
// Annotations
Annotations models.Annotations
// NextAttempt defines the next time the Event should be attempted to be delivered.
NextAttempt *time.Time
// Attempts is a list of delivery attempts for the Event.
Attempts []EventDeliveryAttempt
}
func (UpdateEventDeliveryStatusInput) Validate ¶
func (i UpdateEventDeliveryStatusInput) Validate() error
func (UpdateEventDeliveryStatusInput) ValidateWith ¶
func (i UpdateEventDeliveryStatusInput) ValidateWith(validators ...models.ValidatorFunc[UpdateEventDeliveryStatusInput]) error
type UpdateRuleInput ¶
type UpdateRuleInput struct {
models.NamespacedID
// Type defines the Rule type (e.g. entitlements.balance.threshold)
Type EventType
// Name stores the user defined name of the Rule.
Name string
// Disabled defines whether the Rule is disabled or not. Deleted Rules are always disabled.
Disabled bool
// Config stores the Rule Type specific configuration.
Config RuleConfig
// Channels defines the list of Channels the Rule needs to send Events.
Channels []string
// Metadata
Metadata models.Metadata
// Annotations
Annotations models.Annotations
}
func (UpdateRuleInput) Validate ¶
func (i UpdateRuleInput) Validate() error
func (UpdateRuleInput) ValidateWith ¶
func (i UpdateRuleInput) ValidateWith(validators ...models.ValidatorFunc[UpdateRuleInput]) error
type WebHookChannelConfig ¶
type WebHookChannelConfig struct {
// CustomHeaders stores a set of HTTP headers which are applied to the outgoing webhook message.
CustomHeaders map[string]string `json:"customHeaders,omitempty"`
// URL is the webhook endpoint url where the messages are sent to.
URL string `json:"url"`
// SigningSecret defines the secret which can be used for validating the signature of the message sent
// to the webhook endpoint.
SigningSecret string `json:"signingSecret"`
}
WebHookChannelConfig defines the configuration specific to a channel with a webhook type.
func (WebHookChannelConfig) Validate ¶
func (w WebHookChannelConfig) Validate() error
Validate returns an error if webhook channel configuration is invalid.