Relay

Endpoints

Webhook endpoint management, subscriptions, and secret rotation.

The endpoint service manages webhook delivery targets. Each endpoint belongs to a tenant and subscribes to event types via glob patterns.

Creating an endpoint

ep, err := r.Endpoints().Create(ctx, endpoint.Input{
    TenantID:    "tenant-acme",
    URL:         "https://acme.example.com/webhook",
    Description: "Acme production webhook",
    EventTypes:  []string{"order.*", "invoice.created"},
    Headers:     map[string]string{"X-Custom": "value"},
    RateLimit:   100,
    Metadata:    map[string]string{"env": "production"},
})

A signing secret is auto-generated (format: whsec_ + 32 bytes hex) unless provided in the input.

Operations

MethodDescription
Create(ctx, input)Register a new endpoint
Get(ctx, id)Get endpoint by ID
Update(ctx, id, input)Partial update
Delete(ctx, id)Remove endpoint
List(ctx, tenantID, opts)List endpoints for a tenant
SetEnabled(ctx, id, bool)Enable or disable
RotateSecret(ctx, id)Generate a new signing secret

Secret rotation

newSecret, err := r.Endpoints().RotateSecret(ctx, endpointID)

The old secret is immediately replaced. Deliver the new secret to the endpoint owner through a secure channel.

Disabling endpoints

Endpoints can be disabled manually or automatically:

  • Manual: r.Endpoints().SetEnabled(ctx, id, false)
  • Automatic: When a delivery receives HTTP 410 Gone, the engine disables the endpoint.

Disabled endpoints are excluded from delivery resolution.

On this page