Versions in this module Expand all Collapse all v1 v1.1.0 Jul 10, 2026 Changes in this version + type HTTPSenderOption func(*httpSenderCfg) + func WithHTTPClientConfig(cfg httpclient.Config) HTTPSenderOption + func WithSSRFProtectionDisabled() HTTPSenderOption v1.0.0 Jul 6, 2026 Changes in this version + const BreakerCooldown + const BreakerFailureThreshold + const DirectionInbound + const DirectionOutbound + const MaxAttempts + const OutboundTimeout + const StatusDead + const StatusDelivered + const StatusFailed + const StatusPending + const StatusProcessed + const TimestampWindow + type Endpoint struct + Direction string + ID uuid.UUID + ProviderID *uuid.UUID + SecretRef string + SignatureScheme string + Status string + SubscribedEvents []string + TenantID uuid.UUID + URL *string + type Event struct + Attempts int + DeliveryStatus string + Direction string + EndpointID uuid.UUID + EventType string + ExternalEventID string + ID uuid.UUID + LastError *string + NextAttemptAt *time.Time + Payload json.RawMessage + ReceivedAt time.Time + SignatureOk *bool + TenantID uuid.UUID + type FakeSecretResolver struct + Secret string + func (r *FakeSecretResolver) Resolve(_ context.Context, _ string) (string, error) + type FakeSender struct + Calls []SentCall + Err error + StatusCode int + func (f *FakeSender) Post(_ context.Context, url string, body []byte, headers map[string]string) (int, error) + type FakeVerifier struct + Secret string + func (v FakeVerifier) Verify(_ string, _ []byte, headers map[string]string) error + type HMACVerifier struct + SignatureHeader string + func (v HMACVerifier) Verify(secret string, body []byte, headers map[string]string) error + type HTTPSender struct + func NewHTTPSender() *HTTPSender + func (s *HTTPSender) Post(ctx context.Context, url string, body []byte, headers map[string]string) (int, error) + type InboundHandler func(ctx context.Context, db database.TenantDB, e Event) error + type InboundIn struct + EndpointID uuid.UUID + EventType string + ExternalEventID string + Headers map[string]string + ProviderKey string + RawBody []byte + Timestamp time.Time + type Option func(*Service) + func WithMetrics(m observability.Metrics) Option + type SecretResolver interface + Resolve func(ctx context.Context, ref string) (string, error) + type Sender interface + Post func(ctx context.Context, url string, body []byte, headers map[string]string) (statusCode int, err error) + type SentCall struct + Body []byte + Headers map[string]string + URL string + type Service struct + func New(sender Sender, secrets SecretResolver, idgen model.IDGen, opts ...Option) *Service + func NewWithClock(sender Sender, secrets SecretResolver, idgen model.IDGen, ...) *Service + func (s *Service) DispatchOutbound(ctx context.Context, plat database.TxManager, tenantID uuid.UUID, ...) error + func (s *Service) HandleInbound(ctx context.Context, db database.TenantDB, in InboundIn) error + func (s *Service) ProcessInbound(ctx context.Context, plat database.TxManager, tenantID uuid.UUID, ...) error + func (s *Service) RegisterHandler(eventType string, h InboundHandler) + func (s *Service) RegisterVerifier(providerKey string, v Verifier) + func (s *Service) RetryOutbound(ctx context.Context, plat database.TxManager, tenantID uuid.UUID, ...) error + type Verifier interface + Verify func(secret string, body []byte, headers map[string]string) error